windows-nt/Source/XPSP1/NT/net/tapi/skywalker/tapi3/agentsess.h
2020-09-26 16:20:57 +08:00

170 lines
4.8 KiB
C++

/*++
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<CAgentSession>,
public IDispatchImpl<ITAgentSession, &IID_ITAgentSession, &LIBID_TAPI3Lib>,
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<CAgentSessionEvent>,
public IDispatchImpl<ITAgentSessionEvent, &IID_ITAgentSessionEvent, &LIBID_TAPI3Lib>,
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_