Я использую скрипт 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.
теперь я не знаю, как разработать код для его завершения.