TROTransportChannel
Overview
TROTransportChannel is the common base class for all client channel implementations in Remoting SDK.
You will not use instances of this class directly, but work with the descendant channel implementations.
Location
- Unit: uROTransportChannel.pas
- Ancestry: TComponent | TROComponent | TROBaseConnection | TROTransportChannel
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
AssignEvents protected virtual
Copies the events of another, similar object.
procedure AssignEvents(aSource: TROTransportChannel)
Parameters:
- aSource: Instance whose properties will be copied
AssignSpecificProperties protected virtual
Copies the specific properties of another, similar object.
procedure AssignSpecificProperties(aSource: TROTransportChannel)
Parameters:
- aSource: Instance whose properties will be copied
AsyncException protected virtual
Notifies about an exception in an asynchronous mode.
procedure AsyncException(aAsyncInterface: IROAsyncInterface; AsyncException: Exception)
Parameters:
- aAsyncInterface: Exception source
- AsyncException: Exception data
BeforeDispatch protected virtual
Allows an implimentation to do necessary preparatory actions (checking the readiness of the channel, restore session data, etc.).
procedure BeforeDispatch(aMessage: IROMessage)
Parameters:
- aMessage: Message
Busy
Informs whether the channel is currently busy executing a remote request (true) or not (false). Most channels (except most notably the TROSuperTCPChannel) are only capable of performing one request at a time; if a second request is attempted while the channel is Busy, an EROChannelBusy exception will be raised.
property Busy: Boolean read
ChangeServerLocator protected virtual
procedure ChangeServerLocator(var aFaultStartLocatorIdx: Integer; var aRetry: Boolean; const aException: Exception)
Parameters:
- aFaultStartLocatorIdx:
- aRetry:
- aException:
ChannelMatchingTargetUri
Creates a client channel instance with type, target host and target port matching the provided target Uri.
F.e. for provided uri supertcp://192.168.1.100:7020/bin this method will return an instance of the Super Tcp channel with target host set to 192.168.1.100 and port set to 7020.
class function ChannelMatchingTargetUri(const aUri: TROUri): TROTransportChannel
Parameters:
- aUri: Server Uri
ChannelMatchingTargetUrl
class function ChannelMatchingTargetUrl(const aUrl: string): TROTransportChannel
Parameters:
- aUrl:
CheckProperties virtual
Validates channel properties
procedure CheckProperties
CurrentLocator
Returns which of the fail-over/load balancing servers configured in the ServerLocators is currently active. Depending on the DispatchOptions defined, this value might change with each request, or only if the current server fails.
property CurrentLocator: TROServerLocator read write
DecryptStream (TStream, TStream) protected overload (declared in TROBaseConnection)
Decrypt stream
procedure DecryptStream(const Source: TStream; const Dest: TStream)
Parameters:
- Source: Source
- Dest: Destination
DecryptStream (TStream) protected overload (declared in TROBaseConnection)
Decrypt stream
procedure DecryptStream(const Stream: TStream)
Parameters:
- Stream: Stream
Dispatch (IROMessage) protected reintroduce overload
Sends a request message through the Self
channel for processing and gets back an aMessage
. CodeGen uses this method when generating a proxy from RODL Files.
procedure Dispatch(aMessage: IROMessage)
Parameters:
- aMessage: (In/out) message data
DispatchOptions
Configures the available fail-over and load balancing options provided by the Remoting SDK. By default, channels are set up to talk to one specific server only. Two independent options are available to provide fail-over and load balancing:
- Enables fail-over support. If the connection to any given server fails, the channel will automatically keep trying the next server specified in ServerLocators, until a working server is found or all servers have been tried.
- Enables load-balancing support. Each request dispatched through the channel will go to a different server configured in ServerLocators, resulting in calls being more or less equally distributed over the available servers.
Enabling any of these options obviously requires the server to be implemented in a stateless way, so that it does not depend on all requests from a client going to the same server. This implies using a class factory different from Per-Client and, if sessions are used, a session manager that allows sharing of session state between servers.
property DispatchOptions: TRODispatchOptions read write
DoAfterProbingServerEvent protected virtual
Fires OnAfterProbingServer event
procedure DoAfterProbingServerEvent(const aServerLocator: TROServerLocator; const aFailed: Boolean)
Parameters:
- aServerLocator: Server locator
- aFailed:
DoAfterProbingServersEvent protected virtual
Fires OnAfterProbingServer event
procedure DoAfterProbingServersEvent(const aProbedCount: Integer; const aEnabledCount: Integer; const aDisabledCount: Integer)
Parameters:
- aProbedCount:
- aEnabledCount:
- aDisabledCount:
DoBeforeDecryptEvent protected virtual (declared in TROBaseConnection) obsolete
procedure DoBeforeDecryptEvent(aEncryptedStream: TStream)
Parameters:
- aEncryptedStream: Stream
DoBeforeProbingServerEvent protected virtual
Fires OnBeforeProbingServer event
procedure DoBeforeProbingServerEvent(const aServerLocator: TROServerLocator)
Parameters:
- aServerLocator: Server locator
DoBeforeProbingServersEvent protected virtual
Fires OnBeforeProbingServers event
procedure DoBeforeProbingServersEvent
DoNeedSSL protected virtual
Detects SSL state
function DoNeedSSL: Boolean
DoReceiveStreamEvent protected virtual
Fires OnSendStream event
procedure DoReceiveStreamEvent(const Dest: TStream)
Parameters:
- Dest: Stream
DoSendStreamEvent protected virtual
Fires OnSendStream event
procedure DoSendStreamEvent(const Source: TStream)
Parameters:
- Source: Stream
DoServerLocatorAssignmentEvent protected virtual
Fires OnServerLocatorAssignment event
procedure DoServerLocatorAssignmentEvent(const aLocator: TROServerLocator; const aException: Exception)
Parameters:
- aLocator:
- aException:
Encryption (declared in TROBaseConnection) obsolete
This is DES based enscryption, it is obsolete because works only for Delphi. Use message envelope AES Encryption Envelope instead.
property Encryption: TROEncryption read write
EncryptStream (TStream, TStream) protected overload (declared in TROBaseConnection)
Encrypt stream
procedure EncryptStream(const Source: TStream; const Dest: TStream)
Parameters:
- Source: Source
- Dest: Destination
EncryptStream (TStream) protected overload (declared in TROBaseConnection)
Encrypt stream
procedure EncryptStream(const Stream: TStream)
Parameters:
- Stream: Stream
FaultToleranceLocatorIdx
property FaultToleranceLocatorIdx: Integer read write
GetBusy protected virtual
Returns current channel state
function GetBusy: Boolean
GetChannelFromPool protected virtual
function GetChannelFromPool: TROTransportChannel
GetTransportObject protected virtual
Returns itself.
function GetTransportObject: TObject
InitServerLocator protected virtual
Sets CurrentLocator
function InitServerLocator: Integer
IsEncryptionUsed protected (declared in TROBaseConnection)
Checks if encryption was used
function IsEncryptionUsed: Boolean
IsProbeMode protected
property IsProbeMode: Boolean read
IsStreamEncrypted protected (declared in TROBaseConnection)
Checks state of stream
function IsStreamEncrypted(Source: TStream): Boolean
Parameters:
- Source: Stream
LaunchAsyncTask protected
procedure LaunchAsyncTask(aRequest: IROAsyncRequest)
Parameters:
- aRequest:
LoadBalancerLocatorIdx
property LoadBalancerLocatorIdx: Integer read write
LoadSSL protected virtual
Loads SSL library if SSL protocol is used
procedure LoadSSL
Notification protected override
Forwards notification messages to all owned components.
procedure Notification(AComponent: TComponent; Operation: TOperation)
Parameters:
- AComponent: component
- Operation: operation
OnAfterEncrypt (declared in TROBaseConnection)
Fired after stream was encrypted
property OnAfterEncrypt: TROBaseConnectionOperation read write
delegate: procedure OnAfterEncrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)
OnAfterProbingServer
Fires after the channel is done probing a specific server for availability. You can use this event to check the result of the probing, possibly to update internal data structures or to display server status in the user interface.
property OnAfterProbingServer: TROEndProbeServerEvent read write
delegate: procedure OnAfterProbingServer(Sender: TROTransportChannel; aServerLocator: TROServerLocator; Failed: Boolean)
OnAfterProbingServers
Fires after the channel is done probing all servers for availability. You can use this event to check the result of the probing, possibly to update internal data structures or to display server status in the user interface.
property OnAfterProbingServers: TROEndProbeServersEvent read write
delegate: procedure OnAfterProbingServers(Sender: TROTransportChannel; ProbedCount: Integer; EnabledCount: Integer; DisabledCount: Integer)
OnAsyncException
Fires when exception is raised in asynchronous mode
property OnAsyncException: TROAsyncExceptionEvent read write
delegate: procedure OnAsyncException(Sender: TROTransportChannel; Async: IROAsyncInterface; anException: Exception)
OnBeforeDecrypt (declared in TROBaseConnection)
Fired before stream will be decrypted
property OnBeforeDecrypt: TROBaseConnectionOperation read write
delegate: procedure OnBeforeDecrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)
OnBeforeProbingServer
Fires before the channel starts probing a specific server for availability. You can use this event to:
- check or adjust the server configuration
- to include/exclude the server from being probed by changing the TROServerLocator property.
property OnBeforeProbingServer: TROBeginProbeServerEvent read write
delegate: procedure OnBeforeProbingServer(Sender: TROTransportChannel; aServerLocator: TROServerLocator)
OnBeforeProbingServers
Fires before the channel starts probing all servers for availability. You can use this event:
- to check or adjust the server configurations
- to include/exclude individual server from being probed by changing their TROServerLocator properties.
property OnBeforeProbingServers: TROBeginProbeServersEvent read write
delegate: procedure OnBeforeProbingServers(Sender: TROTransportChannel)
OnException
Fires if an exception is raised during the execution of a remote request.
This could be an exception returned from the server, a communication problem or an error within the client.
Depending on the type of error, your event handler can try to rectify the problem, and set aRetry to true to have the channel try and perform the request again. For example, an application could show a dialog asking the user to confirm if his internet connection is available, with Cancel and Retry buttons.
If aRetry is set to true and the call succeeds at the second attempt, the call will return to the original code that initiated the request, as if the exception never happened.
property OnException: TROExceptionEvent read write
delegate: procedure OnException(Sender: TROTransportChannel; anException: Exception; var aRetry: Boolean)
OnLoginNeeded
Fires if an EROSessionNotFound (or the descendant SessionNotFoundException) exception is raised during the execution of a remote request. This usually indicates that the server cannot authenticate the client or that the session has expired. The most common use for this event is to perform a call to a special Login service provided by the server (possibly after prompting the user to enter username and password), and to set the aRetry parameter to true if login was successful.
property OnLoginNeeded: TROExceptionEvent read write
delegate: procedure OnLoginNeeded(Sender: TROTransportChannel; anException: Exception; var aRetry: Boolean)
OnProgress
This event fires as the channel is transferring data for a request or response to or from the server, informing of the current progress. It can be used to keep the user interface updated during lengthy transfers,e.g. by showing a progress bar or the remaining transfer volume. Note: the accuracy and frequency of calls to OnProgress depends on the channel type; since channels transport data packets in different sized chunks (or even all-at-once), OnProgress might show a very fine progress for some channels, while jumping from 0 to 100% in one step with others.
property OnProgress: TProgressEvent read write
delegate: procedure OnProgress(aSender: TObject; aType: TProgressType; aDirection: TProgressDirection; aTransferred: Integer; aTotal: Integer)
OnReceiveStream
Fires after a stream with a response message has been received from the server. Use this event handler to inspect and possibly modify the stream, before it continues to be processed by the higher levels of the Remoting SDK framework.
property OnReceiveStream: TStreamDispatch read write
delegate: procedure OnReceiveStream(aStream: TStream)
OnSendStream
Fires just as a stream with a request message will be sent to the server. The event handler can inspect and possibly modify the stream, before it continues to be sent off to the server.
property OnSendStream: TStreamDispatch read write
delegate: procedure OnSendStream(aStream: TStream)
OnServerLocatorAssignment
Fires before changing of a server locator.
property OnServerLocatorAssignment: TServerLocatorAssignment read write
delegate: procedure OnServerLocatorAssignment(Sender: TROTransportChannel; aLocator: TROServerLocator; aException: Exception)
Probe protected
Checks the accessibility of servers from the ServerLocators. This method is intended to provide fail-over and load balancing support in the Remoting SDK Architecture.
function Probe(aServerLocator: TROServerLocator): Boolean
Parameters:
- aServerLocator: Server locator
ProbeAll protected
Checks the availability of all known servers.
procedure ProbeAll
ProbeFrequency
Sets at what intervals, in milliseconds, the channel will probe the servers configured in ServerLocators for availability. The default value is 60,000 (60 seconds). See the ProbeServers property for a more detailed description. Although somewhat misnamed, this property defines the Interval between probes, not the actual probing Frequency. The property name is persisted for backward compatibility.
property ProbeFrequency: Cardinal read write
ProbeServers
Toggles whether the channel will continuously probe the servers configured in ServerLocators for availability. If enabled (true), the channel will ping all servers at a regular interval to determine if they are reachable. If a server fails to respond, it will be disabled for future calls until a later probe can reach it again. The interval between probes can be configured using the ProbeFrequency property. By default, server probing is turned off.
property ProbeServers: Boolean read write
ResetProbingClone protected virtual
Resets channel that is used for probing
procedure ResetProbingClone(aProbe: TROTransportChannel)
Parameters:
- aProbe: Probing clone
RetrieveMetadata protected virtual
Returns server-side RODL.
procedure RetrieveMetadata(out Dest: TStream)
Parameters:
- Dest: Stream
RetrieveRODL protected
This method is used for to obtaining the RODL library from the server without havin to rely on a channel-specific mechanism (such as a HTTP request to http://servername:port/rodl).
procedure RetrieveRODL(out RODLLibrary: TRODLLibrary)
Parameters:
- RODLLibrary: Result
ReturnChannelToPool protected virtual
procedure ReturnChannelToPool(aChannel: TROTransportChannel)
Parameters:
- aChannel:
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
ServerLocators
Optionally, this collection property can be filled to contain a list of possible servers to be used for fail-over or load balancing purposes. Depending on the settings configured in DispatchOptions, the channel will automatically spread calls over the available servers, or fall back to another server if one fails.
property ServerLocators: TROServerLocatorCollection read write
SetAsyncBusy protected virtual
procedure SetAsyncBusy(const Value: Boolean)
Parameters:
- Value:
SetServerLocator protected
Retrieves the location details of a server from aServerLocator
.
procedure SetServerLocator(aServerLocator: TROServerLocator; anException: Exception)
Parameters:
- aServerLocator: Configuration data of the server
- anException: Exception
SynchronizedProbing
Determines whether server probing happens in the context of the main VCL thread (true, default) or in a background worker thread. See the ProbeServers property for a more detailed description.
property SynchronizedProbing: Boolean read write
TargetUri
Target URI
property TargetUri: TROUri read write
TargetUrl protected
The address of the server.
property TargetUrl: string read write
ThreadSafe protected
property ThreadSafe: Boolean read write
TriggerProgress protected virtual
Fires OnProgress event
procedure TriggerProgress(aType: TProgressType; aDirection: TProgressDirection; aTransfered: Integer; aTotal: Integer)
Parameters:
- aType: progress type
- aDirection: direction
- aTransfered: transfered bytes
- aTotal: total bytes
Busy
Informs whether the channel is currently busy executing a remote request (true) or not (false). Most channels (except most notably the TROSuperTCPChannel) are only capable of performing one request at a time; if a second request is attempted while the channel is Busy, an EROChannelBusy exception will be raised.
property Busy: Boolean read
CurrentLocator
Returns which of the fail-over/load balancing servers configured in the ServerLocators is currently active. Depending on the DispatchOptions defined, this value might change with each request, or only if the current server fails.
property CurrentLocator: TROServerLocator read write
DispatchOptions
Configures the available fail-over and load balancing options provided by the Remoting SDK. By default, channels are set up to talk to one specific server only. Two independent options are available to provide fail-over and load balancing:
- Enables fail-over support. If the connection to any given server fails, the channel will automatically keep trying the next server specified in ServerLocators, until a working server is found or all servers have been tried.
- Enables load-balancing support. Each request dispatched through the channel will go to a different server configured in ServerLocators, resulting in calls being more or less equally distributed over the available servers.
Enabling any of these options obviously requires the server to be implemented in a stateless way, so that it does not depend on all requests from a client going to the same server. This implies using a class factory different from Per-Client and, if sessions are used, a session manager that allows sharing of session state between servers.
property DispatchOptions: TRODispatchOptions read write
Encryption (declared in TROBaseConnection) obsolete
This is DES based enscryption, it is obsolete because works only for Delphi. Use message envelope AES Encryption Envelope instead.
property Encryption: TROEncryption read write
FaultToleranceLocatorIdx
property FaultToleranceLocatorIdx: Integer read write
IsProbeMode protected
property IsProbeMode: Boolean read
LoadBalancerLocatorIdx
property LoadBalancerLocatorIdx: Integer read write
ProbeFrequency
Sets at what intervals, in milliseconds, the channel will probe the servers configured in ServerLocators for availability. The default value is 60,000 (60 seconds). See the ProbeServers property for a more detailed description. Although somewhat misnamed, this property defines the Interval between probes, not the actual probing Frequency. The property name is persisted for backward compatibility.
property ProbeFrequency: Cardinal read write
ProbeServers
Toggles whether the channel will continuously probe the servers configured in ServerLocators for availability. If enabled (true), the channel will ping all servers at a regular interval to determine if they are reachable. If a server fails to respond, it will be disabled for future calls until a later probe can reach it again. The interval between probes can be configured using the ProbeFrequency property. By default, server probing is turned off.
property ProbeServers: Boolean read write
ServerLocators
Optionally, this collection property can be filled to contain a list of possible servers to be used for fail-over or load balancing purposes. Depending on the settings configured in DispatchOptions, the channel will automatically spread calls over the available servers, or fall back to another server if one fails.
property ServerLocators: TROServerLocatorCollection read write
SynchronizedProbing
Determines whether server probing happens in the context of the main VCL thread (true, default) or in a background worker thread. See the ProbeServers property for a more detailed description.
property SynchronizedProbing: Boolean read write
TargetUri
Target URI
property TargetUri: TROUri read write
TargetUrl protected
The address of the server.
property TargetUrl: string read write
ThreadSafe protected
property ThreadSafe: Boolean read write
ChannelMatchingTargetUri
Creates a client channel instance with type, target host and target port matching the provided target Uri.
F.e. for provided uri supertcp://192.168.1.100:7020/bin this method will return an instance of the Super Tcp channel with target host set to 192.168.1.100 and port set to 7020.
class function ChannelMatchingTargetUri(const aUri: TROUri): TROTransportChannel
Parameters:
- aUri: Server Uri
ChannelMatchingTargetUrl
class function ChannelMatchingTargetUrl(const aUrl: string): TROTransportChannel
Parameters:
- aUrl:
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
AssignEvents protected virtual
Copies the events of another, similar object.
procedure AssignEvents(aSource: TROTransportChannel)
Parameters:
- aSource: Instance whose properties will be copied
AssignSpecificProperties protected virtual
Copies the specific properties of another, similar object.
procedure AssignSpecificProperties(aSource: TROTransportChannel)
Parameters:
- aSource: Instance whose properties will be copied
AsyncException protected virtual
Notifies about an exception in an asynchronous mode.
procedure AsyncException(aAsyncInterface: IROAsyncInterface; AsyncException: Exception)
Parameters:
- aAsyncInterface: Exception source
- AsyncException: Exception data
BeforeDispatch protected virtual
Allows an implimentation to do necessary preparatory actions (checking the readiness of the channel, restore session data, etc.).
procedure BeforeDispatch(aMessage: IROMessage)
Parameters:
- aMessage: Message
ChangeServerLocator protected virtual
procedure ChangeServerLocator(var aFaultStartLocatorIdx: Integer; var aRetry: Boolean; const aException: Exception)
Parameters:
- aFaultStartLocatorIdx:
- aRetry:
- aException:
CheckProperties virtual
Validates channel properties
procedure CheckProperties
DecryptStream (TStream, TStream) protected overload (declared in TROBaseConnection)
Decrypt stream
procedure DecryptStream(const Source: TStream; const Dest: TStream)
Parameters:
- Source: Source
- Dest: Destination
DecryptStream (TStream) protected overload (declared in TROBaseConnection)
Decrypt stream
procedure DecryptStream(const Stream: TStream)
Parameters:
- Stream: Stream
Dispatch (IROMessage) protected reintroduce overload
Sends a request message through the Self
channel for processing and gets back an aMessage
. CodeGen uses this method when generating a proxy from RODL Files.
procedure Dispatch(aMessage: IROMessage)
Parameters:
- aMessage: (In/out) message data
DoAfterProbingServerEvent protected virtual
Fires OnAfterProbingServer event
procedure DoAfterProbingServerEvent(const aServerLocator: TROServerLocator; const aFailed: Boolean)
Parameters:
- aServerLocator: Server locator
- aFailed:
DoAfterProbingServersEvent protected virtual
Fires OnAfterProbingServer event
procedure DoAfterProbingServersEvent(const aProbedCount: Integer; const aEnabledCount: Integer; const aDisabledCount: Integer)
Parameters:
- aProbedCount:
- aEnabledCount:
- aDisabledCount:
DoBeforeDecryptEvent protected virtual (declared in TROBaseConnection) obsolete
procedure DoBeforeDecryptEvent(aEncryptedStream: TStream)
Parameters:
- aEncryptedStream: Stream
DoBeforeProbingServerEvent protected virtual
Fires OnBeforeProbingServer event
procedure DoBeforeProbingServerEvent(const aServerLocator: TROServerLocator)
Parameters:
- aServerLocator: Server locator
DoBeforeProbingServersEvent protected virtual
Fires OnBeforeProbingServers event
procedure DoBeforeProbingServersEvent
DoNeedSSL protected virtual
Detects SSL state
function DoNeedSSL: Boolean
DoReceiveStreamEvent protected virtual
Fires OnSendStream event
procedure DoReceiveStreamEvent(const Dest: TStream)
Parameters:
- Dest: Stream
DoSendStreamEvent protected virtual
Fires OnSendStream event
procedure DoSendStreamEvent(const Source: TStream)
Parameters:
- Source: Stream
DoServerLocatorAssignmentEvent protected virtual
Fires OnServerLocatorAssignment event
procedure DoServerLocatorAssignmentEvent(const aLocator: TROServerLocator; const aException: Exception)
Parameters:
- aLocator:
- aException:
EncryptStream (TStream, TStream) protected overload (declared in TROBaseConnection)
Encrypt stream
procedure EncryptStream(const Source: TStream; const Dest: TStream)
Parameters:
- Source: Source
- Dest: Destination
EncryptStream (TStream) protected overload (declared in TROBaseConnection)
Encrypt stream
procedure EncryptStream(const Stream: TStream)
Parameters:
- Stream: Stream
GetBusy protected virtual
Returns current channel state
function GetBusy: Boolean
GetChannelFromPool protected virtual
function GetChannelFromPool: TROTransportChannel
GetTransportObject protected virtual
Returns itself.
function GetTransportObject: TObject
InitServerLocator protected virtual
Sets CurrentLocator
function InitServerLocator: Integer
IsEncryptionUsed protected (declared in TROBaseConnection)
Checks if encryption was used
function IsEncryptionUsed: Boolean
IsStreamEncrypted protected (declared in TROBaseConnection)
Checks state of stream
function IsStreamEncrypted(Source: TStream): Boolean
Parameters:
- Source: Stream
LaunchAsyncTask protected
procedure LaunchAsyncTask(aRequest: IROAsyncRequest)
Parameters:
- aRequest:
LoadSSL protected virtual
Loads SSL library if SSL protocol is used
procedure LoadSSL
Notification protected override
Forwards notification messages to all owned components.
procedure Notification(AComponent: TComponent; Operation: TOperation)
Parameters:
- AComponent: component
- Operation: operation
Probe protected
Checks the accessibility of servers from the ServerLocators. This method is intended to provide fail-over and load balancing support in the Remoting SDK Architecture.
function Probe(aServerLocator: TROServerLocator): Boolean
Parameters:
- aServerLocator: Server locator
ProbeAll protected
Checks the availability of all known servers.
procedure ProbeAll
ResetProbingClone protected virtual
Resets channel that is used for probing
procedure ResetProbingClone(aProbe: TROTransportChannel)
Parameters:
- aProbe: Probing clone
RetrieveMetadata protected virtual
Returns server-side RODL.
procedure RetrieveMetadata(out Dest: TStream)
Parameters:
- Dest: Stream
RetrieveRODL protected
This method is used for to obtaining the RODL library from the server without havin to rely on a channel-specific mechanism (such as a HTTP request to http://servername:port/rodl).
procedure RetrieveRODL(out RODLLibrary: TRODLLibrary)
Parameters:
- RODLLibrary: Result
ReturnChannelToPool protected virtual
procedure ReturnChannelToPool(aChannel: TROTransportChannel)
Parameters:
- aChannel:
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
SetAsyncBusy protected virtual
procedure SetAsyncBusy(const Value: Boolean)
Parameters:
- Value:
SetServerLocator protected
Retrieves the location details of a server from aServerLocator
.
procedure SetServerLocator(aServerLocator: TROServerLocator; anException: Exception)
Parameters:
- aServerLocator: Configuration data of the server
- anException: Exception
TriggerProgress protected virtual
Fires OnProgress event
procedure TriggerProgress(aType: TProgressType; aDirection: TProgressDirection; aTransfered: Integer; aTotal: Integer)
Parameters:
- aType: progress type
- aDirection: direction
- aTransfered: transfered bytes
- aTotal: total bytes
OnAfterEncrypt (declared in TROBaseConnection)
Fired after stream was encrypted
property OnAfterEncrypt: TROBaseConnectionOperation read write
delegate: procedure OnAfterEncrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)
OnAfterProbingServer
Fires after the channel is done probing a specific server for availability. You can use this event to check the result of the probing, possibly to update internal data structures or to display server status in the user interface.
property OnAfterProbingServer: TROEndProbeServerEvent read write
delegate: procedure OnAfterProbingServer(Sender: TROTransportChannel; aServerLocator: TROServerLocator; Failed: Boolean)
OnAfterProbingServers
Fires after the channel is done probing all servers for availability. You can use this event to check the result of the probing, possibly to update internal data structures or to display server status in the user interface.
property OnAfterProbingServers: TROEndProbeServersEvent read write
delegate: procedure OnAfterProbingServers(Sender: TROTransportChannel; ProbedCount: Integer; EnabledCount: Integer; DisabledCount: Integer)
OnAsyncException
Fires when exception is raised in asynchronous mode
property OnAsyncException: TROAsyncExceptionEvent read write
delegate: procedure OnAsyncException(Sender: TROTransportChannel; Async: IROAsyncInterface; anException: Exception)
OnBeforeDecrypt (declared in TROBaseConnection)
Fired before stream will be decrypted
property OnBeforeDecrypt: TROBaseConnectionOperation read write
delegate: procedure OnBeforeDecrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)
OnBeforeProbingServer
Fires before the channel starts probing a specific server for availability. You can use this event to:
- check or adjust the server configuration
- to include/exclude the server from being probed by changing the TROServerLocator property.
property OnBeforeProbingServer: TROBeginProbeServerEvent read write
delegate: procedure OnBeforeProbingServer(Sender: TROTransportChannel; aServerLocator: TROServerLocator)
OnBeforeProbingServers
Fires before the channel starts probing all servers for availability. You can use this event:
- to check or adjust the server configurations
- to include/exclude individual server from being probed by changing their TROServerLocator properties.
property OnBeforeProbingServers: TROBeginProbeServersEvent read write
delegate: procedure OnBeforeProbingServers(Sender: TROTransportChannel)
OnException
Fires if an exception is raised during the execution of a remote request.
This could be an exception returned from the server, a communication problem or an error within the client.
Depending on the type of error, your event handler can try to rectify the problem, and set aRetry to true to have the channel try and perform the request again. For example, an application could show a dialog asking the user to confirm if his internet connection is available, with Cancel and Retry buttons.
If aRetry is set to true and the call succeeds at the second attempt, the call will return to the original code that initiated the request, as if the exception never happened.
property OnException: TROExceptionEvent read write
delegate: procedure OnException(Sender: TROTransportChannel; anException: Exception; var aRetry: Boolean)
OnLoginNeeded
Fires if an EROSessionNotFound (or the descendant SessionNotFoundException) exception is raised during the execution of a remote request. This usually indicates that the server cannot authenticate the client or that the session has expired. The most common use for this event is to perform a call to a special Login service provided by the server (possibly after prompting the user to enter username and password), and to set the aRetry parameter to true if login was successful.
property OnLoginNeeded: TROExceptionEvent read write
delegate: procedure OnLoginNeeded(Sender: TROTransportChannel; anException: Exception; var aRetry: Boolean)
OnProgress
This event fires as the channel is transferring data for a request or response to or from the server, informing of the current progress. It can be used to keep the user interface updated during lengthy transfers,e.g. by showing a progress bar or the remaining transfer volume. Note: the accuracy and frequency of calls to OnProgress depends on the channel type; since channels transport data packets in different sized chunks (or even all-at-once), OnProgress might show a very fine progress for some channels, while jumping from 0 to 100% in one step with others.
property OnProgress: TProgressEvent read write
delegate: procedure OnProgress(aSender: TObject; aType: TProgressType; aDirection: TProgressDirection; aTransferred: Integer; aTotal: Integer)
OnReceiveStream
Fires after a stream with a response message has been received from the server. Use this event handler to inspect and possibly modify the stream, before it continues to be processed by the higher levels of the Remoting SDK framework.
property OnReceiveStream: TStreamDispatch read write
delegate: procedure OnReceiveStream(aStream: TStream)
OnSendStream
Fires just as a stream with a request message will be sent to the server. The event handler can inspect and possibly modify the stream, before it continues to be sent off to the server.
property OnSendStream: TStreamDispatch read write
delegate: procedure OnSendStream(aStream: TStream)
OnServerLocatorAssignment
Fires before changing of a server locator.
property OnServerLocatorAssignment: TServerLocatorAssignment read write
delegate: procedure OnServerLocatorAssignment(Sender: TROTransportChannel; aLocator: TROServerLocator; aException: Exception)