类com.alibaba.dubbo.rpc.protocol.thrift.io.RandomAccessByteArrayOutputStream源码实例Demo

下面列出了怎么用com.alibaba.dubbo.rpc.protocol.thrift.io.RandomAccessByteArrayOutputStream的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: dubbo-2.6.5   文件: ThriftCodecTest.java
@Test
public void testDecodeRequest() throws Exception {
    Request request = createRequest();
    // encode
    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream(1024);

    TIOStreamTransport transport = new TIOStreamTransport(bos);

    TBinaryProtocol protocol = new TBinaryProtocol(transport);

    int messageLength, headerLength;

    protocol.writeI16(ThriftCodec.MAGIC);
    protocol.writeI32(Integer.MAX_VALUE);
    protocol.writeI16(Short.MAX_VALUE);
    protocol.writeByte(ThriftCodec.VERSION);
    protocol.writeString(
            ((RpcInvocation) request.getData())
                    .getAttachment(Constants.INTERFACE_KEY));
    protocol.writeI64(request.getId());
    protocol.getTransport().flush();
    headerLength = bos.size();

    Demo.echoString_args args = new Demo.echoString_args();
    args.setArg("Hell, World!");

    TMessage message = new TMessage("echoString", TMessageType.CALL, ThriftCodec.getSeqId());

    protocol.writeMessageBegin(message);
    args.write(protocol);
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try {
        bos.setWriteIndex(ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX);
        protocol.writeI16((short) (0xffff & headerLength));
        bos.setWriteIndex(ThriftCodec.MESSAGE_LENGTH_INDEX);
        protocol.writeI32(messageLength);
    } finally {
        bos.setWriteIndex(oldIndex);
    }

    Object obj = codec.decode((Channel) null, ChannelBuffers.wrappedBuffer(
            encodeFrame(bos.toByteArray())));

    Assert.assertTrue(obj instanceof Request);

    obj = ((Request) obj).getData();

    Assert.assertTrue(obj instanceof RpcInvocation);

    RpcInvocation invocation = (RpcInvocation) obj;

    Assert.assertEquals("echoString", invocation.getMethodName());
    Assert.assertArrayEquals(new Class[]{String.class}, invocation.getParameterTypes());
    Assert.assertArrayEquals(new Object[]{args.getArg()}, invocation.getArguments());

}
 
源代码2 项目: dubbox   文件: ThriftCodecTest.java
@Test
public void testDecodeRequest() throws Exception {
    Request request = createRequest();
    // encode
    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 1024 );

    TIOStreamTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    int messageLength, headerLength;

    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString(
            ( ( RpcInvocation ) request.getData() )
                    .getAttachment( Constants.INTERFACE_KEY) );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    Demo.echoString_args args = new Demo.echoString_args(  );
    args.setArg( "Hell, World!" );

    TMessage message = new TMessage( "echoString", TMessageType.CALL, ThriftCodec.getSeqId() );

    protocol.writeMessageBegin( message );
    args.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try{
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
    } finally {
        bos.setWriteIndex( oldIndex );
    }

    Object obj = codec.decode( ( Channel ) null, ChannelBuffers.wrappedBuffer(
        encodeFrame(bos.toByteArray())) );

    Assert.assertTrue( obj instanceof Request );

    obj = ( ( Request ) obj ).getData();

    Assert.assertTrue( obj instanceof RpcInvocation );

    RpcInvocation invocation = ( RpcInvocation ) obj;

    Assert.assertEquals( "echoString", invocation.getMethodName() );
    Assert.assertArrayEquals( new Class[] {String .class}, invocation.getParameterTypes() );
    Assert.assertArrayEquals( new Object[] { args.getArg() }, invocation.getArguments() );

}
 
