TROCustomSessionManager

Overview

TROCustomSessionManager forms the base class of all session managers provided by Remoting SDK, and can also be used as the base class for implementing your own special session manager.

Location


 

constructor Create  override

Standard component constructor

constructor Create(aOwner: TComponent)

Parameters:

  • aOwner: Owner

Assign  override

Copies the contents of another, similar object.

procedure Assign(Source: TPersistent)

Parameters:

  • Source: Instance whose properties will be copied

CheckProperties  virtual

Validates the session manager properties.

procedure CheckProperties

CheckSessionIsExpired (TROSession): Boolean  overload

Checks state of given session.

function CheckSessionIsExpired(aSession: TROSession): Boolean

Parameters:

  • aSession: Given session.

CheckSessionIsExpired (TGUID): Boolean  overload

Checks state of given session or not.

function CheckSessionIsExpired(const aSessionID: TGUID): Boolean

Parameters:

  • aSessionID: Session ID

Clearing  protected

internal flag that is set when session are clearing

property Clearing: Boolean read

ClearSessions

Discards all sessions within the session manager, so that any new call from a client will start with a fresh session.

procedure ClearSessions(OnlyExpired: Boolean)

Parameters:

  • OnlyExpired: process only expired sessions or not.

CreateSession

Creates a new session with provided ID.

function CreateSession(const aSessionID: TGUID): TROSession

Parameters:

  • aSessionID: Session ID

CreateTimerByRequest  protected

Creates internal timer.

procedure CreateTimerByRequest

DeleteSession

Deletes the session with specified ID.

procedure DeleteSession(const aSessionID: TGUID; IsExpired: Boolean)

Parameters:

  • aSessionID: Session ID
  • IsExpired: current state of session

DeleteTemporarySession

Deletes the temporary session.

procedure DeleteTemporarySession(var Session: TROSession)

Parameters:

  • Session: given session.

DoClearSessions  protected virtual abstract

Discards all sessions within the session manager, so that any new call from a client will start with a fresh session.

procedure DoClearSessions(OnlyExpired: Boolean)

Parameters:

  • OnlyExpired: process only expired sessions or not.

DoCreateSession  protected virtual

Creates a new session with provided ID.

function DoCreateSession(const aSessionID: TGUID): TROSession

Parameters:

  • aSessionID: Session ID

DoDeleteSession  protected virtual abstract

Deletes the session with specified ID.

procedure DoDeleteSession(const aSessionID: TGUID; IsExpired: Boolean)

Parameters:

  • aSessionID: Session ID
  • IsExpired: current state of session

DoFindSession  protected virtual abstract

Finds session with the specified GUID

function DoFindSession(const aSessionID: TGUID; aUpdateTime: Boolean): TROSession

Parameters:

  • aSessionID: Session ID.
  • aUpdateTime: Update LastAccess of found session or not

DoGetAllSessions  protected virtual

Returns a string list containing the IDs of all currently active sessions.

procedure DoGetAllSessions(Dest: TStringList)

Parameters:

  • Dest: destination

DoGetSessionCount  protected virtual abstract

Returns the session count.

function DoGetSessionCount: Integer

DoNotifySessionsChangesListener  protected virtual

Notifies attached listeners about changes

procedure DoNotifySessionsChangesListener(const aSessionID: TGUID; aSessionAction: TROSessionsActions; Sender: TObject)

Parameters:

  • aSessionID: Session ID
  • aSessionAction: action
  • Sender: sender

DoReleaseSession  protected virtual

Releases the previously acquired session.

procedure DoReleaseSession(aSession: TROSession; NewSession: Boolean)

Parameters:

  • aSession: given session
  • NewSession: newly created session or not

DoTimerTick  protected virtual

Clears expired sessions.

procedure DoTimerTick(CurrentTickCount: Cardinal)

Parameters:

  • CurrentTickCount: ignored

FindSession

Finds session with the specified GUID

function FindSession(const aSessionID: TGUID; aUpdateTime: Boolean): TROSession

Parameters:

  • aSessionID: Session ID.
  • aUpdateTime: Update LastAccess of found session or not

GetAllSessions  overload

function GetAllSessions: TROSessionIDs

GetAllSessions (TStringList)  overload

