///////////////////////////////// ///// 连线服务 ///////////////////////////////// #ifndef __MOD_COUNTERCONNECTOR_H #define __MOD_COUNTERCONNECTOR_H #pragma once #include "stdafx.h" #include "SpBase.h" #include "SpIni.h" #include "ConnectorFSM.h" #include "ListEntry.h" #include "SpHelper.h" #include "Event.h" #include "CounterConnector_msg_g.h" #include "chan_protocol.h" #include "CounterConnector_server_g.h" class CCounterConnectorEntity; class CCounterConnectorSession : public ConnectService_ServerSessionBase { public: CCounterConnectorSession(CCounterConnectorEntity *pEntity) : m_pEntity(pEntity) { } virtual void Handle_StartCall(SpReqAnsContext::Pointer ctx); virtual void Handle_StartCallExternal(SpReqAnsContext::Pointer ctx); virtual void Handle_StopCall(SpReqAnsContext::Pointer ctx); virtual void OnClose(ErrorCodeEnum eErrorCode); virtual void Handle_GetCallRouteType(SpReqAnsContext::Pointer ctx); virtual void Handle_SetVideoCallRouteParams(SpReqAnsContext::Pointer ctx); virtual void Handle_GetPickUpStatus(SpReqAnsContext::Pointer ctx); private: CCounterConnectorEntity *m_pEntity; }; class ChannelCounterConnectorClient : public ChannelService_ClientBase { public: ChannelCounterConnectorClient(CCounterConnectorEntity *pEntity); virtual void OnMessage(ErrorCodeEnum Error, ChannelService_State_Info &Msg, CSmartPointer pData); virtual void OnMessage(ErrorCodeEnum Error, ChannelService_Packet_Info &Msg, CSmartPointer pData); private: int m_eLastState; }; class CCounterConnectorEntity : public CEntityBase, public ILogListener, public ISysVarListener, public ITimerListener { public: CCounterConnectorEntity() : m_fsm(), m_pCounterConnectorChannel(NULL), m_bConnectAssist(false), m_bConnectSipphone(false), m_iRouteType(1){ m_iConSipphoneFaileTimes = 0; } virtual ~CCounterConnectorEntity() {} virtual const char *GetEntityName() const { return "CounterConnector"; } const char* GetEntityVersion() const { return MODULE_VERSION_FULL; } virtual void OnPreStart(CAutoArray strArgs,CSmartPointer pTransactionContext); virtual void OnPreClose(EntityCloseCauseEnum eCloseCause,CSmartPointer pTransactionContext); virtual void OnSelfTest(EntityTestEnum eTestType,CSmartPointer pTransactionContext) ; virtual CServerSessionBase *OnNewSession(const char* /*pszRemoteEntityName*/, const char * /*pszClass*/); ErrorCodeEnum __OnStart(ErrorCodeEnum preOperationError); ErrorCodeEnum __OnClose(ErrorCodeEnum preOperationError); virtual void OnStarted(); virtual void OnLog(const CAutoArray &SubIDs, const CUUID nLogID,const LogTypeEnum eLogType, const SeverityLevelEnum eLevel, const DWORD dwSysError,const DWORD dwUserCode,const DWORD dwEntityInstanceID, const WORD wEntityDevelID, const CAutoArray &Param, const char *pszEntityName, const char *pszModuleName,const char *pszMessage, const linkContext &pLinkInfo); virtual void OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName); ErrorCodeEnum ConnectAssistChannel(); //change audio device message void OnReceivePkt(int type, int sub_type, const char *buffer, int size); //send cur audio device to agent void SendCurAudioDevice(); CSimpleStringA BuildVideoDesc(int local_view_x, int local_view_y, int local_view_cx, int local_view_cy); void SetCallType(CallingTypeEnum eType); 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); CSimpleStringA ConstructVideoParam(CSimpleStringA strMsg, bool bDoubleVideo); void Handle_StartRemoteRecord(const char* pszMessage); DeviceTypeEnum RvcGetDeviceType(); ErrorCodeEnum SetCallRouteParams(CSimpleStringA strQueueName, CSimpleStringA strClientLevel); void HandlePickUpCallEvent(); void HandleGetVideoFailedEvent(); void HandlePickUpMicroPhoneEvent(int iEvent, const char* strMsg); virtual bool IsService()const; virtual void OnTimeout(DWORD dwTimerID); ACMCallFSM m_fsm; bool m_bIsSalesRecord; bool m_bIsRemoteRecord; bool m_bIsRemoteRecordStopSpeakerCapture; bool m_bHasLaunched; CServerSessionBase *m_pCurrentSession; int m_iRouteType; private: bool m_IsStandType; ChannelCounterConnectorClient*m_pCounterConnectorChannel; CAutoArray m_arrListener; CUUID m_uidlivenessListener; bool m_bConnectAssist; bool m_bConnectSipphone; int m_iConSipphoneFaileTimes; }; #endif