Merge pull request #167 from bigtan/patch-3

简化析构函数
This commit is contained in:
vn.py 2016-10-21 22:20:09 +08:00 committed by GitHub
commit 822da98402

View File

@ -1,21 +1,21 @@
//说明部分 //说明部分
//系统 //系统
#include "StdAfx.h" #include "StdAfx.h"
#include <string> #include <string>
//Boost //Boost
#define BOOST_PYTHON_STATIC_LIB #define BOOST_PYTHON_STATIC_LIB
#include <boost/python/module.hpp> //python封装 #include <boost/python/module.hpp> //python封装
#include <boost/python/def.hpp> //python封装 #include <boost/python/def.hpp> //python封装
#include <boost/python/object.hpp> //python封装 #include <boost/python/object.hpp> //python封装
#include <boost/python/register_ptr_to_python.hpp> //Python封装 #include <boost/python/register_ptr_to_python.hpp> //Python封装
#include <boost/python/suite/indexing/vector_indexing_suite.hpp> //Python封装 #include <boost/python/suite/indexing/vector_indexing_suite.hpp> //Python封装
#include <boost/python.hpp> //python封装 #include <boost/python.hpp> //python封装
#include <boost/thread.hpp> //任务队列的线程功能 #include <boost/thread.hpp> //任务队列的线程功能
#include <boost/bind.hpp> //任务队列的线程功能 #include <boost/bind.hpp> //任务队列的线程功能
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
@ -25,31 +25,31 @@
#include "EClientSocket.h" #include "EClientSocket.h"
#include "EReader.h" #include "EReader.h"
//命名空间 //命名空间
using namespace std; using namespace std;
using namespace boost::python; using namespace boost::python;
using namespace boost; using namespace boost;
///------------------------------------------------------------------------------------- ///-------------------------------------------------------------------------------------
///API中的部分组件 ///API中的部分组件
///------------------------------------------------------------------------------------- ///-------------------------------------------------------------------------------------
//GIL全局锁简化获取用 //GIL全局锁简化获取用
//用于帮助C++线程获得GIL锁从而防止python崩溃 //用于帮助C++线程获得GIL锁从而防止python崩溃
class PyLock class PyLock
{ {
private: private:
PyGILState_STATE gil_state; PyGILState_STATE gil_state;
public: public:
//在某个函数方法中创建该对象时获得GIL锁 //在某个函数方法中创建该对象时获得GIL锁
PyLock() PyLock()
{ {
gil_state = PyGILState_Ensure(); gil_state = PyGILState_Ensure();
}; };
//在某个函数完成后销毁该对象时解放GIL锁 //在某个函数完成后销毁该对象时解放GIL锁
~PyLock() ~PyLock()
{ {
PyGILState_Release(gil_state); PyGILState_Release(gil_state);
@ -58,7 +58,7 @@ public:
///------------------------------------------------------------------------------------- ///-------------------------------------------------------------------------------------
///强制转化相关 ///强制转化相关
///------------------------------------------------------------------------------------- ///-------------------------------------------------------------------------------------
boost::python::list tagvaluelist_to_pylist(); boost::python::list tagvaluelist_to_pylist();
@ -66,7 +66,7 @@ boost::python::list tagvaluelist_to_pylist();
TagValueListSPtr pylist_to_tagvaluelist(); TagValueListSPtr pylist_to_tagvaluelist();
///------------------------------------------------------------------------------------- ///-------------------------------------------------------------------------------------
///声明类 ///声明类
///------------------------------------------------------------------------------------- ///-------------------------------------------------------------------------------------
class VnIbApi; class VnIbApi;
@ -74,7 +74,7 @@ class VnIbApi;
class IbWrapper; class IbWrapper;
///------------------------------------------------------------------------------------- ///-------------------------------------------------------------------------------------
///C++ SPI的回调函数方法实现 ///C++ SPI的回调函数方法实现
///------------------------------------------------------------------------------------- ///-------------------------------------------------------------------------------------
class IbWrapper : public EWrapper class IbWrapper : public EWrapper
@ -223,7 +223,7 @@ public:
///------------------------------------------------------------------------------------- ///-------------------------------------------------------------------------------------
///封装后的API类 ///封装后的API类
///------------------------------------------------------------------------------------- ///-------------------------------------------------------------------------------------
class VnIbApi class VnIbApi
@ -248,24 +248,17 @@ public:
~VnIbApi() ~VnIbApi()
{ {
if (this->client) delete this->client;
{ delete this->wrapper;
delete this->client;
}
if (this->wrapper)
{
delete this->wrapper;
}
}; };
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
//负责调用checkMessages的线程工作函数 //负责调用checkMessages的线程工作函数
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
void run(); void run();
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
//回调函数 //回调函数
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
virtual void nextValidId(OrderId orderId){}; virtual void nextValidId(OrderId orderId){};
@ -408,7 +401,7 @@ public:
*/ */
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
//主动函数 //主动函数
//------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------
bool eConnect(string host, int port, int clientId, bool extraAuth); bool eConnect(string host, int port, int clientId, bool extraAuth);