Returns a string list containing the IDs of all currently active sessions. Depending on the session manager and on your application architecture, this list can be huge, especially when using a database based session list that is shared by a large server farm. Obtaining the full list of sessions can be a costly process.

procedure GetAllSessions(Dest: TStringList)

Parameters:

  • Dest: destination

GetSessionCount

Returns the session count.

function GetSessionCount: Integer

IsSessionPresent

function IsSessionPresent(const aSessionID: TGUID): Boolean

Parameters:

  • aSessionID:

KillTimer  protected

Kills internal timer

procedure KillTimer

LockForReading  protected

procedure LockForReading

LockForWriting  protected

procedure LockForWriting

MaxSessions

Specifies the maximum number of sessions that will be allowed. -1 (the default) indicates that no limit on number of sessions will be enforced. Allowing a server to run without enforcing any limit on the number of sessions might pose a security risk, as malicious clients could theoretically start an infinite number of sessions by performing repeated requests with changing Client IDs, until server memory is depleted. You should make sure to either set a limit, or tie session creation to user authentication, so that only valid client users can obtain a session(and possibly only one session per login).

property MaxSessions: Integer read write

Notification  protected override    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure Notification(aComponent: TComponent; Operation: TOperation)

Parameters:

  • aComponent: component
  • Operation: operation

OnBeforeDeleteSession

Fires before deleting session.

property OnBeforeDeleteSession: TDeleteSessionEvent read write
delegate: procedure OnBeforeDeleteSession(const aSessionID: TGUID; IsExpired: Boolean)

OnCustomCreateSession

Fires before the session is created. It allows to return existing session for given session ID

property OnCustomCreateSession: TROCustomSessionCreationEvent read write
delegate: procedure OnCustomCreateSession(const aSessionID: TGUID; var Session: TROSession)

OnException

Fires when an exception is occuring

property OnException: TROSessionExceptionEvent read write
delegate: procedure OnException(aSessionID: TGUID; anException: Exception; var aRetry: Boolean)

OnMaxSessionsReached

Fires when maximum count of allowed sessions is reached

property OnMaxSessionsReached: TROMaxSessionsReachedEvent read write
delegate: procedure OnMaxSessionsReached(var aFail: Boolean)

OnSessionCreated

Gets triggered after a new Session has been created. You can use it to perform initialization functions or fill the session with default values.

property OnSessionCreated: TSessionEvent read write
delegate: procedure OnSessionCreated(const aSession: TROSession)

OnSessionDeleted

Gets triggered after the Session has been deleted. You can use it to perform some finalization functions.

property OnSessionDeleted: TDeleteSessionEvent read write
delegate: procedure OnSessionDeleted(const aSessionID: TGUID; IsExpired: Boolean)

RegisterSessionsChangesListener  protected virtual

Attaches a new IROSessionsChangesListener listener.

procedure RegisterSessionsChangesListener(aListener: IROSessionsChangesListener)

Parameters:

  • aListener: New listener

ReleaseSession

Releases the previously acquired session.

procedure ReleaseSession(var aSession: TROSession; NewSession: Boolean)

Parameters:

  • aSession: given session
  • NewSession: newly created session or not

ROFreeNotification    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure ROFreeNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

RORemoveFreeNotification    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure RORemoveFreeNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

SendRemoveNotification  protected    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure SendRemoveNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

SessionCheckInterval  protected

Internal for checking session in minutes. default value is 15 minutes.

property SessionCheckInterval: Integer read write

SessionDuration  protected

The time, in minutes, that sessions will persist before timing out (default is 15 minutes).The timeout for each individual session will be reset every time the session is accessed; after SessionDuration minutes have passed without access to the session, it will be discarded. The exact handling of the timeout processing depends on the implementation of the specific session manager, which might check session timeouts at intervals. Therefore, sessions might live slightly longer then the specified timeout.

property SessionDuration: Integer read write

TestLastAccess  protected

function TestLastAccess(const aLastAccess: TDateTime): Boolean

Parameters:

  • aLastAccess:

UnlockForReading  protected

procedure UnlockForReading

UnlockForWriting  protected

procedure UnlockForWriting

UnRegisterSessionsChangesListener  protected virtual

Detaches a previously attached aListener.

procedure UnRegisterSessionsChangesListener(aListener: IROSessionsChangesListener)

