2017年10月5日 星期四

dsPATS 工作流程說明

單元: dsPATS
服務: mdcsd

註: [ ] 中表示 LOG 樣本


{啟動部份}

 1. mdcsd 服務啟動
   [S ---< Market Data Center Server (MDC Group) Version:1.6.0.8 running >---]

 2. mdcsd 載入 dsPATS 並啟動
   [S Data source 'dsPATS' initial.]

 3. mdcsd 呼叫 dsPATS 啟動 (dsPATS 回報狀態)
   [S DS State:CallStart ds_start call]
   [S Data source 'dsPATS' started]
   [S DS Initialised PATs API ok!]

 4. dsPATS 載入 PATSAPI.dll
   [S DS PATs API Library load success]
 
 5. dsPATS 呼叫 PATSAPI 環境設定
    ptEnable(Config DS.Enable)
    ptSetHostHandShake(Config DS.HostHandShake_Interval, Config DS.HostHandShake_Timeout)
    ptSetHostReconnect(Config DS.HostReconnect)
    ptSetPriceAddress(Config DS.PriceIPAddress, Config DS.PriceIPSocket)
    ptSetHostAddress(Config DS.HostIPAddress, Config DS.HostIPSocket)
    ptSetPriceReconnect(Config DS.PriceReconnect)
    ptSetInternetUser(Config DS.InternetUser)
    ptNotifyAllMessages(Y)
    ptReady()
    ptSuperTASEnabled()
    >>失敗(以上任一) 都將寫下 Error Log, 並中止流程
      [S DS State:Stop PATs API Library start failed]
    >>成功(全部), 進行至 [6.]
      [S DS PATs API Library start success]


{Host連線部份}
     
 6. PATSAPI 提供連線事件 cb_HostLinkStateChange
   >>當出現 Connected 時, 進行至 [7.]
     [S DS Host link state change prev=2(Connecting) now=3(Connected)]
   >>其他, 進行至 [6.] 繼續等待
     [S DS Host link state change prev=#($desc) now=#($desc)]

 7. dsPATS 回報狀態改變為 Connected
   [S DS State:Connected PATs Host link ready]


{登入部份}

 8. dsPATS 呼叫登入 PATSAPI.ptLogOn
   [S DS Try to logon uid:PAZAPIGF]
   >>失敗, 休息2秒, 進行至 [8.] 上限次數3次, 達上次數, 中止流程
     [S DS ptLogOn result=##, retry after 2 sec.]
   >>成功, 正常流程, 不寫任何 LOG
 
 9. PATSAPI 提供登入事件 cb_LogonStatus
    呼叫 ptGetLogonStatus 取得登入狀態
    >>失敗, 中止流程
      [S DS Logon status change #($desc)]
    >>成功, 進行至 [10.]
      [S DS Logon status change 1()]

10. dsPATS 寫下登入資訊, 以及取出某些系統狀態
   [S DS State:LoginOk Logon account=PAZAPIGF success, default=PAZ8000]
   [S DS EnabledFunctionality Function:2E1 Software:0]


{商品資訊部份}

xx. PATSAPI 提供下載商品事件 cb_DataDLComplete
   [S DS Data download complete]


{Price連線部份}
 
11. PATSAPI 提供行情連線事件 cb_PriceLinkStateChange 
   >>當出現 Connected 時, 進行至 [12.]
     [S DS Price link state change prev=2(Connecting) now=3(Connected)]
   >>其他, 進行至 [11.] 繼續等待
     [S DS Price link state change prev=#($desc) now=#(#desc)]
   
   
{行情處理部份}
   
12. dsPATS 開始列舉商品並訂閱
    依 ptCountContracts 數量, 叫用 ptGetExtendedContract 取出合約資訊
    再依 Config MDCS.Exch + mdcmd CommodityRoot + mdcmd SourceDetail 條件判斷是否要訂閱處理行情
   

{無限等待事件化處理}
 
xx. PATSAPI Host連線變化 cb_HostLinkStateChange
    進行至 [6.]

xx. PATSAPI Price連線變化 cb_PriceLinkStateChange
    進行至 [11.]

xx. PATSAPI 更新報價 cb_PriceUpdate
    呼叫 ptGetPriceForContract 取出行情, 推入 mdcsd 處理

xx. PATSAPI 更新DOM cb_DOMUpdate
    呼叫 ptGetPriceForContract 取出行情, 推入 mdcsd 處理

xx. mdcsd 呼叫中斷服務
   [S DS State:CallStop Call stop]
   [S DS Call PATs API ptLogOff!]
   [S DS State:Stop Stop]
   [S Data source 'dsPATS' stoped]
   [S Data source 'dsPATS' free.]
   中止服務

tspubtm 壓測工具

tspubtm 壓測工具的測試模型, 如下: tspubtm(send)  ---tcp-->  MDC ---tcp-->  tspubtm(recv)  ※ tspubtm(send) /  tspubtm(recv) 須為同設備       為了更精確的計算時差...