Windows-Server-2003/enduser/netmeeting/av/nac/nac.h

136 lines
3.6 KiB
C++

/*
* File: nac.h
*
* Microsoft Network Audio Controller (NAC) header file
*
* Revision History:
*
* 11/28/95 mikev created
*/
#ifndef _NAC_H
#define _NAC_H
#define _NAVC_
#ifdef __cplusplus
class CConnection;
class DataPump;
class CNac;
typedef class CConnection CIPPhoneConnection;
//
// temporary defs
//
typedef CNac **LPLPNAC;
HRESULT WINAPI CreateNac(LPLPNAC lplpNac);
#endif // __cplusplus
// windows messages
#define WNAC_START WM_USER+0x100
#define WNAC_CONNECTREQ WNAC_START+0x0000
#define WCON_STATUS WNAC_START+0x0001
//
// end of temporary defs
//
//
// utility functions
//
VOID FreeTranslatedAliasList(PCC_ALIASNAMES pDoomed);
HRESULT AllocTranslatedAliasList(PCC_ALIASNAMES *ppDest, P_H323ALIASLIST pSource);
#define DEF_AP_BWMAX 14400
/*
* Class definitions
*/
#ifdef __cplusplus
class CNac : public INac
{
protected:
PCC_ALIASNAMES m_pLocalAliases;
LPWSTR m_pUserName;
UINT uRef;
HRESULT hrLast;
UINT m_uMaximumBandwidth;
// application data
CNOTIFYPROC pProcNotifyConnect; // connection notification callback
HWND hWndNotifyConnect; // connection notification hwnd
HWND hAppWnd; // hwnd of the process that owns the NAC
HINSTANCE hAppInstance; // instance of the process that owns the NAC
// subcomponent object references
LPIH323PubCap m_pCapabilityResolver;
CConnection *m_pListenLine; // connection object listening for incoming
CConnection *m_pCurrentLine; // active connection object(talking), if there is one
CConnection *m_pLineList;
int m_numlines; // # of objects in m_pLineList
ImpICommChan *m_pSendAudioChannel;
ImpICommChan *m_pSendVideoChannel;
// Internal interfaces
BOOL Init(); // internal initialization
OBJ_CPT; // profiling timer
public:
CConnection *m_pNextToAccept;
HWND GetAppWnd(){return hAppWnd;};
HINSTANCE GetAppInstance() {return hAppInstance;};
LPWSTR GetUserDisplayName() {return m_pUserName;};
PCC_ALIASNAMES GetUserAliases() {return m_pLocalAliases;};
PCC_ALIASITEM GetUserDisplayAlias();
CNac();
~CNac();
HRESULT CreateConnection(CConnection **lplpConnection, GUID PIDofProtocolType);
HRESULT RemoveConnection(CConnection *lpConnection);
HRESULT LastHR() {return hrLast;};
VOID SetLastHR(HRESULT hr) {hrLast = hr;};
HRESULT GetConnobjArray(CConnection **lplpArray, UINT uSize);
ICtrlCommChan *QueryPreviewChannel(LPGUID lpMID);
STDMETHOD_( CREQ_RESPONSETYPE, ConnectionRequest(CConnection *pConnection));
STDMETHOD_( CREQ_RESPONSETYPE, FilterConnectionRequest(CConnection *pConnection,
P_APP_CALL_SETUP_DATA pAppData));
// INacInterface stuff
STDMETHODIMP QueryInterface(REFIID riid, LPVOID FAR * ppvObj);
STDMETHOD_(ULONG, AddRef());
STDMETHOD_(ULONG, Release());
STDMETHOD( Initialize(HWND hWnd, HINSTANCE hInst, PORT *lpPort));
STDMETHOD( SetMaxPPBandwidth(UINT Bandwidth));
STDMETHOD( RegisterConnectionNotify(HWND hWnd, CNOTIFYPROC pConnectRequestHandler));
STDMETHOD( DeregisterConnectionNotify(HWND hWnd, CNOTIFYPROC pConnectRequestHandler));
STDMETHOD( GetNumConnections(ULONG *lp));
STDMETHOD( GetConnectionArray(LPCONNECTIONIF *lplpArray, UINT uSize));
STDMETHOD( CreateConnection(LPCONNECTIONIF *lplpLine, GUID PIDofProtocolType));
STDMETHOD( DeleteConnection(LPCONNECTIONIF lpLine));
STDMETHOD( SetUserDisplayName(LPWSTR lpwName));
STDMETHODIMP CreateLocalCommChannel(ICommChannel** ppCommChan, LPGUID lpMID,
IMediaChannel* pMediaStream);
STDMETHODIMP SetUserAliasNames(P_H323ALIASLIST pAliases);
STDMETHODIMP EnableGatekeeper(BOOL bEnable, PSOCKADDR_IN pGKAddr);
};
#else // not __cplusplus
#endif // __cplusplus
#endif //#ifndef _NAC_H