Example usage for io.netty.buffer ByteBuf copy

List of usage examples for io.netty.buffer ByteBuf copy

Introduction

In this page you can find the example usage for io.netty.buffer ByteBuf copy.

Prototype

public abstract ByteBuf copy();

Source Link

Document

Returns a copy of this buffer's readable bytes.

Usage

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;
}