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

145 lines
3 KiB
C++

/*++
Copyright (c) 1997-1999 Microsoft Corporation
Module Name:
ACDGroup.h
Abstract:
Declaration of the CACDGroup
Author:
Noela - 11/04/97
Notes:
Revision History:
--*/
#ifndef __ACDGROUP_H_
#define __ACDGROUP_H_
#include "resource.h" // main symbols
#include "ObjectSafeImpl.h"
class CQueue;
class CAgentHandler;
/////////////////////////////////////////////////////////////////////////////
// CACDGroup
class ATL_NO_VTABLE CACDGroup :
public CTAPIComObjectRoot<CACDGroup>,
public IDispatchImpl<ITACDGroup, &IID_ITACDGroup, &LIBID_TAPI3Lib>,
public CObjectSafeImpl
{
private:
PWSTR m_szName;
GUID m_GroupHandle;
BOOL m_bGroupHasBeenEnumerated;
QueueArray m_QueueArray;
CAgentHandler * m_pHandler;
BOOL m_bActive;
public:
CACDGroup()
{
}
HRESULT UpdateQueueArray();
GUID getID() {return m_GroupHandle;}
void SetInactive();
void SetActive();
inline BOOL inactive() {return !m_bActive;}
inline BOOL active() {return m_bActive;}
BOOL active(HRESULT * hr);
CAgentHandler * GetAgentHandler() { return m_pHandler; }
void FinalRelease();
DECLARE_DEBUG_ADDREF_RELEASE(CACDGroup)
DECLARE_QI()
DECLARE_MARSHALQI(CACDGroup)
DECLARE_TRACELOG_CLASS(CACDGroup)
BEGIN_COM_MAP(CACDGroup)
COM_INTERFACE_ENTRY(ITACDGroup)
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()
// ITACDGroup
public:
STDMETHOD(EnumerateQueues)(IEnumQueue ** ppEnumQueue);
STDMETHOD(get_Queues)(VARIANT * pVariant);
STDMETHOD(get_Name)(BSTR * ppName);
STDMETHOD(Initialize)
(
PWSTR pszGroupName,
GUID GroupHandle,
CAgentHandler * pHandler
);
};
/////////////////////////////////////////////////////////////////////////////
// CACDGroupEvent
class ATL_NO_VTABLE CACDGroupEvent :
public CTAPIComObjectRoot<CACDGroupEvent>,
public IDispatchImpl<ITACDGroupEvent, &IID_ITACDGroupEvent, &LIBID_TAPI3Lib>,
public CObjectSafeImpl
{
protected:
ACDGROUP_EVENT m_GroupEvent;
ITACDGroup * m_pGroup;
public:
CACDGroupEvent()
{
}
static HRESULT FireEvent(
CACDGroup* pGroup,
ACDGROUP_EVENT Event
);
void FinalRelease();
DECLARE_MARSHALQI(CACDGroupEvent)
DECLARE_TRACELOG_CLASS(CACDGroupEvent)
BEGIN_COM_MAP(CACDGroupEvent)
COM_INTERFACE_ENTRY(ITACDGroupEvent)
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()
// ITACDGroupEvent
public:
STDMETHOD(get_Event)(ACDGROUP_EVENT * pEvent);
STDMETHOD(get_Group)(ITACDGroup ** ppGroup);
};
#endif //__ACDGROUP_H_