|
|
//****************************************************************************
//
// Module: ULS.DLL
// File: callback.cpp
// Content: This file contains the ULS callback routine.
// History:
// Wed 17-Apr-1996 11:13:54 -by- Viroon Touranachun [viroont]
//
// Copyright (c) Microsoft Corporation 1995-1996
//
//****************************************************************************
#include "ulsp.h"
#include "callback.h"
#include "culs.h"
#include "localusr.h"
#include "attribs.h"
#include "localprt.h"
#include "ulsmeet.h"
//****************************************************************************
// void OnRegisterResult(UINT uMsg, ULONG uMsgID, HRESULT hResult)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnRegisterResult(UINT uMsg, ULONG uMsgID, HRESULT hResult) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri))) { ASSERT(uMsg == ri.uReqType); CIlsUser *pUser = ReqInfo_GetUser (&ri);
switch(uMsg) { case WM_ILS_REGISTER_CLIENT: // lParam = hResult
//
// Call the appropriate object's member
//
ASSERT (pUser != NULL); if (pUser != NULL) pUser->InternalRegisterNext(hResult); break;
case WM_ILS_UNREGISTER_CLIENT: // lParam = hResult
//
// Call the appropriate object's member
//
ASSERT (pUser != NULL); if (pUser != NULL) pUser->InternalUnregisterNext(hResult); break;
default: ASSERT(0); break; };
// Release the objects
//
if (pUser != NULL) pUser->Release (); } else { DPRINTF1(TEXT("OnRegisterResult: No pending request for %x"), uMsgID); // ASSERT (0);
}; return; }
//****************************************************************************
// void OnLocalRegisterResult(UINT uMsg, ULONG uReqID, HRESULT hResult)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnLocalRegisterResult(UINT uMsg, ULONG uReqID, HRESULT hResult) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = uReqID; ri.uMsgID = 0;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri))) { ASSERT(uMsg == ri.uReqType); CIlsUser *pUser = ReqInfo_GetUser (&ri);
// Call the appropriate object's member
//
switch(uMsg) { case WM_ILS_LOCAL_REGISTER: ASSERT (pUser != NULL); if (pUser != NULL) pUser->RegisterResult(uReqID, hResult); break;
case WM_ILS_LOCAL_UNREGISTER: ASSERT (pUser != NULL); if (pUser != NULL) pUser->UnregisterResult(uReqID, hResult); break;
default: ASSERT(0); break; };
// Release the objects
//
if (pUser != NULL) pUser->Release (); } else { DPRINTF1(TEXT("OnLocalRegisterResult: No pending request for %x"), uReqID); // ASSERT (0);
}; return; }
//****************************************************************************
// void OnSetUserInfo(UINT uMsg, ULONG uID, HRESULT hResult)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnSetUserInfo(UINT uMsg, ULONG uID, HRESULT hResult) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
switch (uMsg) { case WM_ILS_SET_CLIENT_INFO: //
// Look for the matching Ldap Message ID
//
ri.uReqID = 0; // Mark that we are looking for the message ID
ri.uMsgID = uID; // Not the request ID
break;
default: ASSERT(0); break; };
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri))) { ASSERT(uMsg == ri.uReqType); CIlsUser *pUser = ReqInfo_GetUser (&ri);
ASSERT (pUser != NULL); if (pUser != NULL) { // Call the appropriate object's member
//
pUser->UpdateResult(ri.uReqID, hResult);
// Release the objects
//
pUser->Release(); } } else { DPRINTF1(TEXT("OnSetUserInfo: No pending request for %x"), uID); // ASSERT (0);
}; return; }
//****************************************************************************
// void OnSetProtocol(UINT uMsg, ULONG uID, HRESULT hResult)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnSetProtocol(UINT uMsg, ULONG uID, HRESULT hResult) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
APP_CHANGE_PROT uCmd;
switch (uMsg) { case WM_ILS_REGISTER_PROTOCOL:
// Look for the matching request information
//
ri.uReqID = 0; // Mark that we are looking for the message ID
ri.uMsgID = uID; // Not the request ID
uCmd = ILS_APP_ADD_PROT; break;
case WM_ILS_LOCAL_REGISTER_PROTOCOL:
// Look for the matching request information
//
ri.uReqID = uID; // Mark that we are looking for the request ID
ri.uMsgID = 0; // Not the message ID
uCmd = ILS_APP_ADD_PROT; break;
case WM_ILS_UNREGISTER_PROTOCOL:
// Look for the matching request information
//
ri.uReqID = 0; // Mark that we are looking for the message ID
ri.uMsgID = uID; // Not the request ID
uCmd = ILS_APP_REMOVE_PROT; break;
case WM_ILS_LOCAL_UNREGISTER_PROTOCOL:
// Look for the matching request information
//
ri.uReqID = uID; // Mark that we are looking for the request ID
ri.uMsgID = 0; // Not the message ID
uCmd = ILS_APP_REMOVE_PROT; break;
default: ASSERT(0); break; };
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri))) { ASSERT(uMsg == ri.uReqType); CIlsUser *pUser = ReqInfo_GetUser (&ri); CLocalProt *pProtocol = ReqInfo_GetProtocol (&ri);
// Check the request parameter
//
if (pProtocol == NULL) { switch(uMsg) { case WM_ILS_REGISTER_PROTOCOL:
// Call the appropriate object's member
//
ASSERT (pUser != NULL); if (pUser != NULL) pUser->InternalRegisterNext(hResult); break;
case WM_ILS_UNREGISTER_PROTOCOL:
// Call the appropriate object's member
//
ASSERT (pUser != NULL); if (pUser != NULL) pUser->InternalUnregisterNext(hResult); break;
default: // Must be a response from server
//
ASSERT(0); break; };
// Release the objects
//
if (pUser != NULL) pUser->Release(); } else { ASSERT (pUser != NULL && pProtocol != NULL); if (pUser != NULL && pProtocol != NULL) { // Call the appropriate object's member
//
pUser->ProtocolChangeResult(pProtocol, ri.uReqID, hResult, uCmd); // Release the objects
//
pUser->Release(); pProtocol->Release(); } }; } else { DPRINTF1(TEXT("OnSetProtocol: No pending request for %x"), uID); // ASSERT (0);
}; return; }
//****************************************************************************
// void OnEnumUserNamesResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnEnumUserNamesResult(ULONG uMsgID, PLDAP_ENUM ple) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_ENUM_CLIENTS == ri.uReqType); CIlsMain *pMain = ReqInfo_GetMain (&ri);
// Call the appropriate object's member
//
ASSERT (pMain != NULL); if (pMain != NULL) { pMain->EnumUserNamesResult(ri.uReqID, ple); }
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) || (ple->hResult != NOERROR)) { ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL) pMain->Release(); }; } else { DPRINTF1(TEXT("OnEnumUserNamesResult: No pending request for %x"), uMsgID); // ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL) { ::MemFree (ple); }; return; }
//****************************************************************************
// void OnEnumMeetingNamesResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
void OnEnumMeetingNamesResult(ULONG uMsgID, PLDAP_ENUM ple) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_ENUM_MEETINGS == ri.uReqType); CIlsMain *pMain = ReqInfo_GetMain (&ri); ASSERT (pMain != NULL); if (pMain != NULL) { // Call the appropriate object's member
//
pMain->EnumMeetingPlaceNamesResult(ri.uReqID, ple); }
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) || (ple->hResult != NOERROR)) { ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL) pMain->Release(); }; } else { DPRINTF1(TEXT("OnEnumMeetingNamesResult: No pending request for %x"), uMsgID); // ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL) { ::MemFree (ple); }; return; } #endif // ENABLE_MEETING_PLACE
//****************************************************************************
// void OnResolveUserResult(ULONG uMsgID, PLDAP_CLIENTINFO_RES puir)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnResolveUserResult(ULONG uMsgID, PLDAP_CLIENTINFO_RES puir) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri))) { ASSERT(WM_ILS_RESOLVE_CLIENT == ri.uReqType); CIlsServer *pServer = ReqInfo_GetServer (&ri); CIlsMain *pMain = ReqInfo_GetMain (&ri);
ASSERT (pMain != NULL && pServer != NULL); if (pMain != NULL && pServer != NULL) { // Call the appropriate object's member
//
pMain->GetUserResult(ri.uReqID, puir, pServer);
// Release the objects
//
pMain->Release(); pServer->Release (); } } else { DPRINTF1(TEXT("OnResolveUserResult: No pending request for %x"), uMsgID); // ASSERT (0);
};
// Free the information buffer
//
::MemFree (puir); return; }
//****************************************************************************
// void OnEnumUsersResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnEnumUsersResult(ULONG uMsgID, PLDAP_ENUM ple) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_ENUM_CLIENTINFOS == ri.uReqType);
// Call the appropriate object's member
//
CIlsServer *pServer = ReqInfo_GetServer (&ri); CIlsMain *pMain = ReqInfo_GetMain (&ri);
ASSERT (pServer != NULL && pMain != NULL); if (pServer != NULL && pMain != NULL) pMain->EnumUsersResult(ri.uReqID, ple, pServer);
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) || (ple->hResult != NOERROR)) { ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL) pMain->Release();
if (pServer != NULL) pServer->Release (); }; } else { DPRINTF1(TEXT("EnumUsersResult: No pending request for %x"), uMsgID); // ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL) { ::MemFree (ple); }; return; }
//****************************************************************************
// void OnEnumMeetingsResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
void OnEnumMeetingsResult(ULONG uMsgID, PLDAP_ENUM ple) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_ENUM_MEETINGINFOS == ri.uReqType);
// Call the appropriate object's member
//
CIlsServer *pServer = ReqInfo_GetServer (&ri); CIlsMain *pMain = ReqInfo_GetMain (&ri); ASSERT (pServer != NULL && pMain != NULL); if (pServer != NULL && pMain != NULL) { pMain->EnumMeetingPlacesResult(ri.uReqID, ple, pServer); }
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) || (ple->hResult != NOERROR)) { ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL) pMain->Release ();
if (pServer != NULL) pServer->Release (); }; } else { DPRINTF1(TEXT("EnumMeetingsResult: No pending request for %x"), uMsgID); // ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL) { ::MemFree (ple); }; return; } #endif // ENABLE_MEETING_PLACE
//****************************************************************************
// void OnEnumProtocolsResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnEnumProtocolsResult(ULONG uMsgID, PLDAP_ENUM ple) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri))) { ASSERT(WM_ILS_ENUM_PROTOCOLS == ri.uReqType); CIlsUser *pUser = ReqInfo_GetUser (&ri); ASSERT (pUser != NULL); if (pUser != NULL) { // Call the appropriate object's member
//
pUser->EnumProtocolsResult(ri.uReqID, ple);
// Release the objects
//
pUser->Release(); } } else { DPRINTF1(TEXT("EnumProtocolsResult: No pending request for %x"), uMsgID); // ASSERT (0);
};
// Free the information buffer
//
::MemFree (ple); return; }
//****************************************************************************
// void OnResolveProtocolResult(ULONG uMsgID, PLDAP_PROTINFO_RES ppir)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
void OnResolveProtocolResult(ULONG uMsgID, PLDAP_PROTINFO_RES ppir) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri))) { ASSERT(WM_ILS_RESOLVE_PROTOCOL == ri.uReqType); CIlsUser *pUser = ReqInfo_GetUser (&ri); ASSERT (pUser != NULL); if (pUser != NULL) { // Call the appropriate object's member
//
pUser->GetProtocolResult(ri.uReqID, ppir);
// Release the objects
//
pUser->Release(); } } else { DPRINTF1(TEXT("OnResolveProtocolResult: No pending request for %x"), uMsgID); // ASSERT (0);
};
// Free the information buffer
//
::MemFree (ppir); return; }
//****************************************************************************
// VOID OnClientNeedRelogon ( BOOL fPrimary, VOID *pUnk)
//
// History:
// Thur 07-Nov-1996 12:50:00 -by- Chu, Lon-Chan [lonchanc]
// Created.
//****************************************************************************
VOID OnClientNeedRelogon ( BOOL fPrimary, VOID *pUnk) { ASSERT (pUnk != NULL);
((CIlsUser *)pUnk)->StateChanged (WM_ILS_CLIENT_NEED_RELOGON, fPrimary); }
//****************************************************************************
// VOID OnClientNetworkDown ( BOOL fPrimary, VOID *pUnk)
//
// History:
// Thur 07-Nov-1996 12:50:00 -by- Chu, Lon-Chan [lonchanc]
// Created.
//****************************************************************************
VOID OnClientNetworkDown ( BOOL fPrimary, VOID *pUnk) { ASSERT (pUnk != NULL);
((CIlsUser *)pUnk)->StateChanged (WM_ILS_CLIENT_NETWORK_DOWN, fPrimary); }
//****************************************************************************
// void OnResolveUserResult(ULONG uMsgID, PLDAP_CLIENTINFO_RES puir)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
void OnResolveMeetingPlaceResult (ULONG uMsgID, PLDAP_MEETINFO_RES pmir) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->RequestDone(&ri))) { ASSERT(WM_ILS_RESOLVE_MEETING == ri.uReqType);
CIlsServer *pServer = ReqInfo_GetServer (&ri); CIlsMain *pMain = ReqInfo_GetMain (&ri); ASSERT (pMain != NULL && pServer != NULL); if (pMain != NULL && pServer != NULL) { // Call the appropriate object's member
//
pMain->GetMeetingPlaceResult(ri.uReqID, pmir, pIlsServer);
// Release the objects
//
pServer->Release (); pMain->Release(); } } else { DPRINTF1(TEXT("OnResolveMeetingPlaceResult: No pending request for %x"), uMsgID); // ASSERT (0);
};
// Free the information buffer
//
::MemFree (pmir); return; } #endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnEnumMeetingPlacesResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
void OnEnumMeetingPlacesResult(ULONG uMsgID, PLDAP_ENUM ple) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_ENUM_MEETINGINFOS == ri.uReqType); CIlsServer *pServer = ReqInfo_GetServer (&ri); CIlsMain *pMain = ReqInfo_GetMain (&ri);
ASSERT (pServer != NULL && pMain != NULL); if (pServer != NULL && pMain != NULL) { // Call the appropriate object's member
//
pMain->EnumMeetingPlacesResult(ri.uReqID, ple, pServer); }
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) || (ple->hResult != NOERROR)) { ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL) pMain->Release();
if (pServer != NULL) pServer->Release (); }; } else { DPRINTF1(TEXT("EnumMeetingsResult: No pending request for %x"), uMsgID); // ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL) { ::MemFree (ple); }; return; } #endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnEnumMeetingPlaceNamesResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
void OnEnumMeetingPlaceNamesResult(ULONG uMsgID, PLDAP_ENUM ple) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_ENUM_MEETINGS == ri.uReqType);
// Call the appropriate object's member
//
CIlsMain *pMain = ReqInfo_GetMain (&ri); ASSERT (pMain != NULL); if (pMain != NULL) { pMain->EnumMeetingPlaceNamesResult(ri.uReqID, ple); }
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) || (ple->hResult != NOERROR)) { ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMain != NULL) pMain->Release(); }; } else { DPRINTF1(TEXT("OnEnumMeetingPlaceNamesResult: No pending request for %x"), uMsgID); // ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL) { ::MemFree (ple); }; return; } #endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnRegisterMeetingPlaceResult(ULONG uMsgID, HRESULT hr)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnRegisterMeetingPlaceResult(ULONG uMsgID, HRESULT hr) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_REGISTER_MEETING == ri.uReqType); CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri); ASSERT (pMeeting != NULL); if (pMeeting != NULL) pMeeting->RegisterResult(ri.uReqID, hr);
ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL) pMeeting->Release(); } } #endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnUnregisterMeetingPlaceResult(ULONG uMsgID, HRESULT hr)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnUnregisterMeetingPlaceResult(ULONG uMsgID, HRESULT hr) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_UNREGISTER_MEETING == ri.uReqType); CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri); ASSERT (pMeeting != NULL); if (pMeeting != NULL) pMeeting->UnregisterResult(ri.uReqID, hr);
ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL) pMeeting->Release(); } } #endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnUpdateMeetingResult(ULONG uMsgID, HRESULT hr)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnUpdateMeetingResult(ULONG uMsgID, HRESULT hr) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_SET_MEETING_INFO == ri.uReqType); CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri); ASSERT (pMeeting != NULL); if (pMeeting != NULL) pMeeting->UpdateResult(ri.uReqID, hr);
ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL) pMeeting->Release(); } } #endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnAddAttendeeResult(ULONG uMsgID, HRESULT hr)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnAddAttendeeResult(ULONG uMsgID, HRESULT hr) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_ADD_ATTENDEE == ri.uReqType); CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri); ASSERT (pMeeting != NULL); if (pMeeting != NULL) pMeeting->AddAttendeeResult(ri.uReqID, hr);
ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL) pMeeting->Release(); } } #endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnRemoveAttendeeResult(ULONG uMsgID, HRESULT hr)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnRemoveAttendeeResult(ULONG uMsgID, HRESULT hr) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_REMOVE_ATTENDEE == ri.uReqType); CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri); ASSERT (pMeeting != NULL); if (pMeeting != NULL) pMeeting->RemoveAttendeeResult(ri.uReqID, hr);
ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL) pMeeting->Release(); } } #endif // ENABLE_MEETING_PLACE
//****************************************************************************
// Routine: OnEnumAttendeesResult(ULONG uMsgID, PLDAP_ENUM ple)
//
// Synopsis:
//
// Arguments:
//
// Returns: void
//
// History: 11/27/1996 Shishir Pardikar [shishirp] Created.
//
// Notes:
//
//****************************************************************************
#ifdef ENABLE_MEETING_PLACE
VOID OnEnumAttendeesResult(ULONG uMsgID, PLDAP_ENUM ple) { COM_REQ_INFO ri; ReqInfo_Init (&ri);
// Look for the matching request information
//
ri.uReqID = 0; ri.uMsgID = uMsgID;
if (SUCCEEDED(g_pReqMgr->GetRequestInfo(&ri))) { ASSERT(WM_ILS_ENUM_ATTENDEES == ri.uReqType);
// Call the appropriate object's member
//
CIlsMeetingPlace *pMeeting = ReqInfo_GetMeeting (&ri); ASSERT (pMeeting != NULL); if (pMeeting != NULL) pMeeting->EnumAttendeeNamesResult(ri.uReqID, ple);
// If the enumeration was terminated, remove the pending request
//
if ((ple == NULL) || (ple->hResult != NOERROR)) { ri.uReqID = 0; ri.uMsgID = uMsgID; g_pReqMgr->RequestDone(&ri);
// Release the objects
//
if (pMeeting != NULL) pMeeting->Release(); }; } else { DPRINTF1(TEXT("OnEnumUserNamesResult: No pending request for %x"), uMsgID); // ASSERT (0);
};
// Free the information buffer
//
if (ple != NULL) { ::MemFree (ple); }; } #endif // ENABLE_MEETING_PLACE
//****************************************************************************
// long CALLBACK ULSNotifyProc(HWND hwnd, UINT message, WPARAM wParam,
// LPARAM lParam)
//
// History:
// Wed 17-Apr-1996 11:14:03 -by- Viroon Touranachun [viroont]
// Created.
//****************************************************************************
LRESULT CALLBACK ULSNotifyProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { #ifdef ENABLE_MEETING_PLACE
case WM_ILS_REGISTER_MEETING: ::OnRegisterMeetingPlaceResult(wParam, lParam); break;
case WM_ILS_UNREGISTER_MEETING: ::OnUnregisterMeetingPlaceResult(wParam, lParam); break;
case WM_ILS_SET_MEETING_INFO: ::OnUpdateMeetingResult(wParam, lParam); break;
case WM_ILS_ADD_ATTENDEE: ::OnAddAttendeeResult(wParam, lParam); break;
case WM_ILS_REMOVE_ATTENDEE: ::OnRemoveAttendeeResult(wParam, lParam); break;
case WM_ILS_RESOLVE_MEETING: ::OnResolveMeetingPlaceResult (wParam, (PLDAP_MEETINFO_RES) lParam);
case WM_ILS_ENUM_MEETINGINFOS: ::OnEnumMeetingPlacesResult(wParam, (PLDAP_ENUM)lParam); break;
case WM_ILS_ENUM_MEETINGS: ::OnEnumMeetingPlaceNamesResult(wParam, (PLDAP_ENUM)lParam); break;
case WM_ILS_ENUM_ATTENDEES: ::OnEnumAttendeesResult(wParam, (PLDAP_ENUM)lParam); break; #endif // ENABLE_MEETING_PLACE
case WM_ILS_REGISTER_CLIENT: // lParam = hResult
case WM_ILS_UNREGISTER_CLIENT: // lParam = hResult
::OnRegisterResult(message, (ULONG)wParam, (HRESULT)lParam); break;
case WM_ILS_SET_CLIENT_INFO: // lParam = hResult
::OnSetUserInfo (message, (ULONG)wParam, (HRESULT)lParam); break;
case WM_ILS_REGISTER_PROTOCOL: // lParam = hResult
case WM_ILS_UNREGISTER_PROTOCOL: // lParam = hResult
::OnSetProtocol (message, (ULONG)wParam, (HRESULT)lParam); break;
case WM_ILS_LOCAL_REGISTER: // lParam = hResult
case WM_ILS_LOCAL_UNREGISTER: // lParam = hResult
::OnLocalRegisterResult(message, (ULONG)wParam, (HRESULT)lParam); break;
case WM_ILS_ENUM_CLIENTS: // lParam = PLDAP_ENUM
::OnEnumUserNamesResult((ULONG)wParam, (PLDAP_ENUM)lParam); break;
case WM_ILS_RESOLVE_CLIENT: // lParam = PLDAP_CLIENTINFO_RES
::OnResolveUserResult((ULONG)wParam, (PLDAP_CLIENTINFO_RES)lParam); break;
case WM_ILS_ENUM_CLIENTINFOS: // lParam = PLDAP_ENUM
::OnEnumUsersResult((ULONG)wParam, (PLDAP_ENUM)lParam); break;
case WM_ILS_ENUM_PROTOCOLS: // lParam = PLDAP_ENUM
::OnEnumProtocolsResult((ULONG)wParam, (PLDAP_ENUM)lParam); break;
case WM_ILS_RESOLVE_PROTOCOL: // lParam = PLDAP_PROTINFO_RES
::OnResolveProtocolResult((ULONG)wParam, (PLDAP_PROTINFO_RES)lParam); break;
case WM_ILS_CLIENT_NEED_RELOGON: // wParam=fPrimary, lParam=Object Pointer
::OnClientNeedRelogon ((BOOL) wParam, (VOID *) lParam); break;
case WM_ILS_CLIENT_NETWORK_DOWN: // wParam=fPrimary, lParam=Object
::OnClientNetworkDown ((BOOL) wParam, (VOID *) lParam); break;
default: return DefWindowProc(hwnd, message, wParam, lParam); }
return 0L; }
|