unit SuperTCPChannelChatLibrary_Intf; {----------------------------------------------------------------------------} { This unit was automatically generated by the RemObjects SDK after reading } { the RODL file associated with this project . } { } { Do not modify this unit manually, or your changes will be lost when this } { unit is regenerated the next time you compile the project. } {----------------------------------------------------------------------------} interface uses {vcl:} Classes, TypInfo, {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf; const { Library ID } LibraryUID = '{8A53A750-1F2B-4060-AAC0-77B4FC071D2D}'; { Service Interface ID's } IChatServerService_IID : TGUID = '{6CC2111F-DDD6-4CF5-AB57-2CD98EF4FF5B}'; ILoginService_IID : TGUID = '{3D19AEB1-6D2F-4142-B937-B97367133A2F}'; { Event ID's } EID_ChatEvents = 'ChatEvents'; type { Forward declarations } IChatServerService = interface; ILoginService = interface; IChatEvents = interface; { IChatServerService } IChatServerService = interface ['{6CC2111F-DDD6-4CF5-AB57-2CD98EF4FF5B}'] procedure TalkPrivate(const TargetNickname: String; const Message: String); procedure Talk(const Message: String); end; { CoChatServerService } CoChatServerService = class class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IChatServerService; end; { TChatServerService_Proxy } TChatServerService_Proxy = class(TROProxy, IChatServerService) protected function __GetInterfaceName:string; override; procedure TalkPrivate(const TargetNickname: String; const Message: String); procedure Talk(const Message: String); end; { ILoginService } ILoginService = interface ['{3D19AEB1-6D2F-4142-B937-B97367133A2F}'] procedure Login(const Nickname: String); procedure Logout; end; { CoLoginService } CoLoginService = class class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; end; { TLoginService_Proxy } TLoginService_Proxy = class(TROProxy, ILoginService) protected function __GetInterfaceName:string; override; procedure Login(const Nickname: String); procedure Logout; end; { IChatEvents } IChatEvents = interface ['{C456D3B2-E44A-4FA6-8F71-3838D7F7525B}'] procedure Message(const From: String; const Target: String; const Message: String); procedure UserLogin(const Nickname: String); procedure UserLogout(const Nickname: String); procedure ShutdownServer; end; { IChatEvents_Writer } IChatEvents_Writer = interface(IROEventsWriter) ['{C456D3B2-E44A-4FA6-8F71-3838D7F7525B}'] procedure Message(const __Sender : TGUID; const From: String; const Target: String; const Message: String); procedure UserLogin(const __Sender : TGUID; const Nickname: String); procedure UserLogout(const __Sender : TGUID; const Nickname: String); procedure ShutdownServer(const __Sender : TGUID); end; implementation uses {vcl:} SysUtils, {RemObjects:} uROEventRepository, uRORes; { CoChatServerService } class function CoChatServerService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IChatServerService; begin result := TChatServerService_Proxy.Create(aMessage, aTransportChannel); end; { TChatServerService_Proxy } function TChatServerService_Proxy.__GetInterfaceName:string; begin result := 'ChatServerService'; end; procedure TChatServerService_Proxy.TalkPrivate(const TargetNickname: String; const Message: String); begin try __Message.InitializeRequestMessage(__TransportChannel, 'SuperTCPChannelChatLibrary', __InterfaceName, 'TalkPrivate'); __Message.Write('TargetNickname', TypeInfo(String), TargetNickname, []); __Message.Write('Message', TypeInfo(String), Message, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; procedure TChatServerService_Proxy.Talk(const Message: String); begin try __Message.InitializeRequestMessage(__TransportChannel, 'SuperTCPChannelChatLibrary', __InterfaceName, 'Talk'); __Message.Write('Message', TypeInfo(String), Message, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; { CoLoginService } class function CoLoginService.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): ILoginService; begin result := TLoginService_Proxy.Create(aMessage, aTransportChannel); end; { TLoginService_Proxy } function TLoginService_Proxy.__GetInterfaceName:string; begin result := 'LoginService'; end; procedure TLoginService_Proxy.Login(const Nickname: String); begin try __Message.InitializeRequestMessage(__TransportChannel, 'SuperTCPChannelChatLibrary', __InterfaceName, 'Login'); __Message.Write('Nickname', TypeInfo(String), Nickname, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; procedure TLoginService_Proxy.Logout; begin try __Message.InitializeRequestMessage(__TransportChannel, 'SuperTCPChannelChatLibrary', __InterfaceName, 'Logout'); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; type { TChatEvents_Writer } TChatEvents_Writer = class(TROEventWriter, IChatEvents_Writer) protected procedure Message(const __Sender : TGUID; const From: String; const Target: String; const Message: String); procedure UserLogin(const __Sender : TGUID; const Nickname: String); procedure UserLogout(const __Sender : TGUID; const Nickname: String); procedure ShutdownServer(const __Sender : TGUID); end; procedure TChatEvents_Writer.Message(const __Sender : TGUID; const From: String; const Target: String; const Message: String); var __eventdata : Binary; begin __eventdata := Binary.Create; try __Message.InitializeEventMessage(NIL, 'SuperTCPChannelChatLibrary', EID_ChatEvents, 'Message'); __Message.Write('From', TypeInfo(String), From, []); __Message.Write('Target', TypeInfo(String), Target, []); __Message.Write('Message', TypeInfo(String), Message, []); __Message.Finalize; __Message.WriteToStream(__eventdata); Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText); except __eventdata.Free; end; end; procedure TChatEvents_Writer.UserLogin(const __Sender : TGUID; const Nickname: String); var __eventdata : Binary; begin __eventdata := Binary.Create; try __Message.InitializeEventMessage(NIL, 'SuperTCPChannelChatLibrary', EID_ChatEvents, 'UserLogin'); __Message.Write('Nickname', TypeInfo(String), Nickname, []); __Message.Finalize; __Message.WriteToStream(__eventdata); Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText); except __eventdata.Free; end; end; procedure TChatEvents_Writer.UserLogout(const __Sender : TGUID; const Nickname: String); var __eventdata : Binary; begin __eventdata := Binary.Create; try __Message.InitializeEventMessage(NIL, 'SuperTCPChannelChatLibrary', EID_ChatEvents, 'UserLogout'); __Message.Write('Nickname', TypeInfo(String), Nickname, []); __Message.Finalize; __Message.WriteToStream(__eventdata); Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText); except __eventdata.Free; end; end; procedure TChatEvents_Writer.ShutdownServer(const __Sender : TGUID); var __eventdata : Binary; begin __eventdata := Binary.Create; try __Message.InitializeEventMessage(NIL, 'SuperTCPChannelChatLibrary', EID_ChatEvents, 'ShutdownServer'); __Message.Finalize; __Message.WriteToStream(__eventdata); Repository.StoreEventData(__Sender, __eventdata, ExcludeSender, ExcludeSessionList, SessionList.CommaText); except __eventdata.Free; end; end; type { TChatEvents_Invoker } TChatEvents_Invoker = class(TROEventInvoker) published procedure Invoke_Message(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); procedure Invoke_UserLogin(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); procedure Invoke_UserLogout(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); procedure Invoke_ShutdownServer(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); end; procedure TChatEvents_Invoker.Invoke_Message(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); var __lObjectDisposer: TROObjectDisposer; From: String; Target: String; Message: String; begin try __Message.Read('From', TypeInfo(String), From, []); __Message.Read('Target', TypeInfo(String), Target, []); __Message.Read('Message', TypeInfo(String), Message, []); (__Target as IChatEvents).Message(From, Target, Message); finally __lObjectDisposer:= TROObjectDisposer.Create(__EventReceiver); try finally __lObjectDisposer.Free(); end end end; procedure TChatEvents_Invoker.Invoke_UserLogin(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); var __lObjectDisposer: TROObjectDisposer; Nickname: String; begin try __Message.Read('Nickname', TypeInfo(String), Nickname, []); (__Target as IChatEvents).UserLogin(Nickname); finally __lObjectDisposer:= TROObjectDisposer.Create(__EventReceiver); try finally __lObjectDisposer.Free(); end end end; procedure TChatEvents_Invoker.Invoke_UserLogout(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); var __lObjectDisposer: TROObjectDisposer; Nickname: String; begin try __Message.Read('Nickname', TypeInfo(String), Nickname, []); (__Target as IChatEvents).UserLogout(Nickname); finally __lObjectDisposer:= TROObjectDisposer.Create(__EventReceiver); try finally __lObjectDisposer.Free(); end end end; procedure TChatEvents_Invoker.Invoke_ShutdownServer(__EventReceiver : TROEventReceiver; const __Message : IROMessage; const __Target : IUnknown); var __lObjectDisposer: TROObjectDisposer; begin try (__Target as IChatEvents).ShutdownServer(); finally __lObjectDisposer:= TROObjectDisposer.Create(__EventReceiver); try finally __lObjectDisposer.Free(); end end end; initialization RegisterProxyClass(IChatServerService_IID, TChatServerService_Proxy); RegisterProxyClass(ILoginService_IID, TLoginService_Proxy); RegisterEventWriterClass(IChatEvents_Writer, TChatEvents_Writer); RegisterEventInvokerClass(EID_ChatEvents, TChatEvents_Invoker); finalization UnregisterProxyClass(IChatServerService_IID); UnregisterProxyClass(ILoginService_IID); UnregisterEventWriterClass(IChatEvents_Writer); UnregisterEventInvokerClass(EID_ChatEvents); end.