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.
246 lines
5.5 KiB
246 lines
5.5 KiB
//
|
|
// Application Loader
|
|
//
|
|
|
|
#ifndef _H_AL
|
|
#define _H_AL
|
|
|
|
//
|
|
//
|
|
// Includes
|
|
//
|
|
//
|
|
#include <om.h>
|
|
|
|
|
|
//
|
|
// THERE IS ONLY ONE CLIENT OF THE APP-LOADER: OLD WHITEBOARD
|
|
//
|
|
|
|
#define AL_RETRY_DELAY 100
|
|
|
|
#define AL_NEW_CALL_RETRY_COUNT 5
|
|
|
|
|
|
|
|
//
|
|
// Result codes passed in ALS_LOAD_RESULT events
|
|
//
|
|
typedef enum
|
|
{
|
|
AL_LOAD_SUCCESS = 0,
|
|
AL_LOAD_FAIL_NO_FP,
|
|
AL_LOAD_FAIL_NO_EXE,
|
|
AL_LOAD_FAIL_BAD_EXE,
|
|
AL_LOAD_FAIL_LOW_MEM
|
|
}
|
|
AL_LOAD_RESULT;
|
|
|
|
|
|
|
|
|
|
//
|
|
//
|
|
// Application Loader OBMAN object used to communicate result of attempted
|
|
// loads
|
|
//
|
|
// szFunctionProfile : Function Profile being loaded
|
|
// personName : Name of site that attempted the load
|
|
// result : Result of attempted load
|
|
//
|
|
// NET PROTOCOL. All network raw data structures, which CAN NOT CHANGE,
|
|
// are prefixed with TSHR_.
|
|
//
|
|
typedef struct tagTSHR_AL_LOAD_RESULT
|
|
{
|
|
char szFunctionProfile[OM_MAX_FP_NAME_LEN];
|
|
char personName[TSHR_MAX_PERSON_NAME_LEN];
|
|
TSHR_UINT16 result;
|
|
TSHR_UINT16 pad;
|
|
}
|
|
TSHR_AL_LOAD_RESULT;
|
|
typedef TSHR_AL_LOAD_RESULT * PTSHR_AL_LOAD_RESULT;
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct tagAL_PRIMARY
|
|
{
|
|
STRUCTURE_STAMP
|
|
PUT_CLIENT putTask;
|
|
POM_CLIENT pomClient;
|
|
PCM_CLIENT pcmClient;
|
|
|
|
BOOL eventProcRegistered:1;
|
|
BOOL exitProcRegistered:1;
|
|
BOOL inCall:1;
|
|
BOOL alWorksetOpen:1;
|
|
BOOL alWBRegPend:1;
|
|
BOOL alWBRegSuccess:1;
|
|
|
|
// Call Info
|
|
UINT callID;
|
|
|
|
OM_CORRELATOR omWSGCorrelator;
|
|
OM_CORRELATOR omWSCorrelator;
|
|
NET_UID omUID;
|
|
OM_WSGROUP_HANDLE omWSGroupHandle;
|
|
OM_WSGROUP_HANDLE alWSGroupHandle;
|
|
|
|
// Whiteboard Client
|
|
PUT_CLIENT putWB;
|
|
}
|
|
AL_PRIMARY;
|
|
typedef struct tagAL_PRIMARY * PAL_PRIMARY;
|
|
|
|
|
|
__inline void ValidateALP(PAL_PRIMARY palPrimary)
|
|
{
|
|
ASSERT(!IsBadWritePtr(palPrimary, sizeof(AL_PRIMARY)));
|
|
}
|
|
|
|
|
|
|
|
//
|
|
//
|
|
// Application Loader Events
|
|
//
|
|
// Note: these events are defined relative to AL_BASE_EVENT and use the
|
|
// range AL_BASE_EVENT to AL_BASE_EVENT + 0x7F. The application
|
|
// loader internally uses events in the range AL_BASE_EVENT+0x80 to
|
|
// AL_BASE_EVENT+0xFF, so events in this range must not be defined
|
|
// as part of the API.
|
|
//
|
|
//
|
|
|
|
|
|
enum
|
|
{
|
|
ALS_LOCAL_LOAD = AL_BASE_EVENT,
|
|
ALS_REMOTE_LOAD_RESULT,
|
|
AL_INT_RETRY_NEW_CALL,
|
|
AL_INT_STARTSTOP_WB
|
|
};
|
|
|
|
|
|
|
|
//
|
|
// ALS_LOAD_RESULT
|
|
//
|
|
// Overview:
|
|
//
|
|
// This event informs a task of the result of an attempted load on a
|
|
// remote machine.
|
|
//
|
|
// Parameters:
|
|
//
|
|
// param_1 : AL_LOAD_RESULT reasonCode;
|
|
// param_2 : UINT alPersonHandle;
|
|
//
|
|
// reasonCode : Result of attempt to load application
|
|
//
|
|
// alPersonHandle : Handle for the site that attempted the load
|
|
// (pass to ALS_GetPersonData() to get site name)
|
|
//
|
|
// Issued to:
|
|
//
|
|
// Applications that have registered a function profile that has been
|
|
// used by the Application Loader on a remote site.
|
|
//
|
|
// Circumstances when issued:
|
|
//
|
|
// When the Application Loader on a remote site attempts to load an
|
|
// application due to a new Function Profile object being added to a
|
|
// call.
|
|
//
|
|
// Receivers response:
|
|
//
|
|
// None
|
|
//
|
|
//
|
|
|
|
|
|
|
|
//
|
|
// AL_RETRY_NEW_CALL
|
|
//
|
|
// If AL fails to register with ObManControl on receipt of a CMS_NEW_CALL,
|
|
// it will in certain circumstances retry the registration after a short
|
|
// delay. This is implemented by posting an AL_RETRY_NEW_CALL event back
|
|
// to itself.
|
|
//
|
|
|
|
|
|
//
|
|
// AL_INT_STARTSTOP_WB
|
|
//
|
|
// This starts/stops the old Whiteboard, which is now an MFC dll in CONF's
|
|
// process that creates/terminates a thread. By having CONF itself start
|
|
// old WB through us, autolaunch and normal launch are synchronized.
|
|
//
|
|
// TEMP HACK:
|
|
// param1 == TRUE or FALSE (TRUE for new WB TEMP HACK!, FALSE for normal old WB)
|
|
// param2 == memory block (receiver must free) of file name to open
|
|
//
|
|
|
|
|
|
|
|
//
|
|
// PRIMARY functions
|
|
//
|
|
|
|
|
|
//
|
|
// ALP_Init()
|
|
// ALP_Term()
|
|
//
|
|
BOOL ALP_Init(BOOL * pfCleanup);
|
|
void ALP_Term(void);
|
|
|
|
|
|
BOOL CALLBACK ALPEventProc(LPVOID palPrimary, UINT event, UINT_PTR param1, UINT_PTR param2);
|
|
void CALLBACK ALPExitProc(LPVOID palPrimary);
|
|
|
|
|
|
void ALEndCall(PAL_PRIMARY palPrimary, UINT callID);
|
|
|
|
void ALNewCall(PAL_PRIMARY palPrimary, UINT retryCount, UINT callID);
|
|
|
|
BOOL ALWorksetNewInd(PAL_PRIMARY palPrimary, OM_WSGROUP_HANDLE hWSGroup, OM_WORKSET_ID worksetID);
|
|
|
|
BOOL ALNewWorksetGroup(PAL_PRIMARY palPrimary, OM_WSGROUP_HANDLE hWSGroup, POM_OBJECT pObj);
|
|
|
|
void ALWorksetRegisterCon(PAL_PRIMARY palPrimary, UINT correlator,
|
|
UINT result, OM_WSGROUP_HANDLE hWSGroup);
|
|
|
|
BOOL ALRemoteLoadResult(PAL_PRIMARY palPrimary, OM_WSGROUP_HANDLE hWSGroup,
|
|
POM_OBJECT alObjHandle);
|
|
|
|
void ALLocalLoadResult(PAL_PRIMARY palPrimary, BOOL success);
|
|
|
|
|
|
//
|
|
// SECONDARY functions
|
|
//
|
|
|
|
void CALLBACK ALSExitProc(LPVOID palClient);
|
|
|
|
//
|
|
// Launching/activation of WB
|
|
// TEMP HACK FOR NEW WB!
|
|
//
|
|
|
|
BOOL ALStartStopWB(PAL_PRIMARY palPrimary, LPCTSTR szFile);
|
|
DWORD WINAPI OldWBThreadProc(LPVOID lpv);
|
|
|
|
//
|
|
// Start, Run, Cleanup routines
|
|
//
|
|
typedef BOOL (WINAPI * PFNINITWB)(void);
|
|
typedef void (WINAPI * PFNRUNWB)(void);
|
|
typedef void (WINAPI * PFNTERMWB)(void);
|
|
|
|
|
|
#endif // _H_AL
|
|
|