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
- Unit: uROSessions.pas
- Ancestry: TComponent | TROComponent | TROCustomSessionManager
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
ShouldNotifySessionsChanges protected
function ShouldNotifySessionsChanges: Boolean
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
ShouldNotifySessionsChanges protected
function ShouldNotifySessionsChanges: Boolean
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)