源代码3 项目: dubbox-hystrix   文件: ThriftCodecTest.java
@Test
public void testDecodeRequest() throws Exception {
    Request request = createRequest();
    // encode
    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 1024 );

    TIOStreamTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    int messageLength, headerLength;

    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString(
            ( ( RpcInvocation ) request.getData() )
                    .getAttachment( Constants.INTERFACE_KEY) );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    Demo.echoString_args args = new Demo.echoString_args(  );
    args.setArg( "Hell, World!" );

    TMessage message = new TMessage( "echoString", TMessageType.CALL, ThriftCodec.getSeqId() );

    protocol.writeMessageBegin( message );
    args.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try{
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
    } finally {
        bos.setWriteIndex( oldIndex );
    }

    Object obj = codec.decode( ( Channel ) null, ChannelBuffers.wrappedBuffer(
        encodeFrame(bos.toByteArray())) );

    Assert.assertTrue( obj instanceof Request );

    obj = ( ( Request ) obj ).getData();

    Assert.assertTrue( obj instanceof RpcInvocation );

    RpcInvocation invocation = ( RpcInvocation ) obj;

    Assert.assertEquals( "echoString", invocation.getMethodName() );
    Assert.assertArrayEquals( new Class[] {String .class}, invocation.getParameterTypes() );
    Assert.assertArrayEquals( new Object[] { args.getArg() }, invocation.getArguments() );

}
 
源代码4 项目: dubbox   文件: ThriftCodecTest.java
@Test
public void testDecodeRequest() throws Exception {
    Request request = createRequest();
    // encode
    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 1024 );

    TIOStreamTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    int messageLength, headerLength;

    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString(
            ( ( RpcInvocation ) request.getData() )
                    .getAttachment( Constants.INTERFACE_KEY) );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    Demo.echoString_args args = new Demo.echoString_args(  );
    args.setArg( "Hell, World!" );

    TMessage message = new TMessage( "echoString", TMessageType.CALL, ThriftCodec.getSeqId() );

    protocol.writeMessageBegin( message );
    args.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try{
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
    } finally {
        bos.setWriteIndex( oldIndex );
    }

    Object obj = codec.decode( ( Channel ) null, ChannelBuffers.wrappedBuffer(
        encodeFrame(bos.toByteArray())) );

    Assert.assertTrue( obj instanceof Request );

    obj = ( ( Request ) obj ).getData();

    Assert.assertTrue( obj instanceof RpcInvocation );

    RpcInvocation invocation = ( RpcInvocation ) obj;

    Assert.assertEquals( "echoString", invocation.getMethodName() );
    Assert.assertArrayEquals( new Class[] {String .class}, invocation.getParameterTypes() );
    Assert.assertArrayEquals( new Object[] { args.getArg() }, invocation.getArguments() );

}
 
源代码5 项目: dubbox   文件: ThriftCodecTest.java
@Test
public void testDecodeRequest() throws Exception {
    Request request = createRequest();
    // encode
    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 1024 );

    TIOStreamTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    int messageLength, headerLength;

    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString(
            ( ( RpcInvocation ) request.getData() )
                    .getAttachment( Constants.INTERFACE_KEY) );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    Demo.echoString_args args = new Demo.echoString_args(  );
    args.setArg( "Hell, World!" );

    TMessage message = new TMessage( "echoString", TMessageType.CALL, ThriftCodec.getSeqId() );

    protocol.writeMessageBegin( message );
    args.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try{
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
    } finally {
        bos.setWriteIndex( oldIndex );
    }

    Object obj = codec.decode( ( Channel ) null, ChannelBuffers.wrappedBuffer(
        encodeFrame(bos.toByteArray())) );

    Assert.assertTrue( obj instanceof Request );

    obj = ( ( Request ) obj ).getData();

    Assert.assertTrue( obj instanceof RpcInvocation );

    RpcInvocation invocation = ( RpcInvocation ) obj;

    Assert.assertEquals( "echoString", invocation.getMethodName() );
    Assert.assertArrayEquals( new Class[] {String .class}, invocation.getParameterTypes() );
    Assert.assertArrayEquals( new Object[] { args.getArg() }, invocation.getArguments() );

}
 
