Leaked source code of windows server 2003
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.
 
 
 
 
 
 

2859 lines
84 KiB

/*
* gcc.h
*
* Abstract:
* This is the interface file for the GCC DLL. This file defines all
* macros, types, and functions needed to use the GCC DLL, allowing GCC
* services to be accessed from user applications.
*
* An application requests services from GCC by making direct
* calls into the DLL (this includes T.124 requests and responses). GCC
* sends information back to the application through a callback (this
* includes T.124 indications and confirms). The callback for the node
* controller is specified in the call GCCInitialize, and the callback
* for a particular application service access point is specified in the
* call GCCRegisterSAP.
*
* During initialization, GCC allocates a timer in order to give itself
* a heartbeat. If zero is passed in here the owner application (the node
* controller) must take the responsibility to call GCCHeartbeat. Almost
* all work is done by GCC during these clocks ticks. It is during these
* clock ticks that GCC checks with MCS to see if there is any work to be
* done. It is also during these clock ticks that callbacks are made to
* the user applications. GCC will NEVER invoke a user callback during a
* user request (allowing the user applications to not worry about
* re-entrancy). Since timer events are processed during the message
* loop, the developer should be aware that long periods of time away
* from the message loop will result in GCC "freezing" up.
*
* Note that this is a "C" language interface in order to prevent any "C++"
* naming conflicts between different compiler manufacturers. Therefore,
* if this file is included in a module that is being compiled with a "C++"
* compiler, it is necessary to use the following syntax:
*
* extern "C"
* {
* #include "gcc.h"
* }
*
* This disables C++ name mangling on the API entry points defined within
* this file.
*
* Author:
* blp
*
* Caveats:
* none
*/
#ifndef _GCC_
#define _GCC_
/*
* This section defines the valid return values from GCC function calls. Do
* not confuse this return value with the Result and Reason values defined
* by T.124 (which are discussed later). These values are returned directly
* from the call to the API entry point, letting you know whether or not the
* request for service was successfully invoked. The Result and Reason
* codes are issued as part of an indication or confirm which occurs
* asynchronously to the call that causes it.
*
* All GCC function calls return type GCCError. Its valid values are as
* follows:
*
* GCC_NO_ERROR
* This means that the request was successfully invoked. It does NOT
* mean that the service has been successfully completed. Remember that
* all GCC calls are non-blocking. This means that each request call
* begins the process, and if necessary, a subsequent indication or
* confirm will result. By convention, if ANY GCC call returns a value
* other than this, something went wrong. Note that this value should
* also be returned to GCC during a callback if the application processes
* the callback successfully.
*
* GCC_NOT_INITIALIZED
* The application has attempted to use GCC services before GCC has been
* initialized. It is necessary for the node controller (or whatever
* application is serving as the node controller), to initialize GCC before
* it is called upon to perform any services.
*
* GCC_ALREADY_INITIALIZED
* The application has attempted to initialize GCC when it is already
* initialized.
*
* GCC_ALLOCATION_FAILURE
* This indicates a fatal resource error inside GCC. It usually results
* in the automatic termination of the affected conference.
*
* GCC_NO_SUCH_APPLICATION
* This indicates that the Application SAP handle passed in was invalid.
*
* GCC_INVALID_CONFERENCE
* This indicates that an illegal conference ID was passed in.
*
* GCC_CONFERENCE_ALREADY_EXISTS
* The Conference specified in the request or response is already in
* existence.
*
* GCC_NO_TRANSPORT_STACKS
* This indicates that MCS did not load any transport stacks during
* initialization. This is not necessarily an error. MCS can still
* be used in a local only manner. Transport stacks can also be loaded
* after initialization using the call MCSLoadTransport.
*
* GCC_INVALID_ADDRESS_PREFIX
* The called address parameter in a request such as
* GCCConferenceCreateRequest does not contain a recognized prefix. MCS
* relies on the prefix to know which transport stack to invoke.
*
* GCC_INVALID_TRANSPORT
* The dynamic load of a transport stack failed either because the DLL
* could not be found, or because it did not export at least one entry
* point that MCS requires.
*
* GCC_FAILURE_CREATING_PACKET
* This is a FATAL error which means that for some reason the
* communications packet generated due to a request could not be created.
* This typically flags a problem with the ASN.1 toolkit.
*
* GCC_QUERY_REQUEST_OUTSTANDING
* This error indicates that all the domains that set aside for querying
* are used up by other outstanding query request.
*
* GCC_INVALID_QUERY_TAG
* The query response tag specified in the query response is not valid.
*
* GCC_FAILURE_CREATING_DOMAIN
* Many requests such as GCCConferenceCreateRequest require that an MCS
* domain be created. If the request to MCS fails this will be returned.
*
* GCC_CONFERENCE_NOT_ESTABLISHED
* If a request is made to a conference before it is established, this
* error value will be returned.
*
* GCC_INVALID_PASSWORD
* The password passed in the request is not valid. This usually means
* that a numeric string needs to be specified.
*
* GCC_INVALID_MCS_USER_ID
* All MCS User IDs must have a value greater than 1000.
*
* GCC_INVALID_JOIN_RESPONSE_TAG
* The join response tag specified in the join response is not valid.
*
* GCC_TRANSPORT_ALREADY_LOADED
* This occurs if the transport specified in the GCCLoadTransport call has
* already been loaded.
*
* GCC_TRANSPORT_BUSY
* The transport is too busy to process the specified request.
*
* GCC_TRANSPORT_NOT_READY
* Request was made to a transport before it was ready to process it.
*
* GCC_DOMAIN_PARAMETERS_UNACCEPTABLE
* The specified domain parameters do not fit within the range allowable
* by GCC and MCS.
*
* GCC_APP_NOT_ENROLLED
* Occurs if a request is made by an Application Protocol Entity to a
* conference before the "APE" is enrolled.
*
* GCC_NO_GIVE_RESPONSE_PENDING
* This will occur if a conductor Give Request is issued before a
* previously pending conductor Give Response has been processed.
*
* GCC_BAD_NETWORK_ADDRESS_TYPE
* An illegal network address type was passed in. Valid types are
* GCC_AGGREGATED_CHANNEL_ADDRESS, GCC_TRANSPORT_CONNECTION_ADDRESS and
* GCC_NONSTANDARD_NETWORK_ADDRESS.
*
* GCC_BAD_OBJECT_KEY
* The object key passed in is invalid.
*
* GCC_INVALID_CONFERENCE_NAME
* The conference name passed in is not a valid conference name.
*
* GCC_INVALID_CONFERENCE_MODIFIER
* The conference modifier passed in is not a valid conference name.
*
* GCC_BAD_SESSION_KEY
* The session key passed in was not valid.
*
* GCC_BAD_CAPABILITY_ID
* The capability ID passed into the request is not valid.
*
* GCC_BAD_REGISTRY_KEY
* The registry key passed into the request is not valid.
*
* GCC_BAD_NUMBER_OF_APES
* Zero was passed in for the number of APEs in the invoke request. Zero
* is illegal here.
*
* GCC_BAD_NUMBER_OF_HANDLES
* A number < 1 or > 1024 was passed into the allocate handle request.
*
* GCC_ALREADY_REGISTERED
* The user application attempting to register itself has already
* registered.
*
* GCC_APPLICATION_NOT_REGISTERED
* The user application attempting to make a request to GCC has not
* registered itself with GCC.
*
* GCC_BAD_CONNECTION_HANDLE_POINTER
* A NULL connection handle pointer was passed in.
*
* GCC_INVALID_NODE_TYPE
* A node type value other than GCC_TERMINAL, GCC_MULTIPORT_TERMINAL or
* GCC_MCU was passed in.
*
* GCC_INVALID_ASYMMETRY_INDICATOR
* An asymetry type other than GCC_ASYMMETRY_CALLER, GCC_ASYMMETRY_CALLED
* or GCC_ASYMMETRY_UNKNOWN was passed into the request.
*
* GCC_INVALID_NODE_PROPERTIES
* A node property other than GCC_PERIPHERAL_DEVICE, GCC_MANAGEMENT_DEVICE,
* GCC_PERIPHERAL_AND_MANAGEMENT_DEVICE or
* GCC_NEITHER_PERIPHERAL_NOR_MANAGEMENT was passed into the request.
*
* GCC_BAD_USER_DATA
* The user data list passed into the request was not valid.
*
* GCC_BAD_NETWORK_ADDRESS
* There was something wrong with the actual network address portion of
* the passed in network address.
*
* GCC_INVALID_ADD_RESPONSE_TAG
* The add response tag passed in the response does not match any add
* response tag passed back in the add indication.
*
* GCC_BAD_ADDING_NODE
* You can not request that the adding node be the node where the add
* request is being issued.
*
* GCC_FAILURE_ATTACHING_TO_MCS
* Request failed because GCC could not create a user attachment to MCS.
*
* GCC_INVALID_TRANSPORT_ADDRESS
* The transport address specified in the request (usually the called
* address) is not valid. This will occur when the transport stack
* detects an illegal transport address.
*
* GCC_INVALID_PARAMETER
* This indicates an illegal parameter is passed into the GCC function
* call.
*
* GCC_COMMAND_NOT_SUPPORTED
* This indicates that the user application has attempted to invoke an
* GCC service that is not yet supported.
*
* GCC_UNSUPPORTED_ERROR
* An error was returned from a request to MCS that is not recognized
* by GCC.
*
* GCC_TRANSMIT_BUFFER_FULL
* Request can not be processed because the transmit buffer is full.
* This usually indicates a problem with the shared memory portal in the
* Win32 client.
*
* GCC_INVALID_CHANNEL
* The channel ID passed into the request is not a valid MCS channel ID
* (zero is not valid).
*
* GCC_INVALID_MODIFICATION_RIGHTS
* The modification rights passed in in not one of the enumerated types
* supported.
*
* GCC_INVALID_REGISTRY_ITEM
* The registry item passed in is not one of the valid enumerated types.
*
* GCC_INVALID_NODE_NAME
* The node name passed in is not valid. Typically this means that it
* is to long.
*
* GCC_INVALID_PARTICIPANT_NAME
* The participant name passed in is not valid. Typically this means that
* it is to long.
*
* GCC_INVALID_SITE_INFORMATION
* The site information passed in is not valid. Typically this means that
* it is to long.
*
* GCC_INVALID_NON_COLLAPSED_CAP
* The non-collapsed capability passed in is not valid. Typically this
* means that it is to long.
*
* GCC_INVALID_ALTERNATIVE_NODE_ID
* Alternative node IDs can only be two characters long.
*/
typedef enum
{
GCC_NO_ERROR = 0,
GCC_NOT_INITIALIZED = 1,
GCC_ALREADY_INITIALIZED = 2,
GCC_ALLOCATION_FAILURE = 3,
GCC_NO_SUCH_APPLICATION = 4,
GCC_INVALID_CONFERENCE = 5,
GCC_CONFERENCE_ALREADY_EXISTS = 6,
GCC_NO_TRANSPORT_STACKS = 7,
GCC_INVALID_ADDRESS_PREFIX = 8,
GCC_INVALID_TRANSPORT = 9,
GCC_FAILURE_CREATING_PACKET = 10,
GCC_QUERY_REQUEST_OUTSTANDING = 11,
GCC_INVALID_QUERY_TAG = 12,
GCC_FAILURE_CREATING_DOMAIN = 13,
GCC_CONFERENCE_NOT_ESTABLISHED = 14,
GCC_INVALID_PASSWORD = 15,
GCC_INVALID_MCS_USER_ID = 16,
GCC_INVALID_JOIN_RESPONSE_TAG = 17,
GCC_TRANSPORT_ALREADY_LOADED = 18,
GCC_TRANSPORT_BUSY = 19,
GCC_TRANSPORT_NOT_READY = 20,
GCC_DOMAIN_PARAMETERS_UNACCEPTABLE = 21,
GCC_APP_NOT_ENROLLED = 22,
GCC_NO_GIVE_RESPONSE_PENDING = 23,
GCC_BAD_NETWORK_ADDRESS_TYPE = 24,
GCC_BAD_OBJECT_KEY = 25,
GCC_INVALID_CONFERENCE_NAME = 26,
GCC_INVALID_CONFERENCE_MODIFIER = 27,
GCC_BAD_SESSION_KEY = 28,
GCC_BAD_CAPABILITY_ID = 29,
GCC_BAD_REGISTRY_KEY = 30,
GCC_BAD_NUMBER_OF_APES = 31,
GCC_BAD_NUMBER_OF_HANDLES = 32,
GCC_ALREADY_REGISTERED = 33,
GCC_APPLICATION_NOT_REGISTERED = 34,
GCC_BAD_CONNECTION_HANDLE_POINTER = 35,
GCC_INVALID_NODE_TYPE = 36,
GCC_INVALID_ASYMMETRY_INDICATOR = 37,
GCC_INVALID_NODE_PROPERTIES = 38,
GCC_BAD_USER_DATA = 39,
GCC_BAD_NETWORK_ADDRESS = 40,
GCC_INVALID_ADD_RESPONSE_TAG = 41,
GCC_BAD_ADDING_NODE = 42,
GCC_FAILURE_ATTACHING_TO_MCS = 43,
GCC_INVALID_TRANSPORT_ADDRESS = 44,
GCC_INVALID_PARAMETER = 45,
GCC_COMMAND_NOT_SUPPORTED = 46,
GCC_UNSUPPORTED_ERROR = 47,
GCC_TRANSMIT_BUFFER_FULL = 48,
GCC_INVALID_CHANNEL = 49,
GCC_INVALID_MODIFICATION_RIGHTS = 50,
GCC_INVALID_REGISTRY_ITEM = 51,
GCC_INVALID_NODE_NAME = 52,
GCC_INVALID_PARTICIPANT_NAME = 53,
GCC_INVALID_SITE_INFORMATION = 54,
GCC_INVALID_NON_COLLAPSED_CAP = 55,
GCC_INVALID_ALTERNATIVE_NODE_ID = 56,
LAST_GCC_ERROR = GCC_INVALID_ALTERNATIVE_NODE_ID
}GCCError;
typedef GCCError FAR * PGCCError;
/************************************************************************
* *
* Generally Used Typedefs *
* *
*************************************************************************/
/*
** GCCReason
** When GCC issues an indication to a user application, it often includes a
** reason parameter informing the user of why the activity is occurring.
*/
typedef enum
{
GCC_REASON_USER_INITIATED = 0,
GCC_REASON_UNKNOWN = 1,
GCC_REASON_NORMAL_TERMINATION = 2,
GCC_REASON_TIMED_TERMINATION = 3,
GCC_REASON_NO_MORE_PARTICIPANTS = 4,
GCC_REASON_ERROR_TERMINATION = 5,
GCC_REASON_ERROR_LOW_RESOURCES = 6,
GCC_REASON_MCS_RESOURCE_FAILURE = 7,
GCC_REASON_PARENT_DISCONNECTED = 8,
GCC_REASON_CONDUCTOR_RELEASE = 9,
GCC_REASON_SYSTEM_RELEASE = 10,
GCC_REASON_NODE_EJECTED = 11,
GCC_REASON_HIGHER_NODE_DISCONNECTED = 12,
GCC_REASON_HIGHER_NODE_EJECTED = 13,
GCC_REASON_DOMAIN_PARAMETERS_UNACCEPTABLE = 14,
LAST_GCC_REASON = GCC_REASON_DOMAIN_PARAMETERS_UNACCEPTABLE
}GCCReason;
/*
** GCCResult
** When a user makes a request of GCC, GCC often responds with a result,
** letting the user know whether or not the request succeeded.
*/
typedef enum
{
GCC_RESULT_SUCCESSFUL = 0,
GCC_RESULT_RESOURCES_UNAVAILABLE = 1,
GCC_RESULT_INVALID_CONFERENCE = 2,
GCC_RESULT_INVALID_PASSWORD = 3,
GCC_RESULT_INVALID_CONVENER_PASSWORD = 4,
GCC_RESULT_SYMMETRY_BROKEN = 5,
GCC_RESULT_UNSPECIFIED_FAILURE = 6,
GCC_RESULT_NOT_CONVENER_NODE = 7,
GCC_RESULT_REGISTRY_FULL = 8,
GCC_RESULT_INDEX_ALREADY_OWNED = 9,
GCC_RESULT_INCONSISTENT_TYPE = 10,
GCC_RESULT_NO_HANDLES_AVAILABLE = 11,
GCC_RESULT_CONNECT_PROVIDER_FAILED = 12,
GCC_RESULT_CONFERENCE_NOT_READY = 13,
GCC_RESULT_USER_REJECTED = 14,
GCC_RESULT_ENTRY_DOES_NOT_EXIST = 15,
GCC_RESULT_NOT_CONDUCTIBLE = 16,
GCC_RESULT_NOT_THE_CONDUCTOR = 17,
GCC_RESULT_NOT_IN_CONDUCTED_MODE = 18,
GCC_RESULT_IN_CONDUCTED_MODE = 19,
GCC_RESULT_ALREADY_CONDUCTOR = 20,
GCC_RESULT_CHALLENGE_RESPONSE_REQUIRED = 21,
GCC_RESULT_INVALID_CHALLENGE_RESPONSE = 22,
GCC_RESULT_INVALID_REQUESTER = 23,
GCC_RESULT_ENTRY_ALREADY_EXISTS = 24,
GCC_RESULT_INVALID_NODE = 25,
GCC_RESULT_INVALID_SESSION_KEY = 26,
GCC_RESULT_INVALID_CAPABILITY_ID = 27,
GCC_RESULT_INVALID_NUMBER_OF_HANDLES = 28,
GCC_RESULT_CONDUCTOR_GIVE_IS_PENDING = 29,
GCC_RESULT_INCOMPATIBLE_PROTOCOL = 30,
GCC_RESULT_CONFERENCE_ALREADY_LOCKED = 31,
GCC_RESULT_CONFERENCE_ALREADY_UNLOCKED = 32,
GCC_RESULT_INVALID_NETWORK_TYPE = 33,
GCC_RESULT_INVALID_NETWORK_ADDRESS = 34,
GCC_RESULT_ADDED_NODE_BUSY = 35,
GCC_RESULT_NETWORK_BUSY = 36,
GCC_RESULT_NO_PORTS_AVAILABLE = 37,
GCC_RESULT_CONNECTION_UNSUCCESSFUL = 38,
GCC_RESULT_LOCKED_NOT_SUPPORTED = 39,
GCC_RESULT_UNLOCK_NOT_SUPPORTED = 40,
GCC_RESULT_ADD_NOT_SUPPORTED = 41,
GCC_RESULT_DOMAIN_PARAMETERS_UNACCEPTABLE = 42,
LAST_CGG_RESULT = GCC_RESULT_DOMAIN_PARAMETERS_UNACCEPTABLE
}GCCResult;
/*
** Macros for values of Booleans passed through the GCC API.
*/
#define CONFERENCE_IS_LOCKED TRUE
#define CONFERENCE_IS_NOT_LOCKED FALSE
#define CONFERENCE_IS_LISTED TRUE
#define CONFERENCE_IS_NOT_LISTED FALSE
#define CONFERENCE_IS_CONDUCTIBLE TRUE
#define CONFERENCE_IS_NOT_CONDUCTIBLE FALSE
#define PERMISSION_IS_GRANTED TRUE
#define PERMISSION_IS_NOT_GRANTED FALSE
#define TIME_IS_CONFERENCE_WIDE TRUE
#define TIME_IS_NOT_CONFERENCE_WIDE FALSE
#define APPLICATION_IS_ENROLLED_ACTIVELY TRUE
#define APPLICATION_IS_NOT_ENROLLED_ACTIVELY FALSE
#define APPLICATION_IS_CONDUCTING TRUE
#define APPLICATION_IS_NOT_CONDUCTING_CAPABLE FALSE
#define APPLICATION_IS_ENROLLED TRUE
#define APPLICATION_IS_NOT_ENROLLED FALSE
#define DELIVERY_IS_ENABLED TRUE
#define DELIVERY_IS_NOT_ENABLED FALSE
/*
** Typedef for a GCC octet string. This typedef is used throughout GCC for
** storing variable length single byte character strings with embedded NULLs.
*/
typedef struct
{
unsigned short octet_string_length;
unsigned char FAR * octet_string;
} GCCOctetString;
/*
** Typedef for a GCC hex string. This typedef is used throughout GCC for
** storing variable length wide character strings with embedded NULLs.
*/
typedef struct
{
unsigned short hex_string_length;
unsigned short FAR * hex_string;
} GCCHexString;
/*
** Typedef for a GCC long string. This typedef is used in GCC for
** storing variable length strings of longs with embedded NULLs.
*/
typedef struct
{
unsigned short long_string_length;
unsigned long FAR * long_string;
} GCCLongString;
/*
** Typedef for a GCC Unicode string. This typedef is used throughout GCC for
** storing variable length, NULL terminated, wide character strings.
*/
typedef unsigned short GCCUnicodeCharacter;
typedef GCCUnicodeCharacter FAR * GCCUnicodeString;
/*
** Typedef for a GCC Character string. This typedef is used throughout GCC for
** storing variable length, NULL terminated, single byte character strings.
*/
typedef unsigned char GCCCharacter;
typedef GCCCharacter FAR * GCCCharacterString;
/*
** Typedef for a GCC Numeric string. This typedef is used throughout GCC for
** storing variable length, NULL terminated, single byte character strings.
** A single character in this string is constrained to numeric values
** ranging from "0" to "9".
*/
typedef unsigned char GCCNumericCharacter;
typedef GCCNumericCharacter FAR * GCCNumericString;
/*
** Typdef for GCC version which is used when registering the node controller
** or an application.
*/
typedef struct
{
unsigned short major_version;
unsigned short minor_version;
} GCCVersion;
/*
** The following enum structure typedefs are used to define the GCC Object Key.
** The GCC Object Key is used throughout GCC for things like the Application
** keys and Capability IDs.
*/
typedef enum
{
GCC_OBJECT_KEY = 1,
GCC_H221_NONSTANDARD_KEY = 2
} GCCObjectKeyType;
typedef struct
{
GCCObjectKeyType key_type;
union
{
GCCLongString object_id;
GCCOctetString h221_non_standard_id;
} u;
} GCCObjectKey;
/*
** GCCNonStandardParameter
** This structure is used within the NetworkAddress typedef and
** the NetworkService typedef defined below.
*/
typedef struct
{
GCCObjectKey object_key;
GCCOctetString parameter_data;
} GCCNonStandardParameter;
/*
** GCCConferenceName
** This structure defines the conference name. In a create request, the
** conference name can include an optional unicode string but it must
** always include the simple numeric string. In a join request, either
** one can be specified.
*/
typedef struct
{
GCCNumericString numeric_string;
GCCUnicodeString text_string; /* optional */
} GCCConferenceName;
/*
** GCCConferenceID
** Locally allocated identifier of a created conference. All subsequent
** references to the conference are made using the ConferenceID as a unique
** identifier. The ConferenceID shall be identical to the MCS domain
** selector used locally to identify the MCS domain associated with the
** conference.
*/
typedef unsigned long GCCConferenceID;
/*
** GCCResponseTag
** Generally used by GCC to match up certain responses to certain
** indications.
*/
typedef unsigned long GCCResponseTag;
/*
** MCSChannelType
** Should this be defined in MCATMCS? It is used in a couple of places
** below and is explicitly defined in the T.124 specification.
*/
typedef enum
{
MCS_STATIC_CHANNEL = 0,
MCS_DYNAMIC_MULTICAST_CHANNEL = 1,
MCS_DYNAMIC_PRIVATE_CHANNEL = 2,
MCS_DYNAMIC_USER_ID_CHANNEL = 3,
MCS_NO_CHANNEL_TYPE_SPECIFIED = 4
} MCSChannelType;
/*
** GCCUserData
** This structure defines a user data element which is used throughout GCC.
*/
typedef struct
{
GCCObjectKey key;
GCCOctetString FAR * octet_string; /* optional */
} GCCUserData;
/************************************************************************
* *
* Node Controller Related Typedefs *
* *
*************************************************************************/
/*
** GCCTerminationMethod
** The termination method is used by GCC to determine
** what action to take when all participants of a conference have
** disconnected. The conference can either be manually terminated
** by the node controller or it can terminate itself automatically when
** all the participants have left the conference.
*/
typedef enum
{
GCC_AUTOMATIC_TERMINATION_METHOD = 0,
GCC_MANUAL_TERMINATION_METHOD = 1
} GCCTerminationMethod;
/*
** GCCNodeType
** GCC specified node types. These node types dictate node controller
** behavior under certain conditions. See T.124 specification for
** proper assignment based on the needs of the Node Controller.
*/
typedef enum
{
GCC_TERMINAL = 0,
GCC_MULTIPORT_TERMINAL = 1,
GCC_MCU = 2
} GCCNodeType;
/*
** GCCNodeProperties
** GCC specified node properties. See T.124 specification for proper
** assignment by the Node Controller.
*/
typedef enum
{
GCC_PERIPHERAL_DEVICE = 0,
GCC_MANAGEMENT_DEVICE = 1,
GCC_PERIPHERAL_AND_MANAGEMENT_DEVICE = 2,
GCC_NEITHER_PERIPHERAL_NOR_MANAGEMENT = 3
} GCCNodeProperties;
/*
** GCCPassword
** This is the unique password specified by the convenor of the
** conference that is used by the node controller to insure conference
** security. This is also a unicode string.
*/
typedef struct
{
GCCNumericString numeric_string;
GCCUnicodeString text_string; /* optional */
} GCCPassword;
/*
** GCCChallengeResponseItem
** This structure defines what a challenge response should look like.
** Note that either a password string or response data should be passed
** but not both.
*/
typedef struct
{
GCCPassword FAR * password_string;
unsigned short number_of_response_data_members;
GCCUserData FAR * FAR * response_data_list;
} GCCChallengeResponseItem;
typedef enum
{
GCC_IN_THE_CLEAR_ALGORITHM = 0,
GCC_NON_STANDARD_ALGORITHM = 1
} GCCPasswordAlgorithmType;
typedef struct
{
GCCPasswordAlgorithmType password_algorithm_type;
GCCNonStandardParameter FAR * non_standard_algorithm; /* optional */
} GCCChallengeResponseAlgorithm;
typedef struct
{
GCCChallengeResponseAlgorithm response_algorithm;
unsigned short number_of_challenge_data_members;
GCCUserData FAR * FAR * challenge_data_list;
} GCCChallengeItem;
typedef struct
{
GCCResponseTag challenge_tag;
unsigned short number_of_challenge_items;
GCCChallengeItem FAR * FAR * challenge_item_list;
} GCCChallengeRequest;
typedef struct
{
GCCResponseTag challenge_tag;
GCCChallengeResponseAlgorithm response_algorithm;
GCCChallengeResponseItem response_item;
} GCCChallengeResponse;
typedef enum
{
GCC_PASSWORD_IN_THE_CLEAR = 0,
GCC_PASSWORD_CHALLENGE = 1
} GCCPasswordChallengeType;
typedef struct
{
GCCPasswordChallengeType password_challenge_type;
union
{
GCCPassword password_in_the_clear;
struct
{
GCCChallengeRequest FAR * challenge_request; /* optional */
GCCChallengeResponse FAR * challenge_response; /* optional */
} challenge_request_response;
} u;
} GCCChallengeRequestResponse;
/*
** GCCAsymmetryType
** Used in queries to determine if the calling and called node are known
** by both Node Controllers involved with the connection.
*/
typedef enum
{
GCC_ASYMMETRY_CALLER = 1,
GCC_ASYMMETRY_CALLED = 2,
GCC_ASYMMETRY_UNKNOWN = 3
} GCCAsymmetryType;
/*
** GCCAsymmetryIndicator
** Defines how the Node Controller sees itself when making a Query
** request or response. The random number portion of this structure is
** only used if the asymmetry_type is specified to be
** GCC_ASYMMETRY_UNKNOWN.
*/
typedef struct
{
GCCAsymmetryType asymmetry_type;
unsigned long random_number; /* optional */
} GCCAsymmetryIndicator;
/*
** GCCNetworkAddress
** The following block of structures defines the Network Address as defined
** by T.124. Most of these structures were taken almost verbatim from the
** ASN.1 interface file. Since I'm not really sure what most of this stuff
** is for I really didn't know how to simplify it.
*/
typedef struct
{
T120Boolean speech;
T120Boolean voice_band;
T120Boolean digital_56k;
T120Boolean digital_64k;
T120Boolean digital_128k;
T120Boolean digital_192k;
T120Boolean digital_256k;
T120Boolean digital_320k;
T120Boolean digital_384k;
T120Boolean digital_512k;
T120Boolean digital_768k;
T120Boolean digital_1152k;
T120Boolean digital_1472k;
T120Boolean digital_1536k;
T120Boolean digital_1920k;
T120Boolean packet_mode;
T120Boolean frame_mode;
T120Boolean atm;
} GCCTransferModes;
#define MAXIMUM_DIAL_STRING_LENGTH 17
typedef char GCCDialingString[MAXIMUM_DIAL_STRING_LENGTH];
typedef struct
{
unsigned short length;
unsigned short FAR * value;
} GCCExtraDialingString;
typedef struct
{
T120Boolean telephony3kHz;
T120Boolean telephony7kHz;
T120Boolean videotelephony;
T120Boolean videoconference;
T120Boolean audiographic;
T120Boolean audiovisual;
T120Boolean multimedia;
} GCCHighLayerCompatibility;
typedef struct
{
GCCTransferModes transfer_modes;
GCCDialingString international_number;
GCCCharacterString sub_address_string; /* optional */
GCCExtraDialingString FAR * extra_dialing_string; /* optional */
GCCHighLayerCompatibility FAR * high_layer_compatibility; /* optional */
} GCCAggregatedChannelAddress;
#define MAXIMUM_NSAP_ADDRESS_SIZE 20
typedef struct
{
struct
{
unsigned short length;
unsigned char value[MAXIMUM_NSAP_ADDRESS_SIZE];
} nsap_address;
GCCOctetString FAR * transport_selector; /* optional */
} GCCTransportConnectionAddress;
typedef enum
{
GCC_AGGREGATED_CHANNEL_ADDRESS = 1,
GCC_TRANSPORT_CONNECTION_ADDRESS = 2,
GCC_NONSTANDARD_NETWORK_ADDRESS = 3
} GCCNetworkAddressType;
typedef struct
{
GCCNetworkAddressType network_address_type;
union
{
GCCAggregatedChannelAddress aggregated_channel_address;
GCCTransportConnectionAddress transport_connection_address;
GCCNonStandardParameter non_standard_network_address;
} u;
} GCCNetworkAddress;
/*
** GCCNodeRecord
** This structure defines a single conference roster record. See the
** T.124 specification for parameter definitions.
*/
typedef struct
{
UserID node_id;
UserID superior_node_id;
GCCNodeType node_type;
GCCNodeProperties node_properties;
GCCUnicodeString node_name; /* optional */
unsigned short number_of_participants;
GCCUnicodeString FAR * participant_name_list; /* optional */
GCCUnicodeString site_information; /* optional */
unsigned short number_of_network_addresses;
GCCNetworkAddress FAR * FAR * network_address_list; /* optional */
GCCOctetString FAR * alternative_node_id; /* optional */
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list; /* optional */
} GCCNodeRecord;
/*
** GCCConferenceRoster
** This structure hold a complete conference roster. See the
** T.124 specification for parameter definitions.
*/
typedef struct
{
unsigned short instance_number;
T120Boolean nodes_were_added;
T120Boolean nodes_were_removed;
unsigned short number_of_records;
GCCNodeRecord FAR * FAR * node_record_list;
} GCCConferenceRoster;
/*
** GCCConferenceDescriptor
** Definition for the conference descriptor returned in a
** conference query confirm. This holds information about the
** conferences that exists at the queried node.
*/
typedef struct
{
GCCConferenceName conference_name;
GCCNumericString conference_name_modifier; /* optional */
GCCUnicodeString conference_descriptor; /* optional */
T120Boolean conference_is_locked;
T120Boolean password_in_the_clear_required;
unsigned short number_of_network_addresses;
GCCNetworkAddress FAR * FAR * network_address_list; /* optional */
} GCCConferenceDescriptor;
/*
** ConferencePrivileges
** This structure defines the list of privileges that can be assigned to
** a particular conference.
*/
typedef struct
{
T120Boolean terminate_is_allowed;
T120Boolean eject_user_is_allowed;
T120Boolean add_is_allowed;
T120Boolean lock_unlock_is_allowed;
T120Boolean transfer_is_allowed;
} GCCConferencePrivileges;
/************************************************************************
* *
* User Application Related Typedefs *
* *
*************************************************************************/
/*
** SapHandle
** When the node controller or a user application registers it's service
** access point with GCC, it is assigned a SapHandle that can be used to
** perform GCC services. GCC uses the SapHandles to keep track of
** applications enrolled with the conference and also uses these to keep
** track of the callbacks it makes to route the indications and confirms
** to the appropriate application or node controller.
*/
typedef unsigned short GCCSapHandle;
/*
** GCCSessionKey
** This is a unique identifier for an application that is
** using GCC. See the T.124 for the specifics on what an application
** key should look like. A session id of zero indicates that it is
** not being used.
*/
typedef struct
{
GCCObjectKey application_protocol_key;
unsigned short session_id;
} GCCSessionKey;
/*
** CapabilityType
** T.124 supports three different rules when collapsing the capabilities
** list. "Logical" keeps a count of the Application Protocol Entities
** (APEs) that have that capability, "Unsigned Minimum" collapses to the
** minimum value and "Unsigned Maximum" collapses to the maximum value.
*/
typedef enum
{
GCC_LOGICAL_CAPABILITY = 1,
GCC_UNSIGNED_MINIMUM_CAPABILITY = 2,
GCC_UNSIGNED_MAXIMUM_CAPABILITY = 3
} GCCCapabilityType;
typedef enum
{
GCC_STANDARD_CAPABILITY = 0,
GCC_NON_STANDARD_CAPABILITY = 1
} GCCCapabilityIDType;
/*
** CapabilityID
** T.124 supports both standard and non-standard capabilities. This
** structure is used to differentiate between the two.
*/
typedef struct
{
GCCCapabilityIDType capability_id_type;
union
{
unsigned short standard_capability;
GCCObjectKey non_standard_capability;
} u;
} GCCCapabilityID;
/*
** CapabilityClass
** This structure defines the class of capability and holds the associated
** value. Note that Logical is not necessary. Information associated with
** logical is stored in number_of_entities in the GCCApplicationCapability
** structure.
*/
typedef struct
{
GCCCapabilityType capability_type;
union
{
unsigned long unsigned_min;
unsigned long unsigned_max;
} u;
} GCCCapabilityClass;
/*
** GCCApplicationCapability
** This structure holds all the data associated with a single T.124
** defined application capability.
*/
typedef struct
{
GCCCapabilityID capability_id;
GCCCapabilityClass capability_class;
unsigned long number_of_entities;
} GCCApplicationCapability;
/*
** GCCNonCollapsingCapability
*/
typedef struct
{
GCCCapabilityID capability_id;
GCCOctetString FAR * application_data; /* optional */
} GCCNonCollapsingCapability;
/*
** GCCApplicationRecord
** This structure holds all the data associated with a single T.124
** application record. See the T.124 specification for what parameters
** are optional.
*/
typedef struct
{
UserID node_id;
unsigned short entity_id;
T120Boolean is_enrolled_actively;
T120Boolean is_conducting_capable;
MCSChannelType startup_channel_type;
UserID application_user_id; /* optional */
unsigned short number_of_non_collapsed_caps;
GCCNonCollapsingCapability
FAR * FAR * non_collapsed_caps_list; /* optional */
} GCCApplicationRecord;
/*
** GCCApplicationRoster
** This structure holds all the data associated with a single T.124
** application roster. This includes the collapsed capabilites and
** the complete list of application records associated with an Application
** Protocol Entity (APE).
*/
typedef struct
{
GCCSessionKey session_key;
T120Boolean application_roster_was_changed;
unsigned short number_of_records;
GCCApplicationRecord FAR * FAR * application_record_list;
unsigned short instance_number;
T120Boolean nodes_were_added;
T120Boolean nodes_were_removed;
T120Boolean capabilities_were_changed;
unsigned short number_of_capabilities;
GCCApplicationCapability FAR * FAR * capabilities_list; /* optional */
} GCCApplicationRoster;
/*
** GCCRegistryKey
** This key is used to identify a specific resource used
** by an application. This may be a particular channel or token needed
** for control purposes.
*/
typedef struct
{
GCCSessionKey session_key;
GCCOctetString resource_id; /* Max length is 64 */
} GCCRegistryKey;
/*
** RegistryItemType
** This enum is used to specify what type of registry item is contained
** at the specified slot in the registry.
*/
typedef enum
{
GCC_REGISTRY_CHANNEL_ID = 1,
GCC_REGISTRY_TOKEN_ID = 2,
GCC_REGISTRY_PARAMETER = 3,
GCC_REGISTRY_NONE = 4
} GCCRegistryItemType;
/*
** GCCRegistryItem
** This structure is used to hold a single registry item. Note that the
** union supports all three registry types supported by GCC.
*/
typedef struct
{
GCCRegistryItemType item_type;
union
{
ChannelID channel_id;
TokenID token_id;
GCCOctetString parameter; /* Max length is 64 */
} u;
} GCCRegistryItem;
/*
** GCCRegistryEntryOwner
**
*/
typedef struct
{
T120Boolean entry_is_owned;
UserID owner_node_id;
unsigned short owner_entity_id;
} GCCRegistryEntryOwner;
/*
** GCCModificationRights
** This enum is used when specifing what kind of rights a node has to
** alter the contents of a registry "parameter".
*/
typedef enum
{
GCC_OWNER_RIGHTS = 0,
GCC_SESSION_RIGHTS = 1,
GCC_PUBLIC_RIGHTS = 2,
GCC_NO_MODIFICATION_RIGHTS_SPECIFIED = 3
} GCCModificationRights;
/*
** GCCAppProtocolEntity
** This structure is used to identify a protocol entity at a remote node
** when invoke is used.
*/
typedef struct
{
GCCSessionKey session_key;
unsigned short number_of_expected_capabilities;
GCCApplicationCapability FAR * FAR * expected_capabilities_list;
MCSChannelType startup_channel_type;
T120Boolean must_be_invoked;
} GCCAppProtocolEntity;
/*
** GCCMessageType
** This section defines the messages that can be sent to the application
** through the callback facility. These messages correspond to the
** indications and confirms that are defined within T.124.
*/
typedef enum
{
/******************* NODE CONTROLLER CALLBACKS ***********************/
/* Conference Create, Terminate related calls */
GCC_CREATE_INDICATION = 0,
GCC_CREATE_CONFIRM = 1,
GCC_QUERY_INDICATION = 2,
GCC_QUERY_CONFIRM = 3,
GCC_JOIN_INDICATION = 4,
GCC_JOIN_CONFIRM = 5,
GCC_INVITE_INDICATION = 6,
GCC_INVITE_CONFIRM = 7,
GCC_ADD_INDICATION = 8,
GCC_ADD_CONFIRM = 9,
GCC_LOCK_INDICATION = 10,
GCC_LOCK_CONFIRM = 11,
GCC_UNLOCK_INDICATION = 12,
GCC_UNLOCK_CONFIRM = 13,
GCC_LOCK_REPORT_INDICATION = 14,
GCC_DISCONNECT_INDICATION = 15,
GCC_DISCONNECT_CONFIRM = 16,
GCC_TERMINATE_INDICATION = 17,
GCC_TERMINATE_CONFIRM = 18,
GCC_EJECT_USER_INDICATION = 19,
GCC_EJECT_USER_CONFIRM = 20,
GCC_TRANSFER_INDICATION = 21,
GCC_TRANSFER_CONFIRM = 22,
GCC_APPLICATION_INVOKE_INDICATION = 23, /* SHARED CALLBACK */
GCC_APPLICATION_INVOKE_CONFIRM = 24, /* SHARED CALLBACK */
GCC_SUB_INITIALIZED_INDICATION = 25,
/* Conference Roster related callbacks */
GCC_ANNOUNCE_PRESENCE_CONFIRM = 26,
GCC_ROSTER_REPORT_INDICATION = 27, /* SHARED CALLBACK */
GCC_ROSTER_INQUIRE_CONFIRM = 28, /* SHARED CALLBACK */
/* Conductorship related callbacks */
GCC_CONDUCT_ASSIGN_INDICATION = 29, /* SHARED CALLBACK */
GCC_CONDUCT_ASSIGN_CONFIRM = 30,
GCC_CONDUCT_RELEASE_INDICATION = 31, /* SHARED CALLBACK */
GCC_CONDUCT_RELEASE_CONFIRM = 32,
GCC_CONDUCT_PLEASE_INDICATION = 33,
GCC_CONDUCT_PLEASE_CONFIRM = 34,
GCC_CONDUCT_GIVE_INDICATION = 35,
GCC_CONDUCT_GIVE_CONFIRM = 36,
GCC_CONDUCT_INQUIRE_CONFIRM = 37, /* SHARED CALLBACK */
GCC_CONDUCT_ASK_INDICATION = 38,
GCC_CONDUCT_ASK_CONFIRM = 39,
GCC_CONDUCT_GRANT_INDICATION = 40, /* SHARED CALLBACK */
GCC_CONDUCT_GRANT_CONFIRM = 41,
/* Miscellaneous Node Controller callbacks */
GCC_TIME_REMAINING_INDICATION = 42,
GCC_TIME_REMAINING_CONFIRM = 43,
GCC_TIME_INQUIRE_INDICATION = 44,
GCC_TIME_INQUIRE_CONFIRM = 45,
GCC_CONFERENCE_EXTEND_INDICATION = 46,
GCC_CONFERENCE_EXTEND_CONFIRM = 47,
GCC_ASSISTANCE_INDICATION = 48,
GCC_ASSISTANCE_CONFIRM = 49,
GCC_TEXT_MESSAGE_INDICATION = 50,
GCC_TEXT_MESSAGE_CONFIRM = 51,
/***************** USER APPLICATION CALLBACKS *******************/
/* Application Roster related callbacks */
GCC_PERMIT_TO_ENROLL_INDICATION = 52,
GCC_ENROLL_CONFIRM = 53,
GCC_APP_ROSTER_REPORT_INDICATION = 54, /* SHARED CALLBACK */
GCC_APP_ROSTER_INQUIRE_CONFIRM = 55, /* SHARED CALLBACK */
/* Application Registry related callbacks */
GCC_REGISTER_CHANNEL_CONFIRM = 56,
GCC_ASSIGN_TOKEN_CONFIRM = 57,
GCC_RETRIEVE_ENTRY_CONFIRM = 58,
GCC_DELETE_ENTRY_CONFIRM = 59,
GCC_SET_PARAMETER_CONFIRM = 60,
GCC_MONITOR_INDICATION = 61,
GCC_MONITOR_CONFIRM = 62,
GCC_ALLOCATE_HANDLE_CONFIRM = 63,
/****************** NON-Standard Primitives **********************/
GCC_PERMIT_TO_ANNOUNCE_PRESENCE = 100, /* Node Controller Callback */
GCC_CONNECTION_BROKEN_INDICATION = 101, /* Node Controller Callback */
GCC_FATAL_ERROR_SAP_REMOVED = 102, /* Application Callback */
GCC_STATUS_INDICATION = 103, /* Node Controller Callback */
GCC_TRANSPORT_STATUS_INDICATION = 104 /* Node Controller Callback */
} GCCMessageType;
/*
* 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.
*/
/*********************************************************************
* *
* NODE CONTROLLER CALLBACK INFO STRUCTURES *
* *
*********************************************************************/
/*
* 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 FAR * convener_password; /* optional */
GCCPassword FAR * password; /* optional */
T120Boolean conference_is_locked;
T120Boolean conference_is_listed;
T120Boolean conference_is_conductible;
GCCTerminationMethod termination_method;
GCCConferencePrivileges FAR * conductor_privilege_list; /* optional */
GCCConferencePrivileges FAR * conducted_mode_privilege_list;/* optional */
GCCConferencePrivileges FAR * non_conducted_privilege_list; /* optional */
GCCUnicodeString conference_descriptor; /* optional */
GCCUnicodeString caller_identifier; /* optional */
TransportAddress calling_address; /* optional */
TransportAddress called_address; /* optional */
DomainParameters FAR * domain_parameters; /* optional */
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list; /* optional */
ConnectionHandle connection_handle;
PhysicalHandle physical_handle;
} CreateIndicationMessage;
/*
* 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 FAR * domain_parameters; /* optional */
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list; /* optional */
GCCResult result;
ConnectionHandle connection_handle; /* optional */
PhysicalHandle physical_handle; /* optional */
} CreateConfirmMessage;
/*
* 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 FAR * asymmetry_indicator;
TransportAddress calling_address; /* optional */
TransportAddress called_address; /* optional */
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list; /* optional */
ConnectionHandle connection_handle;
PhysicalHandle physical_handle;
} QueryIndicationMessage;
/*
* 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 FAR * asymmetry_indicator; /* optional */
unsigned short number_of_descriptors;
GCCConferenceDescriptor FAR * FAR * conference_descriptor_list;/* optional*/
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list; /* optional */
GCCResult result;
ConnectionHandle connection_handle;
PhysicalHandle physical_handle;
} QueryConfirmMessage;
/*
* 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 FAR * convener_password; /* optional */
GCCChallengeRequestResponse
FAR * password_challenge; /* optional */
GCCUnicodeString caller_identifier; /* optional */
TransportAddress calling_address; /* optional */
TransportAddress called_address; /* optional */
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list; /* optional */
T120Boolean node_is_intermediate;
ConnectionHandle connection_handle;
PhysicalHandle physical_handle;
} JoinIndicationMessage;
/*
* 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
FAR * password_challenge; /* optional */
DomainParameters FAR * domain_parameters;
T120Boolean clear_password_required;
T120Boolean conference_is_locked;
T120Boolean conference_is_listed;
T120Boolean conference_is_conductible;
GCCTerminationMethod termination_method;
GCCConferencePrivileges FAR * conductor_privilege_list; /* optional */
GCCConferencePrivileges FAR * conducted_mode_privilege_list;/* optional */
GCCConferencePrivileges FAR * non_conducted_privilege_list; /* optional */
GCCUnicodeString conference_descriptor; /* optional */
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list; /* optional */
GCCResult result;
ConnectionHandle connection_handle;
PhysicalHandle physical_handle;
} JoinConfirmMessage;
/*
* 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;
GCCUnicodeString caller_identifier; /* optional */
TransportAddress calling_address; /* optional */
TransportAddress called_address; /* optional */
DomainParameters FAR * domain_parameters; /* optional */
T120Boolean clear_password_required;
T120Boolean conference_is_locked;
T120Boolean conference_is_listed;
T120Boolean conference_is_conductible;
GCCTerminationMethod termination_method;
GCCConferencePrivileges FAR * conductor_privilege_list; /* optional */
GCCConferencePrivileges FAR * conducted_mode_privilege_list;/* optional */
GCCConferencePrivileges FAR * non_conducted_privilege_list; /* optional */
GCCUnicodeString conference_descriptor; /* optional */
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list; /* optional */
ConnectionHandle connection_handle;
PhysicalHandle physical_handle;
} InviteIndicationMessage;
/*
* 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;
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list; /* optional */
GCCResult result;
ConnectionHandle connection_handle;
PhysicalHandle physical_handle;
} InviteConfirmMessage;
/*
* GCC_ADD_INDICATION
*
* Union Choice:
* AddIndicationMessage
*/
typedef struct
{
GCCResponseTag add_response_tag;
GCCConferenceID conference_id;
unsigned short number_of_network_addresses;
GCCNetworkAddress FAR * FAR * network_address_list;
UserID requesting_node_id;
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list; /* optional */
} AddIndicationMessage;
/*
* GCC_ADD_CONFIRM
*
* Union Choice:
* AddConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
unsigned short number_of_network_addresses;
GCCNetworkAddress FAR * FAR * network_address_list;
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list; /* optional */
GCCResult result;
} AddConfirmMessage;
/*
* GCC_LOCK_INDICATION
*
* Union Choice:
* LockIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID requesting_node_id;
} LockIndicationMessage;
/*
* GCC_LOCK_CONFIRM
*
* Union Choice:
* LockConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} LockConfirmMessage;
/*
* GCC_UNLOCK_INDICATION
*
* Union Choice:
* UnlockIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID requesting_node_id;
} UnlockIndicationMessage;
/*
* GCC_UNLOCK_CONFIRM
*
* Union Choice:
* UnlockConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} UnlockConfirmMessage;
/*
* GCC_LOCK_REPORT_INDICATION
*
* Union Choice:
* LockReportIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
T120Boolean conference_is_locked;
} LockReportIndicationMessage;
/*
* GCC_DISCONNECT_INDICATION
*
* Union Choice:
* DisconnectIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCReason reason;
UserID disconnected_node_id;
} DisconnectIndicationMessage;
/*
* GCC_DISCONNECT_CONFIRM
*
* Union Choice:
* PDisconnectConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} DisconnectConfirmMessage;
/*
* GCC_TERMINATE_INDICATION
*
* Union Choice:
* TerminateIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID requesting_node_id;
GCCReason reason;
} TerminateIndicationMessage;
/*
* GCC_TERMINATE_CONFIRM
*
* Union Choice:
* TerminateConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} TerminateConfirmMessage;
/*
* GCC_CONNECTION_BROKEN_INDICATION
*
* Union Choice:
* ConnectionBrokenIndicationMessage
*
* Caveat:
* This is a non-standard indication.
*/
typedef struct
{
ConnectionHandle connection_handle;
PhysicalHandle physical_handle;
} ConnectionBrokenIndicationMessage;
/*
* GCC_EJECT_USER_INDICATION
*
* Union Choice:
* EjectUserIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID ejected_node_id;
GCCReason reason;
} EjectUserIndicationMessage;
/*
* GCC_EJECT_USER_CONFIRM
*
* Union Choice:
* EjectUserConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID ejected_node_id;
GCCResult result;
} EjectUserConfirmMessage;
/*
* GCC_TRANSFER_INDICATION
*
* Union Choice:
* TransferIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCConferenceName destination_conference_name;
GCCNumericString destination_conference_modifier; /* optional */
unsigned short number_of_destination_addresses;
GCCNetworkAddress FAR * FAR *
destination_address_list;
GCCPassword FAR * password; /* optional */
} TransferIndicationMessage;
/*
* GCC_TRANSFER_CONFIRM
*
* Union Choice:
* TransferConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCConferenceName destination_conference_name;
GCCNumericString destination_conference_modifier; /* optional */
unsigned short number_of_destination_nodes;
UserID FAR * destination_node_list;
GCCResult result;
} TransferConfirmMessage;
/*
* GCC_PERMIT_TO_ANNOUNCE_PRESENCE
*
* Union Choice:
* PermitToAnnouncePresenceMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID node_id;
} PermitToAnnouncePresenceMessage;
/*
* GCC_ANNOUNCE_PRESENCE_CONFIRM
*
* Union Choice:
* AnnouncePresenceConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} AnnouncePresenceConfirmMessage;
/*
* GCC_ROSTER_REPORT_INDICATION
*
* Union Choice:
* ConfRosterReportIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCConferenceRoster FAR * conference_roster;
} ConfRosterReportIndicationMessage;
/*
* GCC_CONDUCT_ASSIGN_CONFIRM
*
* Union Choice:
* ConductAssignConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} ConductAssignConfirmMessage;
/*
* GCC_CONDUCT_RELEASE_CONFIRM
*
* Union Choice:
* ConductorReleaseConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} ConductReleaseConfirmMessage;
/*
* GCC_CONDUCT_PLEASE_INDICATION
*
* Union Choice:
* ConductorPleaseIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID requester_node_id;
} ConductPleaseIndicationMessage;
/*
* GCC_CONDUCT_PLEASE_CONFIRM
*
* Union Choice:
* ConductPleaseConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} ConductPleaseConfirmMessage;
/*
* GCC_CONDUCT_GIVE_INDICATION
*
* Union Choice:
* ConductorGiveIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
} ConductGiveIndicationMessage;
/*
* GCC_CONDUCT_GIVE_CONFIRM
*
* Union Choice:
* ConductorGiveConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID recipient_node_id;
GCCResult result;
} ConductGiveConfirmMessage;
/*
* GCC_CONDUCT_ASK_INDICATION
*
* Union Choice:
* ConductPermitAskIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
T120Boolean permission_is_granted;
UserID requester_node_id;
} ConductPermitAskIndicationMessage;
/*
* GCC_CONDUCT_ASK_CONFIRM
*
* Union Choice:
* ConductPermitAskConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
T120Boolean permission_is_granted;
GCCResult result;
} ConductPermitAskConfirmMessage;
/*
* GCC_CONDUCT_GRANT_CONFIRM
*
* Union Choice:
* ConductPermissionGrantConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} ConductPermitGrantConfirmMessage;
/*
* GCC_TIME_REMAINING_INDICATION
*
* Union Choice:
* TimeRemainingIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
unsigned long time_remaining;
UserID node_id;
UserID source_node_id;
} TimeRemainingIndicationMessage;
/*
* GCC_TIME_REMAINING_CONFIRM
*
* Union Choice:
* TimeRemainingConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} TimeRemainingConfirmMessage;
/*
* GCC_TIME_INQUIRE_INDICATION
*
* Union Choice:
* TimeInquireIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
T120Boolean time_is_conference_wide;
UserID requesting_node_id;
} TimeInquireIndicationMessage;
/*
* GCC_TIME_INQUIRE_CONFIRM
*
* Union Choice:
* TimeInquireConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} TimeInquireConfirmMessage;
/*
* GCC_CONFERENCE_EXTEND_INDICATION
*
* Union Choice:
* ConferenceExtendIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
unsigned long extension_time;
T120Boolean time_is_conference_wide;
UserID requesting_node_id;
} ConferenceExtendIndicationMessage;
/*
* GCC_CONFERENCE_EXTEND_CONFIRM
*
* Union Choice:
* ConferenceExtendConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
unsigned long extension_time;
GCCResult result;
} ConferenceExtendConfirmMessage;
/*
* GCC_ASSISTANCE_INDICATION
*
* Union Choice:
* ConferenceAssistIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
unsigned short number_of_user_data_members;
GCCUserData FAR * FAR * user_data_list;
UserID source_node_id;
} ConferenceAssistIndicationMessage;
/*
* GCC_ASSISTANCE_CONFIRM
*
* Union Choice:
* ConferenceAssistConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} ConferenceAssistConfirmMessage;
/*
* GCC_TEXT_MESSAGE_INDICATION
*
* Union Choice:
* TextMessageIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCUnicodeString text_message;
UserID source_node_id;
} TextMessageIndicationMessage;
/*
* GCC_TEXT_MESSAGE_CONFIRM
*
* Union Choice:
* TextMessageConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCResult result;
} TextMessageConfirmMessage;
/*
* 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;
unsigned long parameter;
} GCCStatusIndicationMessage;
/*
* GCC_SUB_INITIALIZED_INDICATION
*
* Union Chice:
* SubInitializedIndicationMessage
*/
typedef struct
{
ConnectionHandle connection_handle;
UserID subordinate_node_id;
} SubInitializedIndicationMessage;
/*********************************************************************
* *
* USER APPLICATION CALLBACK INFO STRUCTURES *
* *
*********************************************************************/
/*
* GCC_PERMIT_TO_ENROLL_INDICATION
*
* Union Choice:
* PermitToEnrollIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCConferenceName conference_name;
GCCNumericString conference_modifier; /* optional */
T120Boolean permission_is_granted;
} PermitToEnrollIndicationMessage;
/*
* GCC_ENROLL_CONFIRM
*
* Union Choice:
* EnrollConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCSessionKey FAR * session_key;
unsigned short entity_id;
UserID node_id;
GCCResult result;
} EnrollConfirmMessage;
/*
* GCC_APP_ROSTER_REPORT_INDICATION
*
* Union Choice:
* AppRosterReportIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
unsigned short number_of_rosters;
GCCApplicationRoster FAR * FAR * application_roster_list;
} AppRosterReportIndicationMessage;
/*
* GCC_REGISTER_CHANNEL_CONFIRM
*
* Union Choice:
* RegisterChannelConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCRegistryKey registry_key;
GCCRegistryItem registry_item;
GCCRegistryEntryOwner entry_owner;
GCCResult result;
} RegisterChannelConfirmMessage;
/*
* GCC_ASSIGN_TOKEN_CONFIRM
*
* Union Choice:
* AssignTokenConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCRegistryKey registry_key;
GCCRegistryItem registry_item;
GCCRegistryEntryOwner entry_owner;
GCCResult result;
} AssignTokenConfirmMessage;
/*
* GCC_SET_PARAMETER_CONFIRM
*
* Union Choice:
* SetParameterConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCRegistryKey registry_key;
GCCRegistryItem registry_item;
GCCRegistryEntryOwner entry_owner;
GCCModificationRights modification_rights;
GCCResult result;
} SetParameterConfirmMessage;
/*
* GCC_RETRIEVE_ENTRY_CONFIRM
*
* Union Choice:
* RetrieveEntryConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCRegistryKey registry_key;
GCCRegistryItem registry_item;
GCCRegistryEntryOwner entry_owner;
GCCModificationRights modification_rights;
GCCResult result;
} RetrieveEntryConfirmMessage;
/*
* GCC_DELETE_ENTRY_CONFIRM
*
* Union Choice:
* DeleteEntryConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCRegistryKey registry_key;
GCCResult result;
} DeleteEntryConfirmMessage;
/*
* GCC_MONITOR_INDICATION
*
* Union Choice:
* MonitorIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
GCCRegistryKey registry_key;
GCCRegistryItem registry_item;
GCCRegistryEntryOwner entry_owner;
GCCModificationRights modification_rights;
} MonitorIndicationMessage;
/*
* GCC_MONITOR_CONFIRM
*
* Union Choice:
* MonitorConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
T120Boolean delivery_is_enabled;
GCCRegistryKey registry_key;
GCCResult result;
} MonitorConfirmMessage;
/*
* GCC_ALLOCATE_HANDLE_CONFIRM
*
* Union Choice:
* AllocateHandleConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
unsigned short number_of_handles;
unsigned long handle_value;
GCCResult result;
} AllocateHandleConfirmMessage;
/*********************************************************************
* *
* 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;
GCCUnicodeString conference_descriptor;
GCCConferenceRoster FAR * conference_roster;
GCCResult result;
} ConfRosterInquireConfirmMessage;
/*
* GCC_APP_ROSTER_INQUIRE_CONFIRM
*
* Union Choice:
* AppRosterInquireConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
unsigned short number_of_rosters;
GCCApplicationRoster FAR * FAR * application_roster_list;
GCCResult result;
} AppRosterInquireConfirmMessage;
/*
* GCC_CONDUCT_INQUIRE_CONFIRM
*
* Union Choice:
* ConductorInquireConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
T120Boolean mode_is_conducted;
UserID conductor_node_id;
T120Boolean permission_is_granted;
GCCResult result;
} ConductInquireConfirmMessage;
/*
* GCC_CONDUCT_ASSIGN_INDICATION
*
* Union Choice:
* ConductAssignIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
UserID node_id;
} ConductAssignIndicationMessage;
/*
* GCC_CONDUCT_RELEASE_INDICATION
*
* Union Choice:
* ConductReleaseIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
} ConductReleaseIndicationMessage;
/*
* GCC_CONDUCT_GRANT_INDICATION
*
* Union Choice:
* ConductPermitGrantIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
unsigned short number_granted;
UserID FAR * granted_node_list;
unsigned short number_waiting;
UserID FAR * waiting_node_list;
T120Boolean permission_is_granted;
} ConductPermitGrantIndicationMessage;
/*
* GCC_APPLICATION_INVOKE_INDICATION
*
* Union Choice:
* ApplicationInvokeIndicationMessage
*/
typedef struct
{
GCCConferenceID conference_id;
unsigned short number_of_app_protocol_entities;
GCCAppProtocolEntity FAR * FAR * app_protocol_entity_list;
UserID invoking_node_id;
} ApplicationInvokeIndicationMessage;
/*
* GCC_APPLICATION_INVOKE_CONFIRM
*
* Union Choice:
* ApplicationInvokeConfirmMessage
*/
typedef struct
{
GCCConferenceID conference_id;
unsigned short number_of_app_protocol_entities;
GCCAppProtocolEntity FAR * FAR * app_protocol_entity_list;
GCCResult result;
} ApplicationInvokeConfirmMessage;
/*
* 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;
void FAR * user_defined;
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;
LockConfirmMessage lock_confirm;
UnlockIndicationMessage unlock_indication;
UnlockConfirmMessage unlock_confirm;
LockReportIndicationMessage lock_report_indication;
DisconnectIndicationMessage disconnect_indication;
DisconnectConfirmMessage disconnect_confirm;
TerminateIndicationMessage terminate_indication;
TerminateConfirmMessage terminate_confirm;
ConnectionBrokenIndicationMessage connection_broken_indication;
EjectUserIndicationMessage eject_user_indication;
EjectUserConfirmMessage eject_user_confirm;
TransferIndicationMessage transfer_indication;
TransferConfirmMessage transfer_confirm;
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;
ConductAssignIndicationMessage conduct_assign_indication;
ConductAssignConfirmMessage conduct_assign_confirm;
ConductReleaseIndicationMessage conduct_release_indication;
ConductReleaseConfirmMessage conduct_release_confirm;
ConductPleaseIndicationMessage conduct_please_indication;
ConductPleaseConfirmMessage conduct_please_confirm;
ConductGiveIndicationMessage conduct_give_indication;
ConductGiveConfirmMessage conduct_give_confirm;
ConductPermitAskIndicationMessage conduct_permit_ask_indication;
ConductPermitAskConfirmMessage conduct_permit_ask_confirm;
ConductPermitGrantIndicationMessage conduct_permit_grant_indication;
ConductPermitGrantConfirmMessage conduct_permit_grant_confirm;
ConductInquireConfirmMessage conduct_inquire_confirm;
TimeRemainingIndicationMessage time_remaining_indication;
TimeRemainingConfirmMessage time_remaining_confirm;
TimeInquireIndicationMessage time_inquire_indication;
TimeInquireConfirmMessage time_inquire_confirm;
ConferenceExtendIndicationMessage conference_extend_indication;
ConferenceExtendConfirmMessage conference_extend_confirm;
ConferenceAssistIndicationMessage conference_assist_indication;
ConferenceAssistConfirmMessage conference_assist_confirm;
TextMessageIndicationMessage text_message_indication;
TextMessageConfirmMessage text_message_confirm;
GCCStatusIndicationMessage status_indication;
PermitToEnrollIndicationMessage permit_to_enroll_indication;
EnrollConfirmMessage enroll_confirm;
AppRosterReportIndicationMessage app_roster_report_indication;
RegisterChannelConfirmMessage register_channel_confirm;
AssignTokenConfirmMessage assign_token_confirm;
SetParameterConfirmMessage set_parameter_confirm;
RetrieveEntryConfirmMessage retrieve_entry_confirm;
DeleteEntryConfirmMessage delete_entry_confirm;
MonitorIndicationMessage monitor_indication;
MonitorConfirmMessage monitor_confirm;
AllocateHandleConfirmMessage allocate_handle_confirm;
ConfRosterInquireConfirmMessage conf_roster_inquire_confirm;
AppRosterInquireConfirmMessage app_roster_inquire_confirm;
TransportStatus transport_status;
} u;
} GCCMessage;
/*
* This is the definition for the GCC callback function. Applications
* writing callback routines should NOT use the typedef to define their
* functions. These should be explicitly defined the way that the
* typedef is defined.
*/
#define GCC_CALLBACK_NOT_PROCESSED 0
#define GCC_CALLBACK_PROCESSED 1
typedef T120Boolean (CALLBACK *GCCCallBack) (GCCMessage FAR * gcc_message);
/**************** GCC ENTRY POINTS *******************************/
/*********************************************************************
* *
* NODE CONTROLLER ENTRY POINTS *
* *
*********************************************************************/
/*
* These entry points are implementation specific primitives, that
* do not directly correspond to primitives defined in T.124.
*/
GCCError APIENTRY GCCRegisterNodeControllerApplication (
GCCCallBack control_sap_callback,
void FAR * user_defined,
GCCVersion gcc_version_requested,
unsigned short FAR * initialization_flags,
unsigned long FAR * application_id,
unsigned short FAR * capabilities_mask,
GCCVersion FAR * gcc_high_version,
GCCVersion FAR * gcc_version);
GCCError APIENTRY GCCRegisterUserApplication (
unsigned short FAR * initialization_flags,
unsigned long FAR * application_id,
unsigned short FAR * capabilities_mask,
GCCVersion FAR * gcc_version);
GCCError APIENTRY GCCCleanup (
unsigned long application_id);
GCCError APIENTRY GCCHeartbeat (void);
GCCError APIENTRY GCCCreateSap(
GCCCallBack user_defined_callback,
void FAR * user_defined,
GCCSapHandle FAR * application_sap_handle);
GCCError APIENTRY GCCDeleteSap(
GCCSapHandle sap_handle);
GCCError APIENTRY GCCLoadTransport (
char FAR * transport_identifier,
char FAR * transport_file_name);
GCCError APIENTRY GCCUnloadTransport (
char FAR * transport_identifier);
GCCError APIENTRY GCCResetDevice (
char FAR * transport_identifier,
char FAR * device_identifier);
/*
* These entry points are specific primitives that directly correspond
* to primitives defined in T.124.
*
* Note that an attempt was made in the prototypes to define the optional
* parameters as pointers wherever possible.
*/
/********** Conference Establishment and Termination Functions ***********/
GCCError APIENTRY GCCConferenceCreateRequest
(
GCCConferenceName FAR * conference_name,
GCCNumericString conference_modifier,
GCCPassword FAR * convener_password,
GCCPassword FAR * password,
T120Boolean use_password_in_the_clear,
T120Boolean conference_is_locked,
T120Boolean conference_is_listed,
T120Boolean conference_is_conductible,
GCCTerminationMethod termination_method,
GCCConferencePrivileges FAR * conduct_privilege_list,
GCCConferencePrivileges FAR *
conducted_mode_privilege_list,
GCCConferencePrivileges FAR *
non_conducted_privilege_list,
GCCUnicodeString conference_descriptor,
GCCUnicodeString caller_identifier,
TransportAddress calling_address,
TransportAddress called_address,
DomainParameters FAR * domain_parameters,
unsigned short number_of_network_addresses,
GCCNetworkAddress FAR * FAR * local_network_address_list,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list,
ConnectionHandle FAR * connection_handle
);
GCCError APIENTRY GCCConferenceCreateResponse
(
GCCNumericString conference_modifier,
GCCConferenceID conference_id,
T120Boolean use_password_in_the_clear,
DomainParameters FAR * domain_parameters,
unsigned short number_of_network_addresses,
GCCNetworkAddress FAR * FAR * local_network_address_list,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list,
GCCResult result
);
GCCError APIENTRY GCCConferenceQueryRequest
(
GCCNodeType node_type,
GCCAsymmetryIndicator FAR * asymmetry_indicator,
TransportAddress calling_address,
TransportAddress called_address,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list,
ConnectionHandle FAR * connection_handle
);
GCCError APIENTRY GCCConferenceQueryResponse
(
GCCResponseTag query_response_tag,
GCCNodeType node_type,
GCCAsymmetryIndicator FAR * asymmetry_indicator,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list,
GCCResult result
);
GCCError APIENTRY GCCConferenceJoinRequest
(
GCCConferenceName FAR * conference_name,
GCCNumericString called_node_modifier,
GCCNumericString calling_node_modifier,
GCCPassword FAR * convener_password,
GCCChallengeRequestResponse
FAR * password_challenge,
GCCUnicodeString caller_identifier,
TransportAddress calling_address,
TransportAddress called_address,
DomainParameters FAR * domain_parameters,
unsigned short number_of_network_addresses,
GCCNetworkAddress FAR * FAR * local_network_address_list,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list,
ConnectionHandle FAR * connection_handle
);
GCCError APIENTRY GCCConferenceJoinResponse
(
GCCResponseTag join_response_tag,
GCCChallengeRequestResponse
FAR * password_challenge,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list,
GCCResult result
);
GCCError APIENTRY GCCConferenceInviteRequest
(
GCCConferenceID conference_id,
GCCUnicodeString caller_identifier,
TransportAddress calling_address,
TransportAddress called_address,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list,
ConnectionHandle FAR * connection_handle
);
GCCError APIENTRY GCCConferenceInviteResponse
(
GCCConferenceID conference_id,
GCCNumericString conference_modifier,
DomainParameters FAR * domain_parameters,
unsigned short number_of_network_addresses,
GCCNetworkAddress FAR * FAR * local_network_address_list,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list,
GCCResult result
);
GCCError APIENTRY GCCConferenceAddRequest
(
GCCConferenceID conference_id,
unsigned short number_of_network_addresses,
GCCNetworkAddress FAR * FAR * network_address_list,
UserID adding_node,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list
);
GCCError APIENTRY GCCConferenceAddResponse
(
GCCResponseTag add_response_tag,
GCCConferenceID conference_id,
UserID requesting_node,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list,
GCCResult result
);
GCCError APIENTRY GCCConferenceLockRequest
(
GCCConferenceID conference_id
);
GCCError APIENTRY GCCConferenceLockResponse
(
GCCConferenceID conference_id,
UserID requesting_node,
GCCResult result
);
GCCError APIENTRY GCCConferenceUnlockRequest
(
GCCConferenceID conference_id
);
GCCError APIENTRY GCCConferenceUnlockResponse
(
GCCConferenceID conference_id,
UserID requesting_node,
GCCResult result
);
GCCError APIENTRY GCCConferenceDisconnectRequest
(
GCCConferenceID conference_id
);
GCCError APIENTRY GCCConferenceTerminateRequest
(
GCCConferenceID conference_id,
GCCReason reason
);
GCCError APIENTRY GCCConferenceEjectUserRequest
(
GCCConferenceID conference_id,
UserID ejected_node_id,
GCCReason reason
);
GCCError APIENTRY GCCConferenceTransferRequest
(
GCCConferenceID conference_id,
GCCConferenceName FAR * destination_conference_name,
GCCNumericString destination_conference_modifier,
unsigned short number_of_destination_addresses,
GCCNetworkAddress FAR * FAR *
destination_address_list,
unsigned short number_of_destination_nodes,
UserID FAR * destination_node_list,
GCCPassword FAR * password
);
/********** Conference Roster Functions ***********/
GCCError APIENTRY GCCAnnouncePresenceRequest
(
GCCConferenceID conference_id,
GCCNodeType node_type,
GCCNodeProperties node_properties,
GCCUnicodeString node_name,
unsigned short number_of_participants,
GCCUnicodeString FAR * participant_name_list,
GCCUnicodeString site_information,
unsigned short number_of_network_addresses,
GCCNetworkAddress FAR * FAR * network_address_list,
GCCOctetString FAR * alternative_node_id,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list
);
/********** Conductorship Functions ***********/
GCCError APIENTRY GCCConductorAssignRequest
(
GCCConferenceID conference_id
);
GCCError APIENTRY GCCConductorReleaseRequest
(
GCCConferenceID conference_id
);
GCCError APIENTRY GCCConductorPleaseRequest
(
GCCConferenceID conference_id
);
GCCError APIENTRY GCCConductorGiveRequest
(
GCCConferenceID conference_id,
UserID recipient_node_id
);
GCCError APIENTRY GCCConductorGiveResponse
(
GCCConferenceID conference_id,
GCCResult result
);
GCCError APIENTRY GCCConductorPermitGrantRequest
(
GCCConferenceID conference_id,
unsigned short number_granted,
UserID FAR * granted_node_list,
unsigned short number_waiting,
UserID FAR * waiting_node_list
);
/********** Miscellaneous Functions ***********/
GCCError APIENTRY GCCConferenceTimeRemainingRequest
(
GCCConferenceID conference_id,
unsigned long time_remaining,
UserID node_id
);
GCCError APIENTRY GCCConferenceTimeInquireRequest
(
GCCConferenceID conference_id,
T120Boolean time_is_conference_wide
);
GCCError APIENTRY GCCConferenceExtendRequest
(
GCCConferenceID conference_id,
unsigned long extension_time,
T120Boolean time_is_conference_wide
);
GCCError APIENTRY GCCConferenceAssistanceRequest
(
GCCConferenceID conference_id,
unsigned short number_of_user_data_members,
GCCUserData FAR * FAR * user_data_list
);
GCCError APIENTRY GCCTextMessageRequest
(
GCCConferenceID conference_id,
GCCUnicodeString text_message,
UserID destination_node
);
/*********************************************************************
* *
* USER APPLICATION ENTRY POINTS *
* *
*********************************************************************/
/* Application Roster related function calls */
GCCError APIENTRY GCCApplicationEnrollRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id,
GCCSessionKey FAR * session_key,
T120Boolean enroll_actively,
UserID application_user_id,
T120Boolean is_conducting_capable,
MCSChannelType startup_channel_type,
unsigned short number_of_non_collapsed_caps,
GCCNonCollapsingCapability FAR * FAR *
non_collapsed_caps_list,
unsigned short number_of_collapsed_caps,
GCCApplicationCapability FAR * FAR *
collapsed_caps_list,
T120Boolean application_is_enrolled
);
/* Application Registry related function calls */
GCCError APIENTRY GCCRegisterChannelRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id,
GCCRegistryKey FAR * registry_key,
ChannelID channel_id
);
GCCError APIENTRY GCCRegistryAssignTokenRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id,
GCCRegistryKey FAR * registry_key
);
GCCError APIENTRY GCCRegistrySetParameterRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id,
GCCRegistryKey FAR * registry_key,
GCCOctetString FAR * parameter_value,
GCCModificationRights modification_rights
);
GCCError APIENTRY GCCRegistryRetrieveEntryRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id,
GCCRegistryKey FAR * registry_key
);
GCCError APIENTRY GCCRegistryDeleteEntryRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id,
GCCRegistryKey FAR * registry_key
);
GCCError APIENTRY GCCRegistryMonitorRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id,
T120Boolean enable_delivery,
GCCRegistryKey FAR * registry_key
);
GCCError APIENTRY GCCRegistryAllocateHandleRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id,
unsigned short number_of_handles
);
/*********************************************************************
* *
* SHARED ENTRY POINTS *
* *
*********************************************************************/
/* Use Zero for the SapHandle if your are the Node Controller */
GCCError APIENTRY GCCConferenceRosterInqRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id
);
GCCError APIENTRY GCCApplicationRosterInqRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id,
GCCSessionKey FAR * session_key
);
GCCError APIENTRY GCCConductorInquireRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id
);
GCCError APIENTRY GCCApplicationInvokeRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id,
unsigned short number_of_app_protocol_entities,
GCCAppProtocolEntity FAR * FAR *
app_protocol_entity_list,
unsigned short number_of_destination_nodes,
UserID FAR * list_of_destination_nodes
);
GCCError APIENTRY GCCConductorPermitAskRequest
(
GCCSapHandle sap_handle,
GCCConferenceID conference_id,
T120Boolean permission_is_granted
);
GCCError APIENTRY GCCGetLocalAddress
(
GCCConferenceID conference_id,
ConnectionHandle connection_handle,
TransportAddress transport_identifier,
int * transport_identifier_length,
TransportAddress local_address,
int * local_address_length
);
#endif