source: ntrip/trunk/GnssCenter/thrift/test2/server.cpp@ 4947

Last change on this file since 4947 was 4947, checked in by mervart, 9 years ago
File size: 2.3 KB
Line 
1#include <iostream>
2#include <string>
3
4#include <thrift/protocol/TBinaryProtocol.h>
5#include <thrift/server/TThreadedServer.h>
6#include <thrift/transport/TServerSocket.h>
7#include <thrift/transport/TBufferTransports.h>
8#include <thrift/concurrency/Thread.h>
9
10#include "gen-cpp/myService.h"
11
12using namespace std;
13using namespace boost;
14using namespace ::apache::thrift;
15using namespace ::apache::thrift::protocol;
16using namespace ::apache::thrift::transport;
17using namespace ::apache::thrift::server;
18using namespace ::apache::thrift::concurrency;
19
20class myService : virtual public myServiceIf {
21 public:
22 myService() {}
23 void answer(std::string& answ, const std::string& question) {
24 // implemented on the client-side only
25 }
26};
27
28class t_connection {
29 public:
30 shared_ptr<myService> _service;
31 shared_ptr<TProcessor> _processor;
32 shared_ptr<TProtocol> _protocolInp;
33 shared_ptr<TProtocol> _protocolOut;
34 shared_ptr<TTransport> _transport;
35};
36
37shared_ptr<t_connection> CONNECTION;
38
39class myProcessorFactory : public TProcessorFactory {
40 public:
41 myProcessorFactory() {};
42 shared_ptr<TProcessor> getProcessor(const TConnectionInfo& info) {
43 shared_ptr<myService> service(new myService());
44 shared_ptr<TProcessor> processor(new myServiceProcessor(service));
45 cout << "connection " << endl;
46
47 shared_ptr<t_connection> connection(new t_connection);
48 connection->_service = service;
49 connection->_processor = processor;
50 connection->_protocolInp = info.input;
51 connection->_protocolOut = info.output;
52 connection->_transport = info.transport;
53
54 return processor;
55 }
56};
57
58class t_serverThread : public Runnable {
59 public:
60 t_serverThread() {}
61 void run() {
62 int port = 9090;
63 shared_ptr<TServerSocket> serverTransport(new TServerSocket(port));
64 shared_ptr<myProcessorFactory> processorFactory(new myProcessorFactory());
65 shared_ptr<TTransportFactory> transportFactory(new TBufferedTransportFactory());
66 shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());
67
68 TThreadedServer server(processorFactory, serverTransport,
69 transportFactory, protocolFactory);
70 server.serve();
71 }
72};
73
74int main(int argc, char **argv) {
75
76 t_serverThread serverThread;
77 serverThread.run();
78
79 while (true) {
80 sleep(1);
81 }
82
83 return 0;
84}
85
Note: See TracBrowser for help on using the repository browser.