|
|
#ifndef _IT120APPSAP_H_
#define _IT120APPSAP_H_
#include <basetyps.h>
#include "gcc.h"
#include "igccapp.h"
#include "imcsapp.h"
typedef void (CALLBACK *LPFN_APPLET_SESSION_CB) (struct T120AppletSessionMsg *); typedef void (CALLBACK *LPFN_APPLET_CB) (struct T120AppletMsg *);
/* ------ registry request ------ */
typedef struct tagT120RegistryParameter { LPOSTR postrValue; AppletModificationRights eModifyRights; } T120RegistryParameter;
typedef struct tagT120RegistryRequest { AppletRegistryCommand eCommand; GCCRegistryKey *pRegistryKey; union { // register channel
T120ChannelID nChannelID; // set parameter
T120RegistryParameter Param; // monitor
BOOL fEnableDelivery; // allocate handle
ULONG cHandles; }; } T120RegistryRequest;
/* ------ channel request ------ */
typedef struct tagT120ChannelRequest { AppletChannelCommand eCommand; T120ChannelID nChannelID; ULONG cUsers; T120UserID *aUsers; } T120ChannelRequest;
/* ------ token request ------ */
typedef struct tagT120TokenRequest { AppletTokenCommand eCommand; T120TokenID nTokenID; T120UserID uidGiveTo; T120Result eGiveResponse; } T120TokenRequest;
/* ------ join conference ------ */
typedef struct tagT120ResourceRequest { AppletResourceAllocCommand eCommand; BOOL fImmediateNotification; T120ChannelID nChannelID; T120TokenID nTokenID; GCCRegistryKey RegKey; } T120ResourceRequest;
typedef struct tagT120JoinSessionRequest { // attach user flags
DWORD dwAttachmentFlags; // session specific
GCCSessionKey SessionKey; // applet enroll
BOOL fConductingCapable; AppletChannelType nStartupChannelType; ULONG cNonCollapsedCaps; GCCNonCollCap **apNonCollapsedCaps; ULONG cCollapsedCaps; GCCAppCap **apCollapsedCaps; // static and dynamic channels
ULONG cStaticChannels; T120ChannelID *aStaticChannels; ULONG cResourceReqs; T120ResourceRequest *aResourceReqs; } T120JoinSessionRequest;
#undef INTERFACE
#define INTERFACE IT120AppletSession
DECLARE_INTERFACE(IT120AppletSession) { STDMETHOD_(void, ReleaseInterface) (THIS) PURE;
STDMETHOD_(void, Advise) (THIS_ IN LPFN_APPLET_SESSION_CB pfnCallback, IN LPVOID pAppletContext, IN LPVOID pSessionContext) PURE;
STDMETHOD_(void, Unadvise) (THIS) PURE;
/* ------ basic info ------ */
STDMETHOD_(T120ConfID, GetConfID) (THIS) PURE;
STDMETHOD_(BOOL, IsThisNodeTopProvider) (THIS) PURE;
STDMETHOD_(T120NodeID, GetTopProvider) (THIS) PURE;
/* ------ join/leave ------ */
STDMETHOD_(T120Error, Join) (THIS_ IN T120JoinSessionRequest *) PURE;
STDMETHOD_(void, Leave) (THIS) PURE;
/* ------ send data ------ */
STDMETHOD_(T120Error, AllocateSendDataBuffer) (THIS_ IN ULONG, OUT void **) PURE;
STDMETHOD_(void, FreeSendDataBuffer) (THIS_ IN void *) PURE;
STDMETHOD_(T120Error, SendData) (THIS_ IN DataRequestType, IN T120ChannelID, IN T120Priority, IN LPBYTE, IN ULONG, IN SendDataFlags) PURE;
/* ------ inquiry ------ */
STDMETHOD_(T120Error, InvokeApplet) (THIS_ IN GCCAppProtEntityList *, IN GCCSimpleNodeList *, OUT T120RequestTag *) PURE;
STDMETHOD_(T120Error, InquireRoster) (THIS_ IN GCCSessionKey *) PURE;
/* ------ registry services ------ */
STDMETHOD_(T120Error, RegistryRequest) (THIS_ IN T120RegistryRequest *) PURE;
/* ------ channel services ------ */
STDMETHOD_(T120Error, ChannelRequest) (THIS_ IN T120ChannelRequest *) PURE;
/* ------ token services ------ */
STDMETHOD_(T120Error, TokenRequest) (THIS_ IN T120TokenRequest *) PURE; };
//
// T120 Applet Session Callback
//
typedef struct tagT120JoinSessionConfirm { T120Result eResult; T120Error eError; IT120AppletSession *pIAppletSession; T120UserID uidMyself; T120SessionID sidMyself; T120EntityID eidMyself; T120NodeID nidMyself; // the following two are the same as those in the request structure
ULONG cResourceReqs; T120ResourceRequest *aResourceReqs; } T120JoinSessionConfirm;
typedef struct tagT120ChannelConfirm { T120ChannelID nChannelID; T120Result eResult; } T120ChannelConfirm;
typedef struct tagT120ChannelInd { T120ChannelID nChannelID; union { T120Reason eReason; T120UserID nManagerID; }; } T120ChannelInd;
typedef struct tagT120TokenConfirm { T120TokenID nTokenID; union { T120TokenStatus eTokenStatus; T120Result eResult; }; } T120TokenConfirm;
typedef struct tagT120TokenInd { T120TokenID nTokenID; union { T120Reason eReason; T120UserID nUserID; }; } T120TokenInd;
typedef struct tagT120DetachUserInd { T120UserID nUserID; T120Reason eReason; } T120DetachUserInd;
// internal use
typedef struct tagT120AttachUserConfirm { T120UserID nUserID; T120Result eResult; } T120AttachUserConfirm;
/*
* GCCAppSapMsg * This structure defines the callback message that is passed from GCC to * a user application when an indication or confirm occurs. */
typedef struct T120AppletSessionMsg { T120MessageType eMsgType; LPVOID pAppletContext; LPVOID pSessionContext; T120ConfID nConfID;
union { T120JoinSessionConfirm JoinSessionConfirm; T120DetachUserInd DetachUserInd;
GCCAppRosterInquireConfirm AppRosterInquireConfirm; GCCAppRosterReportInd AppRosterReportInd;
GCCConfRosterInquireConfirm ConfRosterInquireConfirm;
GCCAppInvokeConfirm AppInvokeConfirm; GCCAppInvokeInd AppInvokeInd;
GCCRegistryConfirm RegistryConfirm; GCCRegAllocateHandleConfirm RegAllocHandleConfirm;
SendDataIndicationPDU SendDataInd;
T120ChannelConfirm ChannelConfirm; T120ChannelInd ChannelInd; T120TokenConfirm TokenConfirm; T120TokenInd TokenInd;
// will be removed in the future after converting all applets
GCCAppEnrollConfirm AppEnrollConfirm; T120AttachUserConfirm AttachUserConfirm; }; } T120AppletSessionMsg;
typedef struct T120AppletMsg { T120MessageType eMsgType; LPVOID pAppletContext; LPVOID Reserved1; T120ConfID nConfID;
union { GCCAppPermissionToEnrollInd PermitToEnrollInd; T120JoinSessionConfirm AutoJoinSessionInd; }; } T120AppletMsg;
#undef INTERFACE
#define INTERFACE IT120AppletNotify
DECLARE_INTERFACE(IT120AppletNotify) { STDMETHOD_(void, PermitToJoinSessionIndication) (THIS_ IN T120ConfID, IN BOOL fPermissionGranted) PURE;
STDMETHOD_(void, AutoJoinSessionIndication) (THIS_ IN T120JoinSessionConfirm *) PURE; };
#undef INTERFACE
#define INTERFACE IT120Applet
DECLARE_INTERFACE(IT120Applet) { STDMETHOD_(void, ReleaseInterface) (THIS) PURE;
STDMETHOD_(void, Advise) (THIS_ IN LPFN_APPLET_CB pfnCallback, IN LPVOID pAppletContext) PURE;
STDMETHOD_(void, Unadvise) (THIS) PURE;
/* ------ Auto Join ------ */
STDMETHOD_(T120Error, RegisterAutoJoin) (THIS_ IN T120JoinSessionRequest *) PURE;
STDMETHOD_(void, UnregisterAutoJoin) (THIS) PURE;
/* ------ Session ------ */
STDMETHOD_(T120Error, CreateSession) (THIS_ OUT IT120AppletSession **, IN T120ConfID) PURE; };
//
// T120 Applet SAP Exports
//
#ifdef __cplusplus
extern "C" { #endif
T120Error WINAPI T120_CreateAppletSAP(IT120Applet **); void WINAPI T120_GetNodeName(LPSTR, UINT);
#ifdef __cplusplus
} #endif
#endif // _IT120APPSAP_H_
|