非阻塞模式

#include "RpcServiceHandler.h"

#include <thrift/concurrency/ThreadManager.h>
#include <thrift/concurrency/PosixThreadFactory.h>
#include <thrift/protocol/TBinaryProtocol.h>
#include <thrift/server/TThreadPoolServer.h>
#include <thrift/server/TNonblockingServer.h>
#include <thrift/server/TThreadedServer.h>
#include <thrift/transport/TServerSocket.h>
#include <thrift/transport/TBufferTransports.h>
#include <thrift/TToString.h>

int main(int argc, char **argv)
{
    RpcServiceHandler *rpcServiceHanlder = new RpcServiceHandler();

    int port = CFG()->getInt(kCfgProcPort);
    int workerCount = CFG()->getInt(kCfgProcWCnt);

    boost::shared_ptr<RpcServiceHandler> handler(rpcServiceHanlder);
    boost::shared_ptr<TProcessor> processor(new RpcServiceProcessor(handler));
    boost::shared_ptr<TServerTransport> serverTransport(new TServerSocket(port));
    boost::shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());

    boost::shared_ptr<ThreadManager> threadManager = ThreadManager::newSimpleThreadManager(workerCount);
    boost::shared_ptr<PosixThreadFactory> threadFactory = boost::shared_ptr<PosixThreadFactory>(new PosixThreadFactory());
    threadManager->threadFactory(threadFactory);
    threadManager->start();
    
    TNonblockingServer server(processor,    
                              protocolFactory,    
                              port,    
                              threadManager);

    std::cout << "Starting the server..." << std::endl;

    server.serve();
    return 0;
}

  

 

线程池模式

#include "RpcServiceHandler.h"

#include <thrift/concurrency/ThreadManager.h>
#include <thrift/concurrency/PosixThreadFactory.h>
#include <thrift/protocol/TBinaryProtocol.h>
#include <thrift/server/TThreadPoolServer.h>
#include <thrift/server/TNonblockingServer.h>
#include <thrift/server/TThreadedServer.h>
#include <thrift/transport/TServerSocket.h>
#include <thrift/transport/TBufferTransports.h>
#include <thrift/TToString.h>

int main(int argc, char **argv)
{
    RpcServiceHandler *rpcServiceHanlder = new RpcServiceHandler();

    int port = CFG()->getInt(kCfgProcPort);
    int workerCount = CFG()->getInt(kCfgProcWCnt);

    boost::shared_ptr<RpcServiceHandler> handler(rpcServiceHanlder);
    boost::shared_ptr<TProcessor> processor(new RpcServiceProcessor(handler));
    boost::shared_ptr<TServerTransport> serverTransport(new TServerSocket(port));
    boost::shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory());
    boost::shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());

    boost::shared_ptr<ThreadManager> threadManager = ThreadManager::newSimpleThreadManager(workerCount);
    boost::shared_ptr<PosixThreadFactory> threadFactory = boost::shared_ptr<PosixThreadFactory>(new PosixThreadFactory());
    threadManager->threadFactory(threadFactory);
    threadManager->start();
    
    TThreadPoolServer server(processor,
                             serverTransport,
                             transportFactory,
                             protocolFactory,
                             threadManager);

    std::cout << "Starting the server..." << std::endl;

    server.serve();
    return 0;
}

 

单独Server模式

#include "RpcServiceHandler.h"

#include <thrift/protocol/TBinaryProtocol.h>
#include <thrift/server/TSimpleServer.h>
#include <thrift/transport/TServerSocket.h>
#include <thrift/transport/TBufferTransports.h>
#include <thrift/TToString.h>

int main(int argc, char **argv)
{
    RpcServiceHandler *rpcServiceHanlder = new RpcServiceHandler();

    int port = CFG()->getInt(kCfgProcPort);

    boost::shared_ptr<RpcServiceHandler> handler(rpcServiceHanlder);
    boost::shared_ptr<TProcessor> processor(new RpcServiceProcessor(handler));
    boost::shared_ptr<TServerTransport> serverTransport(new TServerSocket(port));
    boost::shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory());
    boost::shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());


    std::cout << "Starting the server..." << std::endl;
    TSimpleServer server(processor, serverTransport, transportFactory, protocolFactory);

    server.serve();
    return 0;
}

  

 

相关文章:

  • 2022-12-23
  • 2021-04-01
  • 2021-06-07
  • 2022-12-23
  • 2021-07-23
  • 2022-01-18
  • 2022-01-12
  • 2021-06-30
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
  • 2022-02-16
相关资源
相似解决方案