Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.infinispan.client.hotrod.impl.transport.tcp;
  
  
 
SaslInputStream.

Author(s):
Tristan Tarrant
Since:
7.0
 
 public class SaslInputStream extends InputStream {
    public static final Log LOG = LogFactory.getLog(SaslInputStream.class);
 
    private final SaslClient saslClient;
    private final DataInputStream inStream;
    private byte[] buffer;
    private int bufferPtr = 0;
    private int bufferLength = 0;
 
 
    public SaslInputStream(InputStream inStreamSaslClient saslClient) {
       this. = new DataInputStream(new BufferedInputStream(inStream));
       this. = saslClient;
    }
 
    @Override
    public int read() throws IOException {
       if ( >= ) {
          int i = 0;
          while (i == 0)
             i = fillBuffer();
          if (i == -1)
             return -1;
       }
       return ((int[++] & 0xff);
    }
 
    @Override
    public int read(byte[] bthrows IOException {
       return read(b, 0, b.length);
    }
 
    @Override
    public int read(byte[] bint offint lenthrows IOException {
       if ( >= ) {
          int i = 0;
          while (i == 0)
             i = fillBuffer();
          if (i == -1)
             return -1;
       }
       if (len <= 0) {
          return 0;
       }
       int available =  - ;
       if (len < available)
          available = len;
       if (b != null) {
          System.arraycopy(boffavailable);
       }
        =  + available;
       return available;
    }
 
    @Override
    public long skip(long nthrows IOException {
       int available =  - ;
       if (n > available) {
          n = available;
       }
       if (n < 0) {
          return 0;
       }
        += n;
       return n;
    }
 
    @Override
    public int available() throws IOException {
       return ( - );
    }
 
    @Override
    public void close() throws IOException {
       disposeSasl();
        = 0;
        = 0;
       .close();
    }
   public boolean markSupported() {
      return false;
   }
   private int fillBuffer() throws IOException {
      byte[] saslToken;
      try {
         int length = .readInt();
         saslToken = new byte[length];
         .readFully(saslToken);
          = .unwrap(saslToken, 0, length);
      } catch (EOFException e) {
         return -1;
      } catch (SaslException se) {
         try {
            disposeSasl();
         } catch (SaslException e) {
         }
         throw se;
      }
       = 0;
       = .;
      return ;
   }
   private void disposeSasl() throws SaslException {
      if ( != null) {
         .dispose();
      }
   }
New to GrepCode? Check out our FAQ X