首页 > 代码库 > 基础类三
基础类三
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中
基础类三