升龙物业 老版本 ocx IPO, 加密狗 转值班电话

AidedUnit.cpp 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #include "StdAfx.h"
  2. #include "AidedUnit.h"
  3. #include "Config.h"
  4. #include "MC.h"
  5. CAidedUnit::CAidedUnit(LPCTSTR Prefix) : m_Prefix(Prefix)
  6. {
  7. }
  8. CAidedUnit::~CAidedUnit(void)
  9. {
  10. }
  11. /*****************************************************************
  12. **【函数名称】 add
  13. **【函数功能】 添加中继项
  14. **【参数】
  15. **【返回值】
  16. ****************************************************************/
  17. void CAidedUnit::add( TRUNK_MATCH* pTrunkMatch )
  18. {
  19. ASSERT(pTrunkMatch != NULL);
  20. if(m_TrunkItemList.IsEmpty() || m_TrunkItemList.GetHead()->Priority <= pTrunkMatch->Priority)
  21. {
  22. m_TrunkItemList.AddHead(pTrunkMatch);
  23. }
  24. else
  25. {
  26. POSITION Pos = m_TrunkItemList.GetTailPosition();
  27. while(Pos != NULL)
  28. {
  29. POSITION PosCur = Pos;
  30. TRUNK_MATCH* pLastMatch = m_TrunkItemList.GetPrev(Pos);
  31. if(pLastMatch->Priority >= pTrunkMatch->Priority)
  32. {
  33. m_TrunkItemList.InsertAfter(PosCur, pTrunkMatch);
  34. break;
  35. }
  36. }
  37. }
  38. }
  39. /*****************************************************************
  40. **【函数名称】 match
  41. **【函数功能】 匹配呼叫字冠
  42. **【参数】
  43. **【返回值】
  44. ****************************************************************/
  45. bool CAidedUnit::match( const CString& CalleeNum )
  46. {
  47. if(m_Prefix == CalleeNum.Left(m_Prefix.GetLength()))
  48. return true;
  49. else
  50. return false;
  51. }
  52. /*****************************************************************
  53. **【函数名称】 aidedAlloc
  54. **【函数功能】 辅助分配通道
  55. **【参数】
  56. **【返回值】
  57. ****************************************************************/
  58. COneLeg* CAidedUnit::aidedAlloc( CString& CallerNum, CString& CalleeNum, TRUNK_ITEM** pTrunkItem )
  59. {
  60. ASSERT(pTrunkItem != NULL);
  61. COneLeg* pCallLeg = NULL;
  62. TRUNK_MATCH* pMatch = NULL;
  63. TRUNK_ITEM* pItem = NULL;
  64. POSITION Pos = m_TrunkItemList.GetHeadPosition();
  65. while(Pos != NULL)
  66. {
  67. pMatch = m_TrunkItemList.GetNext(Pos);
  68. pItem = CConfig::trunkItem().getTrunkItem(pMatch->TrunkItemId);
  69. ASSERT(pItem != NULL);
  70. if(pItem != NULL)
  71. {
  72. pCallLeg = CMC::GetInstance().allocFreeTrunk(pItem->Node, pItem->Board, pItem->Span);
  73. if(pCallLeg != NULL)
  74. {
  75. if(CallerNum.GetLength() == 0) // 若主叫号码为空,则用缺省主叫号码
  76. CallerNum = pMatch->Caller;
  77. CalleeNum = CalleeNum.Mid(m_Prefix.GetLength()); // 修正被叫号码(删除出局字冠)
  78. *pTrunkItem = pItem;
  79. return pCallLeg;
  80. }
  81. }
  82. }
  83. return NULL;
  84. }
  85. /*****************************************************************
  86. **【函数名称】 aidedAlloc
  87. **【函数功能】 辅助分配通道不修正被叫号码
  88. **【参数】
  89. **【返回值】
  90. ****************************************************************/
  91. COneLeg* CAidedUnit::aidedAlloc( CString& CallerNum, TRUNK_ITEM** pTrunkItem )
  92. {
  93. ASSERT(pTrunkItem != NULL);
  94. COneLeg* pCallLeg = NULL;
  95. TRUNK_MATCH* pMatch = NULL;
  96. TRUNK_ITEM* pItem = NULL;
  97. POSITION Pos = m_TrunkItemList.GetHeadPosition();
  98. while(Pos != NULL)
  99. {
  100. pMatch = m_TrunkItemList.GetNext(Pos);
  101. pItem = CConfig::trunkItem().getTrunkItem(pMatch->TrunkItemId);
  102. ASSERT(pItem != NULL);
  103. if(pItem != NULL)
  104. {
  105. pCallLeg = CMC::GetInstance().allocFreeTrunk(pItem->Node, pItem->Board, pItem->Span);
  106. if(pCallLeg != NULL)
  107. {
  108. if(CallerNum.GetLength() == 0) // 若主叫号码为空,则用缺省主叫号码
  109. CallerNum = pMatch->Caller;
  110. *pTrunkItem = pItem;
  111. return pCallLeg;
  112. }
  113. }
  114. }
  115. return NULL;
  116. }