一、如何获取client的实例
#pragma once
#include "f:\thirdparty\thrift\thrift-0.9.0\lib\cpp\src\thrift\server\tserver.h"
using namespace apache::thrift::server;
class ServerEventHandler :
public TServerEventHandler
{
public:
ServerEventHandler(void);
~ServerEventHandler(void);
virtual void* createContext(boost::shared_ptr<TProtocol> input, boost::shared_ptr<TProtocol> output);
virtual void deleteContext(void* serverContext, boost::shared_ptr<TProtocol>input, boost::shared_ptr<TProtocol>output);
};
void* ServerEventHandler::createContext(boost::shared_ptr<TProtocol> input, boost::shared_ptr<TProtocol> output)
{
theApp.AddClient(input->getTransport());
return NULL;
}
void ServerEventHandler::deleteContext(void* serverContext, boost::shared_ptr<TProtocol>input, boost::shared_ptr<TProtocol>output)
{
theApp.RemoveClient(input->getTransport());
}
m_thriftServer->setServerEventHandler(boost::shared_ptr<ServerEventHandler>(new ServerEventHandler()));
二、
如何设置接收和发送缓存的大小
#pragma once
#include "f:\thirdparty\thrift\thrift-0.9.0\lib\cpp\src\thrift\transport\tbuffertransports.h"
using namespace apache::thrift::transport;
class BufferedTransportFactory :
public TBufferedTransportFactory
{
public:
BufferedTransportFactory(int rwSize);
~BufferedTransportFactory(void);
public:
virtual boost::shared_ptr<TTransport> getTransport(boost::shared_ptr<TTransport> trans)
{
return boost::shared_ptr<TTransport>(new TBufferedTransport(trans, (uint32_t)m_rwSize));
}
private:
int m_rwSize;
};
shared_ptr<TTransportFactory> transportFactory(new BufferedTransportFactory(1024));