本文整理了Java中io.vertx.core.buffer.Buffer.slice()
方法的一些代码示例,展示了Buffer.slice()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Buffer.slice()
方法的具体详情如下:
包路径:io.vertx.core.buffer.Buffer
类名称:Buffer
方法名:slice
[英]Returns a slice of this buffer. Modifying the content of the returned buffer or this buffer affects each other's content while they maintain separate indexes and marks.
[中]返回此缓冲区的一个片段。修改返回的缓冲区或此缓冲区的内容会影响彼此的内容,同时它们会维护单独的索引和标记。
代码示例来源:origin: eclipse-vertx/vert.x
@Override
public JsonObject decodeFromWire(int pos, Buffer buffer) {
int length = buffer.getInt(pos);
pos += 4;
return new JsonObject(buffer.slice(pos, pos + length));
}
代码示例来源:origin: eclipse-vertx/vert.x
@Override
public JsonArray decodeFromWire(int pos, Buffer buffer) {
int length = buffer.getInt(pos);
pos += 4;
return new JsonArray(buffer.slice(pos, pos + length));
}
代码示例来源:origin: eclipse-vertx/vert.x
private byte[] readBytes(int len) throws VertxException {
if (pos + len > in.length()) {
throw new VertxException("Invalid DER: stream too short, missing tag");
}
Buffer s = in.slice(pos, pos + len);
pos += len;
return s.getBytes();
}
代码示例来源:origin: eclipse-vertx/vert.x
private void direct(Buffer buffer) throws Exception {
int pos = 0;
int length = buffer.getInt(pos);
pos += 4;
consume(new JsonObject(buffer.slice(pos, pos + length)));
}
}
代码示例来源:origin: eclipse-vertx/vert.x
/**
* Splits the provided buffer into multiple frames (which do not exceed the maximum web socket frame size)
* and writes them in order to the socket.
*/
private void writePartialMessage(FrameType frameType, Buffer data, int offset) {
int end = offset + maxWebSocketFrameSize;
boolean isFinal;
if (end >= data.length()) {
end = data.length();
isFinal = true;
} else {
isFinal = false;
}
Buffer slice = data.slice(offset, end);
WebSocketFrame frame;
if (offset == 0 || !supportsContinuation) {
frame = new WebSocketFrameImpl(frameType, slice.getByteBuf(), isFinal);
} else {
frame = WebSocketFrame.continuationFrame(slice, isFinal);
}
writeFrame(frame);
int newOffset = offset + maxWebSocketFrameSize;
if (!isFinal) {
writePartialMessage(frameType, data, newOffset);
}
}
代码示例来源:origin: eclipse-vertx/vert.x
@Test
public void testPartialH2CAmbiguousRequest() throws Exception {
server.requestHandler(req -> {
assertEquals("POST", req.rawMethod());
testComplete();
});
Buffer fullRequest = Buffer.buffer("POST /whatever HTTP/1.1\r\n\r\n");
startServer();
NetClient client = vertx.createNetClient();
client.connect(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, onSuccess(so -> {
so.write(fullRequest.slice(0, 1));
vertx.setTimer(1000, id -> {
so.write(fullRequest.slice(1, fullRequest.length()));
});
}));
await();
}
代码示例来源:origin: eclipse-vertx/vert.x
req.setChunked(true);
for (int i = 0; i < buffer.length() / 8192; i++) {
req.write(buffer.slice(i * 8192, (i + 1) * 8192));
Thread.sleep(0, 100);
代码示例来源:origin: eclipse-vertx/vert.x
request.response().setChunked(true);
for (int i = 0; i < buffer.length() / 8192; i++) {
request.response().write(buffer.slice(i * 8192, (i + 1) * 8192));
代码示例来源:origin: eclipse-vertx/vert.x
@Test
public void testSlice1() throws Exception {
Buffer buff = TestUtils.randomBuffer(100);
Buffer sliced = buff.slice();
assertEquals(buff, sliced);
long rand = TestUtils.randomLong();
sliced.setLong(0, rand);
assertEquals(rand, buff.getLong(0));
buff.appendString(TestUtils.randomUnicodeString(100));
assertEquals(100, sliced.length());
}
代码示例来源:origin: eclipse-vertx/vert.x
@Test
public void testSlice2() throws Exception {
Buffer buff = TestUtils.randomBuffer(100);
Buffer sliced = buff.slice(10, 20);
for (int i = 0; i < 10; i++) {
assertEquals(buff.getByte(10 + i), sliced.getByte(i));
}
long rand = TestUtils.randomLong();
sliced.setLong(0, rand);
assertEquals(rand, buff.getLong(10));
buff.appendString(TestUtils.randomUnicodeString(100));
assertEquals(10, sliced.length());
}
代码示例来源:origin: io.vertx/vertx-core
@Override
public JsonObject decodeFromWire(int pos, Buffer buffer) {
int length = buffer.getInt(pos);
pos += 4;
return new JsonObject(buffer.slice(pos, pos + length));
}
代码示例来源:origin: io.vertx/vertx-core
@Override
public JsonArray decodeFromWire(int pos, Buffer buffer) {
int length = buffer.getInt(pos);
pos += 4;
return new JsonArray(buffer.slice(pos, pos + length));
}
代码示例来源:origin: io.vertx/vertx-core
private byte[] readBytes(int len) throws VertxException {
if (pos + len > in.length()) {
throw new VertxException("Invalid DER: stream too short, missing tag");
}
Buffer s = in.slice(pos, pos + len);
pos += len;
return s.getBytes();
}
代码示例来源:origin: io.vertx/vertx-core
private void direct(Buffer buffer) throws Exception {
int pos = 0;
int length = buffer.getInt(pos);
pos += 4;
consume(new JsonObject(buffer.slice(pos, pos + length)));
}
}
代码示例来源:origin: io.vertx/vertx-core
/**
* Splits the provided buffer into multiple frames (which do not exceed the maximum web socket frame size)
* and writes them in order to the socket.
*/
private void writePartialMessage(FrameType frameType, Buffer data, int offset) {
int end = offset + maxWebSocketFrameSize;
boolean isFinal;
if (end >= data.length()) {
end = data.length();
isFinal = true;
} else {
isFinal = false;
}
Buffer slice = data.slice(offset, end);
WebSocketFrame frame;
if (offset == 0 || !supportsContinuation) {
frame = new WebSocketFrameImpl(frameType, slice.getByteBuf(), isFinal);
} else {
frame = WebSocketFrame.continuationFrame(slice, isFinal);
}
writeFrame(frame);
int newOffset = offset + maxWebSocketFrameSize;
if (!isFinal) {
writePartialMessage(frameType, data, newOffset);
}
}
代码示例来源:origin: vert-x3/vertx-web
/**
* Writing multiple continuation frames from the client side should result in a single message on the server side
* after the frames are re-combined
*/
@Test
public void testCombineBinaryContinuationFramesRawWebSocket() throws InterruptedException {
String serverPath = "/combine";
AtomicReference<Buffer> serverReceivedMessage = new AtomicReference<>();
setupSockJsServer(serverPath, (sock, requestBuffer) -> {
serverReceivedMessage.set(requestBuffer);
sock.write(Buffer.buffer("reply"));
sock.close();
});
Buffer largeMessage = Buffer.buffer(TestUtils.randomAlphaString(30));
WebSocketFrame frame1 = WebSocketFrame.binaryFrame(largeMessage.slice(0, 10), false);
WebSocketFrame frame2 = WebSocketFrame.continuationFrame(largeMessage.slice(10, 20), false);
WebSocketFrame frame3 = WebSocketFrame.continuationFrame(largeMessage.slice(20, largeMessage.length()), true);
WebSocket ws = setupRawWebsocketClient(serverPath);
ws.writeFrame(frame1);
ws.writeFrame(frame2);
ws.writeFrame(frame3);
await(5, TimeUnit.SECONDS);
assertEquals("Server did not combine continuation frames correctly", largeMessage, serverReceivedMessage.get());
}
代码示例来源:origin: io.vertx/vertx-core
@Test
public void testPartialH2CAmbiguousRequest() throws Exception {
server.requestHandler(req -> {
assertEquals("POST", req.rawMethod());
testComplete();
});
Buffer fullRequest = Buffer.buffer("POST /whatever HTTP/1.1\r\n\r\n");
startServer();
NetClient client = vertx.createNetClient();
client.connect(DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, onSuccess(so -> {
so.write(fullRequest.slice(0, 1));
vertx.setTimer(1000, id -> {
so.write(fullRequest.slice(1, fullRequest.length()));
});
}));
await();
}
代码示例来源:origin: vert-x3/vertx-web
@Test
public void testCombineTextFrameSockJs() throws InterruptedException {
String serverPath = "/text-combine-sockjs";
setupSockJsServer(serverPath, this::echoRequest);
List<Buffer> receivedMessages = new ArrayList<>();
WebSocket openedWebSocket = setupSockJsClient(serverPath, receivedMessages);
Buffer largeMessage = Buffer.buffer("[\"" + TestUtils.randomAlphaString(30) + "\"]");
WebSocketFrame frame1 = new WebSocketFrameImpl(FrameType.TEXT, largeMessage.slice(0, 10).getByteBuf(), false);
WebSocketFrame frame2 = WebSocketFrame.continuationFrame(largeMessage.slice(10, 20), false);
WebSocketFrame frame3 = WebSocketFrame.continuationFrame(largeMessage.slice(20, largeMessage.length()), true);
log.debug("Client sending " + frame1.textData());
openedWebSocket.writeFrame(frame1);
log.debug("Client sending " + frame2.textData());
openedWebSocket.writeFrame(frame2);
log.debug("Client sending " + frame3.textData());
openedWebSocket.writeFrame(frame3);
await(5, TimeUnit.SECONDS);
assertEquals("Client should have received 2 messages: the reply and the close.", 2, receivedMessages.size());
Buffer expectedReply = Buffer.buffer("a" + largeMessage.toString());
assertEquals("Client reply should have matched request", expectedReply, receivedMessages.get(0));
assertEquals("Final message should have been a close", SOCKJS_CLOSE_REPLY, receivedMessages.get(1));
}
代码示例来源:origin: io.vertx/vertx-core
@Test
public void testSlice1() throws Exception {
Buffer buff = TestUtils.randomBuffer(100);
Buffer sliced = buff.slice();
assertEquals(buff, sliced);
long rand = TestUtils.randomLong();
sliced.setLong(0, rand);
assertEquals(rand, buff.getLong(0));
buff.appendString(TestUtils.randomUnicodeString(100));
assertEquals(100, sliced.length());
}
代码示例来源:origin: io.vertx/vertx-core
@Test
public void testSlice2() throws Exception {
Buffer buff = TestUtils.randomBuffer(100);
Buffer sliced = buff.slice(10, 20);
for (int i = 0; i < 10; i++) {
assertEquals(buff.getByte(10 + i), sliced.getByte(i));
}
long rand = TestUtils.randomLong();
sliced.setLong(0, rand);
assertEquals(rand, buff.getLong(10));
buff.appendString(TestUtils.randomUnicodeString(100));
assertEquals(10, sliced.length());
}
内容来源于网络,如有侵权,请联系作者删除!