I have a simple thrift server:
shared_ptr<TProcessor> processor(new MyProcessor(handlerTrace)); shared_ptr<TServerTransport> serverTransport(new TServerSocket(port)); shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory()); shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory()); TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);
and able to connect with the following lines:
boost::shared_ptr<TSocket> socket(new TSocket("localhost", port)); boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket)); boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport)); MyClient client(protocol);
Now I want to change the server to TNonblockingServer
. Therefore I changed the server code to the following:
shared_ptr<TServerTransport> serverTransport(new TServerSocket(port)); shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory()); TNonblockingServer server(processor, protocolFactory, port);
The client is unchanged. Now the server complaints about the client with the following error message:
Thrift: Mon Aug 19 22:55:43 2013 TNonblockingServer: Serving on port 9990, 1 io threads. Thrift: Mon Aug 19 22:55:43 2013 TNonblockingServer: using libevent 2.0.16-stable method epoll Thrift: Mon Aug 19 22:55:43 2013 TNonblocking: IO thread #0 registered for listen. Thrift: Mon Aug 19 22:55:43 2013 TNonblocking: IO thread #0 registered for notify. Thrift: Mon Aug 19 22:55:43 2013 TNonblockingServer: IO thread #0 entering loop... Thrift: Mon Aug 19 22:55:48 2013 TNonblockingServer: frame size too large (2147549185 > 268435456) from client <Host: 127.0.0.1 Port: 57130>. Remote side not using TFramedTransport?
What do I do wrong? Comments? I am using the 1.0-dev version of thrift as only this version supports multiplexing..