Parameters:

  • aListener: Known listener

 

Clearing  protected

internal flag that is set when session are clearing

property Clearing: Boolean read

MaxSessions

Specifies the maximum number of sessions that will be allowed. -1 (the default) indicates that no limit on number of sessions will be enforced. Allowing a server to run without enforcing any limit on the number of sessions might pose a security risk, as malicious clients could theoretically start an infinite number of sessions by performing repeated requests with changing Client IDs, until server memory is depleted. You should make sure to either set a limit, or tie session creation to user authentication, so that only valid client users can obtain a session(and possibly only one session per login).

property MaxSessions: Integer read write

SessionCheckInterval  protected

Internal for checking session in minutes. default value is 15 minutes.

property SessionCheckInterval: Integer read write

SessionDuration  protected

The time, in minutes, that sessions will persist before timing out (default is 15 minutes).The timeout for each individual session will be reset every time the session is accessed; after SessionDuration minutes have passed without access to the session, it will be discarded. The exact handling of the timeout processing depends on the implementation of the specific session manager, which might check session timeouts at intervals. Therefore, sessions might live slightly longer then the specified timeout.

property SessionDuration: Integer read write

 

constructor Create  override

Standard component constructor

constructor Create(aOwner: TComponent)

Parameters:

  • aOwner: Owner

Assign  override

Copies the contents of another, similar object.

procedure Assign(Source: TPersistent)

Parameters:

  • Source: Instance whose properties will be copied

CheckProperties  virtual

Validates the session manager properties.

procedure CheckProperties

CheckSessionIsExpired (TROSession): Boolean  overload

Checks state of given session.

function CheckSessionIsExpired(aSession: TROSession): Boolean

Parameters:

  • aSession: Given session.

CheckSessionIsExpired (TGUID): Boolean  overload

Checks state of given session or not.

function CheckSessionIsExpired(const aSessionID: TGUID): Boolean

Parameters:

  • aSessionID: Session ID

ClearSessions

Discards all sessions within the session manager, so that any new call from a client will start with a fresh session.

procedure ClearSessions(OnlyExpired: Boolean)

Parameters:

  • OnlyExpired: process only expired sessions or not.

CreateSession

Creates a new session with provided ID.

function CreateSession(const aSessionID: TGUID): TROSession

Parameters:

  • aSessionID: Session ID

CreateTimerByRequest  protected

Creates internal timer.

procedure CreateTimerByRequest

DeleteSession

Deletes the session with specified ID.

procedure DeleteSession(const aSessionID: TGUID; IsExpired: Boolean)

Parameters:

  • aSessionID: Session ID
  • IsExpired: current state of session

DeleteTemporarySession

Deletes the temporary session.

procedure DeleteTemporarySession(var Session: TROSession)

Parameters:

  • Session: given session.

DoClearSessions  protected virtual abstract

Discards all sessions within the session manager, so that any new call from a client will start with a fresh session.

procedure DoClearSessions(OnlyExpired: Boolean)

Parameters:

  • OnlyExpired: process only expired sessions or not.

DoCreateSession  protected virtual

Creates a new session with provided ID.

function DoCreateSession(const aSessionID: TGUID): TROSession

Parameters:

  • aSessionID: Session ID

DoDeleteSession  protected virtual abstract

Deletes the session with specified ID.

procedure DoDeleteSession(const aSessionID: TGUID; IsExpired: Boolean)

Parameters:

  • aSessionID: Session ID
  • IsExpired: current state of session

DoFindSession  protected virtual abstract

Finds session with the specified GUID

function DoFindSession(const aSessionID: TGUID; aUpdateTime: Boolean): TROSession

Parameters:

  • aSessionID: Session ID.
  • aUpdateTime: Update LastAccess of found session or not

DoGetAllSessions  protected virtual

Returns a string list containing the IDs of all currently active sessions.

procedure DoGetAllSessions(Dest: TStringList)

Parameters:

  • Dest: destination

DoGetSessionCount  protected virtual abstract

Returns the session count.

function DoGetSessionCount: Integer

DoNotifySessionsChangesListener  protected virtual

Notifies attached listeners about changes

procedure DoNotifySessionsChangesListener(const aSessionID: TGUID; aSessionAction: TROSessionsActions; Sender: TObject)

