|  | #include <iostream> | 
|  | #include <cstdlib> | 
|  | #include <thrift/protocol/TBinaryProtocol.h> | 
|  |  | 
|  | #include "zmq.hpp" | 
|  | #include "TZmqClient.h" | 
|  | #include "Storage.h" | 
|  |  | 
|  | using boost::shared_ptr; | 
|  | using apache::thrift::transport::TZmqClient; | 
|  | using apache::thrift::protocol::TBinaryProtocol; | 
|  |  | 
|  | int main(int argc, char** argv) { | 
|  | const char* endpoint = "tcp://127.0.0.1:9090"; | 
|  | int socktype = ZMQ_REQ; | 
|  | int incr = 0; | 
|  | if (argc > 1) { | 
|  | incr = atoi(argv[1]); | 
|  | if (incr) { | 
|  | socktype = ZMQ_DOWNSTREAM; | 
|  | endpoint = "tcp://127.0.0.1:9091"; | 
|  | } | 
|  | } | 
|  |  | 
|  | zmq::context_t ctx(1); | 
|  | shared_ptr<TZmqClient> transport(new TZmqClient(ctx, endpoint, socktype)); | 
|  | shared_ptr<TBinaryProtocol> protocol(new TBinaryProtocol(transport)); | 
|  | StorageClient client(protocol); | 
|  | transport->open(); | 
|  |  | 
|  | if (incr) { | 
|  | client.incr(incr); | 
|  | usleep(50000); | 
|  | } else { | 
|  | int value = client.get(); | 
|  | std::cout << value << std::endl; | 
|  | } | 
|  |  | 
|  | return 0; | 
|  | } |