События |
OnAuthentication(AUserName, APassword as String; ByRef AIsOK as Variant) |
OnAuthentication вызывается, когда клиент подключается к серверу. Вы должны проверить в нем имя пользователя и пароль. Если вернуть в AIsOK True, то клиенту будет разрешено подключиться, иначе клиент получит ошибку "Ошибка подключения". ЗАМЕТЬТЕ: в демонстрационной версии результат этого события игнорируется и любой клиент имеет право на подключение. Будьте осторожны! |
OnRequestObject(AObjectIDString as String; ByRef AResult as Variant) |
OnRequestObject вызывается, когда подключенный клиент запрашивает объект, определенный аргументом AProgID. Если это событие возвращает NULL в аргументе AResult, значит объект будет создан автоматически при помощи системной функции CoCreateInstance и при удачном создании объект будет передан клиенту. Для запрета создания объекта, определенного аргументом AProgID вы должны вернуть строку с описанием ошибки, которую впоследствии получит вместо объекта клиент (на стороне клиента будет сгенерировано исключение с указанной строкой). ЗАМЕТЬТЕ: в демонстрационной версии результат этого события игнорируется. Клиенту будет передан любой запрошенный объект! Также, поскольку это событие игнорируется, у вас нет возможности передать клиенту ваш внутренний объект, а только зарегистрированный в системе. Также у вас нет возможности контролировать запросы объектов! Будьте осторожны! В зарегистрированной версии этих ограничений нет! |
Пример реализации событий для VBScript:
'Определение обработчиков событий сервера:
'OnAuthentication вызывается, когда клиент подключается к серверу.
'Вы должны проверить в нем имя пользователя и пароль.
'Если вернуть в AIsOK True, то клиенту будет разрешено подключиться,
'иначе клиент получит ошибку "Ошибка подключения".
'ЗАМЕТЬТЕ: в демонстрационной версии результат этого события игнорируется
'и любой клиент имеет право на подключение. Будьте осторожны!
Function RPCServer_OnAuthentication(AUserName, APassword, ByRef AIsOK)
WScript.Echo "RPCServer_OnAuthentication: " & AUserName & ", " & APassword
If (AUserName = "RoutixUser") And (APassword = "Secret") Then
AIsOK = True
Else
AIsOK = False
End If
End Function
'OnRequestObject вызывается, когда подключенный клиент запрашивает
'объект, определенный аргументом AProgID. Если это событие
'возвращает NULL в аргументе AResult, значит объект будет
'создан автоматически при помощи системной функции CoCreateInstance
'и при удачном создании объект будет передан клиенту.
'Для запрета создания объекта, определенного аргументом AProgID вы
'должны вернуть строку с описанием ошибки, которую впоследствии
'получит вместо объекта клиент (на стороне клиента будет сгенерировано
'исключение с указанной строкой).
'ЗАМЕТЬТЕ: в демонстрационной версии результат этого события
'игнорируется. Клиенту будет передан любой запрошенный объект!
'Также, поскольку это событие игнорируется, у вас нет возможности
'передать клиенту ваш внутренний объект, а только зарегистрированный
'в системе. Также у вас нет возможности контролировать запросы объектов!
'Будьте осторожны! В зарегистрированной версии этих ограничений нет!
Function RPCServer_OnRequestObject(AProgID, ByRef AResult)
WScript.Echo "RPCServer_OnRequestObject: " & AProgID
If (AProgID = "WScript.Shell") Then
'Если вернуть NULL - RPC-сервер попытается создать объект
'автоматически с помощью CoCreateInstance и вернуть его клиенту.
AResult = NULL
ElseIf (AProgID = "FSysObj") Then
'также, проанализировав идентификатор объекта вы можете
'самостоятельно создать нужный объект и вернуть его клиенту.
Set AResult = WScript.CreateObject("Scripting.FileSystemObject")
Else
'Также вы можете запретить создавать какой-то объект(ы).
'Для этого верните строку с описанием ошибки для клиента.
AResult = "Доступ запрещен для объекта " & AProgID
End If
End Function