public int read(byte[] buf, int off, int len) throws IOException {
   int totalRead = Streams.readFully(super.in, buf, off, len);
   return totalRead > 0 ? totalRead : -1;
 }
 public void drain() throws IOException {
   Streams.drain(_in);
   _in.close();
 }