源代码6 项目: dubbo-2.6.5   文件: ThriftCodecTest.java
@Test
public void testDecodeReplyResponse() throws Exception {

    URL url = URL.valueOf(ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.Iface.class.getName());

    Channel channel = new MockedChannel(url);

    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream(128);

    Request request = createRequest();

    DefaultFuture future = new DefaultFuture(channel, request, 10);

    TMessage message = new TMessage("echoString", TMessageType.REPLY, ThriftCodec.getSeqId());

    Demo.echoString_result methodResult = new Demo.echoString_result();

    methodResult.success = "Hello, World!";

    TTransport transport = new TIOStreamTransport(bos);

    TBinaryProtocol protocol = new TBinaryProtocol(transport);

    int messageLength, headerLength;
    // prepare
    protocol.writeI16(ThriftCodec.MAGIC);
    protocol.writeI32(Integer.MAX_VALUE);
    protocol.writeI16(Short.MAX_VALUE);
    protocol.writeByte(ThriftCodec.VERSION);
    protocol.writeString(Demo.Iface.class.getName());
    protocol.writeI64(request.getId());
    protocol.getTransport().flush();
    headerLength = bos.size();

    protocol.writeMessageBegin(message);
    methodResult.write(protocol);
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try {
        bos.setWriteIndex(ThriftCodec.MESSAGE_LENGTH_INDEX);
        protocol.writeI32(messageLength);
        bos.setWriteIndex(ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX);
        protocol.writeI16((short) (0xffff & headerLength));
    } finally {
        bos.setWriteIndex(oldIndex);
    }
    // prepare

    byte[] buf = new byte[4 + bos.size()];
    System.arraycopy(bos.toByteArray(), 0, buf, 4, bos.size());

    ChannelBuffer bis = ChannelBuffers.wrappedBuffer(buf);

    Object obj = codec.decode((Channel) null, bis);

    Assert.assertNotNull(obj);

    Assert.assertEquals(true, obj instanceof Response);

    Response response = (Response) obj;

    Assert.assertEquals(request.getId(), response.getId());

    Assert.assertTrue(response.getResult() instanceof RpcResult);

    RpcResult result = (RpcResult) response.getResult();

    Assert.assertTrue(result.getResult() instanceof String);

    Assert.assertEquals(methodResult.success, result.getResult());

}
 
源代码7 项目: dubbo-2.6.5   文件: ThriftCodecTest.java
@Test
public void testDecodeExceptionResponse() throws Exception {

    URL url = URL.valueOf(ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.class.getName());

    Channel channel = new MockedChannel(url);

    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream(128);

    Request request = createRequest();

    DefaultFuture future = new DefaultFuture(channel, request, 10);

    TMessage message = new TMessage("echoString", TMessageType.EXCEPTION, ThriftCodec.getSeqId());

    TTransport transport = new TIOStreamTransport(bos);

    TBinaryProtocol protocol = new TBinaryProtocol(transport);

    TApplicationException exception = new TApplicationException();

    int messageLength, headerLength;
    // prepare
    protocol.writeI16(ThriftCodec.MAGIC);
    protocol.writeI32(Integer.MAX_VALUE);
    protocol.writeI16(Short.MAX_VALUE);
    protocol.writeByte(ThriftCodec.VERSION);
    protocol.writeString(Demo.class.getName());
    protocol.writeI64(request.getId());
    protocol.getTransport().flush();
    headerLength = bos.size();

    protocol.writeMessageBegin(message);
    exception.write(protocol);
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try {
        bos.setWriteIndex(ThriftCodec.MESSAGE_LENGTH_INDEX);
        protocol.writeI32(messageLength);
        bos.setWriteIndex(ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX);
        protocol.writeI16((short) (0xffff & headerLength));
    } finally {
        bos.setWriteIndex(oldIndex);
    }
    // prepare

    ChannelBuffer bis = ChannelBuffers.wrappedBuffer(encodeFrame(bos.toByteArray()));

    Object obj = codec.decode((Channel) null, bis);

    Assert.assertNotNull(obj);

    Assert.assertTrue(obj instanceof Response);

    Response response = (Response) obj;

    Assert.assertTrue(response.getResult() instanceof RpcResult);

    RpcResult result = (RpcResult) response.getResult();

    Assert.assertTrue(result.hasException());

    Assert.assertTrue(result.getException() instanceof RpcException);

}
 
