mod_counterconnector.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /////////////////////////////////
  2. ///// 连线服务
  3. /////////////////////////////////
  4. #ifndef __MOD_COUNTERCONNECTOR_H
  5. #define __MOD_COUNTERCONNECTOR_H
  6. #pragma once
  7. #include "stdafx.h"
  8. #include "SpBase.h"
  9. #include "SpIni.h"
  10. #include "ConnectorFSM.h"
  11. #include "ListEntry.h"
  12. #include "SpHelper.h"
  13. #include "Event.h"
  14. #include "CounterConnector_msg_g.h"
  15. #include "chan_protocol.h"
  16. #include "CounterConnector_server_g.h"
  17. class CCounterConnectorEntity;
  18. class CCounterConnectorSession : public ConnectService_ServerSessionBase
  19. {
  20. public:
  21. CCounterConnectorSession(CCounterConnectorEntity *pEntity) : m_pEntity(pEntity)
  22. {
  23. }
  24. virtual void Handle_StartCall(SpReqAnsContext<ConnectService_StartCall_Req, ConnectService_StartCall_Ans>::Pointer ctx);
  25. virtual void Handle_StartCallExternal(SpReqAnsContext<ConnectService_StartCallExternal_Req, ConnectService_StartCallExternal_Ans>::Pointer ctx);
  26. virtual void Handle_StopCall(SpReqAnsContext<ConnectService_StopCall_Req, ConnectService_StopCall_Ans>::Pointer ctx);
  27. virtual void OnClose(ErrorCodeEnum eErrorCode);
  28. virtual void Handle_GetCallRouteType(SpReqAnsContext<ConnectService_GetCallRouteType_Req, ConnectService_GetCallRouteType_Ans>::Pointer ctx);
  29. virtual void Handle_SetVideoCallRouteParams(SpReqAnsContext<ConnectService_SetVideoCallRouteParams_Req, ConnectService_SetVideoCallRouteParams_Ans>::Pointer ctx);
  30. virtual void Handle_GetPickUpStatus(SpReqAnsContext<ConnectService_GetPickUpStatus_Req, ConnectService_GetPickUpStatus_Ans>::Pointer ctx);
  31. private:
  32. CCounterConnectorEntity *m_pEntity;
  33. };
  34. class ChannelCounterConnectorClient : public ChannelService_ClientBase
  35. {
  36. public:
  37. ChannelCounterConnectorClient(CCounterConnectorEntity *pEntity);
  38. virtual void OnMessage(ErrorCodeEnum Error, ChannelService_State_Info &Msg, CSmartPointer<IReleasable> pData);
  39. virtual void OnMessage(ErrorCodeEnum Error, ChannelService_Packet_Info &Msg, CSmartPointer<IReleasable> pData);
  40. private:
  41. int m_eLastState;
  42. unsigned int m_uConnectTime;
  43. };
  44. class CCounterConnectorEntity : public CEntityBase, public ILogListener, public ISysVarListener, public ITimerListener
  45. {
  46. public:
  47. CCounterConnectorEntity() : m_fsm(), m_pCounterConnectorChannel(NULL), m_bConnectAssist(false), m_bConnectSipphone(false), m_iRouteType(0), m_iPickUpCallType(0){
  48. m_iConSipphoneFaileTimes = 0;
  49. }
  50. virtual ~CCounterConnectorEntity() {}
  51. virtual const char *GetEntityName() const { return "CounterConnector"; }
  52. const char* GetEntityVersion() const { return MODULE_VERSION_FULL; }
  53. virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs,CSmartPointer<ITransactionContext> pTransactionContext);
  54. virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer<ITransactionContext> pTransactionContext);
  55. virtual void OnSelfTest(EntityTestEnum eTestType,CSmartPointer<ITransactionContext> pTransactionContext) ;
  56. virtual CServerSessionBase *OnNewSession(const char* /*pszRemoteEntityName*/, const char * /*pszClass*/);
  57. ErrorCodeEnum __OnStart(ErrorCodeEnum preOperationError);
  58. ErrorCodeEnum __OnClose(ErrorCodeEnum preOperationError);
  59. virtual void OnStarted();
  60. virtual void OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,
  61. const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID,
  62. const CAutoArray<DWORD> &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext &pLinkInfo);
  63. virtual void OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName);
  64. ErrorCodeEnum ConnectAssistChannel();
  65. //change audio device message
  66. void OnReceivePkt(int type, int sub_type, const char *buffer, int size);
  67. //send cur audio device to agent
  68. void SendCurAudioDevice();
  69. CSimpleStringA BuildVideoDesc(int local_view_x, int local_view_y, int local_view_cx, int local_view_cy);
  70. void SetCallType(CallingTypeEnum eType);
  71. CSimpleStringA BuildDoubleVideoDesc(int local_view_x, int local_view_y, int local_view_cx, int local_view_cy, int remote_view_x, int remote_view_y, int remote_view_cx, int remote_view_cy);
  72. CSimpleStringA ConstructVideoParam(CSimpleStringA strMsg, bool bDoubleVideo);
  73. void Handle_StartRecord(const char* pszMessage);
  74. void Handle_StartRemoteRecord(const char* pszMessage);
  75. void StopRemoteRecordSpeakerAudioCapture();
  76. void Handle_StartRecordPreview(const char* pszMessage);
  77. DeviceTypeEnum RvcGetDeviceType();
  78. ErrorCodeEnum LoadEntityConfig();
  79. ErrorCodeEnum SetCallRouteParams(CSimpleStringA strQueueName, CSimpleStringA strClientLevel);
  80. void HandlePickUpCallEvent();
  81. void HandleGetVideoFailedEvent();
  82. void HandlePickUpMicroPhoneEvent(int iEvent, const char* strMsg);
  83. virtual bool IsService()const;
  84. virtual void OnTimeout(DWORD dwTimerID);
  85. ACMCallFSM m_fsm;
  86. bool m_bIsSalesRecord;
  87. bool m_bIsRemoteRecord;
  88. bool m_bIsRemoteRecordStopSpeakerCapture;
  89. bool m_bHasLaunched;
  90. CServerSessionBase *m_pCurrentSession;
  91. int m_iRouteType;
  92. int m_iPickUpCallType;
  93. private:
  94. bool m_IsStandType;
  95. ChannelCounterConnectorClient*m_pCounterConnectorChannel;
  96. CAutoArray<CUUID> m_arrListener;
  97. CUUID m_uidlivenessListener;
  98. bool m_bConnectAssist;
  99. bool m_bConnectSipphone;
  100. int m_iConSipphoneFaileTimes;
  101. };
  102. #endif