unit BroadcastChatService_Impl; {----------------------------------------------------------------------------} { This unit was automatically generated by the RemObjects SDK after reading } { the RODL file associated with this project . } { } { This is where you are supposed to code the implementation of your objects. } {----------------------------------------------------------------------------} interface uses {vcl:} Classes, SysUtils, {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, {Generated:} BroadcastChatLibrary_Intf; type { TBroadcastChatService } TBroadcastChatService = class(TRORemotable, IBroadcastChatService) private fSync_Date: TDateTime; fSync_From, fSync_Message: string; protected { IBroadcastChatService methods } procedure SendMessage(const iDate: DateTime; const iFrom: string; const iMessage: string); function GetInfo: string; public procedure MessageReceived; end; implementation uses {Generated:} BroadcastChatLibrary_Invk, BroadcastChatMain{$IFDEF VER140}, Windows, Messages{$ENDIF}; procedure Create_BroadcastChatService(out anInstance: IUnknown); begin anInstance := TBroadcastChatService.Create; end; { BroadcastChatService } procedure TBroadcastChatService.SendMessage(const iDate: DateTime; const iFrom: string; const iMessage: string); begin fSync_Date := iDate; fSync_From := iFrom; fSync_Message := iMessage; {$IFDEF VER140} Windows.SendMessage(BroadcastChatMainForm.Handle, WM_USER, Longint(Self), 0); // workaround for d6 {$ELSE} Synchronize(MessageReceived); {$ENDIF} end; function TBroadcastChatService.GetInfo: string; begin { we'll just assume that this operation is trivial enough to be threadsafe ;-} result := BroadcastChatMainForm.ed_NickName.Text; end; procedure TBroadcastChatService.MessageReceived; begin BroadcastChatMainForm.MessageReceived(fSync_Date, fSync_From, fSync_Message); end; initialization TROClassFactory.Create('BroadcastChatService', Create_BroadcastChatService, TBroadcastChatService_Invoker); finalization end.