vnpy/UML/dataRecord.puml

167 lines
3.6 KiB
Plaintext
Raw Normal View History

2018-04-07 00:56:19 +00:00
@startuml
2018-04-08 14:31:33 +00:00
database mongoDB as db
2018-04-09 08:44:04 +00:00
participant runDataRecord as rundr
participant Process as run
2018-04-07 00:56:19 +00:00
participant MainEngine as me
2018-04-09 08:44:04 +00:00
participant LogEngine as runle
2018-04-08 14:31:33 +00:00
participant DataEngine as dt
participant LogEngine as le
2018-04-07 00:56:19 +00:00
participant DrEngine as dr
participant Queue as drq
2018-04-08 14:31:33 +00:00
participant Thread as drt
2018-04-07 00:56:19 +00:00
participant eventEngine as ee
2018-04-09 08:44:04 +00:00
participant EventProcessThread as eet
2018-04-07 00:56:19 +00:00
participant Queue as eeq
2018-04-09 08:44:04 +00:00
participant TimerThread as eetm
2018-04-07 00:56:19 +00:00
participant ibGateway as gw
2018-04-09 08:44:04 +00:00
activate rundr
loop
rundr->rundr: 检查是否处于时间段
rundr->rundr: 监控子进程是否存在
rundr->run ** : create process
activate run
rundr->rundr: sleep(5)
end loop
deactivate rundr
run->runle ** : create runle
|||
2018-04-08 14:31:33 +00:00
|||
2018-04-09 08:44:04 +00:00
run->ee ** :create evnetEngine object
activate ee
ee->ee ++ : init()
ee->eeq ** : Create Queue
ee->eet ** : Create event process thread
note right: 事件处理子线程
ee->eetm ** : Create timer thread
note right: 定时器子线程
return
return object
2018-04-08 14:31:33 +00:00
|||
2018-04-09 08:44:04 +00:00
|||
run->me ** : new mainEngine(ee)
activate me
me->me ++ : init()
me->ee ++ : ee.start()
2018-04-08 14:31:33 +00:00
note right: 启动ee的子线程
2018-04-09 08:44:04 +00:00
ee->eet ++ #red : thread.start()
ee->eetm ++ #green : timer.start()
ee-->me--: return
me->dt ** :创建DataEngine()
activate dt
dt->dt ++ : init()
2018-04-08 14:31:33 +00:00
return
2018-04-09 08:44:04 +00:00
return object
me->le ** :创建LogEngine()
activate le
le->le ++ : init()
return
return
me-->me--:return
me-->run--: object
2018-04-08 14:31:33 +00:00
|||
|||
2018-04-09 08:44:04 +00:00
run->me: addGateway(ibGateway)
activate me
return
2018-04-08 14:31:33 +00:00
|||
|||
2018-04-09 08:44:04 +00:00
run->me: addApp()
2018-04-08 14:31:33 +00:00
activate me
return
|||
|||
2018-04-09 08:44:04 +00:00
run->ee: ee.regiser() 注册日志处理事件
2018-04-08 14:31:33 +00:00
activate ee
return
|||
|||
2018-04-09 08:44:04 +00:00
run->me++: me.Connect(IB)
note right: 连接IB网关
me->dr**: new DrEngine(me,ee)
activate dr
dr->dr++:init()
dr->drq **:Create Queue
dr->drt **:Create Thread
activate drt #blue
dr->dr:loadSetting()
note right
从配置文件中加载
订阅设置到字典对象
end note
dr->ee++:register(TICK, handler)
return
dr-->dr -- : return
'return object
dr-->me--: object
run<--me--:return
2018-04-07 00:56:19 +00:00
2018-04-08 14:31:33 +00:00
|||
|||
2018-04-09 08:44:04 +00:00
run->ee ++ : ee.register(EVENT_LOG, le.processLogEvent)
return
|||
|||
run->ee ++ : ee.register(EVENT_ERROR, le.processErrorEvent)
return
|||
|||
loop
run->run: sleep(1)
end loop
deactivate run
|||
|||
gw->eeq ++: queue.put(tick/bar)
return
|||
|||
eetm->ee -- : ee.__runTimer()
activate ee #green
loop
ee->eeq ++ : queue.put(定时器事件)
return
ee->ee : 休眠1秒
end loop
deactivate ee
|||
|||
eet->ee--: ee.run()
activate ee #red
loop
ee->eeq ++ :queue.get()
return event
ee->ee ++ : __process(event)
ee->dr ++ #red :call procecssTickEvent()
dr->dr ++ :OnTick()
dr->drq ++: queue.put(tick)
2018-04-08 14:31:33 +00:00
return
2018-04-09 08:44:04 +00:00
return
2018-04-07 00:56:19 +00:00
2018-04-09 08:44:04 +00:00
dr->dr ++ :OnBar()
dr->drq ++: queue.put(bar)
2018-04-08 14:31:33 +00:00
return
return
return
2018-04-09 08:44:04 +00:00
return
end loop
deactivate ee
2018-04-07 00:56:19 +00:00
2018-04-09 08:44:04 +00:00
drt->dr -- :run()
activate dr #blue
loop
dr->drq ++ :queue.get()
drq-->dr --:data
dr->me:insertDB(data)
end loop
deactivate dr
2018-04-07 00:56:19 +00:00
2018-04-09 08:44:04 +00:00
me->db: 写入mongoDB
2018-04-07 00:56:19 +00:00
@enduml