From 5b42262e942a6700c6c99fd50bf5f6b0d3c48021 Mon Sep 17 00:00:00 2001 From: 0x2h Date: Thu, 9 Sep 2021 21:22:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dnew=E6=9C=AAdelete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vnxtpquote/vnxtpquote/vnxtpquote.cpp | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/source/Linux/xtp_python3_2.2.30.7/vnxtpquote/vnxtpquote/vnxtpquote.cpp b/source/Linux/xtp_python3_2.2.30.7/vnxtpquote/vnxtpquote/vnxtpquote.cpp index ee222da..438a060 100644 --- a/source/Linux/xtp_python3_2.2.30.7/vnxtpquote/vnxtpquote/vnxtpquote.cpp +++ b/source/Linux/xtp_python3_2.2.30.7/vnxtpquote/vnxtpquote/vnxtpquote.cpp @@ -1,21 +1,21 @@ -// vnctpmd.cpp : 定义 DLL 应用程序的导出函数。 +// vnctpmd.cpp : 瀹氫箟 DLL 搴旂敤绋嬪簭鐨勫鍑哄嚱鏁般 // //#include "stdafx.h" #include "vnxtpquote.h" ///------------------------------------------------------------------------------------- -///从Python对象到C++类型转换用的函数 +///浠嶱ython瀵硅薄鍒癈++绫诲瀷杞崲鐢ㄧ殑鍑芥暟 ///------------------------------------------------------------------------------------- void getInt(dict d, string key, int *value) { - if (d.has_key(key)) //检查字典中是否存在该键值 + if (d.has_key(key)) //妫鏌ュ瓧鍏镐腑鏄惁瀛樺湪璇ラ敭鍊 { - object o = d[key]; //获取该键值 - extract x(o); //创建提取器 - if (x.check()) //如果可以提取 + object o = d[key]; //鑾峰彇璇ラ敭鍊 + extract x(o); //鍒涘缓鎻愬彇鍣 + if (x.check()) //濡傛灉鍙互鎻愬彇 { - *value = x(); //对目标整数指针赋值 + *value = x(); //瀵圭洰鏍囨暣鏁版寚閽堣祴鍊 } } }; @@ -43,8 +43,8 @@ void getStr(dict d, string key, char *value) { string s = x(); const char *buffer = s.c_str(); - //对字符串指针赋值必须使用strcpy_s, vs2013使用strcpy编译通不过 - //+1应该是因为C++字符串的结尾符号?不是特别确定,不加这个1会出错 + //瀵瑰瓧绗︿覆鎸囬拡璧嬪煎繀椤讳娇鐢╯trcpy_s, vs2013浣跨敤strcpy缂栬瘧閫氫笉杩 + //+1搴旇鏄洜涓篊++瀛楃涓茬殑缁撳熬绗﹀彿锛熶笉鏄壒鍒‘瀹氾紝涓嶅姞杩欎釜1浼氬嚭閿 #ifdef _MSC_VER //WIN32 strcpy_s(value, strlen(buffer) + 1, buffer); #elif __GNUC__ @@ -75,7 +75,7 @@ string addEndingChar(char *value){ } ///------------------------------------------------------------------------------------- -///C++的回调函数将数据保存到队列中 +///C++鐨勫洖璋冨嚱鏁板皢鏁版嵁淇濆瓨鍒伴槦鍒椾腑 ///------------------------------------------------------------------------------------- void QuoteApi::OnDisconnected(int reason) @@ -559,7 +559,7 @@ void QuoteApi::OnUnSubscribeAllOptionTickByTick(XTP_EXCHANGE_TYPE exchage_id, XT this->task_queue.push(task); }; ///------------------------------------------------------------------------------------- -///工作线程从队列中取出数据,转化为python对象后,进行推送 +///宸ヤ綔绾跨▼浠庨槦鍒椾腑鍙栧嚭鏁版嵁锛岃浆鍖栦负python瀵硅薄鍚庯紝杩涜鎺ㄩ ///------------------------------------------------------------------------------------- void QuoteApi::processTask() @@ -1214,7 +1214,7 @@ void QuoteApi::processQueryAllTickers(Task *task) { PyLock lock; - //手动修改 + //鎵嬪姩淇敼 dict data; if (task->task_data) { @@ -1250,7 +1250,7 @@ void QuoteApi::processQueryTickersPriceInfo(Task *task) { PyLock lock; - //手动修改 + //鎵嬪姩淇敼 dict data; if (task->task_data) { @@ -1379,7 +1379,7 @@ void QuoteApi::processUnSubscribeAllOptionTickByTick(Task *task) void QuoteApi::processQueryAllTickersFullInfo(Task* task) { PyLock lock; - //手动修改 + //鎵嬪姩淇敼 dict data; if (task->task_data) { @@ -1425,11 +1425,13 @@ void QuoteApi::processQueryAllTickersFullInfo(Task* task) { } this->onQueryAllTickersFullInfo(data, error, task->task_last); + + delete task; } ///------------------------------------------------------------------------------------- -///主动函数 +///涓诲姩鍑芥暟 ///------------------------------------------------------------------------------------- void QuoteApi::createQuoteApi(int clientid, string path, int log_level) @@ -1445,7 +1447,7 @@ void QuoteApi::release() int QuoteApi::exit() { - //该函数在原生API里没有,用于安全退出API用,原生的join似乎不太稳定 + //璇ュ嚱鏁板湪鍘熺敓API閲屾病鏈夛紝鐢ㄤ簬瀹夊叏閫鍑篈PI鐢紝鍘熺敓鐨刯oin浼间箮涓嶅お绋冲畾 this->api->RegisterSpi(NULL); this->api->Release(); this->api = NULL; @@ -1788,7 +1790,7 @@ int QuoteApi::unSubscribeAllOptionTickByTick(int exchange) }; ///------------------------------------------------------------------------------------- -///Boost.Python封装 +///Boost.Python灏佽 ///------------------------------------------------------------------------------------- struct QuoteApiWrap : QuoteApi, wrapper < QuoteApi > @@ -2110,7 +2112,7 @@ struct QuoteApiWrap : QuoteApi, wrapper < QuoteApi > BOOST_PYTHON_MODULE(vnxtpquote) { - PyEval_InitThreads(); //导入时运行,保证先创建GIL + PyEval_InitThreads(); //瀵煎叆鏃惰繍琛岋紝淇濊瘉鍏堝垱寤篏IL class_("QuoteApi") .def("createQuoteApi", &QuoteApiWrap::createQuoteApi)