161 lines
3.7 KiB
C
161 lines
3.7 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1997-1999 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
Queue.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Declaration of the CQueue class
|
||
|
|
||
|
Author:
|
||
|
|
||
|
noela 11-04-97
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef __QUEUE_H_
|
||
|
#define __QUEUE_H_
|
||
|
|
||
|
#include "resource.h" // main symbols
|
||
|
|
||
|
class CAgentHandler;
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CQueue
|
||
|
class ATL_NO_VTABLE CQueue :
|
||
|
public CTAPIComObjectRoot<CQueue>,
|
||
|
public IDispatchImpl<ITQueue, &IID_ITQueue, &LIBID_TAPI3Lib>,
|
||
|
public CObjectSafeImpl
|
||
|
{
|
||
|
private:
|
||
|
PWSTR m_szName;
|
||
|
DWORD m_dwHandle;
|
||
|
CAgentHandler * m_pHandler;
|
||
|
BOOL m_bRequiresUpdating;
|
||
|
|
||
|
DWORD m_dwMeasurementPeriod;
|
||
|
DWORD m_dwTotalCallsQueued;
|
||
|
DWORD m_dwCurrentCallsQueued;
|
||
|
DWORD m_dwTotalCallsAdandoned;
|
||
|
DWORD m_dwTotalCallsFlowedIn;
|
||
|
DWORD m_dwTotalCallsFlowedOut;
|
||
|
DWORD m_dwLongestEverWaitTime;
|
||
|
DWORD m_dwCurrentLongestWaitTime;
|
||
|
DWORD m_dwAverageWaitTime;
|
||
|
DWORD m_dwFinalDisposition;
|
||
|
|
||
|
|
||
|
public:
|
||
|
CQueue();
|
||
|
|
||
|
~CQueue()
|
||
|
{
|
||
|
//DeleteCriticalSection( &m_csDataLock );
|
||
|
}
|
||
|
|
||
|
STDMETHOD(UpdateInfo) ();
|
||
|
STDMETHOD(CheckIfUpToDate) ();
|
||
|
|
||
|
inline DWORD getID() {return m_dwHandle;}
|
||
|
inline void SetRequiresUpdate() {m_bRequiresUpdating = TRUE;}
|
||
|
|
||
|
void FinalRelease();
|
||
|
CAgentHandler * GetAgentHandler() { return m_pHandler; }
|
||
|
|
||
|
DECLARE_MARSHALQI(CQueue)
|
||
|
DECLARE_TRACELOG_CLASS(CQueue)
|
||
|
|
||
|
BEGIN_COM_MAP(CQueue)
|
||
|
COM_INTERFACE_ENTRY(ITQueue)
|
||
|
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()
|
||
|
|
||
|
// ITQueue
|
||
|
public:
|
||
|
|
||
|
STDMETHOD(get_Name)(BSTR * ppName);
|
||
|
STDMETHOD(put_MeasurementPeriod)(long ulPeriod);
|
||
|
STDMETHOD(get_MeasurementPeriod) (long *pulPeriod);
|
||
|
STDMETHOD(get_TotalCallsQueued) (long * pulCalls);
|
||
|
STDMETHOD(get_CurrentCallsQueued) (long * pulCalls);
|
||
|
STDMETHOD(get_TotalCallsAbandoned) (long * pulCalls);
|
||
|
STDMETHOD(get_TotalCallsFlowedIn) (long * pulCalls);
|
||
|
STDMETHOD(get_TotalCallsFlowedOut) (long * pulCalls);
|
||
|
STDMETHOD(get_LongestEverWaitTime) (long * pulWaitTime);
|
||
|
STDMETHOD(get_CurrentLongestWaitTime) (long * pulWaitTime);
|
||
|
STDMETHOD(get_AverageWaitTime) (long * pulWaitTime);
|
||
|
STDMETHOD(get_FinalDisposition) (long * pulCalls);
|
||
|
|
||
|
STDMETHOD(Initialize)
|
||
|
(
|
||
|
DWORD dwQueueID,
|
||
|
PWSTR pszName,
|
||
|
CAgentHandler * pHandler
|
||
|
);
|
||
|
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CQueueEvent
|
||
|
class ATL_NO_VTABLE CQueueEvent :
|
||
|
public CTAPIComObjectRoot<CQueueEvent>,
|
||
|
public IDispatchImpl<ITQueueEvent, &IID_ITQueueEvent, &LIBID_TAPI3Lib>,
|
||
|
public CObjectSafeImpl
|
||
|
{
|
||
|
protected:
|
||
|
ACDQUEUE_EVENT m_QueueEvent;
|
||
|
ITQueue * m_pQueue;
|
||
|
|
||
|
public:
|
||
|
CQueueEvent()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
static HRESULT FireEvent(
|
||
|
CQueue * pQueue,
|
||
|
ACDQUEUE_EVENT Event
|
||
|
);
|
||
|
|
||
|
void FinalRelease();
|
||
|
|
||
|
DECLARE_MARSHALQI(CQueueEvent)
|
||
|
DECLARE_TRACELOG_CLASS(CQueueEvent)
|
||
|
|
||
|
BEGIN_COM_MAP(CQueueEvent)
|
||
|
COM_INTERFACE_ENTRY(ITQueueEvent)
|
||
|
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()
|
||
|
|
||
|
// ITQueueEvent
|
||
|
public:
|
||
|
STDMETHOD(get_Event)(ACDQUEUE_EVENT * pEvent);
|
||
|
STDMETHOD(get_Queue)(ITQueue ** ppQueue);
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
#endif //__QUEUE_H_
|
||
|
|
||
|
|
||
|
|