List of usage examples for io.netty.buffer ByteBuf copy
public abstract ByteBuf copy();
From source file:org.apache.qpid.jms.transports.netty.NettyWsTransportTest.java
License:Apache License
@Test(timeout = 60000) public void testConnectionsSendReceiveLargeDataFailsDueToMaxFrameSize() throws Exception { final int FRAME_SIZE = 1024; ByteBuf sendBuffer = Unpooled.buffer(FRAME_SIZE); for (int i = 0; i < FRAME_SIZE; ++i) { sendBuffer.writeByte('A'); }//from w w w . ja va 2 s. c o m try (NettyEchoServer server = createEchoServer(createServerOptions())) { // Server should pass the data through, client should choke on the incoming size. server.setMaxFrameSize(FRAME_SIZE); server.start(); int port = server.getServerPort(); URI serverLocation = new URI("tcp://localhost:" + port); List<Transport> transports = new ArrayList<Transport>(); Transport transport = createTransport(serverLocation, testListener, createClientOptions()); try { // Transport can't receive anything bigger so it should fail the connection // when data arrives that is larger than this value. transport.setMaxFrameSize(FRAME_SIZE / 2); transport.connect(null); transports.add(transport); transport.send(sendBuffer.copy()); } catch (Exception e) { fail("Should have connected to the server at " + serverLocation + " but got exception: " + e); } assertTrue("Transport should have lost connection", Wait.waitFor(() -> !transport.isConnected())); } assertFalse(exceptions.isEmpty()); }
From source file:org.apache.qpid.jms.transports.netty.NettyWsTransportTest.java
License:Apache License
@Test(timeout = 60000) public void testTransportDetectsConnectionDropWhenServerEnforcesMaxFrameSize() throws Exception { final int FRAME_SIZE = 1024; ByteBuf sendBuffer = Unpooled.buffer(FRAME_SIZE); for (int i = 0; i < FRAME_SIZE; ++i) { sendBuffer.writeByte('A'); }//from w w w .j a v a 2 s . co m try (NettyEchoServer server = createEchoServer(createServerOptions())) { // Server won't accept the data as it's to large and will close the connection. server.setMaxFrameSize(FRAME_SIZE / 2); server.start(); int port = server.getServerPort(); URI serverLocation = new URI("tcp://localhost:" + port); List<Transport> transports = new ArrayList<Transport>(); final Transport transport = createTransport(serverLocation, testListener, createClientOptions()); try { // Transport allows bigger frames in so that server is the one causing the failure. transport.setMaxFrameSize(FRAME_SIZE); transport.connect(null); transports.add(transport); transport.send(sendBuffer.copy()); } catch (Exception e) { fail("Should have connected to the server at " + serverLocation + " but got exception: " + e); } assertTrue("Transport should have lost connection", Wait.waitFor(new Wait.Condition() { @Override public boolean isSatisfied() throws Exception { try { transport.send(sendBuffer); } catch (IOException e) { LOG.info("Transport send caught error:", e); return true; } return false; } }, 10000, 50)); } }
From source file:org.eclipse.milo.opcua.binaryschema.BsdParserTest.java
License:Open Source License
protected void assertRoundTrip(String type, Object originalValue, OpcUaBinaryDataTypeCodec<Object> codec) { System.out.printf("--- assertRoundTrip Type: %s ---\n", type); System.out.println("originalValue:\t" + originalValue); ByteBuf buffer = Unpooled.buffer(); codec.encode(context, originalValue, new OpcUaBinaryStreamEncoder(buffer)); ByteBuf encodedValue = buffer.copy(); System.out.println("encodedValue:\t" + ByteBufUtil.hexDump(encodedValue)); Object decodedValue = codec.decode(context, new OpcUaBinaryStreamDecoder(buffer)); assertEquals(decodedValue, originalValue); System.out.println("decodedValue:\t" + decodedValue); }
From source file:org.eclipse.milo.opcua.binaryschema.BsdParserTest.java
License:Open Source License
/** * A weaker version of {@link #assertRoundTrip(String, Object, OpcUaBinaryDataTypeCodec)} for values that don't * implement equals and hashcode or values that contain members not implementing equals and hashcode. * <p>/* ww w .j ava 2 s. c o m*/ * Relies on toString() values to be implemented at all levels instead... not great, but since the built-in structs * don't implement equals/hashcode it's what we have. */ protected void assertRoundTripUsingToString(String type, Object originalValue, OpcUaBinaryDataTypeCodec<Object> codec) { System.out.printf("--- assertRoundTrip Type: %s ---\n", type); System.out.println("originalValue:\t" + originalValue); ByteBuf buffer = Unpooled.buffer(); codec.encode(context, originalValue, new OpcUaBinaryStreamEncoder(buffer)); ByteBuf encodedValue = buffer.copy(); System.out.println("encodedValue:\t" + ByteBufUtil.hexDump(encodedValue)); Object decodedValue = codec.decode(context, new OpcUaBinaryStreamDecoder(buffer)); assertEquals(decodedValue.toString(), originalValue.toString()); System.out.println("decodedValue:\t" + decodedValue); }
From source file:org.evilco.mc.defense.common.network.DefenseChannelHandler.java
License:Apache License
/** * {@inheritDoc}//from w w w. j a va 2 s .c om */ @Override protected void encode(ChannelHandlerContext ctx, AbstractDefensePacket msg, List<Object> out) throws Exception { ByteBuf target = Unpooled.buffer(); // find packet identifer int packetID = DefensePacketType.valueOf(msg.getClass()); // write packetID target.writeInt(packetID); // create packet buffer ByteBuf packetBuffer = target.alloc().buffer(); // write packet msg.write(packetBuffer); // write packet data target.writeBytes(packetBuffer); // add output out.add(new FMLProxyPacket(target.copy(), CHANNEL_NAME)); }
From source file:org.greencheek.caching.herdcache.memcached.elasticacheconfig.server.StringBasedServerHandler.java
License:Apache License
private void sendAll(final ChannelHandlerContext ctx) { long delayFor = delay; for (ByteBuf message : this.msg) { ByteBuf messageCopy = message.copy(); String messageCopyStr = messageCopy.toString(Charset.forName("UTF-8")); if (messageCopyStr.contains("${REMOTE_ADDR}")) { messageCopyStr = messageCopyStr.replace("${REMOTE_ADDR}", ctx.channel().remoteAddress().toString()); }//from w w w .jav a2 s .co m final ByteBuf messageToSend = stringToByteBuf(messageCopyStr); if (delay < 1) { ctx.writeAndFlush(messageToSend); } else { ctx.channel().eventLoop().schedule(new Runnable() { @Override public void run() { ctx.writeAndFlush(messageToSend); } }, delayFor, delayUnit); } delayFor += delay; } }
From source file:org.greencheek.caching.herdcache.memcached.elasticacheconfig.server.StringBasedServerHandler.java
License:Apache License
private void sendOne(final ChannelHandlerContext ctx) { final ByteBuf message = this.msg[index.getAndIncrement() % this.msg.length]; ByteBuf messageCopy = message.copy(); String messageCopyStr = messageCopy.toString(Charset.forName("UTF-8")); if (messageCopyStr.contains("${REMOTE_ADDR}")) { messageCopyStr = messageCopyStr.replace("${REMOTE_ADDR}", ctx.channel().remoteAddress().toString()); }/*w w w . j ava 2 s. c o m*/ final ByteBuf messageToSend = stringToByteBuf(messageCopyStr); if (delay < 1) { ctx.writeAndFlush(messageToSend); } else { ctx.channel().eventLoop().schedule(new Runnable() { @Override public void run() { ctx.writeAndFlush(messageToSend); } }, delay, delayUnit); } }
From source file:org.midonet.util.netty.BinaryToWSFrameEncoder.java
License:Apache License
@Override public void encode(ChannelHandlerContext ctx, ByteBuf data, List<Object> out) throws Exception { out.add(new BinaryWebSocketFrame(data.copy())); // TODO: check if data reference counter can be decreased safely }
From source file:org.opendaylight.openflowjava.protocol.impl.util.DefaultDeserializerFactoryTest.java
License:Open Source License
/** * Test correct version after deserialization for all supported OF versions. * @param versions supported OF versions * @param buffer byte buffer to deserialze *//* w ww. j av a2s . co m*/ protected void testHeaderVersions(final List<Byte> versions, final ByteBuf buffer) { for (short version : versions) { ByteBuf bb = buffer.copy(); OFDeserializer<T> factory = registry.getDeserializer( new MessageCodeKey(version, messageCodeKey.getMsgType(), messageCodeKey.getClazz())); T builtByFactory = BufferHelper.deserialize(factory, bb); BufferHelper.checkHeader((OfHeader) builtByFactory, version); } }
From source file:org.opendaylight.usc.protocol.UscFrame.java
License:Open Source License
/** * Decodes a ByteBuf into a UscFrame//from w w w. j a va 2 s . c o m * * @param buf * @return * @throws IOException */ public static UscFrame getFromByteBuf(ByteBuf buf) throws IOException { final UscHeader header = UscHeader.fromByteBuffer(buf.nioBuffer(0, UscHeader.HEADER_LENGTH)); buf.readerIndex(UscHeader.HEADER_LENGTH); final int port = header.getApplicationPort(); final int sessionId = header.getSessionId(); final UscFrame result; switch (header.getOperationType()) { case DATA: result = new UscData(port, sessionId, buf.copy()); break; case CONTROL: result = new UscControl(port, sessionId, buf.readUnsignedShort()); break; case ERROR: result = new UscError(port, sessionId, buf.readUnsignedShort()); break; default: result = null; throw new IOException("Invalid operation type"); } return result; }