155 lines
4.7 KiB
C
155 lines
4.7 KiB
C
|
|
||
|
/*
|
||
|
* File: connobj.h
|
||
|
*
|
||
|
* implementation of Connection Object
|
||
|
*
|
||
|
* Revision History:
|
||
|
*
|
||
|
* 05/08/96 mikev created
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifndef _CONNOBJ_H
|
||
|
#define _CONNOBJ_H
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Class definitions
|
||
|
*/
|
||
|
|
||
|
class ImpIConnection : public IH323Endpoint
|
||
|
{
|
||
|
friend class CH323CallControl;
|
||
|
public:
|
||
|
|
||
|
STDMETHOD(QueryInterface(REFIID riid, LPVOID FAR * ppvObj));
|
||
|
STDMETHOD_(ULONG,AddRef());
|
||
|
STDMETHOD_(ULONG,Release());
|
||
|
STDMETHOD( SetAdviseInterface(IH323ConfAdvise *pH323ConfAdvise));
|
||
|
STDMETHOD( ClearAdviseInterface());
|
||
|
STDMETHOD(PlaceCall(BOOL bUseGKResolution, PSOCKADDR_IN pCallAddr,
|
||
|
P_H323ALIASLIST pDestinationAliases, P_H323ALIASLIST pExtraAliases,
|
||
|
LPCWSTR pCalledPartyNumber, P_APP_CALL_SETUP_DATA pAppData));
|
||
|
STDMETHOD( Disconnect());
|
||
|
STDMETHOD( GetState(ConnectStateType *pState));
|
||
|
STDMETHOD( GetRemoteUserName(LPWSTR lpwszName, UINT uSize));
|
||
|
STDMETHOD( GetRemoteUserAddr(PSOCKADDR_IN psinUser));
|
||
|
STDMETHOD( AcceptRejectConnection(THIS_ CREQ_RESPONSETYPE RejectReason));
|
||
|
|
||
|
STDMETHOD_(HRESULT, GetSummaryCode());
|
||
|
STDMETHOD( CreateCommChannel(THIS_ LPGUID pMediaGuid, ICommChannel **ppICommChannel,
|
||
|
BOOL fSend));
|
||
|
STDMETHOD ( ResolveFormats (LPGUID pMediaGuidArray, UINT uNumMedia,
|
||
|
PRES_PAIR pResOutput));
|
||
|
STDMETHOD(GetVersionInfo(
|
||
|
PCC_VENDORINFO *ppLocalVendorInfo, PCC_VENDORINFO *ppRemoteVendorInfo));
|
||
|
ImpIConnection();
|
||
|
~ImpIConnection(){};
|
||
|
void Init(class CConnection FAR * pCon) {m_pConnection = pCon;};
|
||
|
|
||
|
protected:
|
||
|
CConnection *m_pConnection;
|
||
|
};
|
||
|
|
||
|
|
||
|
class CConnection :
|
||
|
public IH323Endpoint,
|
||
|
public IConfAdvise
|
||
|
{
|
||
|
|
||
|
friend class CH323CallControl;
|
||
|
private:
|
||
|
|
||
|
ImpIConnection m_ImpConnection;
|
||
|
CH323CallControl *m_pH323CallControl;
|
||
|
|
||
|
LPIH323PubCap m_pCapObject;
|
||
|
|
||
|
protected:
|
||
|
COBLIST m_ChannelList;
|
||
|
COBLIST m_MemberList;
|
||
|
|
||
|
UINT uRef;
|
||
|
HRESULT hrLast;
|
||
|
CConnection *next;
|
||
|
BOOL m_fCapsReady;
|
||
|
IH323ConfAdvise *m_pH323ConfAdvise;
|
||
|
LPCTRL_USER_INFO m_pUserInfo;
|
||
|
LPIControlChannel m_pControlChannel;
|
||
|
HRESULT m_hSummaryCode; // best known reason for disconnect or reject
|
||
|
public:
|
||
|
virtual HRESULT Init(class CH323CallControl *pH323CallControl, GUID PIDofProtocolType);
|
||
|
void DeInit(VOID) {m_pH323CallControl = NULL;};
|
||
|
CConnection();
|
||
|
~CConnection();
|
||
|
|
||
|
protected:
|
||
|
|
||
|
ConnectStateType m_ConnectionState;
|
||
|
VOID DoControlNotification(DWORD dwStatus);
|
||
|
public:
|
||
|
BOOL ListenOn(PORT Port);
|
||
|
VOID Disconnect(DWORD dwResponse);
|
||
|
HRESULT CloseAllChannels();
|
||
|
VOID NewUserInfo(LPCTRL_USER_INFO lpNewUserInfo);
|
||
|
|
||
|
public:
|
||
|
LPIControlChannel GetControlChannel( ){return m_pControlChannel;};
|
||
|
VOID ReleaseAllChannels();
|
||
|
|
||
|
STDMETHOD(GetLocalPort(PORT *lpPort));
|
||
|
STDMETHOD (OnCallIncomplete (
|
||
|
LPIControlChannel lpControlObject,
|
||
|
HRESULT hIncompleteCode));
|
||
|
|
||
|
VOID SummaryCode(HRESULT hCode);
|
||
|
|
||
|
|
||
|
// IConfAdvise interface methods
|
||
|
//
|
||
|
STDMETHOD(OnControlEvent(DWORD dwEvent, LPVOID lpvData, LPIControlChannel lpControlObject));
|
||
|
STDMETHOD(GetCapResolver(LPVOID *lplpCapObject, GUID CapType));
|
||
|
STDMETHOD_(LPWSTR, GetUserDisplayName());
|
||
|
STDMETHOD_(PCC_ALIASITEM, GetUserDisplayAlias());
|
||
|
STDMETHOD_(PCC_ALIASNAMES, GetUserAliases());
|
||
|
|
||
|
STDMETHOD_( CREQ_RESPONSETYPE, FilterConnectionRequest(
|
||
|
LPIControlChannel lpControlChannel, P_APP_CALL_SETUP_DATA pAppData));
|
||
|
STDMETHOD(GetAcceptingObject(LPIControlChannel *lplpAcceptingObject,
|
||
|
LPGUID pPID));
|
||
|
STDMETHOD(FindAcceptingObject(LPIControlChannel *lplpAcceptingObject,
|
||
|
LPVOID lpvConfID));
|
||
|
STDMETHOD_(IH323Endpoint *, GetIConnIF()) {return &m_ImpConnection;};
|
||
|
STDMETHOD (AddCommChannel (ICtrlCommChan *pChan));
|
||
|
|
||
|
|
||
|
|
||
|
// Shared IIntConn/IConnection interface methods
|
||
|
STDMETHOD( Disconnect());
|
||
|
|
||
|
// IConnection interface methods
|
||
|
STDMETHOD(QueryInterface(REFIID riid, LPVOID FAR * ppvObj));
|
||
|
STDMETHOD_(ULONG, AddRef());
|
||
|
STDMETHOD_(ULONG, Release());
|
||
|
STDMETHOD( SetAdviseInterface(IH323ConfAdvise *pH323ConfAdvise));
|
||
|
STDMETHOD( ClearAdviseInterface());
|
||
|
STDMETHOD(PlaceCall(BOOL bUseGKResolution, PSOCKADDR_IN pCallAddr,
|
||
|
P_H323ALIASLIST pDestinationAliases, P_H323ALIASLIST pExtraAliases,
|
||
|
LPCWSTR pCalledPartyNumber, P_APP_CALL_SETUP_DATA pAppData));
|
||
|
STDMETHOD( GetState(ConnectStateType *pState));
|
||
|
STDMETHOD( GetRemoteUserName(LPWSTR lpwszName, UINT uSize));
|
||
|
STDMETHOD( GetRemoteUserAddr(THIS_ PSOCKADDR_IN psinUser));
|
||
|
STDMETHOD( AcceptRejectConnection(THIS_ CREQ_RESPONSETYPE RejectReason));
|
||
|
STDMETHOD( GetSummaryCode());
|
||
|
STDMETHOD( CreateCommChannel(THIS_ LPGUID pMediaGuid, ICommChannel **ppICommChannel,
|
||
|
BOOL fSend));
|
||
|
STDMETHOD ( ResolveFormats (LPGUID pMediaGuidArray, UINT uNumMedia,
|
||
|
PRES_PAIR pResOutput));
|
||
|
STDMETHOD(GetVersionInfo(
|
||
|
PCC_VENDORINFO *ppLocalVendorInfo, PCC_VENDORINFO *ppRemoteVendorInfo));
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif // _CONNOBJ_H
|