Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

106 lines
3.0 KiB

#ifndef __NmCall_h__
#define __NmCall_h__
#include "NetMeeting.h"
#include "SDKInternal.h"
class CCall;
class CNmManagerObj;
/////////////////////////////////////////////////////////////////////////////
// CNmCallObj
class ATL_NO_VTABLE CNmCallObj :
public CComObjectRootEx<CComSingleThreadModel>,
public IConnectionPointContainerImpl<CNmCallObj>,
public IConnectionPointImpl<CNmCallObj, &IID_INmCallNotify, CComDynamicUnkArray>,
public INmCall,
public INmCallNotify2,
public IInternalCallObj
{
friend HRESULT CreateEnumNmCall(IEnumNmCall** ppEnum);
protected:
// data
static CSimpleArray<CNmCallObj*>* ms_pCallObjList;
NM_CALL_STATE m_State;
CComPtr<INmConference> m_spConference;
CComPtr<INmCall> m_spInternalINmCall;
DWORD m_dwInteralINmCallAdvise;
CNmManagerObj* m_pNmManagerObj;
public:
static HRESULT InitSDK();
static void CleanupSDK();
DECLARE_NO_REGISTRY()
DECLARE_NOT_AGGREGATABLE(CNmCallObj)
BEGIN_COM_MAP(CNmCallObj)
COM_INTERFACE_ENTRY(INmCall)
COM_INTERFACE_ENTRY(IInternalCallObj)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY(INmCallNotify)
COM_INTERFACE_ENTRY(INmCallNotify2)
END_COM_MAP()
BEGIN_CONNECTION_POINT_MAP(CNmCallObj)
CONNECTION_POINT_ENTRY(IID_INmCallNotify)
END_CONNECTION_POINT_MAP()
// Construction and destruction
CNmCallObj();
~CNmCallObj();
HRESULT FinalConstruct();
ULONG InternalRelease();
//static HRESULT CreateInstance(INmCall* pInternalINmCall, INmCall** ppCall);
static HRESULT CreateInstance(CNmManagerObj* pNmManagerObj, INmCall* pInternalINmCall, INmCall** ppCall);
// INmCall methods
STDMETHOD(IsIncoming)(void);
STDMETHOD(GetState)(NM_CALL_STATE *pState);
STDMETHOD(GetName)(BSTR *pbstrName);
STDMETHOD(GetAddr)(BSTR *pbstrAddr, NM_ADDR_TYPE * puType);
STDMETHOD(GetUserData)(REFGUID rguid, BYTE **ppb, ULONG *pcb);
STDMETHOD(GetConference)(INmConference **ppConference);
STDMETHOD(Accept)(void);
STDMETHOD(Reject)(void);
STDMETHOD(Cancel)(void);
// INmCallNotify2 methods
STDMETHOD(NmUI)(CONFN uNotify);
STDMETHOD(StateChanged)(NM_CALL_STATE uState);
STDMETHOD(Failed)(ULONG uError);
STDMETHOD(Accepted)(INmConference *pInternalConference);
// We don't care about these...
STDMETHOD(CallError)(UINT cns) { return S_OK; }
STDMETHOD(RemoteConference)(BOOL fMCU, BSTR *pwszConfNames, BSTR *pbstrConfToJoin) { return S_OK; }
STDMETHOD(RemotePassword)(BSTR bstrConference, BSTR *pbstrPassword, BYTE *pb, DWORD cb, BOOL fIsService) { return S_OK; }
// IInternalCallObj methods
STDMETHOD(GetInternalINmCall)(INmCall** ppCall);
static HRESULT StateChanged(INmCall* pInternalNmCall, NM_CALL_STATE uState);
// INmCallNotify Notification Firing Fns
HRESULT Fire_NmUI(CONFN uNotify);
HRESULT Fire_StateChanged(NM_CALL_STATE uState);
HRESULT Fire_Failed(ULONG uError);
HRESULT Fire_Accepted(INmConference* pConference);
private:
// Helper Fns
HRESULT _ReleaseResources();
static HRESULT _CreateInstanceGuts(CComObject<CNmCallObj> *p, INmCall** ppCall);
};
//HRESULT CreateEnumNmCall(IEnumNmCall** ppEnum);
#endif // __NmCall_h__