|
在测试7*24改造的时候发现,正常启动后没问题,当切一次流之后会出现备机会把收到的消息再发给主机的情况。
经过查阅查阅代码:只有主备机连接的时候,主机的同步线程才会挂接未确认流。而备机同步线程不会挂接的。也就是数据是单向同步的。
void CCompServer::HotlineAttachFlow(DWORD nStartId)
{
m_pHotlineSession->AttachFlow(m_pFlowFactory->GetUnConfirmedFlow(), nStartId);
}
而我在切流的时候,把主备机的挂接流都重置了。也就是备机也挂接了未确认流,所以也就会出现上述现象。
解决:
在切的时候判断下当前的状态,如果不是备机才会重置挂接流。是备机的话不会重置。
bool CCompServer::RetSetFlow(DWORD nStartId)
{
m_dateTrading = (long)m_pFlowFactory->GetCommPhaseNo();
if (m_nowState != CS_SECONDARY)
{
HotlineAttachFlow(nStartId);//主机才会挂载未确认流,备机不挂载
}
PublishTradeSeries();
return true;
}
|
|