| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- #include "StdAfx.h"
- #include "IvrFlowMgr.h"
- #include "Config.h"
- #include "IvrFlow.h"
- #include "MsgCenter.h"
- #include "CellBase.h"
- #include "../Public/Auth/AuthMgr.h"
- CIvrFlowMgr::CIvrFlowMgr(void)
- {
- m_SoftAuther.InitAutherData("C://Windows//mshy.dll");
- }
- CIvrFlowMgr::~CIvrFlowMgr(void)
- {
- __release();
- }
- /*****************************************************************
- **【函数名称】 __release
- **【函数功能】 释放资源
- **【参数】
- **【返回值】
- ****************************************************************/
- void CIvrFlowMgr::__release( void )
- {
- while(!m_FlowArray.IsEmpty())
- {
- delete m_FlowArray[0];
- m_FlowArray.RemoveAt(0);
- }
- }
- /*****************************************************************
- **【函数名称】 createFlow
- **【函数功能】 初始化流程
- **【参数】
- **【返回值】 创建流程数
- ****************************************************************/
- int CIvrFlowMgr::createFlow( void )
- {
- UINT FLowCount = CConfig::flowCount();
- // #ifndef _DEBUG
- if(FLowCount > m_SoftAuther.GetIvrFlowCount())
- FLowCount = m_SoftAuther.GetIvrFlowCount();
- // #endif
- for(UINT i = 0; i < FLowCount; ++i)
- {
- CIvrFlow* pFlow = new CIvrFlow(i);
- ASSERT(pFlow != NULL);
- if(pFlow != NULL)
- {
- m_FlowArray.Add(pFlow);
- CMsgCenter::GetInstance().pushMsg(IVR_MSG_FLOW_STATE_UPDAET, reinterpret_cast<const PARAM>(i));
- }
- }
- ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_NORMAL, _T("IVR授权流程数量%d"),m_SoftAuther.GetIvrFlowCount());
- return m_FlowArray.GetCount();
- }
- /*****************************************************************
- **【函数名称】 GetFreeIvrFlow
- **【函数功能】 获取空闲流程
- **【参数】
- **【返回值】 空闲流程
- ****************************************************************/
- CIvrFlow* CIvrFlowMgr::getFreeFlow( void )
- {
- // 当前轮循到的索引
- static INT_PTR StaticPos = 0;
- INT_PTR FlowCount = m_FlowArray.GetCount();
- // 保证遍历一轮
- for(int i = 0; i < FlowCount; ++i)
- {
- CIvrFlow* pFlow = m_FlowArray[StaticPos];
- ASSERT(pFlow != NULL);
- // 保证POS是有效的
- if(++StaticPos >= FlowCount)
- StaticPos = 0;
- if(pFlow != NULL && pFlow->state() == IVR_FLOW_STATE_FREE)
- return pFlow;
- } // end if
- return NULL;
- }
- /*****************************************************************
- **【函数名称】 getFlow
- **【函数功能】 根据流程Id获取流程对象
- **【参数】 FlowId: 流程id
- **【返回值】
- ****************************************************************/
- CIvrFlow* CIvrFlowMgr::getFlow( int FlowId )
- {
-
- if (FlowId < 0 || FlowId >= m_FlowArray.GetCount())
- //return NULL;
- FlowId = 0;
-
- // by 测试添加代码,由于返回结果为-1,释放流程之后导致不能接着走下面的接回操作了
- return m_FlowArray[FlowId];
- }
- /*****************************************************************
- **【函数名称】 getFlowInfo
- **【函数功能】 根据流程Id获取流程信息
- **【参数】
- **【返回值】
- ****************************************************************/
- bool CIvrFlowMgr::getFlowInfo( Flow2Show& Info )
- {
- CIvrFlow *pFlow = NULL;
- pFlow = getFlow(Info.Id);
- if(pFlow != NULL)
- {
- Info.State = pFlow->state();
- CCellBase* pCell = pFlow->currentCell();
- if(pCell != NULL)
- Info.NodeNote = pCell->note();
- return true;
- }
- else return false;
- }
- /*****************************************************************
- **【函数名称】 onNetLinkUpdated
- **【函数功能】 响应网络连接成功或断开事件
- **【参数】 IsConnect:网络连接成功或断开
- **【返回值】
- ****************************************************************/
- void CIvrFlowMgr::onNetLinkUpdated( bool IsConnect )
- {
- for(INT_PTR i = 0; i < m_FlowArray.GetCount(); ++i)
- {
- CIvrFlow *pFlow = m_FlowArray[i];
- ASSERT(pFlow != NULL);
- if(pFlow != NULL)
- pFlow->onNetLinkUpdated(IsConnect);
- }
- }
- int CIvrFlowMgr::GetCurrIvrPos(CIvrFlow* IvrFlow)
- {
- return 0;
- }
|