From e8059cfc4b13b193760046b264dc2db6ee729176 Mon Sep 17 00:00:00 2001 From: zhu4ling3 Date: Tue, 10 Apr 2018 05:36:43 -0400 Subject: [PATCH] v --- UML/IbApi.puml | 59 +++++++++++++++++++++++++++++++++++++++++++++ UML/dataRecord.puml | 15 ++++++++---- 2 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 UML/IbApi.puml diff --git a/UML/IbApi.puml b/UML/IbApi.puml new file mode 100644 index 00000000..f01aa8c7 --- /dev/null +++ b/UML/IbApi.puml @@ -0,0 +1,59 @@ +@startuml + +abstract class EWrapper +class IbWrapper +class VnIbApi +class IbApiWrap +class IbApi + + +EWrapper <|-- IbWrapper +IbWrapper *-- VnIbApi +IbWrapper --* VnIbApi +VnIbApi <|-- IbApiWrap : Boost.python封装 +note right +实际上是结构体struct。 +按照Boost.python的规范封装 +end note + +IbApiWrap <|-- IbApi : Boost.python封装 +note right +按照Boost.python的规范封装 +Python的程序对接使用此类型。 +end note + + + + +abstract class EWrapper { +} +note right +提供IB网关返回响应数据后,会调用回调函数。 +此类定义了回调函数的接口。 +end note + +class IbWrapper { + - VnIbApi *api; +} +note right +此类用于实现回调函数的接口。 +end note + +class VnIbApi { + - IbWrapper *wrapper; + - EReaderOSSignal signal; + - EReader *reader; + + EClientSocket *client; +} +note right +**VnIbApi中包含EClientSocket和IbWrapper成员** + +EClientSocket:提供应用程序发起请求到IB网关的API函数 +IbWrapper: 提供IB网关返回响应数据后的回调函数 +end note + + + + + +@enduml \ No newline at end of file diff --git a/UML/dataRecord.puml b/UML/dataRecord.puml index a8a781a3..f894fb58 100644 --- a/UML/dataRecord.puml +++ b/UML/dataRecord.puml @@ -14,7 +14,7 @@ participant EventProcessThread as eet participant Queue as eeq participant TimerThread as eetm participant "ibGateway:vtGateway" as gw -participant "IbWrapper:EWrapper" as wrap +participant "IbWrapper:IbApi" as wrap @@ -96,9 +96,13 @@ run->me ++ : addGateway(ibGateway) end note gw->wrap ** : Create IbWrap(self) note right - EWrapper类是C++实现, 存在于IB提供的源代码中。 - 通过boost.python机制, - Python的IbWrapper类从EWrapper派生 + IbApi是基于Boost.python的封装。 + 用C++实现,但是可以提供给Python程序使用。 + IbApi使用IB提供的C++接口源代码, + 来和IB网关进行数据交互 + IbApi提供两类函数功能: + 主动请求IB网关的功能 + 接收IB网关异步返回数据的功能 end note activate wrap wrap->wrap ++ : 构造函数() @@ -144,7 +148,8 @@ run->ee: ee.regiser() 注册日志处理事件 run->me++: me.Connect(IB) note right: 连接IB网关 me->gw ++ : gw.connect() - gw-> wrap : wrap.eConnect(host, port, clientId, false) + gw-> wrap ++ : wrap.eConnect(host, port, clientId, false) + return return me->me ++ : dbConnect() me->db ++ : MongoClient()