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.

2631 lines
77 KiB

  1. /*
  2. * conf.h
  3. *
  4. * Copyright (c) 1995 by DataBeam Corporation, Lexington, KY
  5. *
  6. * Abstract:
  7. * This is the interface file for the CConf class. This class
  8. * is where most of the inteligence within GCC lies. The class
  9. * manages the GCC databases and routes the messages and PDUs.
  10. *
  11. * CConf objects represent the true heart of GCC. Each CConf
  12. * object represents one logical conference within a GCC provider. This
  13. * class encapsulates the conference information base which is the focal
  14. * point for all GCC traffic. This information base consists of several
  15. * Rogue Wave containers, including:
  16. * - a dictionary of enrolled applications (indexed by application SAP
  17. * handles).
  18. * - a list of application roster managers.
  19. * - a list of downward MCS connections.
  20. * - a list of outstanding sequence numbers (used during conference
  21. * establishment).
  22. * - a list of outstanding join requests.
  23. *
  24. * In order to simplify the CConf class as much as possible, there are
  25. * some things that CConf objects do not worry about. First and
  26. * foremost is Conference and Application Roster management. This is
  27. * handled by two separate classes. Next is the Application Registry.
  28. * CConf objects don't maintain the Application Registry information
  29. * base. CConf objects also do not worry about memory management.
  30. * They merely pass Packet objects around, which contain the user data
  31. * being handled. A CConf object has absolutely no responsibility
  32. * for protocol data associated with an enrolled application. Below is
  33. * more detail about what a conference is responsible for.
  34. *
  35. * When a CConf object is first created, its information base is
  36. * empty. It has no enrolled applications, it has not established any MCS
  37. * connections and it has no user attachment to MCS. There is a period of
  38. * time that will be referred to as the Conference Establishment Process
  39. * where the CConf object is progressing through the steps defined by
  40. * the T.124 specification to join or create a conference. This process
  41. * varies depending on the request that initiated the creation of the
  42. * conference. A CConf Object must know if it is a Top Provider.
  43. * Many of the establishment procedures and normal operating procedures
  44. * vary depending on this. A CConf object learns of its type through
  45. * the initial requests that are made to it. For example, if a
  46. * CConf receives a ConferenceCreateRequest where the conference is
  47. * to be created locally it knows it is the Top Provider.
  48. *
  49. * The establishment process involves three main steps that all nodes go
  50. * through when creating a new conference. The first is establishing the
  51. * MCS connection either through a ConnectProviderRequest or a
  52. * ConnectProviderResponse call (note that this step is skipped when
  53. * creating a local conference). If this step is successful, the
  54. * CConf object will create an MCSUser object which progresses through
  55. * a number of its own internal steps which include creating an MCS User
  56. * Attachment and joining the appropriate channels (which are handled by
  57. * the MCSUser object). Finally, when the above two steps have successfully
  58. * completed, the conference creates an Application Registry and the
  59. * CConfRosterMgr objects and informs the Controller that the
  60. * conference is established. A conference cannot respond to any request
  61. * during this establishment process. For instance, a conference will not
  62. * show up in a Conference Query descriptor list during the establishment
  63. * phase.
  64. *
  65. * A note about the creation of the CConfRosterMgr objects.
  66. * A CConf object that is not the Top Provider will instantiate both
  67. * a Local and a Global CConfRosterMgr while the Top Provider
  68. * only maintains a Global Conference Roster Manager. A Local manager
  69. * maintains a Conference Roster which holds the local nodes conference
  70. * record and the conference records for all nodes below it in the
  71. * connection hierarchy. A Global manager maintains a Conference Roster
  72. * which includes the conference records for every node that has announced
  73. * its presence with the conference.
  74. *
  75. * After the above establishment process is complete the Owner Object is
  76. * notified through an owner callback that the conference is ready for
  77. * action. When the node controller receives a
  78. * GCC_PERMIT_TO_ANNOUNCE_PRESENCE indication it must respond with a call
  79. * to GCCAnnouncePresenceRequest(). This is when the node controller
  80. * passes its conference record (which contains all the pertinent
  81. * information about the node) to the newly created conference. This
  82. * request travels through the CControlSAP directly to the conference
  83. * through a GCCCommandTarget call. Remember that the CConf class
  84. * inherits from the GCCCommandTarget class. Whenever a call is made
  85. * directly to a CConf object from either a CControlSAP or an CAppSap
  86. * object, it is made through a command target call.
  87. *
  88. * When an application receives a GCC_PERMIT_TO_ENROLL_INDICATION it must
  89. * respond by calling AppEnrollRequest() to inform the
  90. * CConf object whether or not it wants to enroll with the conference.
  91. * When an application enroll request is received by a CConf
  92. * object a number of things happen, some of which depend on whether the
  93. * CConf object is a Top Provider or a subordinate node. First the
  94. * CConf determines if the application is enrolling. If it isn't, a
  95. * GCC_APPLICATION_ENROLL_CONFIRM is sent to the application that made the
  96. * request and no further action is taken. If the application is
  97. * enrolling, the CConf object first registers itself with the CAppSap
  98. * making the request. This allows future application requests to travel
  99. * directly to the CConf object through command target calls. The
  100. * CConf then establishes the Application Roster Manager
  101. * (if necessary) for this particular application.
  102. *
  103. * After the above establishment and enrollment process is completed a
  104. * CConf object sits idle waiting to service requests or process
  105. * incoming PDUs. These include RosterUpdateIndications as well as
  106. * CRegistry requests.
  107. *
  108. * A CConf object can be deleted in a number of different ways. If a
  109. * resource error occurs, a conference can Terminate itself by sending an
  110. * error TERMINATE indication to its owner through an owner callback.
  111. * The node controller can terminate a conference object by calling
  112. * GCCConferenceDisconnectRequest() or GCCConferenceTerminateRequest(). A
  113. * CConf object can also be terminated if it loses its parent
  114. * connection or if it is set up to automatically terminate after all its
  115. * subordinate nodes disconnect. These types of Terminates are initiated
  116. * through owner callbacks to the Owner Object.
  117. *
  118. * Portable:
  119. * Yes
  120. *
  121. * Caveats:
  122. * None.
  123. *
  124. * Author:
  125. * blp
  126. */
  127. #ifndef _CONFERENCE_
  128. #define _CONFERENCE_
  129. #include "arostmgr.h"
  130. #include "sap.h"
  131. #include "pktcoder.h"
  132. #include "mcsdllif.h"
  133. #include "password.h"
  134. #include "netaddr.h"
  135. #include "privlist.h"
  136. #include "crostmgr.h"
  137. #include "registry.h"
  138. #include "appsap.h"
  139. #include "csap.h"
  140. // Message bases
  141. #define USER_ATTACHMENT_MESSAGE_BASE 100
  142. #define APP_ROSTER_MGR_MESSAGE_BASE 200
  143. #define CONF_ROSTER_MGR_MESSAGE_BASE 300
  144. enum
  145. {
  146. CONF_FLUSH_ROSTER_DATA = CONFMSG_BASE + 1,
  147. };
  148. typedef struct
  149. {
  150. GCCConfID conference_id;
  151. GCCReason reason;
  152. }
  153. CONF_TERMINATE_INFO;
  154. typedef struct
  155. {
  156. ConnectionHandle connection_handle;
  157. TagNumber invite_tag;
  158. CUserDataListContainer *user_data_list;
  159. }
  160. INVITE_REQ_INFO;
  161. /* This structure is used to hold all of an APEs enrollment information.
  162. ** Every APE enrolled with a conference will have a single one of these
  163. ** info structures defined for it.
  164. */
  165. //
  166. // LONCHANC: We should merge the following to another structure or class
  167. // because it has 2 dwords and we need to allocate memory for it.
  168. //
  169. typedef struct
  170. {
  171. CAppSap *pAppSap;
  172. CSessKeyContainer *session_key;
  173. }
  174. ENROLLED_APE_INFO;
  175. /*
  176. ** Lists/Dictionaries used by the CConf Object
  177. */
  178. // This list is used to keep track of the outstanding join responses
  179. class CJoinRespNamePresentConnHdlList2 : public CList2
  180. {
  181. // use TRUE_PTR and FALSE_PTR
  182. DEFINE_CLIST2_(CJoinRespNamePresentConnHdlList2, BOOL_PTR, ConnectionHandle)
  183. };
  184. // This list is used to keep track of the enrolled APEs
  185. class CEnrolledApeEidList2 : public CList2
  186. {
  187. DEFINE_CLIST2_(CEnrolledApeEidList2, ENROLLED_APE_INFO*, GCCEntityID)
  188. };
  189. // This list is keeps up with the child node connection handles
  190. class CConnHandleList : public CList
  191. {
  192. DEFINE_CLIST_(CConnHandleList, ConnectionHandle)
  193. };
  194. // This list is used to match outstanding user IDs
  195. typedef TagNumber UserIDTagNumber; // unsigned long
  196. class CConnHdlTagNumberList2 : public CList2
  197. {
  198. DEFINE_CLIST2(CConnHdlTagNumberList2, ConnectionHandle, UserIDTagNumber)
  199. };
  200. // This list is used to hold all the outstanding invite request
  201. class CInviteRequestList : public CList
  202. {
  203. DEFINE_CLIST(CInviteRequestList, INVITE_REQ_INFO*)
  204. };
  205. // This list is used to hold all the outstanding ejects
  206. class CEjectedNodeConfirmList : public CList
  207. {
  208. DEFINE_CLIST_(CEjectedNodeConfirmList, GCCNodeID)
  209. };
  210. // This list is a queue of outstanding conductor token test
  211. class CConductorTestList : public CList
  212. {
  213. DEFINE_CLIST(CConductorTestList, CBaseSap*)
  214. };
  215. // this list is a queue of outstanding "add" request
  216. class CNetAddrTagNumberList2 : public CList2
  217. {
  218. DEFINE_CLIST2(CNetAddrTagNumberList2, CNetAddrListContainer*, TagNumber)
  219. };
  220. class CTagNumberTagNumberList2 : public CList2
  221. {
  222. DEFINE_CLIST2__(CTagNumberTagNumberList2, TagNumber)
  223. };
  224. // this list holds the NetMeeting version numbers of all nodes in the conference
  225. class CNodeVersionList2 : public CList2
  226. {
  227. DEFINE_CLIST2_(CNodeVersionList2, DWORD, GCCNodeID)
  228. };
  229. // Conference specification parameters
  230. typedef struct
  231. {
  232. BOOL fClearPassword;
  233. BOOL fConfLocked;
  234. BOOL fConfListed;
  235. BOOL fConfConductable;
  236. GCCTerminationMethod eTerminationMethod;
  237. PGCCConferencePrivileges pConductPrivilege;
  238. PGCCConferencePrivileges pConductModePrivilege;
  239. PGCCConferencePrivileges pNonConductPrivilege;
  240. LPWSTR pwszConfDescriptor;
  241. }
  242. CONF_SPEC_PARAMS;
  243. // The class definition
  244. class CConf : public CRefCount
  245. {
  246. friend class MCSUser;
  247. public:
  248. CConf
  249. (
  250. PGCCConferenceName conference_name,
  251. GCCNumericString conference_modifier,
  252. GCCConfID conference_id,
  253. CONF_SPEC_PARAMS *pConfSpecParams,
  254. UINT cNetworkAddresses,
  255. PGCCNetworkAddress *pLocalNetworkAddress,
  256. PGCCError return_value
  257. );
  258. ~CConf(void);
  259. /*
  260. ** Public Member Functions : should only be called
  261. ** by the owner object
  262. */
  263. GCCError ConfCreateRequest(
  264. TransportAddress calling_address,
  265. TransportAddress called_address,
  266. BOOL fSecure,
  267. CPassword *convener_password,
  268. CPassword *password,
  269. LPWSTR pwszCallerID,
  270. PDomainParameters domain_parameters,
  271. CUserDataListContainer *user_data_list,
  272. PConnectionHandle connection_handle);
  273. GCCError ConfCreateResponse(
  274. ConnectionHandle connection_handle,
  275. PDomainParameters domain_parameters,
  276. CUserDataListContainer *user_data_list);
  277. GCCError ConfJoinRequest
  278. (
  279. GCCNumericString called_node_modifier,
  280. CPassword *convener_password,
  281. CPassword *password_challenge,
  282. LPWSTR pwszCallerID,
  283. TransportAddress calling_address,
  284. TransportAddress called_address,
  285. BOOL fSecure,
  286. PDomainParameters domain_parameters,
  287. CUserDataListContainer *user_data_list,
  288. PConnectionHandle connection_handle
  289. );
  290. GCCError ForwardConfJoinRequest
  291. (
  292. CPassword *convener_password,
  293. CPassword *password_challange,
  294. LPWSTR pwszCallerID,
  295. CUserDataListContainer *user_data_list,
  296. BOOL numeric_name_present,
  297. ConnectionHandle connection_handle
  298. );
  299. GCCError ConfJoinIndResponse
  300. (
  301. ConnectionHandle connection_handle,
  302. CPassword *password_challenge,
  303. CUserDataListContainer *user_data_list,
  304. BOOL numeric_name_present,
  305. BOOL convener_is_joining,
  306. GCCResult result
  307. );
  308. GCCError ConfInviteResponse(
  309. UserID parent_user_id,
  310. UserID top_user_id,
  311. TagNumber tag_number,
  312. ConnectionHandle connection_handle,
  313. BOOL fSecure,
  314. PDomainParameters domain_parameters,
  315. CUserDataListContainer *user_data_list);
  316. GCCError RegisterAppSap(CAppSap *);
  317. GCCError UnRegisterAppSap(CAppSap *);
  318. GCCError DisconnectProviderIndication(ConnectionHandle);
  319. GCCError ConfRosterInquireRequest(CBaseSap *, GCCAppSapMsgEx **);
  320. GCCError AppRosterInquireRequest(GCCSessionKey *, CAppRosterMsg **);
  321. BOOL FlushOutgoingPDU(void);
  322. GCCConfID GetConfID ( void ) { return m_nConfID; }
  323. ConferenceNodeType GetConfNodeType ( void ) { return m_eNodeType; }
  324. GCCNodeID GetParentNodeID(void) { return (m_pMcsUserObject ? m_pMcsUserObject->GetParentNodeID() : 0); }
  325. BOOL IsConfTopProvider ( void )
  326. {
  327. return ((m_eNodeType == TOP_PROVIDER_AND_CONVENER_NODE) ||
  328. (m_eNodeType == TOP_PROVIDER_NODE));
  329. }
  330. GCCNodeID GetTopProvider(void) { return (m_pMcsUserObject ? m_pMcsUserObject->GetTopNodeID() : 0); }
  331. BOOL DoesConvenerExists ( void ) { return (m_nConvenerNodeID != 0); }
  332. BOOL IsConfListed ( void ) { return m_fConfListed; }
  333. BOOL IsConfPasswordInTheClear ( void ) { return m_fClearPassword; }
  334. BOOL IsConfLocked ( void ) { return m_fConfLocked; }
  335. BOOL IsConfEstablished ( void ) { return m_fConfIsEstablished; }
  336. BOOL IsConfConductible ( void ) { return m_fConfConductible; }
  337. BOOL IsConfSecure ( void ) { return m_fSecure; }
  338. LPSTR GetNumericConfName ( void ) { return m_pszConfNumericName; }
  339. LPWSTR GetTextConfName ( void ) { return m_pwszConfTextName; }
  340. LPSTR GetConfModifier ( void ) { return m_pszConfModifier; }
  341. LPWSTR GetConfDescription ( void ) { return m_pwszConfDescription; }
  342. CNetAddrListContainer *GetNetworkAddressList ( void ) { return m_pNetworkAddressList; }
  343. void ConfIsOver ( void ) { m_fConfIsEstablished = FALSE; }
  344. CRegistry *GetRegistry ( void ) { return m_pAppRegistry; }
  345. /*
  346. ** These are Command Targets
  347. */
  348. GCCError ConfJoinReqResponse(
  349. UserID receiver_id,
  350. CPassword *password_challenge,
  351. CUserDataListContainer *user_data_list,
  352. GCCResult result);
  353. GCCError ConfInviteRequest(
  354. LPWSTR pwszCallerID,
  355. TransportAddress calling_address,
  356. TransportAddress called_address,
  357. BOOL fSecure,
  358. CUserDataListContainer *user_data_list,
  359. PConnectionHandle connection_handle);
  360. GCCError ConfLockResponse(UserID uidRequester, GCCResult);
  361. GCCError ConfEjectUserRequest(UserID uidEjected, GCCReason reason);
  362. GCCError ConfAnnouncePresenceRequest(PGCCNodeRecord node_record);
  363. GCCError ConfDisconnectRequest(void);
  364. GCCError AppEnrollRequest(CAppSap *, GCCEnrollRequest *, GCCRequestTag);
  365. #ifdef JASPER
  366. GCCError ConfLockRequest(void);
  367. GCCError ConfUnlockRequest(void);
  368. GCCError ConfUnlockResponse(UserID uidRequester, GCCResult result);
  369. GCCError ConfTerminateRequest(GCCReason reason);
  370. #endif // JASPER
  371. /******************** Registry calls **************************/
  372. GCCError RegistryRegisterChannelRequest(
  373. PGCCRegistryKey registry_key,
  374. ChannelID channel_id,
  375. CAppSap *);
  376. GCCError RegistryAssignTokenRequest(
  377. PGCCRegistryKey registry_key,
  378. CAppSap *);
  379. GCCError RegistrySetParameterRequest (
  380. PGCCRegistryKey registry_key,
  381. LPOSTR parameter_value,
  382. GCCModificationRights modification_rights,
  383. CAppSap *);
  384. GCCError RegistryRetrieveEntryRequest(
  385. PGCCRegistryKey registry_key,
  386. CAppSap *);
  387. GCCError RegistryDeleteEntryRequest(
  388. PGCCRegistryKey registry_key,
  389. CAppSap *);
  390. GCCError RegistryMonitorRequest(
  391. BOOL enable_delivery,
  392. PGCCRegistryKey registry_key,
  393. CAppSap *);
  394. GCCError RegistryAllocateHandleRequest(
  395. UINT number_of_handles,
  396. CAppSap *);
  397. /******************** Conductorship calls **************************/
  398. GCCError ConductorGiveResponse(GCCResult result);
  399. #ifdef JASPER
  400. GCCError ConductorAssignRequest(void);
  401. GCCError ConductorReleaseRequest(void);
  402. GCCError ConductorPleaseRequest(void);
  403. GCCError ConductorGiveRequest(UserID recipient_node_id);
  404. GCCError ConductorPermitAskRequest(BOOL grant_permission);
  405. GCCError ConductorPermitGrantRequest(
  406. UINT number_granted,
  407. PUserID granted_node_list,
  408. UINT number_waiting,
  409. PUserID waiting_node_list);
  410. #endif // JASPER
  411. GCCError ConductorInquireRequest(CBaseSap *);
  412. /********************************************************************/
  413. // Miscelaneous calls
  414. GCCError ConferenceTimeRemainingRequest (
  415. UINT time_remaining,
  416. UserID node_id);
  417. GCCError AppInvokeRequest(
  418. CInvokeSpecifierListContainer*,
  419. GCCSimpleNodeList *,
  420. CBaseSap *,
  421. GCCRequestTag);
  422. GCCError UpdateNodeVersionList(PGCCPDU roster_update,
  423. UserID sender_id);
  424. DWORD GetNodeVersion(UserID nodeId) { return m_NodeVersionList2.Find(nodeId); }
  425. BOOL HasNM2xNode(void);
  426. #ifdef JASPER
  427. GCCError ConfTimeInquireRequest(BOOL time_is_conference_wide);
  428. GCCError ConfExtendRequest (
  429. UINT extension_time,
  430. BOOL time_is_conference_wide);
  431. GCCError ConfAssistanceRequest(
  432. UINT number_of_user_data_members,
  433. PGCCUserData * user_data_list);
  434. GCCError TextMessageRequest (
  435. LPWSTR pwszTextMsg,
  436. UserID destination_node );
  437. GCCError ConfTransferRequest (
  438. PGCCConferenceName destination_conference_name,
  439. GCCNumericString destination_conference_modifier,
  440. CNetAddrListContainer *network_address_list,
  441. UINT number_of_destination_nodes,
  442. PUserID destination_node_list,
  443. CPassword *password);
  444. GCCError ConfAddRequest (
  445. CNetAddrListContainer *network_address_container,
  446. UserID adding_node,
  447. CUserDataListContainer *user_data_container);
  448. #endif // JASPER
  449. GCCError ConfAddResponse (
  450. GCCResponseTag add_response_tag,
  451. UserID requesting_node,
  452. CUserDataListContainer *user_data_container,
  453. GCCResult result);
  454. void WndMsgHandler(UINT);
  455. // Routines called from the mcs interface
  456. void ProcessConnectProviderConfirm(PConnectProviderConfirm connect_provider_confirm);
  457. // Callback from conf roster manager
  458. void ConfRosterReportIndication ( CConfRosterMsg * );
  459. void CancelInviteRequest(ConnectionHandle);
  460. protected:
  461. //
  462. // Routines called from the user object via owner callbacks
  463. //
  464. void ProcessConferenceCreateResponsePDU(
  465. PConferenceCreateResponse create_response,
  466. PConnectProviderConfirm connect_provider_confirm);
  467. void ProcessConferenceJoinResponsePDU(
  468. PConferenceJoinResponse join_response,
  469. PConnectProviderConfirm connect_provider_confirm);
  470. void ProcessConferenceInviteResponsePDU(
  471. PConferenceInviteResponse invite_response,
  472. PConnectProviderConfirm connect_provider_confirm);
  473. void ProcessUserIDIndication(
  474. TagNumber tag_number,
  475. UserID user_id);
  476. void ProcessUserCreateConfirm(
  477. UserResultType result,
  478. UserID user_id);
  479. void ProcessRosterUpdatePDU(
  480. PGCCPDU roster_update,
  481. UserID sender_id);
  482. void ProcessRosterRefreshPDU(
  483. PGCCPDU roster_update,
  484. UserID sender_id);
  485. GCCError ProcessAppRosterIndicationPDU(
  486. PGCCPDU roster_update,
  487. UserID sender_id);
  488. void ProcessDetachUserIndication(
  489. UserID detached_user,
  490. GCCReason reason);
  491. void ProcessTerminateRequest(
  492. UserID requester_id,
  493. GCCReason reason);
  494. void ProcessTerminateIndication(GCCReason reason);
  495. void ProcessEjectUserRequest(PUserEjectNodeRequestInfo eject_node_request);
  496. void ProcessEjectUserIndication(GCCReason reason);
  497. void ProcessEjectUserResponse(PUserEjectNodeResponseInfo eject_node_response);
  498. void ProcessConferenceLockRequest(UserID requester_id);
  499. void ProcessConferenceUnlockRequest(UserID requester_id);
  500. void ProcessConferenceLockIndication(UserID source_id);
  501. void ProcessConferenceUnlockIndication(UserID source_id);
  502. void ProcessConfJoinResponse(PUserJoinResponseInfo);
  503. void ProcessAppInvokeIndication(CInvokeSpecifierListContainer *, UserID);
  504. #ifdef JASPER
  505. void ProcessConductorPermitAskIndication(PPermitAskIndicationInfo);
  506. #endif // JASPER
  507. void ProcessConfAddResponse(PAddResponseInfo);
  508. /***************** Conductorship calls ***********************/
  509. void ProcessConductorGrabConfirm(GCCResult result);
  510. void ProcessConductorAssignIndication(UserID uidNewConductor, UserID uidSender);
  511. void ProcessConductorReleaseIndication(UserID uidSender);
  512. void ProcessConductorGiveIndication(UserID uidGiver);
  513. void ProcessConductorGiveConfirm(GCCResult);
  514. void ProcessConductorPermitGrantInd(PUserPermissionGrantIndicationInfo, UserID uidSender);
  515. void ProcessConductorTestConfirm(GCCResult);
  516. void ProcessConferenceTransferRequest(
  517. UserID requesting_node_id,
  518. PGCCConferenceName destination_conference_name,
  519. GCCNumericString destination_conference_modifier,
  520. CNetAddrListContainer *destination_address_list,
  521. UINT number_of_destination_nodes,
  522. PUserID destination_node_list,
  523. CPassword *password);
  524. void ProcessConferenceTransferIndication(
  525. PGCCConferenceName destination_conference_name,
  526. GCCNumericString destination_conference_modifier,
  527. CNetAddrListContainer *destination_address_list,
  528. CPassword *password);
  529. void ProcessConferenceAddRequest(
  530. CNetAddrListContainer *network_address_list,
  531. CUserDataListContainer *user_data_list,
  532. UserID adding_node,
  533. TagNumber add_request_tag,
  534. UserID requesting_node);
  535. void InitiateTermination(GCCReason, UserID uidRequester);
  536. // look for this node ID in the roster's record set.
  537. BOOL IsThisNodeParticipant(GCCNodeID);
  538. private:
  539. /*************************************************************/
  540. CAppRosterMgr *GetAppRosterManager(PGCCSessionKey session_key);
  541. TagNumber GetNewUserIDTag(void);
  542. void GetConferenceNameAndModifier(PGCCConferenceName, PGCCNumericString pszConfModifier);
  543. BOOL DoesRequesterHavePrivilege(UserID uidRequester, ConferencePrivilegeType);
  544. GCCError SendFullRosterRefresh(void);
  545. GCCError UpdateNewConferenceNode(void);
  546. /*
  547. ** This group of routines operates on the enrolled APE list.
  548. */
  549. GCCError GetEntityIDFromAPEList(CAppSap *, PGCCSessionKey, GCCEntityID *);
  550. GCCError GenerateEntityIDForAPEList(CAppSap *, PGCCSessionKey, GCCEntityID *);
  551. void RemoveSAPFromAPEList(CAppSap *);
  552. ENROLLED_APE_INFO *GetEnrolledAPEbySap(CAppSap *, GCCEntityID *);
  553. GCCError FlushRosterData(void);
  554. GCCError AsynchFlushRosterData(void);
  555. void DeleteEnrolledAPE(GCCEntityID);
  556. BOOL IsReadyToSendAppRosterUpdate(void);
  557. void DeleteOutstandingInviteRequests(void);
  558. void DeleteInviteRequest(INVITE_REQ_INFO *);
  559. BOOL DoesSAPHaveEnrolledAPE(CAppSap *pAppSap)
  560. {
  561. return (BOOL) (UINT_PTR) GetEnrolledAPEbySap(pAppSap, NULL);
  562. }
  563. // Yikang: This method checks whether the roster update PDU
  564. // contains the applet. The refreshonly argument indicates
  565. // whether or not to check the record updates.
  566. BOOL DoesRosterPDUContainApplet(PGCCPDU roster_update,
  567. const struct Key *obj_key, BOOL refreshonly = TRUE);
  568. void AddNodeVersion(UserID, NodeRecord*);
  569. private:
  570. CAppRosterMgrList m_AppRosterMgrList;
  571. CAppSapList m_RegisteredAppSapList;
  572. CEnrolledApeEidList2 m_EnrolledApeEidList2;
  573. CNetAddrListContainer *m_pNetworkAddressList;
  574. CUserDataListContainer *m_pUserDataList;
  575. CConnHandleList m_ConnHandleList;
  576. CConnHdlTagNumberList2 m_ConnHdlTagNumberList2;
  577. CJoinRespNamePresentConnHdlList2 m_JoinRespNamePresentConnHdlList2;
  578. CInviteRequestList m_InviteRequestList;
  579. CEjectedNodeConfirmList m_EjectedNodeConfirmList;
  580. CConductorTestList m_ConductorTestList;
  581. CNetAddrTagNumberList2 m_AddRequestList;
  582. CTagNumberTagNumberList2 m_AddResponseList;
  583. CNodeVersionList2 m_NodeVersionList2;
  584. PMCSUser m_pMcsUserObject;
  585. LPSTR m_pszConfNumericName;
  586. LPWSTR m_pwszConfTextName;
  587. LPWSTR m_pwszConfDescription;
  588. LPSTR m_pszConfModifier;
  589. LPSTR m_pszRemoteModifier;
  590. GCCConfID m_nConfID;
  591. UserID m_nConvenerNodeID;
  592. BOOL m_fConfLocked;
  593. BOOL m_fConfListed;
  594. BOOL m_fConfConductible;
  595. BOOL m_fClearPassword;
  596. BOOL m_fConfIsEstablished;
  597. BOOL m_fConfDisconnectPending;
  598. BOOL m_fConfTerminatePending;
  599. BOOL m_fTerminationInitiated;
  600. BOOL m_fSecure;
  601. BOOL m_fWBEnrolled;
  602. BOOL m_fFTEnrolled;
  603. BOOL m_fChatEnrolled;
  604. GCCTerminationMethod m_eTerminationMethod;
  605. GCCReason m_eConfTerminateReason;
  606. PDomainParameters m_pDomainParameters;
  607. ConferenceNodeType m_eNodeType;
  608. UserIDTagNumber m_nUserIDTagNumber;
  609. UserIDTagNumber m_nConvenerUserIDTagNumber;
  610. TagNumber m_nParentIDTagNumber;
  611. TagNumber m_nConfAddRequestTagNumber;
  612. ConnectionHandle m_hParentConnection;
  613. ConnectionHandle m_hConvenerConnection;
  614. PAlarm m_pConfTerminateAlarm;
  615. PAlarm m_pConfStartupAlarm;
  616. PPrivilegeListData m_pConductorPrivilegeList;
  617. PPrivilegeListData m_pConductModePrivilegeList;
  618. PPrivilegeListData m_pNonConductModePrivilegeList;
  619. GCCResponseTag m_nConfAddResponseTag;
  620. CConfRosterMgr *m_pConfRosterMgr;
  621. CRegistry *m_pAppRegistry;
  622. UserID m_nConductorNodeID;
  623. UserID m_nPendingConductorNodeID;
  624. BOOL m_fConductorGrantedPermission;
  625. BOOL m_fConductorGiveResponsePending;
  626. BOOL m_fConductorAssignRequestPending;
  627. EntityID m_nAPEEntityID;
  628. //
  629. // LONCHANC; m_cPermittedEnrollment is the number of
  630. // GCC-Application-Permit-to-Enroll. we need to wait for all
  631. // the corresponding GCC-Application-Enroll-Request come in.
  632. // then, we will send out a single
  633. // GCC-Application-Roster-Update-Indication to the wire.
  634. //
  635. int m_cEnrollRequests; // LONCHANC: must be signed
  636. BOOL m_fFirstAppRosterSent;
  637. };
  638. typedef CConf * PConference;
  639. #endif
  640. /*
  641. * CConf( PGCCConferenceName conference_name,
  642. * GCCNumericString conference_modifier,
  643. * GCCConfID conference_id,
  644. * BOOL use_password_in_the_clear,
  645. * BOOL conference_locked,
  646. * BOOL conference_listed,
  647. * BOOL conference_conductable,
  648. * GCCTerminationMethod termination_method,
  649. * PGCCConferencePrivileges conduct_privilege_list,
  650. * PGCCConferencePrivileges conduct_mode_privilege_list,
  651. * PGCCConferencePrivileges non_conduct_privilege_list,
  652. * LPWSTR pwszConfDescriptor,
  653. * UINT number_of_network_addresses,
  654. * PGCCNetworkAddress * local_network_address_list,
  655. * CControlSAP *control_sap,
  656. * UINT owner_message_base,
  657. * PGCCError return_value);
  658. *
  659. * Public member function of CConf
  660. *
  661. * Function Description
  662. * This is the conference constructor. It is responsible for
  663. * initializing all the instance variables used by this class.
  664. * It also creates the MCS domain based on the conference id.
  665. * Fatal errors are returned from this constructor in the
  666. * return value. Note that this constructor is used when the
  667. * CConf specification parameters such as termination
  668. * method or known in advance of conference creation. This is
  669. * the case for a convenor node and a top provider. It is not
  670. * used for joining nodes.
  671. *
  672. * Formal Parameters:
  673. * conference_name (i) Structure pointer that holds the confernce name.
  674. * conference_modifier (i) Pointer to the conference modifier.
  675. * conference_id (i) The assigned conference ID.
  676. * use_password_in_the_clear
  677. * (i) Flag specifying if the password is in the clear.
  678. * conference_locked (i) Flag specifying if the conference is locked.
  679. * conference_listed (i) Flag specifying if the conference is listed.
  680. * conference_conductable
  681. * (i) Flag specifying if conference is conductable.
  682. * termination_method (i) Flag specifying the termination method.
  683. * conduct_privilege_list
  684. * (i) Privilege list used by the conductor.
  685. * conduct_mode_privilege_list
  686. * (i) Privilege list used in conducted mode.
  687. * non_conduct_privilege_list
  688. * (i) Privilege list used when not in conducted mode.
  689. * conference_descriptor
  690. * (i) Pointer to the conference descriptor.
  691. * number_of_network_addresses
  692. * (i) Number of network addresses in list.
  693. * local_network_address_list
  694. * (i) List of local network addresses.
  695. * mcs_interface (i) Pointer to the MCS interface object.
  696. * control_sap (i) Pointer to the Node Controller SAP.
  697. * owner_object (i) Pointer to the object that created this object.
  698. * owner_message_base (i) The number added to all owner callback messages.
  699. * packet_coder (i) Pointer to the Packet Coder object used for PDUs
  700. * return_value (o) Errors that occur are returned here.
  701. *
  702. *
  703. * Return Value
  704. * GCC_NO_ERROR - No error occured.
  705. * GCC_ALLOCATION_FAILURE - Resource error occured.
  706. * GCC_INVALID_CONFERENCE_NAME - Invalid conference name passed in.
  707. * GCC_FAILURE_CREATING_DOMAIN - Failure creating domain.
  708. * GCC_BAD_NETWORK_ADDRESS - Bad network address passed in.
  709. * GCC_BAD_NETWORK_ADDRESS_TYPE - Bad network address type passed in.
  710. *
  711. * Side Effects
  712. * None.
  713. *
  714. * Caveats
  715. * None.
  716. */
  717. /*
  718. * CConf( PGCCConferenceName conference_name,
  719. * GCCNumericString conference_modifier,
  720. * GCCConfID conference_id,
  721. * UINT number_of_network_addresses,
  722. * PGCCNetworkAddress * local_network_address_list,
  723. * CControlSAP *control_sap,
  724. * UINT owner_message_base,
  725. * PGCCError return_value);
  726. *
  727. * Public member function of CConf
  728. *
  729. * Function Description
  730. * This is the conference constructor. It is responsible for
  731. * initializing all the instance variables used by this class.
  732. * It also creates the MCS domain based on the conference id.
  733. * Fatal errors are returned from this constructor in the
  734. * return value. Note that this constructor is used by nodes that
  735. * do not know the CConf specification parameters such as
  736. * termination method in advance of conference creation. This is
  737. * the case for joining nodes.
  738. *
  739. * Formal Parameters:
  740. * conference_name (i) Structure pointer that holds the confernce name.
  741. * conference_modifier (i) Pointer to the conference modifier.
  742. * conference_id (i) The assigned conference ID.
  743. * number_of_network_addresses
  744. * (i) Number of local network addresses in list.
  745. * local_network_address_list
  746. * (i) List of local network addresses.
  747. * control_sap (i) Pointer to the Node Controller SAP.
  748. * packet_coder (i) Pointer to the Packet Coder object used for PDUs
  749. * return_value (o) Errors that occur are returned here.
  750. *
  751. *
  752. * Return Value
  753. * GCC_NO_ERROR - No error occured.
  754. * GCC_ALLOCATION_FAILURE - Resource error occured.
  755. * GCC_FAILURE_CREATING_DOMAIN - Failure creating domain.
  756. * GCC_BAD_NETWORK_ADDRESS - Bad network address passed in.
  757. * GCC_BAD_NETWORK_ADDRESS_TYPE - Bad network address type passed in.
  758. *
  759. * Side Effects
  760. * None.
  761. *
  762. * Caveats
  763. * None.
  764. */
  765. /*
  766. * GCCError ConfCreateRequest(
  767. * TransportAddress calling_address,
  768. * TransportAddress called_addrescs,
  769. * CPassword *convener_password,
  770. * CPassword *password,
  771. * LPWSTR pwszCallerID,
  772. * PDomainParameters domain_parameters,
  773. * CUserDataListContainer *user_data_list,
  774. * PConnectionHandle connection_handle)
  775. *
  776. * Public member function of CConf
  777. *
  778. * Function Description
  779. * This function is called when a Conference Create Request PDU is to be
  780. * issued. Note that a local conference can be created by setting the
  781. * called address to NULL.
  782. *
  783. * Formal Parameters:
  784. * calling_address (i) Address of the calling node.
  785. * called_address (i) Address of the called node. Null for local conf.
  786. * convener_password (i) Password used by convener to get back priviliges
  787. * password (i) Password needed to join the conference.
  788. * caller_identifier (i) Unicode string specifying the caller ID.
  789. * domain_parameters (i) The MCS domain parameters.
  790. * user_data_list (i) Pointer to a User data list object.
  791. * connection_handle (o) The logical connection handle is returned here.
  792. *
  793. * Return Value
  794. * GCC_NO_ERROR: - No error
  795. * GCC_ALLOCATION_FAILURE - Resource error occured
  796. * GCC_INVALID_TRANSPORT_ADDRESS - Something wrong with transport address
  797. * GCC_FAILURE_ATTACHING_TO_MCS - Failure creating MCS user attachment
  798. * GCC_INVALID_ADDRESS_PREFIX - Invalid transport address prefix
  799. *
  800. * Side Effects
  801. * None.
  802. *
  803. * Caveats
  804. * Passing in NULL for the called address will create a local conference.
  805. */
  806. /*
  807. * GCCError ConfCreateResponse(
  808. * ConnectionHandle connection_handle,
  809. * PDomainParameters domain_parameters,
  810. * CUserDataListContainer *user_data_list)
  811. *
  812. * Public member function of CConf
  813. *
  814. * Function Description
  815. * This function is called when a Conference Create Response PDU is to be
  816. * issued. It should only be issued in response to a
  817. * ConferenceCreateRequest. The connection handle is used to match the
  818. * request with the response.
  819. *
  820. * Formal Parameters:
  821. * connection_handle (i) Connection handled specified in the request.
  822. * domain_parameters (i) The MCS domain parameters.
  823. * user_data_list (i) Pointer to a User data list object.
  824. *
  825. * Return Value
  826. * GCC_NO_ERROR: - No error
  827. * GCC_ALLOCATION_FAILURE - Resource error occured
  828. * GCC_FAILURE_ATTACHING_TO_MCS - Failure creating MCS user attachment
  829. *
  830. * Side Effects
  831. * None.
  832. *
  833. * Caveats
  834. * None.
  835. */
  836. /*
  837. * GCCError ConfJoinRequest(
  838. * GCCNumericString called_node_modifier,
  839. * CPassword *convener_password,
  840. * CPassword *password_challenge,
  841. * LPWSTR pwszCallerID,
  842. * TransportAddress calling_address,
  843. * TransportAddress called_address,
  844. * PDomainParameters domain_parameters,
  845. * CUserDataListContainer *user_data_list,
  846. * PConnectionHandle connection_handle)
  847. *
  848. * Public member function of CConf
  849. *
  850. * Function Description
  851. * This function is called when a Conference Join Request PDU is to be
  852. * issued. The second constructor defined above should have been
  853. * used to create the conference object before the routine is called.
  854. *
  855. * Formal Parameters:
  856. * called_node_modifier(i) The conference modifier at the node being joined
  857. * convener_password (i) Password used by convener to get back priviliges
  858. * password_challenge (i) Password used to join a conference.
  859. * caller_identifier (i) Unicode string specifying the caller ID.
  860. * calling_address (i) Address of the calling node.
  861. * called_address (i) Address of the called node.
  862. * domain_parameters (i) The MCS domain parameters.
  863. * user_data_list (i) Pointer to a User data list object.
  864. * connection_handle (o) The logical connection handle is returned here.
  865. *
  866. * Return Value
  867. * GCC_NO_ERROR: - No error
  868. * GCC_ALLOCATION_FAILURE - Resource error occured
  869. * GCC_INVALID_TRANSPORT_ADDRESS - Something wrong with transport address
  870. * GCC_FAILURE_ATTACHING_TO_MCS - Failure creating MCS user attachment
  871. * GCC_INVALID_ADDRESS_PREFIX - Invalid transport address prefix
  872. *
  873. * Side Effects
  874. * None.
  875. *
  876. * Caveats
  877. * None.
  878. */
  879. /*
  880. * GCCError ForwardConfJoinRequest (
  881. * CPassword *convener_password,
  882. * CPassword *password_challange,
  883. * LPWSTR pwszCallerID,
  884. * CUserDataListContainer *user_data_list,
  885. * BOOL numeric_name_present,
  886. * ConnectionHandle connection_handle)
  887. *
  888. * Public member function of CConf
  889. *
  890. * Function Description
  891. * This function is called when a Conference Join Request is to be
  892. * forwarded to the Top Provider. This call will be made after an
  893. * intermediate node calls Join Response with a successful result
  894. * value.
  895. *
  896. * Formal Parameters:
  897. * convener_password (i) Password used by convener to get back priviliges
  898. * password_challenge (i) Password used to join a conference.
  899. * caller_identifier (i) Unicode string specifying the caller ID.
  900. * user_data_list (i) Pointer to a User data list object.
  901. * numeric_name_present(i) This flag states that the numeric portion of
  902. * the conference name was specified in the
  903. * request. Therefore, the text name is returned
  904. * in the response.
  905. * connection_handle (i) The logical connection handle defined by the
  906. * request.
  907. *
  908. * Return Value
  909. * GCC_NO_ERROR: - No error
  910. * GCC_ALLOCATION_FAILURE - Resource error occured
  911. * GCC_INVALID_CONFERENCE - Returned if this node is the Top
  912. * Provider
  913. *
  914. * Side Effects
  915. * None.
  916. *
  917. * Caveats
  918. * None.
  919. */
  920. /*
  921. * GCCError ConfJoinIndResponse(
  922. * ConnectionHandle connection_handle,
  923. * CPassword *password_challenge,
  924. * CUserDataListContainer *user_data_list,
  925. * BOOL numeric_name_present,
  926. * BOOL convener_is_joining,
  927. * GCCResult result)
  928. *
  929. * Public member function of CConf
  930. *
  931. * Function Description
  932. * This function is called when a Conference Join Response PDU is to be
  933. * issued. It is called in response to a ConferenceJoinRequest being
  934. * received.
  935. *
  936. * Formal Parameters:
  937. * connection_handle (i) Connection handled specified in the request.
  938. * password_challenge (i) Password used when joining a conference.
  939. * user_data_list (i) Pointer to a User data list object.
  940. * numeric_name_present(i) This flag states that the numeric portion of
  941. * the conference name was specified in the
  942. * request. Therefore, the text name is returned
  943. * in the response.
  944. * convener_is_joining (i) Flag stating that the convener is rejoining
  945. * the conference.
  946. * result (i) Result code to be returned in the response.
  947. *
  948. * Return Value
  949. * GCC_NO_ERROR: - No error
  950. * GCC_ALLOCATION_FAILURE - Resource error occured
  951. * GCC_DOMAIN_PARAMETERS_UNACCEPTABLE - Domain parameters were
  952. * unacceptable for this connection.
  953. *
  954. * Side Effects
  955. * None.
  956. *
  957. * Caveats
  958. * If the GCC_DOMAIN_PARAMETERS_UNACCEPTABLE error is returned from this
  959. * routine, MCS will automatically reject the connection sending a
  960. * result to the other side stating the the Domain Parameters were
  961. * unacceptable.
  962. */
  963. /*
  964. * GCCError ConfInviteResponse(
  965. * UserID parent_user_id,
  966. * UserID top_user_id,
  967. * TagNumber tag_number,
  968. * ConnectionHandle connection_handle,
  969. * PDomainParameters domain_parameters,
  970. * CUserDataListContainer *user_data_list)
  971. *
  972. * Public member function of CConf
  973. *
  974. * Function Description
  975. * This function is called when a Conference Invite Response PDU is to be
  976. * issued. It is called in response to an Invite request.
  977. *
  978. * Formal Parameters:
  979. * parent_user_id (i) The MCS user ID of the parent node.
  980. * top_user_id (i) The MCS user ID of the Top Provider.
  981. * tag_number (i) Tag the matches the request with the response.
  982. * connection_handle (i) Connection handled specified in the request.
  983. * domain_parameters (i) The MCS domain parameters.
  984. * user_data_list (i) Pointer to a User data list object.
  985. *
  986. * Return Value
  987. * GCC_NO_ERROR: - No error
  988. * GCC_ALLOCATION_FAILURE - Resource error occured
  989. * GCC_FAILURE_ATTACHING_TO_MCS - Failure creating MCS user
  990. * attachment
  991. * GCC_DOMAIN_PARAMETERS_UNACCEPTABLE - Domain parameters were
  992. * unacceptable for this connection.
  993. *
  994. * Side Effects
  995. * None.
  996. *
  997. * Caveats
  998. * None.
  999. */
  1000. /*
  1001. * CConf::RegisterAppSap(CAppSap *pAppSap)
  1002. *
  1003. * Public Function Description
  1004. * This routine is called from the owner object whenever an application
  1005. * SAP becomes a candidate for Enrollment. This will happen whenever
  1006. * Applications SAPs exists at the same time a conference becomes
  1007. * established. It will also be called whenever a conference exists
  1008. * and a new application SAP is created.
  1009. *
  1010. * Formal Parameters:
  1011. * pAppSap (i) Pointer to the application SAP object associated
  1012. * with the registering Application.
  1013. * hSap
  1014. * (i) SAP handle of the registering Application.
  1015. *
  1016. * Return Value
  1017. * GCC_NO_ERROR: - No error
  1018. * GCC_ALLOCATION_FAILURE - Resource error occured
  1019. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1020. * its establishment process.
  1021. *
  1022. * Side Effects
  1023. * None.
  1024. *
  1025. * Caveats
  1026. * None.
  1027. */
  1028. /*
  1029. * CConf::UnRegisterAppSap(CAppSap *pAppSap)
  1030. *
  1031. * Public Function Description
  1032. * This routine is called from the owner object whenever an application
  1033. * SAP becomes unavailable due to whatever reason. This routine is
  1034. * responsible for unenrolling any APEs from any rosters that it might have
  1035. * used this SAP to enroll with.
  1036. *
  1037. * Formal Parameters:
  1038. * application_sap_handle
  1039. * (i) SAP handle of the unregistering Application.
  1040. *
  1041. * Return Value
  1042. * GCC_NO_ERROR: - No error
  1043. * GCC_APPLICATION_NOT_REGISTERED - The application was not registered.
  1044. *
  1045. * Side Effects
  1046. * None.
  1047. *
  1048. * Caveats
  1049. * None.
  1050. */
  1051. /*
  1052. * GCCError DisconnectProviderIndication(
  1053. * ConnectionHandle connection_handle)
  1054. *
  1055. * Public member function of CConf
  1056. *
  1057. * Function Description
  1058. * This function is called whenever a disconnect indication is received
  1059. * by GCC. It is used to inform the conference of any logical connections
  1060. * it that might have gone down.
  1061. *
  1062. * Formal Parameters:
  1063. * connection_handle (i) Logical connection handle that was disconnected
  1064. *
  1065. * Return Value
  1066. * GCC_NO_ERROR: - No error
  1067. * GCC_ALLOCATION_FAILURE - Resource error occured
  1068. * GCC_INVALID_PARAMETER - This connection handle is not used
  1069. * by this conference.
  1070. *
  1071. * Side Effects
  1072. * None.
  1073. *
  1074. * Caveats
  1075. * None.
  1076. */
  1077. /*
  1078. * GCCError DisconnectProviderIndication(
  1079. * ConnectionHandle connection_handle)
  1080. *
  1081. * Public member function of CConf
  1082. *
  1083. * Function Description
  1084. * This function is called whenever a disconnect indication is received
  1085. * by GCC. It is used to inform the conference of any logical connections
  1086. * it that might have gone down.
  1087. *
  1088. * Formal Parameters:
  1089. * connection_handle (i) Logical connection handle that was disconnected
  1090. *
  1091. * Return Value
  1092. * GCC_NO_ERROR: - No error
  1093. * GCC_ALLOCATION_FAILURE - Resource error occured
  1094. * GCC_INVALID_PARAMETER - This connection handle is not used
  1095. * by this conference.
  1096. *
  1097. * Side Effects
  1098. * None.
  1099. *
  1100. * Caveats
  1101. * None.
  1102. */
  1103. /*
  1104. * GCCError ConfRosterInquireRequest(CBaseSap *)
  1105. *
  1106. * Public member function of CConf
  1107. *
  1108. * Function Description
  1109. * This function is used to obtain a conference roster. The conference
  1110. * roster is delivered to the requesting command target in a Conference
  1111. * Roster inquire confirm.
  1112. *
  1113. * Formal Parameters:
  1114. * command_target (i) Pointer to object that made the request.
  1115. *
  1116. * Return Value
  1117. * GCC_NO_ERROR: - No error
  1118. * GCC_ALLOCATION_FAILURE - Resource error occured
  1119. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1120. * its establishment process.
  1121. *
  1122. * Side Effects
  1123. * None.
  1124. *
  1125. * Caveats
  1126. * None.
  1127. */
  1128. /*
  1129. * GCCError AppRosterInquireRequest(GCCSessionKey *, CAppRosterMsg **)
  1130. *
  1131. * Public member function of CConf
  1132. *
  1133. * Function Description
  1134. * This function is used to obtain a list of application rosters. This
  1135. * list is delivered to the requesting SAP through an Application Roster
  1136. * inquire confirm message.
  1137. *
  1138. * Formal Parameters:
  1139. * session_key (i) Session Key of desired roster. If NULL is
  1140. * specified then all the available application rosters
  1141. * are delivered in the confirm.
  1142. * command_target (i) Pointer to object that made the request.
  1143. *
  1144. * Return Value
  1145. * GCC_NO_ERROR: - No error
  1146. * GCC_ALLOCATION_FAILURE - Resource error occured
  1147. *
  1148. * Side Effects
  1149. * None.
  1150. *
  1151. * Caveats
  1152. * None.
  1153. */
  1154. /*
  1155. * BOOL FlushOutgoingPDU ();
  1156. *
  1157. * Public member function of CConf
  1158. *
  1159. * Function Description
  1160. * This function is used by the owner object to flush any PDUs queued
  1161. * by the conference object. This routine will all flush PDUs queued
  1162. * by the User Attachment object.
  1163. *
  1164. * Formal Parameters:
  1165. * None.
  1166. *
  1167. * Return value:
  1168. * TRUE, if there remain un-processed msgs in the conference message queue
  1169. * FALSE, if all the msgs in the conference msg queue were processed.
  1170. *
  1171. * Side Effects
  1172. * None.
  1173. *
  1174. * Caveats
  1175. * None.
  1176. */
  1177. /*
  1178. * BOOL IsConfEstablished();
  1179. *
  1180. * Public member function of CConf
  1181. *
  1182. * Function Description
  1183. * Function informs whether the conference has completed its
  1184. * establishment process.
  1185. *
  1186. * Formal Parameters:
  1187. * None.
  1188. *
  1189. * Return Value
  1190. * TRUE - Establishment is complete.
  1191. * FALSE - Establishment is still in process.
  1192. *
  1193. * Side Effects
  1194. * None.
  1195. *
  1196. * Caveats
  1197. * None.
  1198. */
  1199. /*
  1200. * BOOL IsConfTopProvider();
  1201. *
  1202. * Public member function of CConf
  1203. *
  1204. * Function Description
  1205. * Function informs whether this node is the Top Provider of the
  1206. * conference.
  1207. *
  1208. * Formal Parameters:
  1209. * None.
  1210. *
  1211. * Return Value
  1212. * TRUE - This node is the Top Provider.
  1213. * FALSE - This node is NOT the Top Provider.
  1214. *
  1215. * Side Effects
  1216. * None.
  1217. *
  1218. * Caveats
  1219. * None.
  1220. */
  1221. /*
  1222. * BOOL DoesConvenerExists();
  1223. *
  1224. * Public member function of CConf
  1225. *
  1226. * Function Description
  1227. * This function informs whether or not the convener is still joined to
  1228. * this conference.
  1229. *
  1230. * Formal Parameters:
  1231. * None.
  1232. *
  1233. * Return Value
  1234. * TRUE - There is a convener node joined to the conference.
  1235. * FALSE - There is NOT a convener node joined to the conference.
  1236. *
  1237. * Side Effects
  1238. * None.
  1239. *
  1240. * Caveats
  1241. * None.
  1242. */
  1243. /*
  1244. * LPSTR GetNumericConfName();
  1245. *
  1246. * Public member function of CConf
  1247. *
  1248. * Function Description
  1249. * This function returns an internal pointer to a LPSTR string
  1250. * that holds the numeric conference name. This string should not be
  1251. * altered by the requesting module. It should also not be used after
  1252. * the conference is deleted.
  1253. *
  1254. * Formal Parameters:
  1255. * None.
  1256. *
  1257. * Return Value
  1258. * Pointer to the numeric string portion of the Conference Name.
  1259. *
  1260. * Side Effects
  1261. * None.
  1262. *
  1263. * Caveats
  1264. * None.
  1265. */
  1266. /*
  1267. * LPWSTR GetTextConfName();
  1268. *
  1269. * Public member function of CConf
  1270. *
  1271. * Function Description
  1272. * This function returns an internal pointer to the unicode string
  1273. * that holds the text portion of the conference name. This string should
  1274. * not be altered by the requesting module. It should also not be used
  1275. * after the conference is deleted.
  1276. *
  1277. * Formal Parameters:
  1278. * None.
  1279. *
  1280. * Return Value
  1281. * Pointer to the text string portion of the Conference Name.
  1282. * NULL if no text conference name exists.
  1283. *
  1284. * Side Effects
  1285. * None.
  1286. *
  1287. * Caveats
  1288. * None.
  1289. */
  1290. /*
  1291. * LPSTR GetConfModifier();
  1292. *
  1293. * Public member function of CConf
  1294. *
  1295. * Function Description
  1296. * This function returns an internal pointer to the LPSTR string
  1297. * that holds the conference name modifier. This string should
  1298. * not be altered by the requesting module. It should also not be used
  1299. * after the conference is deleted.
  1300. *
  1301. * Formal Parameters:
  1302. * None.
  1303. *
  1304. * Return Value
  1305. * Pointer to the Conference Name modifier.
  1306. * NULL if no modifier exists.
  1307. *
  1308. * Side Effects
  1309. * None.
  1310. *
  1311. * Caveats
  1312. * None.
  1313. */
  1314. /*
  1315. * LPWSTR GetConfDescription()
  1316. *
  1317. * Public member function of CConf
  1318. *
  1319. * Function Description
  1320. * This function returns an internal pointer to the unicode string
  1321. * that holds the conference descriptor. This string should
  1322. * not be altered by the requesting module. It should also not be used
  1323. * after the conference is deleted.
  1324. *
  1325. * Formal Parameters:
  1326. * None.
  1327. *
  1328. * Return Value
  1329. * Pointer to the Conference Descriptor.
  1330. * NULL if no descriptor exists.
  1331. *
  1332. * Side Effects
  1333. * None.
  1334. *
  1335. * Caveats
  1336. * None.
  1337. */
  1338. /*
  1339. * CNetAddrListContainer *GetNetworkAddressList()
  1340. *
  1341. * Public member function of CConf
  1342. *
  1343. * Function Description
  1344. * This function returns an internal pointer to the object that holds the
  1345. * list of local network addresses. This object should
  1346. * not be altered by the requesting module. It should also not be used
  1347. * after the conference is deleted.
  1348. *
  1349. * Formal Parameters:
  1350. * None.
  1351. *
  1352. * Return Value
  1353. * Pointer to the Local network address list.
  1354. * NULL if no descriptor exists.
  1355. *
  1356. * Side Effects
  1357. * None.
  1358. *
  1359. * Caveats
  1360. * None.
  1361. */
  1362. /*
  1363. * GCCConfID GetConfID()
  1364. *
  1365. * Public member function of CConf
  1366. *
  1367. * Function Description
  1368. * This function returns the conference ID for this conference object.
  1369. *
  1370. * Formal Parameters:
  1371. * None.
  1372. *
  1373. * Return Value
  1374. * The conference ID
  1375. *
  1376. * Side Effects
  1377. * None.
  1378. *
  1379. * Caveats
  1380. * None.
  1381. */
  1382. /*
  1383. * BOOL IsConfListed();
  1384. *
  1385. * Public member function of CConf
  1386. *
  1387. * Function Description
  1388. * This function informs whether or NOT the conference is listed.
  1389. *
  1390. * Formal Parameters:
  1391. * None.
  1392. *
  1393. * Return Value
  1394. * TRUE - The conference is listed
  1395. * FALSE - This conference is NOT listed
  1396. *
  1397. * Side Effects
  1398. * None.
  1399. *
  1400. * Caveats
  1401. * None.
  1402. */
  1403. /*
  1404. * BOOL IsConfPasswordInTheClear();
  1405. *
  1406. * Public member function of CConf
  1407. *
  1408. * Function Description
  1409. * This function informs whether or NOT the conference is using an
  1410. * in the clear password.
  1411. *
  1412. * Formal Parameters:
  1413. * None.
  1414. *
  1415. * Return Value
  1416. * TRUE - The conference is using a Password in the clear
  1417. * FALSE - The conference is NOT using a Password in the clear
  1418. *
  1419. * Side Effects
  1420. * None.
  1421. *
  1422. * Caveats
  1423. * None.
  1424. */
  1425. /*
  1426. * BOOL IsConfLocked();
  1427. *
  1428. * Public member function of CConf
  1429. *
  1430. * Function Description
  1431. * This function informs whether or NOT the conference is locked.
  1432. *
  1433. * Formal Parameters:
  1434. * None.
  1435. *
  1436. * Return Value
  1437. * TRUE - The conference is locked.
  1438. * FALSE - The conference is NOT locked.
  1439. *
  1440. * Side Effects
  1441. * None.
  1442. *
  1443. * Caveats
  1444. * None.
  1445. */
  1446. /*
  1447. * These routines live in conf2.cpp
  1448. */
  1449. /*
  1450. * GCCError ConfJoinReqResponse(
  1451. * UserID receiver_id,
  1452. * CPassword *password_challenge,
  1453. * CUserDataListContainer *user_data_list,
  1454. * GCCResult result)
  1455. *
  1456. * Public member function of CConf
  1457. *
  1458. * Function Description
  1459. * This Command Target function is used when the join request was delivered
  1460. * through an intermediate node. In this case, the join response is sent
  1461. * back through the intermediate node.
  1462. *
  1463. * Formal Parameters:
  1464. * receiver_id - (i) The user ID of the intermediate node that
  1465. * forwarded the join request. This user ID is
  1466. * used to match the join request with the join
  1467. * response.
  1468. * password_challenge
  1469. * - (i) The password challenge to be delivered to the
  1470. * joining node. NULL if none should be delivered.
  1471. * user_data_list - (i) Pointer to a user data object to be delivered
  1472. * to joiner. NULL if none should be delivered.
  1473. * result - (i) Result of the join request.
  1474. *
  1475. * Return Value
  1476. * GCC_NO_ERROR - No error.
  1477. *
  1478. * Side Effects
  1479. * None.
  1480. *
  1481. * Caveats
  1482. * None.
  1483. */
  1484. /*
  1485. * GCCError ConfInviteRequest(
  1486. * LPWSTR pwszCallerID,
  1487. * TransportAddress calling_address,
  1488. * TransportAddress called_address,
  1489. * CUserDataListContainer *user_data_list,
  1490. * PConnectionHandle connection_handle)
  1491. *
  1492. * Public member function of CConf
  1493. *
  1494. * Function Description
  1495. * This Command Target function is used to issue an invite request. This
  1496. * can be a command target because the conference at the requesting node
  1497. * should already be established before the request comes in.
  1498. *
  1499. * Formal Parameters:
  1500. * caller_identifier (i) Unicode string specifying the caller ID.
  1501. * calling_address (i) Address of the calling node.
  1502. * called_address (i) Address of the called node.
  1503. * user_data_list (i) Pointer to a User data list object.
  1504. * connection_handle (o) The logical connection handle is returned here.
  1505. *
  1506. * Return Value
  1507. * GCC_NO_ERROR - No error.
  1508. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1509. * GCC_INVALID_TRANSPORT_ADDRESS - Something wrong with transport address
  1510. * GCC_INVALID_ADDRESS_PREFIX - Invalid transport address prefix
  1511. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1512. * its establishment process.
  1513. *
  1514. * Side Effects
  1515. * None.
  1516. *
  1517. * Caveats
  1518. * None.
  1519. */
  1520. /*
  1521. * GCCError ConfLockRequest ()
  1522. *
  1523. * Public member function of CConf
  1524. *
  1525. * Function Description
  1526. * This Command Target function is used to issue a lock request to
  1527. * the conference.
  1528. *
  1529. * Formal Parameters:
  1530. * None.
  1531. *
  1532. * Return Value
  1533. * GCC_NO_ERROR - No error.
  1534. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1535. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1536. * its establishment process.
  1537. *
  1538. * Side Effects
  1539. * None.
  1540. *
  1541. * Caveats
  1542. * None.
  1543. */
  1544. /*
  1545. * GCCError ConfLockResponse (
  1546. * UserID requesting_node,
  1547. * GCCResult result)
  1548. *
  1549. * Public member function of CConf
  1550. *
  1551. * Function Description
  1552. * This Command Target function is used to issue a lock response. It
  1553. * is called in response to a lock request.
  1554. *
  1555. * Formal Parameters:
  1556. * requesting_node - (i) Node ID of node the issued the lock request.
  1557. * result - (i) Result of lock request.
  1558. *
  1559. * Return Value
  1560. * GCC_NO_ERROR - No error.
  1561. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1562. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1563. * its establishment process.
  1564. *
  1565. * Side Effects
  1566. * None.
  1567. *
  1568. * Caveats
  1569. * None.
  1570. */
  1571. /*
  1572. * GCCError ConfUnlockRequest ()
  1573. *
  1574. * Public member function of CConf
  1575. *
  1576. * Function Description
  1577. * This Command Target function is used to issue an unlock request to
  1578. * the conference.
  1579. *
  1580. * Formal Parameters:
  1581. * None.
  1582. *
  1583. * Return Value
  1584. * GCC_NO_ERROR - No error.
  1585. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1586. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1587. * its establishment process.
  1588. *
  1589. * Side Effects
  1590. * None.
  1591. *
  1592. * Caveats
  1593. * None.
  1594. */
  1595. /*
  1596. * GCCError ConfUnlockResponse (
  1597. * UserID requesting_node,
  1598. * GCCResult result)
  1599. *
  1600. * Public member function of CConf
  1601. *
  1602. * Function Description
  1603. * This Command Target function is used to issue an unlock response. It
  1604. * is called in response to an unlock request.
  1605. *
  1606. * Formal Parameters:
  1607. * requesting_node - (i) ID of node the issued the unlock request.
  1608. * result - (i) Result of unlock request.
  1609. *
  1610. * Return Value
  1611. * GCC_NO_ERROR - No error.
  1612. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1613. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1614. * its establishment process.
  1615. *
  1616. * Side Effects
  1617. * None.
  1618. *
  1619. * Caveats
  1620. * None.
  1621. */
  1622. /*
  1623. * GCCError ConfEjectUserRequest (
  1624. * UserID ejected_node_id,
  1625. * GCCReason reason)
  1626. *
  1627. * Public member function of CConf
  1628. *
  1629. * Function Description
  1630. * This Command Target function is used to eject a user from the
  1631. * conference. Note that the user must have the appropriate priviliges
  1632. * to perform the eject.
  1633. *
  1634. * Formal Parameters:
  1635. * ejected_node_id - (i) ID of node to be ejected.
  1636. * reason - (i) Reason for ejection
  1637. *
  1638. * Return Value
  1639. * GCC_NO_ERROR - No error.
  1640. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1641. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1642. * its establishment process.
  1643. *
  1644. * Side Effects
  1645. * None.
  1646. *
  1647. * Caveats
  1648. * None.
  1649. */
  1650. /*
  1651. * GCCError ConfAnnouncePresenceRequest(
  1652. * PGCCNodeRecord node_record)
  1653. *
  1654. * Public member function of CConf
  1655. *
  1656. * Function Description
  1657. * This Command Target function is called when the Node Controller
  1658. * announces its presence with the conference. This request will
  1659. * generate a roster report PDU and indication.
  1660. *
  1661. * Formal Parameters:
  1662. * node_record - (i) Structure containing the complete node
  1663. * record for the requesting node controller.
  1664. *
  1665. * Return Value
  1666. * GCC_NO_ERROR - No error.
  1667. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1668. * GCC_BAD_NETWORK_ADDRESS - If an invalid network address is
  1669. * passed in as part of the record.
  1670. * GCC_BAD_USER_DATA - If an invalid user data list is
  1671. * passed in as part of the record.
  1672. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1673. * its establishment process.
  1674. *
  1675. * Side Effects
  1676. * None.
  1677. *
  1678. * Caveats
  1679. * None.
  1680. */
  1681. /*
  1682. * GCCError ConfDisconnectRequest(void)
  1683. *
  1684. * Public member function of CConf
  1685. *
  1686. * Function Description
  1687. * This Command Target function is called when the Node Controller
  1688. * wishes to disconnect the node from the conference.
  1689. *
  1690. * Formal Parameters:
  1691. * None.
  1692. *
  1693. * Return Value
  1694. * GCC_NO_ERROR - No error.
  1695. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1696. *
  1697. * Side Effects
  1698. * None.
  1699. *
  1700. * Caveats
  1701. * If this node is the Top Provider the conference will be terminated
  1702. * on all nodes.
  1703. */
  1704. /*
  1705. * GCCError ConfTerminateRequest(
  1706. * GCCReason reason)
  1707. *
  1708. * Public member function of CConf
  1709. *
  1710. * Function Description
  1711. * This Command Target function is called when the Node Controller
  1712. * wishes to terminate the conference. This will eventually cause
  1713. * the object to be deleted if successful.
  1714. *
  1715. * Formal Parameters:
  1716. * None.
  1717. *
  1718. * Return Value
  1719. * GCC_NO_ERROR - No error.
  1720. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1721. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1722. * its establishment process.
  1723. *
  1724. * Side Effects
  1725. * None.
  1726. *
  1727. * Caveats
  1728. * None.
  1729. */
  1730. /*
  1731. * GCCError AppEnrollRequest(
  1732. * CAppSap * pAppSap,
  1733. * PGCCSessionKey session_key,
  1734. * PGCCApplicationRecord application_record,
  1735. * BOOL application_enrolled,
  1736. * UINT number_of_capabilities,
  1737. * PGCCApplicationCapability FAR *
  1738. * capabilities_list)
  1739. *
  1740. * Public Function Description
  1741. * This function is called when a User Application wishes to enroll with
  1742. * the conference (or wishes to UnEnroll with it). This call will
  1743. * initiate a roster update if the conference is established.
  1744. *
  1745. * Formal Parameters:
  1746. * application_sap_handle
  1747. * (i) SAP handle of the enrolling Application. Used
  1748. * for the entity ID.
  1749. * session_key (i) Session key of the enrolling application
  1750. * application_record (i) Structure that defines the Application
  1751. * attributes.
  1752. * application_enrolled
  1753. * (i) Is the application enrolling or unenrolling?
  1754. * number_of_capabilities
  1755. * (i) Number of Application capabilities in list.
  1756. * capabilities_list (i) Actual list of capabilities.
  1757. *
  1758. * Return Value
  1759. * GCC_NO_ERROR: - No error
  1760. * GCC_ALLOCATION_FAILURE - Resource error occured
  1761. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1762. * its establishment process.
  1763. *
  1764. * Side Effects
  1765. * None.
  1766. *
  1767. * Caveats
  1768. * None.
  1769. */
  1770. /*
  1771. * GCCError RegistryRegisterChannelRequest(
  1772. * PGCCRegistryKey registry_key,
  1773. * ChannelID channel_id,
  1774. * CAppSap *app_sap)
  1775. *
  1776. * Public member function of CConf
  1777. *
  1778. * Function Description
  1779. * This Command Target function is called by an application wishing to
  1780. * register a channel with the conference. Here the application must
  1781. * supply the channel.
  1782. *
  1783. * Formal Parameters:
  1784. * registry_key - (i) Pointer to structure that holds registry key.
  1785. * channel_id - (i) Channel ID to be registered.
  1786. * app_sap - (i) The Command Target that is making the request.
  1787. *
  1788. * Return Value
  1789. * GCC_NO_ERROR - No error.
  1790. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1791. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  1792. * GCC_APP_NOT_ENROLLED - Requesting application is not
  1793. * enrolled with the conference.
  1794. *
  1795. * Side Effects
  1796. * None.
  1797. *
  1798. * Caveats
  1799. * None.
  1800. */
  1801. /*
  1802. * GCCError RegistryAssignTokenRequest(
  1803. * PGCCRegistryKey registry_key,
  1804. * CAppSap *app_sap);
  1805. *
  1806. * Public member function of CConf
  1807. *
  1808. * Function Description
  1809. * This Command Target function is called by an application wishing to
  1810. * register a token with the conference. Here the token is supplied by
  1811. * the conference.
  1812. *
  1813. * Formal Parameters:
  1814. * registry_key - (i) Pointer to structure that holds registry key.
  1815. * app_sap - (i) The Command Target that is making the request.
  1816. *
  1817. * Return Value
  1818. * GCC_NO_ERROR - No error.
  1819. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1820. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  1821. * GCC_APP_NOT_ENROLLED - Requesting application is not
  1822. * enrolled with the conference.
  1823. *
  1824. * Side Effects
  1825. * None.
  1826. *
  1827. * Caveats
  1828. * None.
  1829. */
  1830. /*
  1831. * GCCError RegistrySetParameterRequest (
  1832. * PGCCRegistryKey registry_key,
  1833. * LPOSTR parameter_value,
  1834. * GCCModificationRights modification_rights,
  1835. * CAppSap *app_sap);
  1836. *
  1837. * Public member function of CConf
  1838. *
  1839. * Function Description
  1840. * This Command Target function is called by an application wishing to
  1841. * register a parameter with the conference. Here the token is supplied by
  1842. * the conference.
  1843. *
  1844. * Formal Parameters:
  1845. * registry_key - (i) Pointer to structure that holds registry key.
  1846. * parameter_value - (i) Parameter to be registered
  1847. * modification_rights-(i) Modification rights on the parameter.
  1848. * app_sap - (i) The Command Target that is making the request.
  1849. *
  1850. * Return Value
  1851. * GCC_NO_ERROR - No error.
  1852. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1853. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  1854. * GCC_APP_NOT_ENROLLED - Requesting application is not
  1855. * enrolled with the conference.
  1856. *
  1857. * Side Effects
  1858. * None.
  1859. *
  1860. * Caveats
  1861. * None.
  1862. */
  1863. /*
  1864. * GCCError RegistryRetrieveEntryRequest(
  1865. * PGCCRegistryKey registry_key,
  1866. * CAppSap *app_sap)
  1867. *
  1868. * Public member function of CConf
  1869. *
  1870. * Function Description
  1871. * This Command Target function is called by an application wishing to
  1872. * retrieve a registry entry.
  1873. *
  1874. * Formal Parameters:
  1875. * registry_key - (i) Pointer to structure that holds registry key.
  1876. * app_sap - (i) The Command Target that is making the request.
  1877. *
  1878. * Return Value
  1879. * GCC_NO_ERROR - No error.
  1880. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1881. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  1882. * GCC_APP_NOT_ENROLLED - Requesting application is not
  1883. * enrolled with the conference.
  1884. *
  1885. * Side Effects
  1886. * None.
  1887. *
  1888. * Caveats
  1889. * None.
  1890. */
  1891. /*
  1892. * GCCError RegistryDeleteEntryRequest(
  1893. * PGCCRegistryKey registry_key,
  1894. * CAppSap *app_sap);
  1895. *
  1896. * Public member function of CConf
  1897. *
  1898. * Function Description
  1899. * This Command Target function is called by an application wishing to
  1900. * delete a registry entry.
  1901. *
  1902. * Formal Parameters:
  1903. * registry_key - (i) Pointer to structure that holds registry key.
  1904. * app_sap - (i) The Command Target that is making the request.
  1905. *
  1906. * Return Value
  1907. * GCC_NO_ERROR - No error.
  1908. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1909. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  1910. * GCC_APP_NOT_ENROLLED - Requesting application is not
  1911. * enrolled with the conference.
  1912. *
  1913. * Side Effects
  1914. * None.
  1915. *
  1916. * Caveats
  1917. * None.
  1918. */
  1919. /*
  1920. * GCCError RegistryMonitorRequest(
  1921. * BOOL enable_delivery,
  1922. * PGCCRegistryKey registry_key,
  1923. * CAppSap *app_sap)
  1924. *
  1925. * Public member function of CConf
  1926. *
  1927. * Function Description
  1928. * This Command Target function is called by an application wishing to
  1929. * delete a registry entry.
  1930. *
  1931. * Formal Parameters:
  1932. * enable_delivery - (i) Toggle used to turn on and off monitoring of
  1933. * an entry.
  1934. * registry_key - (i) Pointer to structure that holds registry key.
  1935. * app_sap - (i) The Command Target that is making the request.
  1936. *
  1937. * Return Value
  1938. * GCC_NO_ERROR - No error.
  1939. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1940. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  1941. * GCC_APP_NOT_ENROLLED - Requesting application is not
  1942. * enrolled with the conference.
  1943. *
  1944. * Side Effects
  1945. * None.
  1946. *
  1947. * Caveats
  1948. * None.
  1949. */
  1950. /*
  1951. * GCCError RegistryAllocateHandleRequest(
  1952. * UINT number_of_handles,
  1953. * CAppSap *app_sap)
  1954. *
  1955. * Public member function of CConf
  1956. *
  1957. * Function Description
  1958. * This Command Target function is called by an application that needs
  1959. * to allocate a certain number of parameters.
  1960. *
  1961. * Formal Parameters:
  1962. * number_of_handles - (i) Number of handles to allocate.
  1963. * app_sap - (i) The Command Target that is making the request.
  1964. *
  1965. * Return Value
  1966. * GCC_NO_ERROR - No error.
  1967. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1968. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  1969. * GCC_APP_NOT_ENROLLED - Requesting application is not
  1970. * enrolled with the conference.
  1971. *
  1972. * Side Effects
  1973. * None.
  1974. *
  1975. * Caveats
  1976. * None.
  1977. */
  1978. /*
  1979. * GCCError ConductorAssignRequest();
  1980. *
  1981. * Public member function of CConf
  1982. *
  1983. * Function Description
  1984. * This Command Target function is called when a node wants to become
  1985. * the conductor.
  1986. *
  1987. * Formal Parameters:
  1988. * None.
  1989. *
  1990. * Return Value
  1991. * GCC_NO_ERROR - No error.
  1992. * GCC_ALLOCATION_FAILURE - A resource error occured.
  1993. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  1994. * its establishment process.
  1995. *
  1996. * Side Effects
  1997. * None.
  1998. *
  1999. * Caveats
  2000. * None.
  2001. */
  2002. /*
  2003. * GCCError ConductorReleaseRequest()
  2004. *
  2005. * Public member function of CConf
  2006. *
  2007. * Function Description
  2008. * This Command Target function is called when a node wants to give up
  2009. * conductorship.
  2010. *
  2011. * Formal Parameters:
  2012. * None.
  2013. *
  2014. * Return Value
  2015. * GCC_NO_ERROR - No error.
  2016. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2017. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  2018. * its establishment process.
  2019. *
  2020. * Side Effects
  2021. * None.
  2022. *
  2023. * Caveats
  2024. * None.
  2025. */
  2026. /*
  2027. * GCCError ConductorPleaseRequest()
  2028. *
  2029. * Public member function of CConf
  2030. *
  2031. * Function Description
  2032. * This Command Target function is called when a node wants to request
  2033. * the conductorship token from another node.
  2034. *
  2035. * Formal Parameters:
  2036. * None.
  2037. *
  2038. * Return Value
  2039. * GCC_NO_ERROR - No error.
  2040. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2041. *
  2042. * Side Effects
  2043. * None.
  2044. *
  2045. * Caveats
  2046. * None.
  2047. */
  2048. /*
  2049. * GCCError ConductorGiveRequest(
  2050. * UserID recipient_node_id)
  2051. *
  2052. * Public member function of CConf
  2053. *
  2054. * Function Description
  2055. * This Command Target function is called when a node wants to give
  2056. * the conductorship token to another node. Usually called in response
  2057. * to a please request.
  2058. *
  2059. * Formal Parameters:
  2060. * recipient_node_id - (i) User ID of node to give conductorship to.
  2061. *
  2062. * Return Value
  2063. * GCC_NO_ERROR - No error.
  2064. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2065. *
  2066. * Side Effects
  2067. * None.
  2068. *
  2069. * Caveats
  2070. * None.
  2071. */
  2072. /*
  2073. * GCCError ConductorGiveResponse(
  2074. * GCCResult result)
  2075. *
  2076. * Public member function of CConf
  2077. *
  2078. * Function Description
  2079. * This Command Target function is called after a node has received a
  2080. * give indication. This response informs the conference of whether or
  2081. * not this node is accepting the conductorship token.
  2082. *
  2083. * Formal Parameters:
  2084. * result - (i) If the node is accepting conductorship the result
  2085. * will be set to GCC_RESULT_SUCCESSFUL.
  2086. *
  2087. * Return Value
  2088. * GCC_NO_ERROR - No error.
  2089. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2090. * GCC_NO_GIVE_RESPONSE_PENDING - A give indication was never issued.
  2091. *
  2092. * Side Effects
  2093. * None.
  2094. *
  2095. * Caveats
  2096. * None.
  2097. */
  2098. /*
  2099. * GCCError ConductorPermitAskRequest(
  2100. * BOOL grant_permission)
  2101. *
  2102. * Public member function of CConf
  2103. *
  2104. * Function Description
  2105. * This Command Target function is called when a node wants permission
  2106. * from the conductor. The definition of permission may vary from
  2107. * application to application.
  2108. *
  2109. * Formal Parameters:
  2110. * grant_permission - (i) Flag stating whether permission is being
  2111. * requested or given up.
  2112. *
  2113. * Return Value
  2114. * GCC_NO_ERROR - No error.
  2115. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2116. *
  2117. * Side Effects
  2118. * None.
  2119. *
  2120. * Caveats
  2121. * None.
  2122. */
  2123. /*
  2124. * GCCError ConductorPermitGrantRequest(
  2125. * UINT number_granted,
  2126. * PUserID granted_node_list,
  2127. * UINT number_waiting,
  2128. * PUserID waiting_node_list);
  2129. *
  2130. * Public member function of CConf
  2131. *
  2132. * Function Description
  2133. * This Command Target function is called by the conductor when
  2134. * permission is being granted to a node or list of nodes.
  2135. *
  2136. * Formal Parameters:
  2137. * number_granted - (i) The number of nodes granted permission.
  2138. * granted_node_list - (i) List of nodes granted permission.
  2139. * number_waiting - (i) The number of nodes waiting for permission.
  2140. * waiting_node_list - (i) List of nodes waiting for permission.
  2141. *
  2142. * Return Value
  2143. * GCC_NO_ERROR - No error.
  2144. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2145. *
  2146. * Side Effects
  2147. * None.
  2148. *
  2149. * Caveats
  2150. * None.
  2151. */
  2152. /*
  2153. * GCCError ConductorInquireRequest(CBaseSap *pSap);
  2154. *
  2155. * Public member function of CConf
  2156. *
  2157. * Function Description
  2158. * This Command Target function is called when conductorship information
  2159. * is required by a SAP.
  2160. *
  2161. * Formal Parameters:
  2162. * pSap - (i) SAP making the request.
  2163. *
  2164. * Return Value
  2165. * GCC_NO_ERROR - No error.
  2166. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2167. *
  2168. * Side Effects
  2169. * None.
  2170. *
  2171. * Caveats
  2172. * None.
  2173. */
  2174. /*
  2175. * GCCError ConferenceTimeRemainingRequest (
  2176. * UINT time_remaining,
  2177. * UserID node_id)
  2178. *
  2179. * Public member function of CConf
  2180. *
  2181. * Function Description
  2182. * This Command Target function is called to inform all the nodes in
  2183. * the conference how much time is left in the conference.
  2184. *
  2185. * Formal Parameters:
  2186. * time_remaining - (i) Time in miliseconds left in the conference.
  2187. * node_id - (i) node_id of node to deliver time remaining
  2188. * indication. NULL if it should go to all nodes.
  2189. *
  2190. * Return Value
  2191. * GCC_NO_ERROR - No error.
  2192. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2193. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  2194. * its establishment process.
  2195. *
  2196. * Side Effects
  2197. * None.
  2198. *
  2199. * Caveats
  2200. * None.
  2201. */
  2202. /*
  2203. * GCCError ConfTimeInquireRequest (
  2204. * BOOL time_is_conference_wide)
  2205. *
  2206. * Public member function of CConf
  2207. *
  2208. * Function Description
  2209. * This Command Target function is called by a node that wants to
  2210. * know how much time is remaining in a timed conference.
  2211. *
  2212. * Formal Parameters:
  2213. * time_is_conference_wide - (i) TRUE if time is for entire conference.
  2214. *
  2215. * Return Value
  2216. * GCC_NO_ERROR - No error.
  2217. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2218. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  2219. * its establishment process.
  2220. *
  2221. * Side Effects
  2222. * None.
  2223. *
  2224. * Caveats
  2225. * None.
  2226. */
  2227. /*
  2228. * GCCError ConfExtendRequest (
  2229. * UINT extension_time,
  2230. * BOOL time_is_conference_wide)
  2231. *
  2232. * Public member function of CConf
  2233. *
  2234. * Function Description
  2235. * This Command Target function is called when the time left in the
  2236. * conference is to be extended.
  2237. *
  2238. * Formal Parameters:
  2239. * extension_time - (i) Extension time.
  2240. * time_is_conference_wide - (i) TRUE if time is for entire conference.
  2241. *
  2242. * Return Value
  2243. * GCC_NO_ERROR - No error.
  2244. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2245. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  2246. * its establishment process.
  2247. *
  2248. * Side Effects
  2249. * None.
  2250. *
  2251. * Caveats
  2252. * None.
  2253. */
  2254. /*
  2255. * GCCError ConfAssistanceRequest(
  2256. * UINT number_of_user_data_members,
  2257. * PGCCUserData * user_data_list)
  2258. *
  2259. * Public member function of CConf
  2260. *
  2261. * Function Description
  2262. * This Command Target function is called when a node wishes to request
  2263. * assistance.
  2264. *
  2265. * Formal Parameters:
  2266. * number_of_user_data_members - (i) number of user data members in list.
  2267. * user_data_list - (i) list of user data members.
  2268. *
  2269. * Return Value
  2270. * GCC_NO_ERROR - No error.
  2271. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2272. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  2273. * its establishment process.
  2274. *
  2275. * Side Effects
  2276. * None.
  2277. *
  2278. * Caveats
  2279. * None.
  2280. */
  2281. /*
  2282. * GCCError AppInvokeRequest(
  2283. * CInvokeSpecifierListContainer *invoke_list,
  2284. * UINT number_of_destination_nodes,
  2285. * UserID *list_of_destination_nodes,
  2286. * CBaseSap *pSap)
  2287. *
  2288. * Public member function of CConf
  2289. *
  2290. * Function Description
  2291. * This Command Target function is called when a node wishes to invoke
  2292. * a list of applications on remote node or nodes.
  2293. *
  2294. * Formal Parameters:
  2295. * invoke_list - (i) list of applications to invoke.
  2296. * number_of_destination_nodes - (i) number of nodes in destination list
  2297. * list_of_destination_nodes - (i) list of destination user IDs
  2298. * command_target - (i) Command Target that made the request
  2299. *
  2300. * Return Value
  2301. * GCC_NO_ERROR - No error.
  2302. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2303. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  2304. * its establishment process.
  2305. *
  2306. * Side Effects
  2307. * None.
  2308. *
  2309. * Caveats
  2310. * None.
  2311. */
  2312. /*
  2313. * GCCError TextMessageRequest (
  2314. * LPWSTR pwszTextMsg,
  2315. * UserID destination_node )
  2316. *
  2317. * Public member function of CConf
  2318. *
  2319. * Function Description
  2320. * This Command Target function is called when a node wishes to deliver
  2321. * a text message to a remote node.
  2322. *
  2323. * Formal Parameters:
  2324. * pwszTextMsg - (i) the actual text message in unicode.
  2325. * destination_node - (i) Node ID of node receiving message
  2326. *
  2327. * Return Value
  2328. * GCC_NO_ERROR - No error.
  2329. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2330. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  2331. * its establishment process.
  2332. *
  2333. * Side Effects
  2334. * None.
  2335. *
  2336. * Caveats
  2337. * None.
  2338. */
  2339. /*
  2340. * GCCError ConfTransferRequest (
  2341. * PGCCConferenceName destination_conference_name,
  2342. * GCCNumericString destination_conference_modifier,
  2343. * CNetAddrListContainer *network_address_list,
  2344. * UINT number_of_destination_nodes,
  2345. * PUserID destination_node_list,
  2346. * CPassword *password)
  2347. *
  2348. * Public member function of CConf
  2349. *
  2350. * Function Description
  2351. * This Command Target function is called when a node wishes transfer a
  2352. * list of nodes to another conference.
  2353. *
  2354. * Formal Parameters:
  2355. * destination_conference_name - (i) Name of conference to transfer to.
  2356. * destination_conference_modifier-(i) Name of modifier to transfer to.
  2357. * network_address_list - (i) Address list of new conference.
  2358. * number_of_destination_nodes - (i) Number of nodes to transfer
  2359. * destination_node_list - (i) List of nodes to transfer.
  2360. * password - (i) Password needed to join new conf.
  2361. *
  2362. * Return Value
  2363. * GCC_NO_ERROR - No error.
  2364. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2365. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  2366. * its establishment process.
  2367. *
  2368. * Side Effects
  2369. * None.
  2370. *
  2371. * Caveats
  2372. * None.
  2373. */
  2374. /*
  2375. * GCCError ConfAddRequest (
  2376. * CNetAddrListContainer *network_address_container,
  2377. * UserID adding_node,
  2378. * CUserDataListContainer *user_data_container)
  2379. *
  2380. * Public member function of CConf
  2381. *
  2382. * Function Description
  2383. * This Command Target function is called when a node wishes add a new
  2384. * node to the conference.
  2385. *
  2386. * Formal Parameters:
  2387. * network_address_container - (i) Address of node to add.
  2388. * adding_node - (i) Node to perform the invite. If
  2389. * zero then Top Provider does the
  2390. * invite.
  2391. * user_data_container - (i) Container holding user data to be
  2392. * passed in the add request.
  2393. *
  2394. * Return Value
  2395. * GCC_NO_ERROR - No error.
  2396. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2397. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  2398. * its establishment process.
  2399. *
  2400. * Side Effects
  2401. * None.
  2402. *
  2403. * Caveats
  2404. * None.
  2405. */
  2406. /*
  2407. * GCCError ConfAddResponse (
  2408. * GCCResponseTag add_response_tag,
  2409. * UserID requesting_node,
  2410. * CUserDataListContainer *user_data_container,
  2411. * GCCResult result)
  2412. *
  2413. * Public member function of CConf
  2414. *
  2415. * Function Description
  2416. * This Command Target function is called when a node wishes to respond
  2417. * to an add request. This response should be done after the invite
  2418. * sequence is complete (unless result is not successful).
  2419. *
  2420. * Formal Parameters:
  2421. * add_response_tag - (i) Tag used to match request with response.
  2422. * requesting_node - (i) Node that made the original add request.
  2423. * user_data_container - (i) Container holding user data to be
  2424. * passed in the add response.
  2425. * result - (i) The result of the Add request.
  2426. *
  2427. * Return Value
  2428. * GCC_NO_ERROR - No error.
  2429. * GCC_ALLOCATION_FAILURE - A resource error occured.
  2430. * GCC_CONFERENCE_NOT_ESTABLISHED - CConf object has not completed
  2431. * its establishment process.
  2432. * GCC_INVALID_ADD_RESPONSE_TAG - There was no match of the response tag
  2433. *
  2434. * Side Effects
  2435. * None.
  2436. *
  2437. * Caveats
  2438. * None.
  2439. */
  2440.