unit ROMasterServerLibrary_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 {$I RemObjects.inc} uses {vcl:} Classes, TypInfo, {RemObjects:} uROClasses, uROClient, uROTypes, uROClientIntf; const { Library ID } LibraryUID = '{3B3A1E32-67EF-4541-A26A-73F27A8608BD}'; { Service Interface ID's } IROSessionManager_IID : TGUID = '{9B77C6B4-F2CA-4CFF-91F5-A194265725CF}'; { Event ID's } type { Forward declarations } IROSessionManager = interface; TROSessionManagerConfiguration = class; TROUserSession = class; { TROSessionManagerConfiguration } TROSessionManagerConfiguration = class(TROComplexType) private fMaxSessions: Integer; fSessionDuration: Integer; fMessageDuration: Integer; public procedure Assign(iSource: TPersistent); override; published property MaxSessions:Integer read fMaxSessions write fMaxSessions; property SessionDuration:Integer read fSessionDuration write fSessionDuration; property MessageDuration:Integer read fMessageDuration write fMessageDuration; end; { TROSessionManagerConfigurationCollection } TROSessionManagerConfigurationCollection = class(TROCollection) protected constructor Create(aItemClass: TCollectionItemClass); overload; function GetItems(Index: integer): TROSessionManagerConfiguration; procedure SetItems(Index: integer; const Value: TROSessionManagerConfiguration); public constructor Create; overload; function Add: TROSessionManagerConfiguration; reintroduce; property Items[Index: integer]:TROSessionManagerConfiguration read GetItems write SetItems; default; end; { TROUserSession } TROUserSession = class(TROComplexType) private fSessionID: String; fCreated: DateTime; fLastAccessed: DateTime; fData: Binary; function GetData: Binary; public procedure Assign(iSource: TPersistent); override; published property SessionID:String read fSessionID write fSessionID; property Created:DateTime read fCreated write fCreated; property LastAccessed:DateTime read fLastAccessed write fLastAccessed; property Data:Binary read GetData write fData; end; { TROUserSessionCollection } TROUserSessionCollection = class(TROCollection) protected constructor Create(aItemClass: TCollectionItemClass); overload; function GetItems(Index: integer): TROUserSession; procedure SetItems(Index: integer; const Value: TROUserSession); public constructor Create; overload; function Add: TROUserSession; reintroduce; property Items[Index: integer]:TROUserSession read GetItems write SetItems; default; end; { IROSessionManager } IROSessionManager = interface ['{9B77C6B4-F2CA-4CFF-91F5-A194265725CF}'] function ReadConfiguration: TROSessionManagerConfiguration; procedure UpdateConfiguration(const Configuration: TROSessionManagerConfiguration); function CreateSession(const SessionID: String; const SessionData: Binary): Boolean; function ReadSession(const SessionID: String): TROUserSession; procedure UpdateSession(const SessionID: String; const SessionData: Binary); function DeleteSession(const SessionID: String): Boolean; procedure ClearSessions(const OnlyExpired: Boolean); function GetSessionCount: Integer; procedure StoreMessage(const SourceSessionID: String; const MessageData: Binary; const ExcludeSender: Boolean; const ExcludeSessionList: Boolean; const SessionList: String); function GetMessages(const SessionID: String; out MessageData: Binary): Integer; function GetTimeout: Integer; procedure SetTimeout(const value: Integer); end; { CoROSessionManager } CoROSessionManager = class class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IROSessionManager; end; { TROSessionManager_Proxy } TROSessionManager_Proxy = class(TROProxy, IROSessionManager) protected function __GetInterfaceName:string; override; function ReadConfiguration: TROSessionManagerConfiguration; procedure UpdateConfiguration(const Configuration: TROSessionManagerConfiguration); function CreateSession(const SessionID: String; const SessionData: Binary): Boolean; function ReadSession(const SessionID: String): TROUserSession; procedure UpdateSession(const SessionID: String; const SessionData: Binary); function DeleteSession(const SessionID: String): Boolean; procedure ClearSessions(const OnlyExpired: Boolean); function GetSessionCount: Integer; procedure StoreMessage(const SourceSessionID: String; const MessageData: Binary; const ExcludeSender: Boolean; const ExcludeSessionList: Boolean; const SessionList: String); function GetMessages(const SessionID: String; out MessageData: Binary): Integer; function GetTimeout: Integer; procedure SetTimeout(const value: Integer); end; implementation uses {vcl:} SysUtils, {RemObjects:} uROEventRepository, uRORes; { TROSessionManagerConfiguration } procedure TROSessionManagerConfiguration.Assign(iSource: TPersistent); var lSource: ROMasterServerLibrary_Intf.TROSessionManagerConfiguration; begin inherited Assign(iSource); if (iSource is ROMasterServerLibrary_Intf.TROSessionManagerConfiguration) then begin lSource := ROMasterServerLibrary_Intf.TROSessionManagerConfiguration(iSource); MaxSessions := lSource.MaxSessions; SessionDuration := lSource.SessionDuration; MessageDuration := lSource.MessageDuration; end; end; { TROSessionManagerConfigurationCollection } constructor TROSessionManagerConfigurationCollection.Create; begin inherited Create(TROSessionManagerConfiguration); end; constructor TROSessionManagerConfigurationCollection.Create(aItemClass: TCollectionItemClass); begin inherited Create(aItemClass); end; function TROSessionManagerConfigurationCollection.Add: TROSessionManagerConfiguration; begin result := TROSessionManagerConfiguration(inherited Add); end; function TROSessionManagerConfigurationCollection.GetItems(Index: integer): TROSessionManagerConfiguration; begin result := TROSessionManagerConfiguration(inherited Items[Index]); end; procedure TROSessionManagerConfigurationCollection.SetItems(Index: integer; const Value: TROSessionManagerConfiguration); begin TROSessionManagerConfiguration(inherited Items[Index]).Assign(Value); end; { TROUserSession } procedure TROUserSession.Assign(iSource: TPersistent); var lSource: ROMasterServerLibrary_Intf.TROUserSession; begin inherited Assign(iSource); if (iSource is ROMasterServerLibrary_Intf.TROUserSession) then begin lSource := ROMasterServerLibrary_Intf.TROUserSession(iSource); SessionID := lSource.SessionID; Created := lSource.Created; LastAccessed := lSource.LastAccessed; if Assigned(Data) then Data.Assign(lSource.Data); end; end; function TROUserSession.GetData: Binary; begin result := fData; end; { TROUserSessionCollection } constructor TROUserSessionCollection.Create; begin inherited Create(TROUserSession); end; constructor TROUserSessionCollection.Create(aItemClass: TCollectionItemClass); begin inherited Create(aItemClass); end; function TROUserSessionCollection.Add: TROUserSession; begin result := TROUserSession(inherited Add); end; function TROUserSessionCollection.GetItems(Index: integer): TROUserSession; begin result := TROUserSession(inherited Items[Index]); end; procedure TROUserSessionCollection.SetItems(Index: integer; const Value: TROUserSession); begin TROUserSession(inherited Items[Index]).Assign(Value); end; { CoROSessionManager } class function CoROSessionManager.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IROSessionManager; begin result := TROSessionManager_Proxy.Create(aMessage, aTransportChannel); end; { TROSessionManager_Proxy } function TROSessionManager_Proxy.__GetInterfaceName:string; begin result := 'ROSessionManager'; end; function TROSessionManager_Proxy.ReadConfiguration: TROSessionManagerConfiguration; begin try result := nil; __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'ReadConfiguration'); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(ROMasterServerLibrary_Intf.TROSessionManagerConfiguration), result, []); finally __Message.FreeStream; end end; procedure TROSessionManager_Proxy.UpdateConfiguration(const Configuration: TROSessionManagerConfiguration); begin try __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'UpdateConfiguration'); __Message.Write('Configuration', TypeInfo(ROMasterServerLibrary_Intf.TROSessionManagerConfiguration), Configuration, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; function TROSessionManager_Proxy.CreateSession(const SessionID: String; const SessionData: Binary): Boolean; begin try __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'CreateSession'); __Message.Write('SessionID', TypeInfo(String), SessionID, []); __Message.Write('SessionData', TypeInfo(Binary), SessionData, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Boolean), result, []); finally __Message.FreeStream; end end; function TROSessionManager_Proxy.ReadSession(const SessionID: String): TROUserSession; begin try result := nil; __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'ReadSession'); __Message.Write('SessionID', TypeInfo(String), SessionID, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(ROMasterServerLibrary_Intf.TROUserSession), result, []); finally __Message.FreeStream; end end; procedure TROSessionManager_Proxy.UpdateSession(const SessionID: String; const SessionData: Binary); begin try __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'UpdateSession'); __Message.Write('SessionID', TypeInfo(String), SessionID, []); __Message.Write('SessionData', TypeInfo(Binary), SessionData, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; function TROSessionManager_Proxy.DeleteSession(const SessionID: String): Boolean; begin try __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'DeleteSession'); __Message.Write('SessionID', TypeInfo(String), SessionID, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Boolean), result, []); finally __Message.FreeStream; end end; procedure TROSessionManager_Proxy.ClearSessions(const OnlyExpired: Boolean); begin try __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'ClearSessions'); __Message.Write('OnlyExpired', TypeInfo(Boolean), OnlyExpired, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; function TROSessionManager_Proxy.GetSessionCount: Integer; begin try __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'GetSessionCount'); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Integer), result, []); finally __Message.FreeStream; end end; procedure TROSessionManager_Proxy.StoreMessage(const SourceSessionID: String; const MessageData: Binary; const ExcludeSender: Boolean; const ExcludeSessionList: Boolean; const SessionList: String); begin try __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'StoreMessage'); __Message.Write('SourceSessionID', TypeInfo(String), SourceSessionID, []); __Message.Write('MessageData', TypeInfo(Binary), MessageData, []); __Message.Write('ExcludeSender', TypeInfo(Boolean), ExcludeSender, []); __Message.Write('ExcludeSessionList', TypeInfo(Boolean), ExcludeSessionList, []); __Message.Write('SessionList', TypeInfo(String), SessionList, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; function TROSessionManager_Proxy.GetMessages(const SessionID: String; out MessageData: Binary): Integer; begin try MessageData := nil; __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'GetMessages'); __Message.Write('SessionID', TypeInfo(String), SessionID, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Integer), result, []); __Message.Read('MessageData', TypeInfo(Binary), MessageData, []); finally __Message.FreeStream; end end; function TROSessionManager_Proxy.GetTimeout: Integer; begin try __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'GetTimeout'); __Message.Finalize; __TransportChannel.Dispatch(__Message); __Message.Read('Result', TypeInfo(Integer), result, []); finally __Message.FreeStream; end end; procedure TROSessionManager_Proxy.SetTimeout(const value: Integer); begin try __Message.InitializeRequestMessage(__TransportChannel, 'ROMasterServerLibrary', __InterfaceName, 'SetTimeout'); __Message.Write('value', TypeInfo(Integer), value, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); finally __Message.FreeStream; end end; initialization RegisterROClass(TROSessionManagerConfiguration); RegisterROClass(TROUserSession); RegisterProxyClass(IROSessionManager_IID, TROSessionManager_Proxy); finalization UnregisterROClass(TROSessionManagerConfiguration); UnregisterROClass(TROUserSession); UnregisterProxyClass(IROSessionManager_IID); end.