源代码8 项目: dubbox   文件: ThriftCodecTest.java
@Test
public void testDecodeReplyResponse() throws Exception {

    URL url = URL.valueOf( ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.Iface.class.getName() );

    Channel channel = new MockedChannel( url );

    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 128 );

    Request request = createRequest();

    DefaultFuture future = new DefaultFuture( channel, request, 10 );

    TMessage message = new TMessage( "echoString", TMessageType.REPLY, ThriftCodec.getSeqId() );

    Demo.echoString_result methodResult = new Demo.echoString_result();

    methodResult.success = "Hello, World!";

    TTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    int messageLength, headerLength;
    // prepare
    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString( Demo.Iface.class.getName() );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    protocol.writeMessageBegin( message );
    methodResult.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try {
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
    } finally {
        bos.setWriteIndex( oldIndex );
    }
    // prepare

    byte[] buf = new byte[ 4 + bos.size()];
    System.arraycopy( bos.toByteArray(), 0, buf, 4, bos.size() );

    ChannelBuffer bis = ChannelBuffers.wrappedBuffer(buf);

    Object obj = codec.decode( ( Channel ) null, bis );

    Assert.assertNotNull( obj );

    Assert.assertEquals( true, obj instanceof Response );

    Response response = ( Response ) obj;

    Assert.assertEquals( request.getId(), response.getId() );

    Assert.assertTrue( response.getResult() instanceof RpcResult );

    RpcResult result = ( RpcResult ) response.getResult();

    Assert.assertTrue( result.getResult() instanceof String );

    Assert.assertEquals( methodResult.success, result.getResult() );

}
 
源代码9 项目: dubbox   文件: ThriftCodecTest.java
@Test
public void testDecodeExceptionResponse() throws Exception {

    URL url = URL.valueOf( ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.class.getName() );

    Channel channel = new MockedChannel( url );

    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 128 );

    Request request = createRequest();

    DefaultFuture future = new DefaultFuture( channel, request, 10 );

    TMessage message = new TMessage( "echoString", TMessageType.EXCEPTION, ThriftCodec.getSeqId() );

    TTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    TApplicationException exception = new TApplicationException();

    int messageLength, headerLength;
    // prepare
    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString( Demo.class.getName() );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    protocol.writeMessageBegin( message );
    exception.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try {
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
    } finally {
        bos.setWriteIndex( oldIndex );
    }
    // prepare

    ChannelBuffer bis = ChannelBuffers.wrappedBuffer(encodeFrame(bos.toByteArray()));

    Object obj = codec.decode( ( Channel ) null, bis );

    Assert.assertNotNull( obj );

    Assert.assertTrue( obj instanceof Response );

    Response response = ( Response ) obj;

    Assert.assertTrue( response.getResult() instanceof RpcResult );

    RpcResult result = ( RpcResult ) response.getResult();

    Assert.assertTrue( result.hasException() );

    Assert.assertTrue( result.getException() instanceof RpcException );

}
 
源代码10 项目: dubbox-hystrix   文件: ThriftCodecTest.java
@Test
public void testDecodeReplyResponse() throws Exception {

    URL url = URL.valueOf( ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.Iface.class.getName() );

    Channel channel = new MockedChannel( url );

    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 128 );

    Request request = createRequest();

    DefaultFuture future = new DefaultFuture( channel, request, 10 );

    TMessage message = new TMessage( "echoString", TMessageType.REPLY, ThriftCodec.getSeqId() );

    Demo.echoString_result methodResult = new Demo.echoString_result();

    methodResult.success = "Hello, World!";

    TTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    int messageLength, headerLength;
    // prepare
    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString( Demo.Iface.class.getName() );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    protocol.writeMessageBegin( message );
    methodResult.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try {
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
    } finally {
        bos.setWriteIndex( oldIndex );
    }
    // prepare

    byte[] buf = new byte[ 4 + bos.size()];
    System.arraycopy( bos.toByteArray(), 0, buf, 4, bos.size() );

    ChannelBuffer bis = ChannelBuffers.wrappedBuffer(buf);

    Object obj = codec.decode( ( Channel ) null, bis );

    Assert.assertNotNull( obj );

    Assert.assertEquals( true, obj instanceof Response );

    Response response = ( Response ) obj;

    Assert.assertEquals( request.getId(), response.getId() );

    Assert.assertTrue( response.getResult() instanceof RpcResult );

    RpcResult result = ( RpcResult ) response.getResult();

    Assert.assertTrue( result.getResult() instanceof String );

    Assert.assertEquals( methodResult.success, result.getResult() );

}
 
