/*++ Copyright (c) 1998-1999 Microsoft Corporation Module Name: AgentSession.h Abstract: Declaration of the CAgentSession & CAgentSessionEvent classes Author: noela 11-04-97 Notes: Revision History: --*/ #ifndef __AGENTSESSION_H_ #define __AGENTSESSION_H_ #include "resource.h" // main symbols class CAgentHandler; class CAgent; ///////////////////////////////////////////////////////////////////////////// // CAgentSession class ATL_NO_VTABLE CAgentSession : public CTAPIComObjectRoot, public IDispatchImpl, public CObjectSafeImpl { private: HAGENTSESSION m_hAgentSession; AGENT_SESSION_STATE m_SessionState; AGENT_SESSION_STATE m_NextSessionState; ITAgent * m_pAgent; ITACDGroup * m_pGroup; ITAddress * m_pReceiveCallsOnThisAddress; AddressLineStruct * m_pAddressLine; BOOL m_bRequiresUpdating; CAgentHandler * m_pHandler; DATE m_dwSessionStartTime; DWORD m_dwSessionDuration; DWORD m_dwNumberOfCalls; DWORD m_dwTotalTalkTime; DWORD m_dwAverageTalkTime; DWORD m_dwTotalCallTime; DWORD m_dwAverageCallTime; DWORD m_dwTotalWrapUpTime; DWORD m_dwAverageWrapUpTime; CURRENCY m_dwACDCallRate; DWORD m_dwLongestTimeToAnswer; DWORD m_dwAverageTimeToAnswer; public: CAgentSession(){} ~CAgentSession(){} void FinalRelease(); void SetState(AGENT_SESSION_STATE state) { m_SessionState = state;} STDMETHOD(UpdateInfo) (); STDMETHOD(CheckIfUpToDate) (); inline void SetRequiresUpdate() {m_bRequiresUpdating = TRUE;} inline HAGENTSESSION getHandle() {return m_hAgentSession;} CAgentHandler * GetAgentHandler() { return m_pHandler; } DECLARE_DEBUG_ADDREF_RELEASE(CAgentSession) DECLARE_MARSHALQI(CAgentSession) DECLARE_TRACELOG_CLASS(CAgentSession) BEGIN_COM_MAP(CAgentSession) COM_INTERFACE_ENTRY(ITAgentSession) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IObjectSafety) COM_INTERFACE_ENTRY_FUNC(IID_IMarshal, 0, IMarshalQI) COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pFTM) END_COM_MAP() // ITAgentSession public: STDMETHOD(get_AverageTimeToAnswer)(long * pulAnswerTime); STDMETHOD(get_LongestTimeToAnswer)(long * pulAnswerTime); STDMETHOD(get_ACDCallRate)(CURRENCY * pcyCallrate); STDMETHOD(get_AverageWrapUpTime)(long * pulAverageWrapUpTime); STDMETHOD(get_TotalWrapUpTime)(long * pulTotalWrapUpTime); STDMETHOD(get_AverageCallTime)(long * pulAverageCallTime); STDMETHOD(get_TotalCallTime)(long * pulTotalCallTime); STDMETHOD(get_AverageTalkTime)(long * pulAverageTalkTime); STDMETHOD(get_TotalTalkTime)(long * pulTotalTalkTime); STDMETHOD(get_NumberOfCalls)(long * pulNumberOfCalls); STDMETHOD(get_SessionDuration)(long * pulSessionDuration); STDMETHOD(get_SessionStartTime)(DATE * dateSessionStart); STDMETHOD(get_State)(AGENT_SESSION_STATE * pSessionState); STDMETHOD(put_State)(AGENT_SESSION_STATE sessionState); STDMETHOD(get_ACDGroup)(ITACDGroup **ppACDGroup); STDMETHOD(get_Address)(ITAddress **ppAddress); STDMETHOD(get_Agent)(ITAgent **ppAgent); STDMETHOD(Initialize) ( HAGENTSESSION hAgentSession, ITAgent * pAgent, ITACDGroup * pGroup, ITAddress * pAddress, CAgentHandler * pHandler, AddressLineStruct * pAddressLine ); }; ///////////////////////////////////////////////////////////////////////////// // CAgentSessionEvent class ATL_NO_VTABLE CAgentSessionEvent : public CTAPIComObjectRoot, public IDispatchImpl, public CObjectSafeImpl { protected: AGENT_SESSION_EVENT m_SessionEvent; ITAgentSession * m_pSession; public: CAgentSessionEvent() { } static HRESULT FireEvent( CAgentSession * pAgentSession, AGENT_SESSION_EVENT sessionEvent ); void FinalRelease(); DECLARE_MARSHALQI(CAgentSessionEvent) DECLARE_TRACELOG_CLASS(CAgentSessionEvent) BEGIN_COM_MAP(CAgentSessionEvent) COM_INTERFACE_ENTRY(ITAgentSessionEvent) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IObjectSafety) COM_INTERFACE_ENTRY_FUNC(IID_IMarshal, 0, IMarshalQI) COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pFTM) END_COM_MAP() // ITAgentSessionEvent public: STDMETHOD(get_Event)(AGENT_SESSION_EVENT * pEvent); STDMETHOD(get_Session)(ITAgentSession ** ppSession); }; #endif //__AGENTSESSION_H_