我使用与c ++通信的python脚本,我的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)
在c ++ recv python发送数据之后,您可以看到它调用CTraderHandler类的orderinsert函数,然后回复python
但问题是:在CTraderHandler类中,在执行orderinsert之后,它可能会调用OnRtnTrade事件,我想在c ++答复python时,还包括从OnRtnTrade事件获得的一些信息。
现在我不知道如何设计代码来完成它。