本文整理了Java中org.apache.sshd.common.util.buffer.Buffer.compact()
方法的一些代码示例,展示了Buffer.compact()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Buffer.compact()
方法的具体详情如下:
包路径:org.apache.sshd.common.util.buffer.Buffer
类名称:Buffer
方法名:compact
[英]"Shift" the internal data so that reading starts from position zero.
[中]“移位”内部数据,以便读数从零位开始。
代码示例来源:origin: org.apache.sshd/sshd-core
buffer.compact();
代码示例来源:origin: org.apache.sshd/sshd-osgi
buffer.compact();
代码示例来源:origin: org.apache.sshd/sshd-osgi
@Override
public synchronized int read(byte[] b, int off, int len) throws IOException {
if (len == 1) {
int c = read();
if (c == -1) {
return -1;
}
b[off] = (byte) c;
return 1;
}
if (buffer.available() == 0) {
buffer.compact();
int nb = this.in.read(b, off, len);
if (nb == -1) {
return nb;
}
buffer.putRawBytes(b, off, nb);
}
int nb = 0;
for (int curPos = off; (nb < len) && (buffer.available() > 0); nb++, curPos++) {
b[curPos] = (byte) read();
}
return nb;
}
}
代码示例来源:origin: org.apache.sshd/sshd-osgi
protected void messageReceived(Buffer buffer) throws Exception {
Buffer message = null;
synchronized (receiveBuffer) {
receiveBuffer.putBuffer(buffer);
if (receiveBuffer.available() >= 4) {
int rpos = receiveBuffer.rpos();
int len = receiveBuffer.getInt();
// Protect against malicious or corrupted packets
if (len < 0) {
throw new StreamCorruptedException("Illogical message length: " + len);
}
receiveBuffer.rpos(rpos);
if (receiveBuffer.available() >= (4 + len)) {
message = new ByteArrayBuffer(receiveBuffer.getBytes());
receiveBuffer.compact();
}
}
}
if (message != null) {
synchronized (messages) {
messages.offer(message);
messages.notifyAll();
}
}
}
代码示例来源:origin: org.apache.sshd/sshd-core
protected void messageReceived(Buffer buffer) throws Exception {
Buffer message = null;
synchronized (receiveBuffer) {
receiveBuffer.putBuffer(buffer);
if (receiveBuffer.available() >= 4) {
int rpos = receiveBuffer.rpos();
int len = receiveBuffer.getInt();
receiveBuffer.rpos(rpos);
if (receiveBuffer.available() >= 4 + len) {
message = new ByteArrayBuffer(receiveBuffer.getBytes());
receiveBuffer.compact();
}
}
}
if (message != null) {
synchronized (messages) {
messages.offer(message);
messages.notifyAll();
}
}
}
代码示例来源:origin: org.apache.sshd/sshd-osgi
if (future != null) {
nbRead = future.buffer.putBuffer(buffer, false);
buffer.compact();
代码示例来源:origin: org.apache.sshd/sshd-core
if (future != null) {
nbRead = future.buffer.putBuffer(buffer, false);
buffer.compact();
代码示例来源:origin: org.apache.sshd/sshd-core
@Override
protected void doWriteData(byte[] data, int off, long len) throws IOException {
ValidateUtils.checkTrue(len <= Integer.MAX_VALUE, "Data length exceeds int boundaries: %d", len);
Buffer message = null;
synchronized (receiveBuffer) {
receiveBuffer.putBuffer(new ByteArrayBuffer(data, off, (int) len));
if (receiveBuffer.available() >= 4) {
off = receiveBuffer.rpos();
len = receiveBuffer.getInt();
receiveBuffer.rpos(off);
if (receiveBuffer.available() >= (4 + len)) {
message = new ByteArrayBuffer(receiveBuffer.getBytes());
receiveBuffer.compact();
}
}
}
if (message != null) {
synchronized (messages) {
messages.offer(message);
messages.notifyAll();
}
}
}
}
代码示例来源:origin: org.apache.sshd/sshd-sftp
receiveBuffer.compact();
if ((receiveBuffer != incoming) && (incoming.available() > 0)) {
receiveBuffer.putBuffer(incoming);
代码示例来源:origin: org.apache.sshd/sshd-osgi
@Override
protected void doWriteData(byte[] data, int off, long len) throws IOException {
ValidateUtils.checkTrue(len <= Integer.MAX_VALUE, "Data length exceeds int boundaries: %d", len);
Buffer message = null;
synchronized (receiveBuffer) {
receiveBuffer.putBuffer(new ByteArrayBuffer(data, off, (int) len));
if (receiveBuffer.available() >= 4) {
off = receiveBuffer.rpos();
len = receiveBuffer.getInt();
receiveBuffer.rpos(off);
if (receiveBuffer.available() >= (4 + len)) {
message = new ByteArrayBuffer(receiveBuffer.getBytes());
receiveBuffer.compact();
}
}
}
if (message != null) {
synchronized (messages) {
messages.offer(message);
messages.notifyAll();
}
}
}
}
代码示例来源:origin: org.apache.sshd/sshd-core
@Override
public IoReadFuture read(Buffer buf) {
IoReadFutureImpl future = new IoReadFutureImpl(readFutureId, buf);
if (isClosing()) {
synchronized (buffer) {
if (pending != null) {
throw new ReadPendingException("Previous pending read not handled");
}
if (buffer.available() > 0) {
Buffer fb = future.getBuffer();
int nbRead = fb.putBuffer(buffer, false);
buffer.compact();
future.setValue(nbRead);
} else {
future.setValue(new IOException("Closed"));
}
}
} else {
synchronized (buffer) {
if (pending != null) {
throw new ReadPendingException("Previous pending read not handled");
}
pending = future;
}
doRead(false);
}
return future;
}
代码示例来源:origin: org.apache.sshd/sshd-sftp
@Override
public int data(ChannelSession channel, byte[] buf, int start, int len) throws IOException {
buffer.compact();
buffer.putRawBytes(buf, start, len);
while (buffer.available() >= Integer.BYTES) {
int rpos = buffer.rpos();
int msglen = buffer.getInt();
if (buffer.available() >= msglen) {
Buffer b = new ByteArrayBuffer(msglen + Integer.BYTES + Long.SIZE /* a bit extra */, false);
b.putInt(msglen);
b.putRawBytes(buffer.array(), buffer.rpos(), msglen);
requests.add(b);
buffer.rpos(rpos + msglen + Integer.BYTES);
} else {
buffer.rpos(rpos);
break;
}
}
return 0;
}
代码示例来源:origin: org.apache.sshd/sshd-osgi
@Override
public IoReadFuture read(Buffer buf) {
IoReadFutureImpl future = new IoReadFutureImpl(readFutureId, buf);
if (isClosing()) {
synchronized (buffer) {
if (pending != null) {
throw new ReadPendingException("Previous pending read not handled");
}
if (buffer.available() > 0) {
Buffer fb = future.getBuffer();
int nbRead = fb.putBuffer(buffer, false);
buffer.compact();
future.setValue(nbRead);
} else {
future.setValue(new IOException("Closed"));
}
}
} else {
synchronized (buffer) {
if (pending != null) {
throw new ReadPendingException("Previous pending read not handled");
}
pending = future;
}
doRead(false);
}
return future;
}
内容来源于网络,如有侵权,请联系作者删除!