вопрос о Python и C ++ связи с использованием ZMQ - PullRequest
0 голосов
/ 30 ноября 2018

Я использую скрипт Python для связи с C ++, мой код на стороне C ++ выглядит так:

 class CTraderHandler : public CThostFtdcTraderSpi
 {
 public:
     void orderinsert(const char* BuyOrSell)
     {
        ...dosth()
     }  
     void OnRtnTrade(CThostFtdcTradeField *pTrade)
     {
        printf("OnRtnTrade\n");
     }
 };

 int main(int argc, char *argv[])
 {
 CTraderHandler *trader = new CTraderHandler();

 zmq::context_t context (1);
 zmq::socket_t socket (context, ZMQ_REP);
 socket.bind ("tcp://*:5555");

while (true) {
    zmq::message_t request;

    //  Wait for next request from client
    socket.recv (&request);
    std::string rpl = std::string(static_cast<char*>(request.data()), request.size());

    trader->orderinsert(rpl.c_str());

    //  Send reply back to client
    zmq::message_t reply (5);
    memcpy (reply.data (), "World", 5);
    socket.send (reply);
 }

 }

, где скрипт Python:

context = zmq.Context()
print ("Connecting to server...")
socket = context.socket(zmq.REQ)
socket.connect ("tcp://localhost:5555")

s="abc"
socket.send_string(s)
print ("done send StartBuy :", s)
message = socket.recv()
print(message)

, который вы можете увидеть после rec ++ cvvотправленные данные python, они вызывают функцию orderinsert класса CTraderHandler, а затем отвечают на python

, но дело в том, что в классе CTraderHandler после выполнения orderinsert может вызываться событие OnRtnTrade, я хочу, когда c ++ отвечает на pythonтакже включает некоторую информацию, полученную от события OnRtnTrade.

теперь я не знаю, как разработать код для его завершения.

...