136 lines
3.6 KiB
C++
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
|
|
|
|
|
|
|