windows-nt/Source/XPSP1/NT/enduser/netmeeting/h/t120/it120nc.h
2020-09-26 16:20:57 +08:00

1412 lines
48 KiB
C

#ifndef _IGCCControlSAP_H_
#define _IGCCControlSAP_H_
#include <basetyps.h>
#include "gcc.h"
#include "igccapp.h"
/*
* These structures are used to hold the information included for the
* various callback messages. In the case where these structures are used for
* callbacks, the address of the structure is passed as the only parameter.
*/
typedef struct
{
PGCCConferenceName conference_name;
GCCNumericString conference_modifier;
BOOL use_password_in_the_clear;
BOOL conference_is_locked;
BOOL conference_is_listed;
BOOL conference_is_conductible;
GCCTerminationMethod termination_method;
PGCCConferencePrivileges conduct_privilege_list;
PGCCConferencePrivileges conduct_mode_privilege_list;
PGCCConferencePrivileges non_conduct_privilege_list;
LPWSTR pwszConfDescriptor;
LPWSTR pwszCallerID;
TransportAddress calling_address;
TransportAddress called_address;
PDomainParameters domain_parameters;
UINT number_of_network_addresses;
PGCCNetworkAddress *network_address_list;
PConnectionHandle connection_handle;
}
GCCConfCreateReqCore;
typedef struct
{
GCCConfCreateReqCore Core;
PGCCPassword convener_password;
PGCCPassword password;
BOOL fSecure;
UINT number_of_user_data_members;
PGCCUserData *user_data_list;
}
GCCConfCreateRequest;
/*********************************************************************
* *
* NODE CONTROLLER CALLBACK INFO STRUCTURES *
* *
*********************************************************************/
typedef struct
{
GCCConfID conference_id;
GCCResult result;
}
SimpleConfirmMsg;
/*
* GCC_CREATE_INDICATION
*
* Union Choice:
* CreateIndicationMessage
* This is a pointer to a structure that contains all necessary
* information about the new conference that is about to be created.
*/
typedef struct
{
GCCConferenceName conference_name;
GCCConferenceID conference_id;
GCCPassword *convener_password; /* optional */
GCCPassword *password; /* optional */
BOOL conference_is_locked;
BOOL conference_is_listed;
BOOL conference_is_conductible;
GCCTerminationMethod termination_method;
GCCConferencePrivileges *conductor_privilege_list; /* optional */
GCCConferencePrivileges *conducted_mode_privilege_list; /* optional */
GCCConferencePrivileges *non_conducted_privilege_list; /* optional */
LPWSTR conference_descriptor; /* optional */
LPWSTR caller_identifier; /* optional */
TransportAddress calling_address; /* optional */
TransportAddress called_address; /* optional */
DomainParameters *domain_parameters; /* optional */
UINT number_of_user_data_members;
GCCUserData **user_data_list; /* optional */
ConnectionHandle connection_handle;
}
CreateIndicationMessage, *PCreateIndicationMessage;
/*
* GCC_CREATE_CONFIRM
*
* Union Choice:
* CreateConfirmMessage
* This is a pointer to a structure that contains all necessary
* information about the result of a conference create request.
* The connection handle and physical handle will be zero on a
* local create.
*/
typedef struct
{
GCCConferenceName conference_name;
GCCNumericString conference_modifier; /* optional */
GCCConferenceID conference_id;
DomainParameters *domain_parameters; /* optional */
UINT number_of_user_data_members;
GCCUserData **user_data_list; /* optional */
GCCResult result;
ConnectionHandle connection_handle; /* optional */
}
CreateConfirmMessage, *PCreateConfirmMessage;
/*
* GCC_QUERY_INDICATION
*
* Union Choice:
* QueryIndicationMessage
* This is a pointer to a structure that contains all necessary
* information about the conference query.
*/
typedef struct
{
GCCResponseTag query_response_tag;
GCCNodeType node_type;
GCCAsymmetryIndicator *asymmetry_indicator;
TransportAddress calling_address; /* optional */
TransportAddress called_address; /* optional */
UINT number_of_user_data_members;
GCCUserData **user_data_list; /* optional */
ConnectionHandle connection_handle;
}
QueryIndicationMessage, *PQueryIndicationMessage;
/*
* GCC_QUERY_CONFIRM
*
* Union Choice:
* QueryConfirmMessage
* This is a pointer to a structure that contains all necessary
* information about the result of a conference query request.
*/
typedef struct
{
GCCNodeType node_type;
GCCAsymmetryIndicator *asymmetry_indicator; /* optional */
UINT number_of_descriptors;
GCCConferenceDescriptor **conference_descriptor_list; /* optional*/
UINT number_of_user_data_members;
GCCUserData **user_data_list; /* optional */
GCCResult result;
ConnectionHandle connection_handle;
}
QueryConfirmMessage, *PQueryConfirmMessage;
/*
* GCC_JOIN_INDICATION
*
* Union Choice:
* JoinIndicationMessage
* This is a pointer to a structure that contains all necessary
* information about the join request.
*/
typedef struct
{
GCCResponseTag join_response_tag;
GCCConferenceID conference_id;
GCCPassword *convener_password; /* optional */
GCCChallengeRequestResponse*password_challenge; /* optional */
LPWSTR caller_identifier; /* optional */
TransportAddress calling_address; /* optional */
TransportAddress called_address; /* optional */
UINT number_of_user_data_members;
GCCUserData **user_data_list; /* optional */
BOOL node_is_intermediate;
ConnectionHandle connection_handle;
}
JoinIndicationMessage, *PJoinIndicationMessage;
/*
* GCC_JOIN_CONFIRM
*
* Union Choice:
* JoinConfirmMessage
* This is a pointer to a structure that contains all necessary
* information about the join confirm.
*/
typedef struct
{
GCCConferenceName conference_name;
GCCNumericString called_node_modifier; /* optional */
GCCNumericString calling_node_modifier; /* optional */
GCCConferenceID conference_id;
GCCChallengeRequestResponse*password_challenge; /* optional */
DomainParameters *domain_parameters;
BOOL clear_password_required;
BOOL conference_is_locked;
BOOL conference_is_listed;
BOOL conference_is_conductible;
GCCTerminationMethod termination_method;
GCCConferencePrivileges *conductor_privilege_list; /* optional */
GCCConferencePrivileges *conducted_mode_privilege_list; /* optional */
GCCConferencePrivileges *non_conducted_privilege_list; /* optional */
LPWSTR conference_descriptor; /* optional */
UINT number_of_user_data_members;
GCCUserData **user_data_list; /* optional */
GCCResult result;
ConnectionHandle connection_handle;
PBYTE pb_remote_cred;
DWORD cb_remote_cred;
}
JoinConfirmMessage, *PJoinConfirmMessage;
/*
* GCC_INVITE_INDICATION
*
* Union Choice:
* InviteIndicationMessage
* This is a pointer to a structure that contains all necessary
* information about the invite indication.
*/
typedef struct
{
GCCConferenceID conference_id;
GCCConferenceName conference_name;
LPWSTR caller_identifier; /* optional */
TransportAddress calling_address; /* optional */
TransportAddress called_address; /* optional */
BOOL fSecure;
DomainParameters *domain_parameters; /* optional */
BOOL clear_password_required;
BOOL conference_is_locked;
BOOL conference_is_listed;
BOOL conference_is_conductible;
GCCTerminationMethod termination_method;
GCCConferencePrivileges *conductor_privilege_list; /* optional */
GCCConferencePrivileges *conducted_mode_privilege_list; /* optional */
GCCConferencePrivileges *non_conducted_privilege_list; /* optional */
LPWSTR conference_descriptor; /* optional */
UINT number_of_user_data_members;
GCCUserData **user_data_list; /* optional */
ConnectionHandle connection_handle;
}
InviteIndicationMessage, *PInviteIndicationMessage;
/*
* GCC_INVITE_CONFIRM
*
* Union Choice:
* InviteConfirmMessage
* This is a pointer to a structure that contains all necessary
* information about the invite confirm.
*/
typedef struct
{
GCCConferenceID conference_id;
UINT number_of_user_data_members;
GCCUserData **user_data_list; /* optional */
GCCResult result;
ConnectionHandle connection_handle;
}
InviteConfirmMessage, *PInviteConfirmMessage;
/*
* GCC_ADD_INDICATION
*
* Union Choice:
* AddIndicationMessage
*/
typedef struct
{
GCCResponseTag add_response_tag;
GCCConferenceID conference_id;
UINT number_of_network_addresses;
GCCNetworkAddress **network_address_list;
UserID requesting_node_id;
UINT number_of_user_data_members;
GCCUserData **user_data_list; /* optional */
}
AddIndicationMessage, *PAddIndicationMessage;
/*
* GCC_ADD_CONFIRM
*
* Union Choice:
* AddConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UINT number_of_network_addresses;
GCCNetworkAddress **network_address_list;
UINT number_of_user_data_members;
GCCUserData **user_data_list; /* optional */
GCCResult result;
}
AddConfirmMessage, *PAddConfirmMessage;
/*
* GCC_LOCK_INDICATION
*
* Union Choice:
* LockIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID requesting_node_id;
}
LockIndicationMessage, *PLockIndicationMessage;
/*
* GCC_UNLOCK_INDICATION
*
* Union Choice:
* UnlockIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID requesting_node_id;
}
UnlockIndicationMessage, *PUnlockIndicationMessage;
/*
* GCC_DISCONNECT_INDICATION
*
* Union Choice:
* DisconnectIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCReason reason;
UserID disconnected_node_id;
}
DisconnectIndicationMessage, *PDisconnectIndicationMessage;
/*
* GCC_DISCONNECT_CONFIRM
*
* Union Choice:
* PDisconnectConfirmMessage
*/
typedef SimpleConfirmMsg DisconnectConfirmMessage, *PDisconnectConfirmMessage;
/*
* GCC_TERMINATE_INDICATION
*
* Union Choice:
* TerminateIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID requesting_node_id;
GCCReason reason;
}
TerminateIndicationMessage, *PTerminateIndicationMessage;
/*
* GCC_TERMINATE_CONFIRM
*
* Union Choice:
* TerminateConfirmMessage
*/
typedef SimpleConfirmMsg TerminateConfirmMessage, *PTerminateConfirmMessage;
/*
* GCC_CONNECTION_BROKEN_INDICATION
*
* Union Choice:
* ConnectionBrokenIndicationMessage
*
* Caveat:
* This is a non-standard indication.
*/
typedef struct
{
ConnectionHandle connection_handle;
}
ConnectionBrokenIndicationMessage, *PConnectionBrokenIndicationMessage;
/*
* GCC_EJECT_USER_INDICATION
*
* Union Choice:
* EjectUserIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID ejected_node_id;
GCCReason reason;
}
EjectUserIndicationMessage, *PEjectUserIndicationMessage;
/*
* GCC_PERMIT_TO_ANNOUNCE_PRESENCE
*
* Union Choice:
* PermitToAnnouncePresenceMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID node_id;
}
PermitToAnnouncePresenceMessage, *PPermitToAnnouncePresenceMessage;
/*
* GCC_ANNOUNCE_PRESENCE_CONFIRM
*
* Union Choice:
* AnnouncePresenceConfirmMessage
*/
typedef SimpleConfirmMsg AnnouncePresenceConfirmMessage, *PAnnouncePresenceConfirmMessage;
/*
* GCC_ROSTER_REPORT_INDICATION
*
* Union Choice:
* ConfRosterReportIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCConferenceRoster *conference_roster;
}
ConfRosterReportIndicationMessage, *PConfRosterReportIndicationMessage;
/*
* GCC_CONDUCT_GIVE_INDICATION
*
* Union Choice:
* ConductorGiveIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
}
ConductGiveIndicationMessage, *PConductGiveIndicationMessage;
/*
* GCC_TIME_INQUIRE_INDICATION
*
* Union Choice:
* TimeInquireIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
BOOL time_is_conference_wide;
UserID requesting_node_id;
}
TimeInquireIndicationMessage, *PTimeInquireIndicationMessage;
/*
* GCC_STATUS_INDICATION
*
* Union Choice:
* GCCStatusMessage
* This callback is used to relay GCC status to the node controller
*/
typedef enum
{
GCC_STATUS_PACKET_RESOURCE_FAILURE = 0,
GCC_STATUS_PACKET_LENGTH_EXCEEDED = 1,
GCC_STATUS_CTL_SAP_RESOURCE_ERROR = 2,
GCC_STATUS_APP_SAP_RESOURCE_ERROR = 3, /* parameter = Sap Handle */
GCC_STATUS_CONF_RESOURCE_ERROR = 4, /* parameter = Conference ID */
GCC_STATUS_INCOMPATIBLE_PROTOCOL = 5, /* parameter = Physical Handle */
GCC_STATUS_JOIN_FAILED_BAD_CONF_NAME = 6, /* parameter = Physical Handle */
GCC_STATUS_JOIN_FAILED_BAD_CONVENER = 7, /* parameter = Physical Handle */
GCC_STATUS_JOIN_FAILED_LOCKED = 8 /* parameter = Physical Handle */
}
GCCStatusMessageType;
typedef struct
{
GCCStatusMessageType status_message_type;
UINT parameter;
}
GCCStatusIndicationMessage, *PGCCStatusIndicationMessage;
/*
* GCC_SUB_INITIALIZED_INDICATION
*
* Union Chice:
* SubInitializedIndicationMessage
*/
typedef struct
{
ConnectionHandle connection_handle;
UserID subordinate_node_id;
}
SubInitializedIndicationMessage, *PSubInitializedIndicationMessage;
#ifdef JASPER // ------------------------------------------------
/*
* GCC_LOCK_CONFIRM
*
* Union Choice:
* LockConfirmMessage
*/
typedef SimpleConfirmMsg LockConfirmMessage, *PLockConfirmMessage;
/*
* GCC_UNLOCK_CONFIRM
*
* Union Choice:
* UnlockConfirmMessage
*/
typedef SimpleConfirmMsg UnlockConfirmMessage, *PUnlockConfirmMessage;
/*
* GCC_LOCK_REPORT_INDICATION
*
* Union Choice:
* LockReportIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
BOOL conference_is_locked;
}
LockReportIndicationMessage, *PLockReportIndicationMessage;
/*
* GCC_EJECT_USER_CONFIRM
*
* Union Choice:
* EjectUserConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
UserID ejected_node_id;
}
EjectUserConfirmMessage, *PEjectUserConfirmMessage;
/*
* GCC_TRANSFER_INDICATION
*
* Union Choice:
* TransferIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCConferenceName destination_conference_name;
GCCNumericString destination_conference_modifier;/* optional */
UINT number_of_destination_addresses;
GCCNetworkAddress **destination_address_list;
GCCPassword *password; /* optional */
}
TransferIndicationMessage, *PTransferIndicationMessage;
/*
* GCC_TRANSFER_CONFIRM
*
* Union Choice:
* TransferConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCConferenceName destination_conference_name;
GCCNumericString destination_conference_modifier;/* optional */
UINT number_of_destination_nodes;
UserID *destination_node_list;
GCCResult result;
}
TransferConfirmMessage, *PTransferConfirmMessage;
/*
* GCC_CONDUCT_ASSIGN_CONFIRM
*
* Union Choice:
* ConductAssignConfirmMessage
*/
typedef SimpleConfirmMsg ConductAssignConfirmMessage, *PConductAssignConfirmMessage;
/*
* GCC_CONDUCT_RELEASE_CONFIRM
*
* Union Choice:
* ConductorReleaseConfirmMessage
*/
typedef SimpleConfirmMsg ConductReleaseConfirmMessage, *PConductReleaseConfirmMessage;
/*
* GCC_CONDUCT_PLEASE_INDICATION
*
* Union Choice:
* ConductorPleaseIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID requester_node_id;
}
ConductPleaseIndicationMessage, *PConductPleaseIndicationMessage;
/*
* GCC_CONDUCT_PLEASE_CONFIRM
*
* Union Choice:
* ConductPleaseConfirmMessage
*/
typedef SimpleConfirmMsg ConductPleaseConfirmMessage, *PConductPleaseConfirmMessage;
/*
* GCC_CONDUCT_GIVE_CONFIRM
*
* Union Choice:
* ConductorGiveConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
UserID recipient_node_id;
}
ConductGiveConfirmMessage, *PConductGiveConfirmMessage;
/*
* GCC_CONDUCT_ASK_INDICATION
*
* Union Choice:
* ConductPermitAskIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
BOOL permission_is_granted;
UserID requester_node_id;
}
ConductPermitAskIndicationMessage, *PConductPermitAskIndicationMessage;
/*
* GCC_CONDUCT_ASK_CONFIRM
*
* Union Choice:
* ConductPermitAskConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
BOOL permission_is_granted;
}
ConductPermitAskConfirmMessage, *PConductPermitAskConfirmMessage;
/*
* GCC_CONDUCT_GRANT_CONFIRM
*
* Union Choice:
* ConductPermissionGrantConfirmMessage
*/
typedef SimpleConfirmMsg ConductPermitGrantConfirmMessage, *PConductPermitGrantConfirmMessage;
/*
* GCC_TIME_REMAINING_INDICATION
*
* Union Choice:
* TimeRemainingIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UINT time_remaining;
UserID node_id;
UserID source_node_id;
}
TimeRemainingIndicationMessage, *PTimeRemainingIndicationMessage;
/*
* GCC_TIME_REMAINING_CONFIRM
*
* Union Choice:
* TimeRemainingConfirmMessage
*/
typedef SimpleConfirmMsg TimeRemainingConfirmMessage, *PTimeRemainingConfirmMessage;
/*
* GCC_TIME_INQUIRE_CONFIRM
*
* Union Choice:
* TimeInquireConfirmMessage
*/
typedef SimpleConfirmMsg TimeInquireConfirmMessage, *PTimeInquireConfirmMessage;
/*
* GCC_CONFERENCE_EXTEND_INDICATION
*
* Union Choice:
* ConferenceExtendIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UINT extension_time;
BOOL time_is_conference_wide;
UserID requesting_node_id;
}
ConferenceExtendIndicationMessage, *PConferenceExtendIndicationMessage;
/*
* GCC_CONFERENCE_EXTEND_CONFIRM
*
* Union Choice:
* ConferenceExtendConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UINT extension_time;
GCCResult result;
}
ConferenceExtendConfirmMessage, *PConferenceExtendConfirmMessage;
/*
* GCC_ASSISTANCE_INDICATION
*
* Union Choice:
* ConferenceAssistIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UINT number_of_user_data_members;
GCCUserData **user_data_list;
UserID source_node_id;
}
ConferenceAssistIndicationMessage, *PConferenceAssistIndicationMessage;
/*
* GCC_ASSISTANCE_CONFIRM
*
* Union Choice:
* ConferenceAssistConfirmMessage
*/
typedef SimpleConfirmMsg ConferenceAssistConfirmMessage, *PConferenceAssistConfirmMessage;
/*
* GCC_TEXT_MESSAGE_INDICATION
*
* Union Choice:
* TextMessageIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
LPWSTR text_message;
UserID source_node_id;
}
TextMessageIndicationMessage, *PTextMessageIndicationMessage;
/*
* GCC_TEXT_MESSAGE_CONFIRM
*
* Union Choice:
* TextMessageConfirmMessage
*/
typedef SimpleConfirmMsg TextMessageConfirmMessage, *PTextMessageConfirmMessage;
#endif // JASPER // ------------------------------------------------
/*********************************************************************
* *
* USER APPLICATION CALLBACK INFO STRUCTURES *
* *
*********************************************************************/
/*
* GCC_APP_ROSTER_REPORT_INDICATION
*
* Union Choice:
* AppRosterReportIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
ULONG number_of_rosters;
GCCApplicationRoster **application_roster_list;
}
AppRosterReportIndicationMessage, *PAppRosterReportIndicationMessage;
/*********************************************************************
* *
* SHARED CALLBACK INFO STRUCTURES *
* (Note that this doesn't include all the shared callbacks) *
* *
*********************************************************************/
/*
* GCC_ROSTER_INQUIRE_CONFIRM
*
* Union Choice:
* ConfRosterInquireConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCConferenceName conference_name;
GCCNumericString conference_modifier;
LPWSTR conference_descriptor;
GCCConferenceRoster *conference_roster;
GCCResult result;
}
ConfRosterInquireConfirmMessage, *PConfRosterInquireConfirmMessage;
/*
* GCC_APPLICATION_INVOKE_INDICATION
*
* Union Choice:
* ApplicationInvokeIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
ULONG number_of_app_protocol_entities;
GCCAppProtocolEntity **app_protocol_entity_list;
UserID invoking_node_id;
}
ApplicationInvokeIndicationMessage, *PApplicationInvokeIndicationMessage;
/*
* GCC_APPLICATION_INVOKE_CONFIRM
*
* Union Choice:
* ApplicationInvokeConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
ULONG number_of_app_protocol_entities;
GCCAppProtocolEntity **app_protocol_entity_list;
GCCResult result;
}
ApplicationInvokeConfirmMessage, *PApplicationInvokeConfirmMessage;
#ifdef JASPER // ------------------------------------------------
/*
* GCC_APP_ROSTER_INQUIRE_CONFIRM
*
* Union Choice:
* AppRosterInquireConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
ULONG number_of_rosters;
GCCApplicationRoster **application_roster_list;
GCCResult result;
}
AppRosterInquireConfirmMessage, *PAppRosterInquireConfirmMessage;
/*
* GCC_CONDUCT_INQUIRE_CONFIRM
*
* Union Choice:
* ConductorInquireConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
BOOL mode_is_conducted;
UserID conductor_node_id;
BOOL permission_is_granted;
GCCResult result;
}
ConductInquireConfirmMessage, *PConductInquireConfirmMessage;
/*
* GCC_CONDUCT_ASSIGN_INDICATION
*
* Union Choice:
* ConductAssignIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID node_id;
}
ConductAssignIndicationMessage, *PConductAssignIndicationMessage;
/*
* GCC_CONDUCT_RELEASE_INDICATION
*
* Union Choice:
* ConductReleaseIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
}
ConductReleaseIndicationMessage, *PConductReleaseIndicationMessage;
/*
* GCC_CONDUCT_GRANT_INDICATION
*
* Union Choice:
* ConductPermitGrantIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UINT number_granted;
UserID *granted_node_list;
UINT number_waiting;
UserID *waiting_node_list;
BOOL permission_is_granted;
}
ConductPermitGrantIndicationMessage, *PConductPermitGrantIndicationMessage;
#endif // JASPER // ------------------------------------------------
/*
* GCCMessage
* This structure defines the message that is passed from GCC to either
* the node controller or a user application when an indication or
* confirm occurs.
*/
typedef struct
{
GCCMessageType message_type;
LPVOID user_defined;
// GCCNC relies on easy access to conference ID.
GCCConfID nConfID;
union
{
CreateIndicationMessage create_indication;
CreateConfirmMessage create_confirm;
QueryIndicationMessage query_indication;
QueryConfirmMessage query_confirm;
JoinIndicationMessage join_indication;
JoinConfirmMessage join_confirm;
InviteIndicationMessage invite_indication;
InviteConfirmMessage invite_confirm;
AddIndicationMessage add_indication;
AddConfirmMessage add_confirm;
LockIndicationMessage lock_indication;
UnlockIndicationMessage unlock_indication;
DisconnectIndicationMessage disconnect_indication;
DisconnectConfirmMessage disconnect_confirm;
TerminateIndicationMessage terminate_indication;
TerminateConfirmMessage terminate_confirm;
ConnectionBrokenIndicationMessage connection_broken_indication;
EjectUserIndicationMessage eject_user_indication;
ApplicationInvokeIndicationMessage application_invoke_indication;
ApplicationInvokeConfirmMessage application_invoke_confirm;
SubInitializedIndicationMessage conf_sub_initialized_indication;
PermitToAnnouncePresenceMessage permit_to_announce_presence;
AnnouncePresenceConfirmMessage announce_presence_confirm;
ConfRosterReportIndicationMessage conf_roster_report_indication;
ConductGiveIndicationMessage conduct_give_indication;
TimeInquireIndicationMessage time_inquire_indication;
GCCStatusIndicationMessage status_indication;
AppRosterReportIndicationMessage app_roster_report_indication;
ConfRosterInquireConfirmMessage conf_roster_inquire_confirm;
#ifdef TSTATUS_INDICATION
TransportStatus transport_status;
#endif // TSTATUS_INDICATION
#ifdef JASPER // ------------------------------------------------
TextMessageIndicationMessage text_message_indication;
TimeRemainingIndicationMessage time_remaining_indication;
AppRosterInquireConfirmMessage app_roster_inquire_confirm;
ConferenceAssistConfirmMessage conference_assist_confirm;
ConferenceAssistIndicationMessage conference_assist_indication;
ConductPermitAskConfirmMessage conduct_permit_ask_confirm;
ConductPermitAskIndicationMessage conduct_permit_ask_indication;
ConductAssignConfirmMessage conduct_assign_confirm;
ConductAssignIndicationMessage conduct_assign_indication;
ConductGiveConfirmMessage conduct_give_confirm;
ConductPermitGrantConfirmMessage conduct_permit_grant_confirm;
ConductPermitGrantIndicationMessage conduct_permit_grant_indication;
ConductInquireConfirmMessage conduct_inquire_confirm;
ConductPleaseConfirmMessage conduct_please_confirm;
ConductPleaseIndicationMessage conduct_please_indication;
ConductReleaseConfirmMessage conduct_release_confirm;
ConductReleaseIndicationMessage conduct_release_indication;
ConferenceExtendConfirmMessage conference_extend_confirm;
ConferenceExtendIndicationMessage conference_extend_indication;
EjectUserConfirmMessage eject_user_confirm;
LockConfirmMessage lock_confirm;
LockReportIndicationMessage lock_report_indication;
TextMessageConfirmMessage text_message_confirm;
TimeInquireConfirmMessage time_inquire_confirm;
TimeRemainingConfirmMessage time_remaining_confirm;
TransferConfirmMessage transfer_confirm;
TransferIndicationMessage transfer_indication;
UnlockConfirmMessage unlock_confirm;
#endif // JASPER // ------------------------------------------------
// easy acess to conf id and gcc result
SimpleConfirmMsg simple_confirm;
} u;
}
GCCMessage, *PGCCMessage, T120Message, *PT120Message;
// node controller callback entry
typedef void (CALLBACK *LPFN_T120_CONTROL_SAP_CB) (T120Message *);
#undef INTERFACE
#define INTERFACE IT120ControlSAP
DECLARE_INTERFACE(IT120ControlSAP)
{
STDMETHOD_(void, ReleaseInterface) (THIS) PURE;
/*
* GCCError ConfCreateRequest()
* This routine is a request to create a new conference. Both
* the local node and the node to which the create conference
* request is directed to, join the conference automatically.
*/
STDMETHOD_(GCCError, ConfCreateRequest) (THIS_
GCCConfCreateRequest *,
GCCConfID *) PURE;
/*
* GCCError ConfCreateResponse()
* This procedure is a remote node controller's response to a con-
* ference creation request by the convener.
*/
STDMETHOD_(GCCError, ConfCreateResponse) (THIS_
GCCNumericString conference_modifier,
GCCConfID,
BOOL use_password_in_the_clear,
DomainParameters *domain_parameters,
UINT number_of_network_addresses,
GCCNetworkAddress **local_network_address_list,
UINT number_of_user_data_members,
GCCUserData **user_data_list,
GCCResult) PURE;
/*
* GCCError ConfQueryRequest()
* This routine is a request to query a node for information about the
* conferences that exist at that node.
*/
STDMETHOD_(GCCError, ConfQueryRequest) (THIS_
GCCNodeType node_type,
GCCAsymmetryIndicator *asymmetry_indicator,
TransportAddress calling_address,
TransportAddress called_address,
BOOL fSecure,
UINT number_of_user_data_members,
GCCUserData **user_data_list,
ConnectionHandle *connection_handle) PURE;
STDMETHOD_(void, CancelConfQueryRequest) (THIS_
ConnectionHandle) PURE;
/*
* GCCError ConfQueryResponse()
* This routine is called in response to a conference query request.
*/
STDMETHOD_(GCCError, ConfQueryResponse) (THIS_
GCCResponseTag query_response_tag,
GCCNodeType node_type,
GCCAsymmetryIndicator *asymmetry_indicator,
UINT number_of_user_data_members,
GCCUserData **user_data_list,
GCCResult) PURE;
/*
* GCCError AnnouncePresenceRequest()
* This routine is invoked by node controller when a node joins a
* conference, to announce the presence of the new node to all
* other nodes of the conference. This should be followed by a
* GCCConferenceReport indication by the GCC to all nodes.
*/
STDMETHOD_(GCCError, AnnouncePresenceRequest) (THIS_
GCCConfID,
GCCNodeType node_type,
GCCNodeProperties node_properties,
LPWSTR pwszNodeName,
UINT number_of_participants,
LPWSTR *ppwszParticipantNameList,
LPWSTR pwszSiteInfo,
UINT number_of_network_addresses,
GCCNetworkAddress **network_address_list,
LPOSTR alternative_node_id,
UINT number_of_user_data_members,
GCCUserData **user_data_list) PURE;
/*
* GCCError ConfJoinRequest()
* This routine is invoked by node controller to cause the local
* node to join an existing conference.
*/
STDMETHOD_(GCCError, ConfJoinRequest) (THIS_
GCCConferenceName *conference_name,
GCCNumericString called_node_modifier,
GCCNumericString calling_node_modifier,
GCCPassword *convener_password,
GCCChallengeRequestResponse*password_challenge,
LPWSTR pwszCallerID,
TransportAddress calling_address,
TransportAddress called_address,
BOOL fSecure,
DomainParameters *domain_parameters,
UINT number_of_network_addresses,
GCCNetworkAddress **local_network_address_list,
UINT number_of_user_data_members,
GCCUserData **user_data_list,
ConnectionHandle *connection_handle,
GCCConfID *pnConfID) PURE;
/*
* GCCError ConfJoinResponse()
* This routine is remote node controller's response to conference join
* request by the local node controller.
*/
STDMETHOD_(GCCError, ConfJoinResponse) (THIS_
GCCResponseTag join_response_tag,
GCCChallengeRequestResponse*password_challenge,
UINT number_of_user_data_members,
GCCUserData **user_data_list,
GCCResult) PURE;
/*
* GCCError ConfInviteRequest()
* This routine is invoked by node controller to invite a node
* to join a conference.
*/
STDMETHOD_(GCCError, ConfInviteRequest) (THIS_
GCCConfID,
LPWSTR pwszCallerID,
TransportAddress calling_address,
TransportAddress called_address,
BOOL fSecure,
UINT number_of_user_data_members,
GCCUserData **user_data_list,
ConnectionHandle *connection_handle) PURE;
STDMETHOD_(void, CancelInviteRequest) (THIS_
GCCConfID,
ConnectionHandle) PURE;
/*
* GCCError ConfInviteResponse()
* This routine is invoked by node controller to respond to an
* invite indication.
*/
STDMETHOD_(GCCError, ConfInviteResponse) (THIS_
GCCConfID,
GCCNumericString conference_modifier,
BOOL fSecure,
DomainParameters *domain_parameters,
UINT number_of_network_addresses,
GCCNetworkAddress **local_network_address_list,
UINT number_of_user_data_members,
GCCUserData **user_data_list,
GCCResult) PURE;
/*
* GCCError ConfAddResponse()
*/
STDMETHOD_(GCCError, ConfAddResponse) (THIS_
GCCResponseTag app_response_tag,
GCCConfID,
UserID requesting_node,
UINT number_of_user_data_members,
GCCUserData **user_data_list,
GCCResult) PURE;
/*
* GCCError ConfLockResponse()
* This routine is invoked by node controller to respond to a
* lock indication.
*/
STDMETHOD_(GCCError, ConfLockResponse) (THIS_
GCCConfID,
UserID requesting_node,
GCCResult) PURE;
/*
* GCCError ConfDisconnectRequest()
* This routine is used by a node controller to disconnect itself
* from a specified conference. GccConferenceDisconnectIndication
* sent to all other nodes of the conference. This is for client
* initiated case.
*/
STDMETHOD_(GCCError, ConfDisconnectRequest) (THIS_
GCCConfID) PURE;
/*
* GCCError ConfEjectUserRequest()
*/
STDMETHOD_(GCCError, ConfEjectUserRequest) (THIS_
GCCConfID,
UserID ejected_node_id,
GCCReason) PURE;
/*
* GCCError AppletInvokeRequest()
*/
STDMETHOD_(GCCError, AppletInvokeRequest) (THIS_
GCCConfID,
UINT number_of_app_protcol_entities,
GCCAppProtocolEntity **app_protocol_entity_list,
UINT number_of_destination_nodes,
UserID *list_of_destination_nodes) PURE;
/*
* GCCError ConfRosterInqRequest()
* This routine is invoked to request a conference roster. It can be
* called by either the Node Controller or the client application.
*/
STDMETHOD_(GCCError, ConfRosterInqRequest) (THIS_
GCCConfID) PURE;
/*
* GCCError ConductorGiveResponse()
*/
STDMETHOD_(GCCError, ConductorGiveResponse) (THIS_
GCCConfID,
GCCResult) PURE;
/*
* GCCError ConfTimeRemainingRequest()
*/
STDMETHOD_(GCCError, ConfTimeRemainingRequest) (THIS_
GCCConfID,
UINT time_remaining,
UserID node_id) PURE;
STDMETHOD_(GCCError, GetParentNodeID) (THIS_
GCCConfID,
GCCNodeID *) PURE;
#ifdef JASPER // ------------------------------------------------
/*
* GCCError ConfAddRequest()
*/
STDMETHOD_(GCCError, ConfAddRequest) (THIS_
GCCConfID,
UINT number_of_network_addresses,
GCCNetworkAddress **network_address_list,
UserID adding_node,
UINT number_of_user_data_members,
GCCUserData **user_data_list) PURE;
/*
* GCCError ConfLockRequest()
* This routine is invoked by node controller to lock a conference.
*/
STDMETHOD_(GCCError, ConfLockRequest) (THIS_
GCCConfID) PURE;
/*
* GCCError ConfUnlockRequest()
* This routine is invoked by node controller to unlock a conference.
*/
STDMETHOD_(GCCError, ConfUnlockRequest) (THIS_
GCCConfID) PURE;
/*
* GCCError ConfUnlockResponse()
* This routine is invoked by node controller to respond to an
* unlock indication.
*/
STDMETHOD_(GCCError, ConfUnlockResponse) (
GCCConfID,
UserID requesting_node,
GCCResult) PURE;
/*
* GCCError ConfTerminateRequest()
*/
STDMETHOD_(GCCError, ConfTerminateRequest) (THIS_
GCCConfID,
GCCReason) PURE;
/*
* GCCError ConfTransferRequest()
*/
STDMETHOD_(GCCError, ConfTransferRequest) (THIS_
GCCConfID,
GCCConferenceName *destination_conference_name,
GCCNumericString destination_conference_modifier,
UINT number_of_destination_addresses,
GCCNetworkAddress **destination_address_list,
UINT number_of_destination_nodes,
UserID *destination_node_list,
GCCPassword *password) PURE;
/*
* GCCError ConductorAssignRequest()
*/
STDMETHOD_(GCCError, ConductorAssignRequest) (THIS_
GCCConfID) PURE;
/*
* GCCError ConductorReleaseRequest()
*/
STDMETHOD_(GCCError, ConductorReleaseRequest) (THIS_
GCCConfID) PURE;
/*
* GCCError ConductorPleaseRequest()
*/
STDMETHOD_(GCCError, ConductorPleaseRequest) (THIS_
GCCConfID) PURE;
/*
* GCCError ConductorGiveRequest()
*/
STDMETHOD_(GCCError, ConductorGiveRequest) (THIS_
GCCConfID,
UserID recipient_user_id) PURE;
/*
* GCCError ConductorPermitAskRequest()
*/
STDMETHOD_(GCCError, ConductorPermitAskRequest) (THIS_
GCCConfID,
BOOL grant_permission) PURE;
/*
* GCCError ConductorPermitGrantRequest()
*/
STDMETHOD_(GCCError, ConductorPermitGrantRequest) (THIS_
GCCConfID,
UINT number_granted,
UserID *granted_node_list,
UINT number_waiting,
UserID *waiting_node_list) PURE;
/*
* GCCError ConductorInquireRequest()
*/
STDMETHOD_(GCCError, ConductorInquireRequest) (THIS_
GCCConfID) PURE;
/*
* GCCError ConfTimeInquireRequest()
*/
STDMETHOD_(GCCError, ConfTimeInquireRequest) (THIS_
GCCConfID,
BOOL time_is_conference_wide) PURE;
/*
* GCCError ConfExtendRequest()
*/
STDMETHOD_(GCCError, ConfExtendRequest) (THIS_
GCCConfID,
UINT extension_time,
BOOL time_is_conference_wide) PURE;
/*
* GCCError ConfAssistanceRequest()
*/
STDMETHOD_(GCCError, ConfAssistanceRequest) (THIS_
GCCConfID,
UINT number_of_user_data_members,
GCCUserData **user_data_list) PURE;
/*
* GCCError TextMessageRequest()
*/
STDMETHOD_(GCCError, TextMessageRequest) (THIS_
GCCConfID,
LPWSTR pwszTextMsg,
UserID destination_node) PURE;
#endif // JASPER // ------------------------------------------------
};
//
// GCC Application Service Access Point exports
//
#ifdef __cplusplus
extern "C" {
#endif
GCCError WINAPI T120_CreateControlSAP(
OUT IT120ControlSAP **,
IN LPVOID, // user defined data
IN LPFN_T120_CONTROL_SAP_CB);
#ifdef __cplusplus
}
#endif
#endif // _IGCCControlSAP_H_