標籤:使用 檔案 資料 sp 代碼 on c ad new
main主線程資料
CWorkControl m_cWorkControl;
CDispatchResult * m_pDispatchResult;
int32 m_iWorkAllThread;
CStringList m_lstPsNetCode;//網元隊列
CStringList m_lstDsType;
int32 m_iInstanceId;
CMsgTask * m_pResultQueue;//結果隊列
CDataSourceList m_lstDatasource;//具體的資料來源列表
static AISTD string m_strConfigName;
資料來源部分:
1)資料來源的初始化:
資料來源數組vector:vector<CDataSource*> m_lstDatasource
在readDsCfg中進行初始化push_back插入
cAcConfigHelper 設定檔
1)m_lstPsNetCode 網元名稱列表vector<string>
如果m_lsPsNetCode為NONE,
則getPsNetCode()獲得網元代碼:重新讀取資料庫資訊
class CSysResDb:public CResource
根據網元進程名在ps_proxy_route中獲得
網元代碼
2)new CPsTaskMap(m_lstPsNetCode):根據獲得的網元代碼建立每個網元代碼對應的
訊息佇列CMsgTask,最後全部以map的方式存在
CPsTaskMap對象中
3)用產生的CPsTaskMap對象g_pMapTaskQueue去初始化資料來源類CDatasource(基類為線程類)的
子類CDsSyncProv
4)調用基類CDatasource的readCfg方法載入設定檔初始化資料來源的私人資料
5)調用基類CDatasource的init方法檢查私人資料
6)把產生的資料來源插入資料來源隊列
2)資料來源調用work啟動:
1)首先檢查線程是否處於迴圈狀態:while(m_isLoop)
2)檢查資料來源串連情況:m_isConnect 在繼承的子類虛函數openDs
在openDs()函數中使用CCommTCP m_cCommServer(基類為CCommTool);//監聽連接埠
創造一個描述符
使用m_pListenThread=new CDsSyncListen(this)建立監聽線程
調用此線程迴圈監聽(調用資料的listen方法),把listenfd放入select迴圈監聽,有串連,則
產生一個CommTcp串連,調用accept方法產生一個TCP串連
再聲明初始化一個CClientNode用戶端節點,把acceptfd和CClientNode放入
資料來源的m_mapclient中
基礎類三