| #include "zmq.hpp" | 
 | #include "TZmqServer.h" | 
 | #include "Storage.h" | 
 |  | 
 | using boost::shared_ptr; | 
 | using apache::thrift::TProcessor; | 
 | using apache::thrift::server::TZmqServer; | 
 | using apache::thrift::server::TZmqMultiServer; | 
 |  | 
 | class StorageHandler : virtual public StorageIf { | 
 |  public: | 
 |   StorageHandler() | 
 |     : value_(0) | 
 |   {} | 
 |  | 
 |   void incr(const int32_t amount) { | 
 |     value_ += amount; | 
 |   } | 
 |  | 
 |   int32_t get() { | 
 |     return value_; | 
 |   } | 
 |  | 
 |  private: | 
 |   int32_t value_; | 
 |  | 
 | }; | 
 |  | 
 |  | 
 | int main(int argc, char *argv[]) { | 
 |   shared_ptr<StorageHandler> handler(new StorageHandler()); | 
 |   shared_ptr<TProcessor> processor(new StorageProcessor(handler)); | 
 |  | 
 |   zmq::context_t ctx(1); | 
 |   TZmqServer reqrep_server(processor, ctx, "tcp://0.0.0.0:9090", ZMQ_REP); | 
 |   TZmqServer oneway_server(processor, ctx, "tcp://0.0.0.0:9091", ZMQ_UPSTREAM); | 
 |   TZmqMultiServer multiserver; | 
 |   multiserver.servers().push_back(&reqrep_server); | 
 |   multiserver.servers().push_back(&oneway_server); | 
 |   multiserver.serveForever(); | 
 |  | 
 |   return 0; | 
 | } |