2018-04-10 09:36:43 +00:00
|
|
|
|
@startuml
|
|
|
|
|
|
2018-04-12 09:51:29 +00:00
|
|
|
|
class EClient
|
|
|
|
|
class EClientSocket
|
2018-04-10 09:36:43 +00:00
|
|
|
|
abstract class EWrapper
|
|
|
|
|
class IbWrapper
|
|
|
|
|
class VnIbApi
|
|
|
|
|
class IbApiWrap
|
|
|
|
|
class IbApi
|
|
|
|
|
|
2018-04-12 09:51:29 +00:00
|
|
|
|
EClient <|-- EClientSocket
|
2018-04-10 09:36:43 +00:00
|
|
|
|
|
|
|
|
|
EWrapper <|-- IbWrapper
|
|
|
|
|
IbWrapper *-- VnIbApi
|
2018-04-12 09:51:29 +00:00
|
|
|
|
EClientSocket *-- VnIbApi
|
2018-04-10 09:36:43 +00:00
|
|
|
|
IbWrapper --* VnIbApi
|
|
|
|
|
VnIbApi <|-- IbApiWrap : Boost.python封装
|
|
|
|
|
note right
|
|
|
|
|
实际上是结构体struct。
|
|
|
|
|
按照Boost.python的规范封装
|
|
|
|
|
end note
|
|
|
|
|
|
|
|
|
|
IbApiWrap <|-- IbApi : Boost.python封装
|
|
|
|
|
note right
|
|
|
|
|
按照Boost.python的规范封装
|
|
|
|
|
Python的程序对接使用此类型。
|
|
|
|
|
end note
|
|
|
|
|
|
|
|
|
|
|
2018-04-12 09:51:29 +00:00
|
|
|
|
class EClient {
|
|
|
|
|
}
|
|
|
|
|
note right
|
|
|
|
|
IB提供的C++源代码。
|
|
|
|
|
此类定义了应用程序向IB网关发起请求的主动函数。
|
|
|
|
|
end note
|
2018-04-10 09:36:43 +00:00
|
|
|
|
|
2018-04-12 09:51:29 +00:00
|
|
|
|
class EClientSocket {
|
|
|
|
|
}
|
|
|
|
|
note right
|
|
|
|
|
IB提供的C++源代码。
|
|
|
|
|
此类定义了应用程序向IB网关发起请求的主动函数。
|
|
|
|
|
end note
|
2018-04-10 09:36:43 +00:00
|
|
|
|
|
|
|
|
|
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
|