Componentes.Terceros.RemObj.../internal/5.0.23.613/1/RemObjects SDK for Delphi/Samples/Super TCP Channel Chat/ChatServerService_Impl.pas
david 472097efe5 - Eliminadas las librerías para Delphi 6 (Dcu\D6) en RO y DA.
- Recompilación de todos los paquetes de RO para poner RemObjects_Core_D10 como paquete de runtime/designtime.

git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@5 b6239004-a887-0f4b-9937-50029ccdca16
2007-09-10 11:08:08 +00:00

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.