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.

158 lines
4.3 KiB

  1. /***************************************************************************/
  2. /** Microsoft Windows **/
  3. /** Copyright(c) Microsoft Corp., 1995-1996 **/
  4. /***************************************************************************/
  5. //
  6. // File: iconf.h
  7. // Created: ChrisPi 12/6/95
  8. // Modified:
  9. //
  10. // The CConfObject class is defined
  11. //
  12. #ifndef _ICONF_H_
  13. #define _ICONF_H_
  14. #include <inodecnt.h>
  15. #include "connpnts.h"
  16. #include <atlbase.h>
  17. #include <lst.h>
  18. enum CONFSTATE
  19. {
  20. CS_UNINITIALIZED,
  21. CS_CREATING,
  22. CS_COMING_UP,
  23. CS_RUNNING,
  24. CS_GOING_DOWN,
  25. CS_TERMINATED
  26. };
  27. class CNmMember;
  28. class CConfObject : public INmConference, public CConnectionPointContainer
  29. {
  30. protected:
  31. COBLIST m_MemberList;
  32. CONFSTATE m_csState;
  33. CONF_HANDLE m_hConf;
  34. BOOL m_fConferenceCreated;
  35. BOOL m_fServerMode;
  36. BSTR m_bstrConfName;
  37. CNmMember * m_pMemberLocal;
  38. UINT m_uMembers;
  39. UINT m_ourNodeID;
  40. UINT m_uGCCConferenceID;
  41. ULONG m_cRef;
  42. BOOL m_fSecure;
  43. VOID AddMember(CNmMember * pMember);
  44. VOID RemoveMember(POSITION pos);
  45. VOID RemoveMember(CNmMember * pMember)
  46. {
  47. POSITION pos = m_MemberList.GetPosition(pMember);
  48. if (NULL != pos)
  49. {
  50. RemoveMember(pos);
  51. }
  52. }
  53. VOID RemoveOldMembers(int nExpected);
  54. CNmMember * CreateMember(BOOL fLocal,
  55. UINT uCaps,
  56. NC_ROSTER_NODE_ENTRY* pRosterNode);
  57. VOID SetT120State(CONFSTATE state);
  58. VOID CheckState(NM_CONFERENCE_STATE pState);
  59. HRESULT __stdcall EventNotification(UINT uDirection, UINT uMediaType, UINT uEventCode, UINT uSubCode);
  60. public:
  61. // Methods:
  62. CConfObject();
  63. ~CConfObject();
  64. VOID Init(void) {}
  65. VOID OnConferenceCreated() {m_fConferenceCreated = TRUE; }
  66. VOID OnMemberUpdated(INmMember *pMember);
  67. HRESULT CreateConference(void);
  68. HRESULT JoinConference(LPCWSTR pcwszConferenceName,
  69. LPCWSTR pcwszPassword,
  70. LPCSTR pcszAddress,
  71. BOOL fRetry = FALSE);
  72. HRESULT InviteConference(LPCSTR pszAddr,
  73. REQUEST_HANDLE *phRequest);
  74. HRESULT LeaveConference(BOOL fForceLeave=TRUE);
  75. HRESULT CancelInvite(REQUEST_HANDLE hRequest)
  76. {
  77. if (NULL == m_hConf)
  78. {
  79. return E_FAIL;
  80. }
  81. return m_hConf->CancelInvite(hRequest);
  82. }
  83. // Properties:
  84. BSTR GetConfName() { return m_bstrConfName; };
  85. UINT GetOurNodeID() { return m_ourNodeID; };
  86. UINT GetGCCConferenceID() { return m_uGCCConferenceID; };
  87. UINT GetNumMembers() { return m_uMembers; };
  88. BOOL InCall() { return (m_uMembers > 0); };
  89. COBLIST* GetMemberList() { return &m_MemberList; };
  90. CONF_HANDLE GetConfHandle() { return m_hConf; };
  91. CONFSTATE GetT120State() { return m_csState; };
  92. BOOL IsConferenceActive() { return m_hConf != NULL; };
  93. BOOL IsConferenceCreated() { return m_fConferenceCreated; };
  94. BOOL IsConfObjSecure() { return m_fSecure; };
  95. CNmMember * GetLocalMember() { return m_pMemberLocal; };
  96. DWORD GetDwUserIdLocal(void);
  97. VOID SetConfName(BSTR bstr);
  98. VOID SetConfSecurity(BOOL fSecure);
  99. CNmMember * PMemberFromGCCID(UINT uNodeID);
  100. CNmMember * PMemberFromName(PCWSTR pwszName);
  101. // Event Handlers:
  102. // Data Conferencing (R1.1, T.120) events from NCUI:
  103. BOOL OnRosterChanged(PNC_ROSTER pRoster);
  104. BOOL OnT120Invite(CONF_HANDLE hConference, BOOL fSecure);
  105. BOOL OnConferenceEnded();
  106. BOOL OnConferenceStarted(CONF_HANDLE hNewConf,
  107. HRESULT Result);
  108. // INmConference
  109. STDMETHODIMP_(ULONG) AddRef(void);
  110. STDMETHODIMP_(ULONG) Release(void);
  111. STDMETHODIMP QueryInterface(REFIID riid, PVOID *ppvObj);
  112. STDMETHODIMP GetName(BSTR *pbstrName);
  113. STDMETHODIMP GetID(ULONG *puID);
  114. STDMETHODIMP GetState(NM_CONFERENCE_STATE *pState);
  115. STDMETHODIMP GetTopProvider(INmMember **ppMember);
  116. STDMETHODIMP EnumMember(IEnumNmMember **ppEnum);
  117. STDMETHODIMP GetMemberCount(ULONG *puCount);
  118. STDMETHODIMP FindMember(ULONG gccID, INmMember ** ppMember);
  119. STDMETHODIMP IsHosting(void);
  120. STDMETHODIMP Host(void);
  121. STDMETHODIMP Leave(void);
  122. STDMETHODIMP LaunchRemote(REFGUID rguid, INmMember *pMember);
  123. STDMETHODIMP GetConferenceHandle(DWORD_PTR *pdwHandle);
  124. STDMETHODIMP CreateDataChannel(INmChannelData ** ppChannel, REFGUID rguid);
  125. };
  126. CConfObject * GetConfObject(void);
  127. HRESULT GetConference(INmConference **ppConference);
  128. COBLIST * GetMemberList(void);
  129. #endif /* _ICONF_H_ */