Parameters:

  • aSessionID: Session ID
  • aSessionAction: action
  • Sender: sender

DoReleaseSession  protected virtual

Releases the previously acquired session.

procedure DoReleaseSession(aSession: TROSession; NewSession: Boolean)

Parameters:

  • aSession: given session
  • NewSession: newly created session or not

DoTimerTick  protected virtual

Clears expired sessions.

procedure DoTimerTick(CurrentTickCount: Cardinal)

Parameters:

  • CurrentTickCount: ignored

FindSession

Finds session with the specified GUID

function FindSession(const aSessionID: TGUID; aUpdateTime: Boolean): TROSession

Parameters:

  • aSessionID: Session ID.
  • aUpdateTime: Update LastAccess of found session or not

GetAllSessions  overload

function GetAllSessions: TROSessionIDs

GetAllSessions (TStringList)  overload

Returns a string list containing the IDs of all currently active sessions. Depending on the session manager and on your application architecture, this list can be huge, especially when using a database based session list that is shared by a large server farm. Obtaining the full list of sessions can be a costly process.

procedure GetAllSessions(Dest: TStringList)

Parameters:

  • Dest: destination

GetSessionCount

Returns the session count.

function GetSessionCount: Integer

IsSessionPresent

function IsSessionPresent(const aSessionID: TGUID): Boolean

Parameters:

  • aSessionID:

KillTimer  protected

Kills internal timer

procedure KillTimer

LockForReading  protected

procedure LockForReading

LockForWriting  protected

procedure LockForWriting

Notification  protected override    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure Notification(aComponent: TComponent; Operation: TOperation)

Parameters:

  • aComponent: component
  • Operation: operation

RegisterSessionsChangesListener  protected virtual

Attaches a new IROSessionsChangesListener listener.

procedure RegisterSessionsChangesListener(aListener: IROSessionsChangesListener)

Parameters:

  • aListener: New listener

ReleaseSession

Releases the previously acquired session.

procedure ReleaseSession(var aSession: TROSession; NewSession: Boolean)

Parameters:

  • aSession: given session
  • NewSession: newly created session or not

ROFreeNotification    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure ROFreeNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

RORemoveFreeNotification    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure RORemoveFreeNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

SendRemoveNotification  protected    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure SendRemoveNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

TestLastAccess  protected

function TestLastAccess(const aLastAccess: TDateTime): Boolean

Parameters:

  • aLastAccess:

UnlockForReading  protected

procedure UnlockForReading

UnlockForWriting  protected

procedure UnlockForWriting

UnRegisterSessionsChangesListener  protected virtual

Detaches a previously attached aListener.

procedure UnRegisterSessionsChangesListener(aListener: IROSessionsChangesListener)

Parameters:

  • aListener: Known listener

 

OnBeforeDeleteSession

Fires before deleting session.

property OnBeforeDeleteSession: TDeleteSessionEvent read write
delegate: procedure OnBeforeDeleteSession(const aSessionID: TGUID; IsExpired: Boolean)

OnCustomCreateSession

Fires before the session is created. It allows to return existing session for given session ID

property OnCustomCreateSession: TROCustomSessionCreationEvent read write
delegate: procedure OnCustomCreateSession(const aSessionID: TGUID; var Session: TROSession)

OnException

Fires when an exception is occuring

property OnException: TROSessionExceptionEvent read write
delegate: procedure OnException(aSessionID: TGUID; anException: Exception; var aRetry: Boolean)

OnMaxSessionsReached

Fires when maximum count of allowed sessions is reached

property OnMaxSessionsReached: TROMaxSessionsReachedEvent read write
delegate: procedure OnMaxSessionsReached(var aFail: Boolean)

OnSessionCreated

Gets triggered after a new Session has been created. You can use it to perform initialization functions or fill the session with default values.

property OnSessionCreated: TSessionEvent read write
delegate: procedure OnSessionCreated(const aSession: TROSession)

OnSessionDeleted

Gets triggered after the Session has been deleted. You can use it to perform some finalization functions.

property OnSessionDeleted: TDeleteSessionEvent read write
delegate: procedure OnSessionDeleted(const aSessionID: TGUID; IsExpired: Boolean)