- Recompilación en Delphi10 de todos los paquetes de RO para generar las DCU's en Lib\D10 - Recompilación en Delphi10 de todos los paquetes de DA para generar las DCU's en Lib\D10 git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@9 b6239004-a887-0f4b-9937-50029ccdca16
84 lines
2.5 KiB
ObjectPascal
84 lines
2.5 KiB
ObjectPascal
unit ChatServerService_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, SyncObjs,
|
|
{RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions,
|
|
{Required:} uRORemoteDataModule,
|
|
{Generated:} SuperTCPChannelChatLibrary_Intf;
|
|
|
|
type
|
|
{ TChatServerService }
|
|
TChatServerService = class(TRORemoteDataModule, IChatServerService)
|
|
private
|
|
protected
|
|
{ IChatServerService methods }
|
|
procedure TalkPrivate(const TargetNickname: String; const Message: String);
|
|
procedure Talk(const Message: String);
|
|
end;
|
|
|
|
var
|
|
UserClientIDList: TStringList;
|
|
UserClientIDListCs: TCriticalSection;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
uses
|
|
{Generated:} SuperTCPChannelChatLibrary_Invk, SuperTCPChannelChat_ServerMain;
|
|
|
|
procedure Create_ChatServerService(out anInstance : IUnknown);
|
|
begin
|
|
anInstance := TChatServerService.Create(nil);
|
|
end;
|
|
|
|
{ ChatServerService }
|
|
procedure TChatServerService.TalkPrivate(const TargetNickname: String; const Message: String);
|
|
var
|
|
ev: IChatEvents_Writer;
|
|
i: Integer;
|
|
aDestGuid: string;
|
|
begin
|
|
UserClientIDListCs.Acquire;
|
|
try
|
|
i := UserClientIDList.IndexOfName(TargetNickname);
|
|
if i = -1 then
|
|
raise Exception.Create('Invalid user: '+TargetNickname);
|
|
aDestGuid := UserClientIDList.Values[TargetNickname];
|
|
finally
|
|
UserClientIDListCs.Release;
|
|
end;
|
|
ev := (EventRepository as IChatEvents_Writer);
|
|
ev.ExcludeSender := False;
|
|
ev.SessionList.Add(aDestGuid);
|
|
ev.Message(session.SessionID, Session['nick'], TargetNickname, Message);
|
|
end;
|
|
|
|
procedure TChatServerService.Talk(const Message: String);
|
|
var
|
|
ev: IChatEvents_Writer;
|
|
begin
|
|
ev := (EventRepository as IChatEvents_Writer);
|
|
ev.ExcludeSender := False;
|
|
ev.Message(session.SessionID, Session['nick'], '', Message);
|
|
end;
|
|
|
|
initialization
|
|
TROClassFactory.Create('ChatServerService', Create_ChatServerService, TChatServerService_Invoker);
|
|
|
|
UserClientIDList := TStringList.Create;
|
|
UserClientIDListCs := TCriticalSection.Create;
|
|
finalization
|
|
|
|
UserClientIDListCs.Free;
|
|
UserClientIDList.Free;
|
|
end.
|