源代码11 项目: dubbox-hystrix   文件: ThriftCodecTest.java
@Test
public void testDecodeExceptionResponse() throws Exception {

    URL url = URL.valueOf( ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.class.getName() );

    Channel channel = new MockedChannel( url );

    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 128 );

    Request request = createRequest();

    DefaultFuture future = new DefaultFuture( channel, request, 10 );

    TMessage message = new TMessage( "echoString", TMessageType.EXCEPTION, ThriftCodec.getSeqId() );

    TTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    TApplicationException exception = new TApplicationException();

    int messageLength, headerLength;
    // prepare
    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString( Demo.class.getName() );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    protocol.writeMessageBegin( message );
    exception.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try {
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
    } finally {
        bos.setWriteIndex( oldIndex );
    }
    // prepare

    ChannelBuffer bis = ChannelBuffers.wrappedBuffer(encodeFrame(bos.toByteArray()));

    Object obj = codec.decode( ( Channel ) null, bis );

    Assert.assertNotNull( obj );

    Assert.assertTrue( obj instanceof Response );

    Response response = ( Response ) obj;

    Assert.assertTrue( response.getResult() instanceof RpcResult );

    RpcResult result = ( RpcResult ) response.getResult();

    Assert.assertTrue( result.hasException() );

    Assert.assertTrue( result.getException() instanceof RpcException );

}
 
源代码12 项目: dubbox   文件: ThriftCodecTest.java
@Test
public void testDecodeReplyResponse() throws Exception {

    URL url = URL.valueOf( ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.Iface.class.getName() );

    Channel channel = new MockedChannel( url );

    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 128 );

    Request request = createRequest();

    DefaultFuture future = new DefaultFuture( channel, request, 10 );

    TMessage message = new TMessage( "echoString", TMessageType.REPLY, ThriftCodec.getSeqId() );

    Demo.echoString_result methodResult = new Demo.echoString_result();

    methodResult.success = "Hello, World!";

    TTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    int messageLength, headerLength;
    // prepare
    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString( Demo.Iface.class.getName() );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    protocol.writeMessageBegin( message );
    methodResult.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try {
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
    } finally {
        bos.setWriteIndex( oldIndex );
    }
    // prepare

    byte[] buf = new byte[ 4 + bos.size()];
    System.arraycopy( bos.toByteArray(), 0, buf, 4, bos.size() );

    ChannelBuffer bis = ChannelBuffers.wrappedBuffer(buf);

    Object obj = codec.decode( ( Channel ) null, bis );

    Assert.assertNotNull( obj );

    Assert.assertEquals( true, obj instanceof Response );

    Response response = ( Response ) obj;

    Assert.assertEquals( request.getId(), response.getId() );

    Assert.assertTrue( response.getResult() instanceof RpcResult );

    RpcResult result = ( RpcResult ) response.getResult();

    Assert.assertTrue( result.getResult() instanceof String );

    Assert.assertEquals( methodResult.success, result.getResult() );

}
 
源代码13 项目: dubbox   文件: ThriftCodecTest.java
@Test
public void testDecodeExceptionResponse() throws Exception {

    URL url = URL.valueOf( ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.class.getName() );

    Channel channel = new MockedChannel( url );

    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 128 );

    Request request = createRequest();

    DefaultFuture future = new DefaultFuture( channel, request, 10 );

    TMessage message = new TMessage( "echoString", TMessageType.EXCEPTION, ThriftCodec.getSeqId() );

    TTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    TApplicationException exception = new TApplicationException();

    int messageLength, headerLength;
    // prepare
    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString( Demo.class.getName() );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    protocol.writeMessageBegin( message );
    exception.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try {
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
    } finally {
        bos.setWriteIndex( oldIndex );
    }
    // prepare

    ChannelBuffer bis = ChannelBuffers.wrappedBuffer(encodeFrame(bos.toByteArray()));

    Object obj = codec.decode( ( Channel ) null, bis );

    Assert.assertNotNull( obj );

    Assert.assertTrue( obj instanceof Response );

    Response response = ( Response ) obj;

    Assert.assertTrue( response.getResult() instanceof RpcResult );

    RpcResult result = ( RpcResult ) response.getResult();

    Assert.assertTrue( result.hasException() );

    Assert.assertTrue( result.getException() instanceof RpcException );

}
 
