This commit is contained in:
zhu4ling3 2018-04-10 05:36:43 -04:00
parent f5d87ba8af
commit e8059cfc4b
2 changed files with 69 additions and 5 deletions

59
UML/IbApi.puml Normal file
View File

@ -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

View File

@ -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()