源代码14 项目: dubbox   文件: ThriftCodecTest.java
@Test
public void testDecodeReplyResponse() throws Exception {

    URL url = URL.valueOf( ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.Iface.class.getName() );

    Channel channel = new MockedChannel( url );

    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 128 );

    Request request = createRequest();

    DefaultFuture future = new DefaultFuture( channel, request, 10 );

    TMessage message = new TMessage( "echoString", TMessageType.REPLY, ThriftCodec.getSeqId() );

    Demo.echoString_result methodResult = new Demo.echoString_result();

    methodResult.success = "Hello, World!";

    TTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    int messageLength, headerLength;
    // prepare
    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString( Demo.Iface.class.getName() );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    protocol.writeMessageBegin( message );
    methodResult.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try {
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
    } finally {
        bos.setWriteIndex( oldIndex );
    }
    // prepare

    byte[] buf = new byte[ 4 + bos.size()];
    System.arraycopy( bos.toByteArray(), 0, buf, 4, bos.size() );

    ChannelBuffer bis = ChannelBuffers.wrappedBuffer(buf);

    Object obj = codec.decode( ( Channel ) null, bis );

    Assert.assertNotNull( obj );

    Assert.assertEquals( true, obj instanceof Response );

    Response response = ( Response ) obj;

    Assert.assertEquals( request.getId(), response.getId() );

    Assert.assertTrue( response.getResult() instanceof RpcResult );

    RpcResult result = ( RpcResult ) response.getResult();

    Assert.assertTrue( result.getResult() instanceof String );

    Assert.assertEquals( methodResult.success, result.getResult() );

}
 
源代码15 项目: dubbox   文件: ThriftCodecTest.java
@Test
public void testDecodeExceptionResponse() throws Exception {

    URL url = URL.valueOf( ThriftProtocol.NAME + "://127.0.0.1:40880/" + Demo.class.getName() );

    Channel channel = new MockedChannel( url );

    RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream( 128 );

    Request request = createRequest();

    DefaultFuture future = new DefaultFuture( channel, request, 10 );

    TMessage message = new TMessage( "echoString", TMessageType.EXCEPTION, ThriftCodec.getSeqId() );

    TTransport transport = new TIOStreamTransport( bos );

    TBinaryProtocol protocol = new TBinaryProtocol( transport );

    TApplicationException exception = new TApplicationException();

    int messageLength, headerLength;
    // prepare
    protocol.writeI16( ThriftCodec.MAGIC );
    protocol.writeI32( Integer.MAX_VALUE );
    protocol.writeI16( Short.MAX_VALUE );
    protocol.writeByte( ThriftCodec.VERSION );
    protocol.writeString( Demo.class.getName() );
    protocol.writeI64( request.getId() );
    protocol.getTransport().flush();
    headerLength = bos.size();

    protocol.writeMessageBegin( message );
    exception.write( protocol );
    protocol.writeMessageEnd();
    protocol.getTransport().flush();
    int oldIndex = messageLength = bos.size();

    try {
        bos.setWriteIndex( ThriftCodec.MESSAGE_LENGTH_INDEX );
        protocol.writeI32( messageLength );
        bos.setWriteIndex( ThriftCodec.MESSAGE_HEADER_LENGTH_INDEX );
        protocol.writeI16( ( short ) ( 0xffff & headerLength ) );
    } finally {
        bos.setWriteIndex( oldIndex );
    }
    // prepare

    ChannelBuffer bis = ChannelBuffers.wrappedBuffer(encodeFrame(bos.toByteArray()));

    Object obj = codec.decode( ( Channel ) null, bis );

    Assert.assertNotNull( obj );

    Assert.assertTrue( obj instanceof Response );

    Response response = ( Response ) obj;

    Assert.assertTrue( response.getResult() instanceof RpcResult );

    RpcResult result = ( RpcResult ) response.getResult();

    Assert.assertTrue( result.hasException() );

    Assert.assertTrue( result.getException() instanceof RpcException );

}
 
 类所在包
 类方法
 同包方法