TROIcsAsyncSuperTCPServer

Overview

The TROIcsAsyncSuperTCPServer class implements the server side of an asynchronous TCP based channel, which provides a sophisticated and flexible communication that uses persistent connections to enable true asynchronous calls and server callbacks.

The channel uses a TCP implementation provided by the third party Internet Component Suite library that is shipped with Remoting SDK.

The TROIcsAsyncSuperTCPServer class uses an asynchronous programming model to process network service requests.

Location

 

constructor Create  override    (declared in TROCustomIcsAsyncSuperTCPServer)

Creates a new instance.

constructor Create(aOwner: TComponent)

Parameters:

  • aOwner: Owner.

AckWaitTimeout    (declared in TROBaseAsyncSuperTcpServer)

This property is used by the server to automatically sign up new clients to the event repository, thus making it possible fo them to receive events without manual registration.

property AckWaitTimeout: Integer read write

Active    (declared in TROServer)

Toggles whether the server ready to receive requests from clients. Depending on the server type, changing this property might open/close a network socket or otherwise toggle whether the server will process incoming requests.

property Active: boolean read write

Assign  override    (declared in TROBaseAsyncSuperTcpServer)

Copies the contents of another, similar object.

procedure Assign(Source: TPersistent)

Parameters:

  • Source: Instance whose properties will be copied

AutoRegisterSession

This property is used by the server to automatically sign new clients up to the event repository, thus making it possible for them to receive events without manual registration. The default, the value is true.

property AutoRegisterSession:

BlockingEvents    (declared in TROBaseAsyncSuperTcpServer)

Affects the processing of events on the server. Setting BlockingEvents = true can delay the dispatching of events; in this case, the dispatching of events through clients will happen in the main thread of the server and thus suspending it. This value is useful however if you want to make sure events arrive in order. If you want to process multiple events at once, you should use the default value BlockingEvents=false; the event is then put in queue and will be dispatched in a separate thread. In this case you'll possibly need to prevent the thread pool queue from overflowing by using the ThreadPool.MaxQueue and ThreadPool.MaxThreads properties.

property BlockingEvents: Boolean read write

CheckProperties  virtual    (declared in TROServer)

Validates the server properties.

procedure CheckProperties

Connect  protected    (declared in TROCustomIcsAsyncSuperTCPServer)

Begins listen on the ServerSocket on any interface with protocol 'tcp' and port 8095.

procedure Connect

DecryptStream (TStream)  protected overload    (declared in TROBaseConnection)

procedure DecryptStream(const iStream: TStream)

Parameters:

  • iStream:

DecryptStream (TStream, TStream)  protected overload    (declared in TROBaseConnection)

procedure DecryptStream(const aSource: TStream; const aDest: TStream)

Parameters:

  • aSource:
  • aDest:

DefaultResponse

Holds the message that will be sent back to the client if it improperly "welcomes" the server.

property DefaultResponse:

Disconnect  protected    (declared in TROCustomIcsAsyncSuperTCPServer)

Closes the ServerSocket.

procedure Disconnect

Dispatchers    (declared in TROServer)

Specifies how incoming requests will be processed and dispatched. Depending on the server type, one or multiple dispatchers can be configured to receive messages from the client. Each dispatcher consists of a Message and an optional Name. Also, each dispatcher can be individually enabled or disabled. Each server must have at least one dispatcher configured, in order to be able to process messages.

=Essential Sub-Properties=

*Message specifies the message format to be used for this dispatcher. *Name specifies the name, or possibly the URL for the dispatcher. In HTTP based servers (such as the TROIndyHTTPServer, the Name will be appended as folder to the server URL allowing the server to make multiple dispatchers available at different URLs.

property Dispatchers: TROMessageDispatchers read write

DispatchEvent  protected    (declared in TROBaseAsyncSuperTcpServer)

This method is called by the event manager to notify the server about a new event.

procedure DispatchEvent(anEventDataItem: TROEventData; aSessionReference: TGUID; aSender: TObject)

Parameters:

  • anEventDataItem: Represents an event that fires.
  • aSessionReference: Unique identifier that represents the session.
  • aSender: Indicates which object receives the event.

DispatchMessage (IROTransport, TStream, TStream): boolean  protected overload    (declared in TROServer)

function DispatchMessage(const aTransport: IROTransport; aRequeststream: TStream; aResponsestream: TStream): boolean

Parameters:

  • aTransport:
  • aRequeststream:
  • aResponsestream:

DispatchMessage (IROTransport, TStream, TStream, TROResponseOptions): boolean  protected overload    (declared in TROServer)

function DispatchMessage(const aTransport: IROTransport; aRequeststream: TStream; aResponsestream: TStream; out oResponseOptions: TROResponseOptions): boolean

Parameters:

  • aTransport:
  • aRequeststream:
  • aResponsestream:
  • oResponseOptions:

DoBeforeDecryptEvent  protected virtual    (declared in TROBaseConnection) obsolete

procedure DoBeforeDecryptEvent(aEncryptedStream: TStream)

Parameters:

  • aEncryptedStream:

DoDecryption  virtual    (declared in TROBaseConnection) obsolete

procedure DoDecryption(iCipherText: TStream; iPlainText: TStream)

Parameters:

  • iCipherText:
  • iPlainText:

DoEncryption  virtual    (declared in TROBaseConnection) obsolete

procedure DoEncryption(iPlainText: TStream; iCipherText: TStream)

Parameters:

  • iPlainText:
  • iCipherText:

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)  protected overload    (declared in TROBaseConnection)

Encrypts given stream

procedure EncryptStream(const iStream: TStream)

Parameters:

  • iStream: Source and Destination

EncryptStream (TStream, TStream)  protected overload    (declared in TROBaseConnection)

Encrypts given stream

procedure EncryptStream(const aSource: TStream; const aDest: TStream)

Parameters:

  • aSource: Source
  • aDest: Destination

EventRepository    (declared in TROBaseAsyncSuperTcpServer)

Specifies the event repository.

property EventRepository: TROEventRepository read write

GetDispatchersClass  protected virtual    (declared in TROServer)

Returns TROMessageDispatchers class

function GetDispatchersClass: TROMessageDispatchersClass

GetRODLReader  protected    (declared in TROServer)

function GetRODLReader: TROCustomRODLReader

GetServerType  protected virtual    (declared in TROServer)

Returns current server type

function GetServerType: TROServerType

GetTransportObject  protected    (declared in TROServer)

Returns itself.

function GetTransportObject: TObject

GuidToClientMap    (declared in TROBaseAsyncSuperTcpServer)

property GuidToClientMap: TStringList read write

HasData  protected    (declared in TROBaseAsyncSuperTcpServer)

This method is called when incoming data is present.

procedure HasData(Id: Integer; aClient: TROAsyncSuperChannelWorker; aData: TStream)

Parameters:

  • Id:
  • aClient:
  • aData:

IsEncryptionUsed  protected    (declared in TROBaseConnection)

function IsEncryptionUsed: Boolean

isStreamEncrypted  protected    (declared in TROBaseConnection)

Checks state of stream

function isStreamEncrypted(aStream: TStream): Boolean

Parameters:

  • aStream: Stream

MaxClientsPerPump    (declared in TROCustomIcsAsyncSuperTCPServer)

Represents how many clients can be assigned to each message pump. If the value is 0, an unlimited number of clients can be assigned.

property MaxClientsPerPump: Integer read write

MaxPackageSize    (declared in TROBaseAsyncSuperTcpServer)

Sets the maximum size of data package that the server will receive (default is 10485760, i.e. 10MB). This is to prevent a larger package than intended from being sent to the server.

property MaxPackageSize: Integer read write

MinClientMessagePumps    (declared in TROCustomIcsAsyncSuperTCPServer)

Stores the minimum count of message pumps. Equals 1 by default.

property MinClientMessagePumps: Integer read write

OnAfterEncrypt    (declared in TROBaseConnection)

property OnAfterEncrypt: TROBaseConnectionOperation read write
delegate: procedure OnAfterEncrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)

OnAfterServerActivate    (declared in TROServer)

Fires after the server has been activated.

property OnAfterServerActivate: TNotifyEvent read write

OnAfterServerDeactivate    (declared in TROServer)

Fires after the server has been deactivated. You can use this event handler to perform any cleanup you might need after the server has stopped processing new requests.

property OnAfterServerDeactivate: TNotifyEvent read write

OnBeforeDecrypt    (declared in TROBaseConnection)

property OnBeforeDecrypt: TROBaseConnectionOperation read write
delegate: procedure OnBeforeDecrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)

OnBeforeServerActivate    (declared in TROServer)

Fires just before the server is activated. You can use this event handler to perform any initialization you might need before the server starts processing new requests.

property OnBeforeServerActivate: TNotifyEvent read write

OnBeforeServerDeactivate    (declared in TROServer)

Fires just before the server is deactivated. You can use this event handler to perform any cleanup you might need before the server stops processing new requests.

property OnBeforeServerDeactivate: TNotifyEvent read write

OnClientConnected    (declared in TROBaseAsyncSuperTcpServer)

This event is fired when client connects to the server.

property OnClientConnected: TROAsyncConnectionEvent read write
delegate: procedure OnClientConnected(aChannel: IROTransport; const aGuid: TGuid)

OnClientDisconnected    (declared in TROBaseAsyncSuperTcpServer)

This event is fired when client disconnects from the server.

property OnClientDisconnected: TROAsyncConnectionEvent read write
delegate: procedure OnClientDisconnected(aChannel: IROTransport; const aGuid: TGuid)

OnClientSocketBackgroundException    (declared in TROCustomIcsAsyncSuperTCPServer)

Fires when a client socket experiences a background exception. This is likely to occur when the client aborts the connection and data still has to be sent.

property OnClientSocketBackgroundException: TClientSocketBackgroundException read write
delegate: procedure OnClientSocketBackgroundException(Sender: TObject; Socket: TROAsyncSuperTCPServerSocketClient; E: TObject)

OnClientSocketBackgroundException

Fires when a client socket experiences a background exception. This is likely to occur when the client aborts the connection and data still has to be sent.

property OnClientSocketBackgroundException:

OnGetRODLReader    (declared in TROServer)

property OnGetRODLReader: TROGetRODLReader read write
delegate: procedure OnGetRODLReader(Sender: TROServer; var aRODLReader: TROCustomRODLReader)

OnReadFromStream    (declared in TROServer)

Fires after a stream with a request message has been received from the client. The event handler can inspect and possibly modify the stream, before it continues to be processed by the higher levels of the Remoting SDK framework.

property OnReadFromStream: TStreamOperation read write
delegate: procedure OnReadFromStream(aStream: TStream)

OnServerSocketBackgroundException    (declared in TROCustomIcsAsyncSuperTCPServer)

Fires when a server socket experiences a background exception.

property OnServerSocketBackgroundException: TServerSocketBackgroundException read write
delegate: procedure OnServerSocketBackgroundException(Sender: TObject; Socket: TROWSocketServer; E: TObject)

OnServerSocketBackgroundException

Fires when a server socket experiences a background exception.

property OnServerSocketBackgroundException:

OnServerSocketSessionClosed    (declared in TROCustomIcsAsyncSuperTCPServer)

Fires when a server socket session closes.

property OnServerSocketSessionClosed: TServerSocketSessionClosed read write
delegate: procedure OnServerSocketSessionClosed(Sender: TObject; Socket: TROWSocketServer; ErrCode: Word)

OnServerSocketSessionClosed

Fires when a server socket session closes.

property OnServerSocketSessionClosed:

OnWriteToStream    (declared in TROServer)

Fires just before a stream with a response message is sent back to the client. The event handler can inspect and possibly modify the stream, before it continues to be sent off to the client.

property OnWriteToStream: TStreamOperation read write
delegate: procedure OnWriteToStream(aStream: TStream)

Port

Represents the network socket where the server will be listening. The default value is 8095.

property Port:

ROFreeNotification    (declared in TROComponent)

Forwards notification messages to all owned RO components.

procedure ROFreeNotification(AComponent: TComponent)

Parameters:

  • AComponent: component

RORemoveFreeNotification    (declared in TROComponent)

Disables destruction notification for specified RO component.

procedure RORemoveFreeNotification(AComponent: TComponent)

Parameters:

  • AComponent: component

ServeRodl    (declared in TROServer)

Specifies whether the server will make the contained RODL file available to clients (true, default) or not. Keep this property set to true if clients need to access the RODL (or WSDL), for example so that third parties (including Service Tester) can import services. Set it to false if you do not want to provide this information, for example for security reasons.

property ServeRodl: Boolean read write

ServerSocket    (declared in TROCustomIcsAsyncSuperTCPServer)

Represents the server socket which is used to accept incoming connections.

property ServerSocket: TROWSocketServer read write

SkipAck    (declared in TROBaseAsyncSuperTcpServer)

Defines whether "acknowledgement" messages are skipped.

property SkipAck: Boolean read write

ThreadPool    (declared in TROBaseAsyncSuperTcpServer)

Allows to set a custom thread pool object to process incoming requests using a set of threads. When not assigned explicitly the thread pool is created and assigned automatically. Assigning this property by users is a rare need, this is required only when precise and/or custom control over processing threads is necessary.

property ThreadPool: TROThreadPool read write

TriggerReadFromStream  protected    (declared in TROServer)

Fires the OnReadFromStream event

procedure TriggerReadFromStream(iStream: TStream)

Parameters:

  • iStream: stream

TriggerWriteToStream  protected    (declared in TROServer)

Fires the OnWriteToStream event

procedure TriggerWriteToStream(iStream: TStream)

Parameters:

  • iStream: stream

 

AckWaitTimeout    (declared in TROBaseAsyncSuperTcpServer)

This property is used by the server to automatically sign up new clients to the event repository, thus making it possible fo them to receive events without manual registration.

property AckWaitTimeout: Integer read write

Active    (declared in TROServer)

Toggles whether the server ready to receive requests from clients. Depending on the server type, changing this property might open/close a network socket or otherwise toggle whether the server will process incoming requests.

property Active: boolean read write

AutoRegisterSession

This property is used by the server to automatically sign new clients up to the event repository, thus making it possible for them to receive events without manual registration. The default, the value is true.

property AutoRegisterSession:

BlockingEvents    (declared in TROBaseAsyncSuperTcpServer)

Affects the processing of events on the server. Setting BlockingEvents = true can delay the dispatching of events; in this case, the dispatching of events through clients will happen in the main thread of the server and thus suspending it. This value is useful however if you want to make sure events arrive in order. If you want to process multiple events at once, you should use the default value BlockingEvents=false; the event is then put in queue and will be dispatched in a separate thread. In this case you'll possibly need to prevent the thread pool queue from overflowing by using the ThreadPool.MaxQueue and ThreadPool.MaxThreads properties.

property BlockingEvents: Boolean read write

DefaultResponse

Holds the message that will be sent back to the client if it improperly "welcomes" the server.

property DefaultResponse:

Dispatchers    (declared in TROServer)

Specifies how incoming requests will be processed and dispatched. Depending on the server type, one or multiple dispatchers can be configured to receive messages from the client. Each dispatcher consists of a Message and an optional Name. Also, each dispatcher can be individually enabled or disabled. Each server must have at least one dispatcher configured, in order to be able to process messages.

=Essential Sub-Properties=

*Message specifies the message format to be used for this dispatcher. *Name specifies the name, or possibly the URL for the dispatcher. In HTTP based servers (such as the TROIndyHTTPServer, the Name will be appended as folder to the server URL allowing the server to make multiple dispatchers available at different URLs.

property Dispatchers: TROMessageDispatchers 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

EventRepository    (declared in TROBaseAsyncSuperTcpServer)

Specifies the event repository.

property EventRepository: TROEventRepository read write

GuidToClientMap    (declared in TROBaseAsyncSuperTcpServer)

property GuidToClientMap: TStringList read write

MaxClientsPerPump    (declared in TROCustomIcsAsyncSuperTCPServer)

Represents how many clients can be assigned to each message pump. If the value is 0, an unlimited number of clients can be assigned.

property MaxClientsPerPump: Integer read write

MaxPackageSize    (declared in TROBaseAsyncSuperTcpServer)

Sets the maximum size of data package that the server will receive (default is 10485760, i.e. 10MB). This is to prevent a larger package than intended from being sent to the server.

property MaxPackageSize: Integer read write

MinClientMessagePumps    (declared in TROCustomIcsAsyncSuperTCPServer)

Stores the minimum count of message pumps. Equals 1 by default.

property MinClientMessagePumps: Integer read write

OnClientSocketBackgroundException

Fires when a client socket experiences a background exception. This is likely to occur when the client aborts the connection and data still has to be sent.

property OnClientSocketBackgroundException:

OnServerSocketBackgroundException

Fires when a server socket experiences a background exception.

property OnServerSocketBackgroundException:

OnServerSocketSessionClosed

Fires when a server socket session closes.

property OnServerSocketSessionClosed:

Port

Represents the network socket where the server will be listening. The default value is 8095.

property Port:

ServeRodl    (declared in TROServer)

Specifies whether the server will make the contained RODL file available to clients (true, default) or not. Keep this property set to true if clients need to access the RODL (or WSDL), for example so that third parties (including Service Tester) can import services. Set it to false if you do not want to provide this information, for example for security reasons.

property ServeRodl: Boolean read write

ServerSocket    (declared in TROCustomIcsAsyncSuperTCPServer)

Represents the server socket which is used to accept incoming connections.

property ServerSocket: TROWSocketServer read write

SkipAck    (declared in TROBaseAsyncSuperTcpServer)

Defines whether "acknowledgement" messages are skipped.

property SkipAck: Boolean read write

ThreadPool    (declared in TROBaseAsyncSuperTcpServer)

Allows to set a custom thread pool object to process incoming requests using a set of threads. When not assigned explicitly the thread pool is created and assigned automatically. Assigning this property by users is a rare need, this is required only when precise and/or custom control over processing threads is necessary.

property ThreadPool: TROThreadPool read write

 

constructor Create  override    (declared in TROCustomIcsAsyncSuperTCPServer)

Creates a new instance.

constructor Create(aOwner: TComponent)

Parameters:

  • aOwner: Owner.

Assign  override    (declared in TROBaseAsyncSuperTcpServer)

Copies the contents of another, similar object.

procedure Assign(Source: TPersistent)

Parameters:

  • Source: Instance whose properties will be copied

CheckProperties  virtual    (declared in TROServer)

Validates the server properties.

procedure CheckProperties

Connect  protected    (declared in TROCustomIcsAsyncSuperTCPServer)

Begins listen on the ServerSocket on any interface with protocol 'tcp' and port 8095.

procedure Connect

DecryptStream (TStream)  protected overload    (declared in TROBaseConnection)

procedure DecryptStream(const iStream: TStream)

Parameters:

  • iStream:

DecryptStream (TStream, TStream)  protected overload    (declared in TROBaseConnection)

procedure DecryptStream(const aSource: TStream; const aDest: TStream)

Parameters:

  • aSource:
  • aDest:

Disconnect  protected    (declared in TROCustomIcsAsyncSuperTCPServer)

Closes the ServerSocket.

procedure Disconnect

DispatchEvent  protected    (declared in TROBaseAsyncSuperTcpServer)

This method is called by the event manager to notify the server about a new event.

procedure DispatchEvent(anEventDataItem: TROEventData; aSessionReference: TGUID; aSender: TObject)

Parameters:

  • anEventDataItem: Represents an event that fires.
  • aSessionReference: Unique identifier that represents the session.
  • aSender: Indicates which object receives the event.

DispatchMessage (IROTransport, TStream, TStream): boolean  protected overload    (declared in TROServer)

function DispatchMessage(const aTransport: IROTransport; aRequeststream: TStream; aResponsestream: TStream): boolean

Parameters:

  • aTransport:
  • aRequeststream:
  • aResponsestream:

DispatchMessage (IROTransport, TStream, TStream, TROResponseOptions): boolean  protected overload    (declared in TROServer)

function DispatchMessage(const aTransport: IROTransport; aRequeststream: TStream; aResponsestream: TStream; out oResponseOptions: TROResponseOptions): boolean

Parameters:

  • aTransport:
  • aRequeststream:
  • aResponsestream:
  • oResponseOptions:

DoBeforeDecryptEvent  protected virtual    (declared in TROBaseConnection) obsolete

procedure DoBeforeDecryptEvent(aEncryptedStream: TStream)

Parameters:

  • aEncryptedStream:

DoDecryption  virtual    (declared in TROBaseConnection) obsolete

procedure DoDecryption(iCipherText: TStream; iPlainText: TStream)

Parameters:

  • iCipherText:
  • iPlainText:

DoEncryption  virtual    (declared in TROBaseConnection) obsolete

procedure DoEncryption(iPlainText: TStream; iCipherText: TStream)

Parameters:

  • iPlainText:
  • iCipherText:

EncryptStream (TStream)  protected overload    (declared in TROBaseConnection)

Encrypts given stream

procedure EncryptStream(const iStream: TStream)

Parameters:

  • iStream: Source and Destination

EncryptStream (TStream, TStream)  protected overload    (declared in TROBaseConnection)

Encrypts given stream

procedure EncryptStream(const aSource: TStream; const aDest: TStream)

Parameters:

  • aSource: Source
  • aDest: Destination

GetDispatchersClass  protected virtual    (declared in TROServer)

Returns TROMessageDispatchers class

function GetDispatchersClass: TROMessageDispatchersClass

GetRODLReader  protected    (declared in TROServer)

function GetRODLReader: TROCustomRODLReader

GetServerType  protected virtual    (declared in TROServer)

Returns current server type

function GetServerType: TROServerType

GetTransportObject  protected    (declared in TROServer)

Returns itself.

function GetTransportObject: TObject

HasData  protected    (declared in TROBaseAsyncSuperTcpServer)

This method is called when incoming data is present.

procedure HasData(Id: Integer; aClient: TROAsyncSuperChannelWorker; aData: TStream)

Parameters:

  • Id:
  • aClient:
  • aData:

IsEncryptionUsed  protected    (declared in TROBaseConnection)

function IsEncryptionUsed: Boolean

isStreamEncrypted  protected    (declared in TROBaseConnection)

Checks state of stream

function isStreamEncrypted(aStream: TStream): Boolean

Parameters:

  • aStream: Stream

ROFreeNotification    (declared in TROComponent)

Forwards notification messages to all owned RO components.

procedure ROFreeNotification(AComponent: TComponent)

Parameters:

  • AComponent: component

RORemoveFreeNotification    (declared in TROComponent)

Disables destruction notification for specified RO component.

procedure RORemoveFreeNotification(AComponent: TComponent)

Parameters:

  • AComponent: component

TriggerReadFromStream  protected    (declared in TROServer)

Fires the OnReadFromStream event

procedure TriggerReadFromStream(iStream: TStream)

Parameters:

  • iStream: stream

TriggerWriteToStream  protected    (declared in TROServer)

Fires the OnWriteToStream event

procedure TriggerWriteToStream(iStream: TStream)

Parameters:

  • iStream: stream

 

OnAfterEncrypt    (declared in TROBaseConnection)

property OnAfterEncrypt: TROBaseConnectionOperation read write
delegate: procedure OnAfterEncrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)

OnAfterServerActivate    (declared in TROServer)

Fires after the server has been activated.

property OnAfterServerActivate: TNotifyEvent read write

OnAfterServerDeactivate    (declared in TROServer)

Fires after the server has been deactivated. You can use this event handler to perform any cleanup you might need after the server has stopped processing new requests.

property OnAfterServerDeactivate: TNotifyEvent read write

OnBeforeDecrypt    (declared in TROBaseConnection)

property OnBeforeDecrypt: TROBaseConnectionOperation read write
delegate: procedure OnBeforeDecrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)

OnBeforeServerActivate    (declared in TROServer)

Fires just before the server is activated. You can use this event handler to perform any initialization you might need before the server starts processing new requests.

property OnBeforeServerActivate: TNotifyEvent read write

OnBeforeServerDeactivate    (declared in TROServer)

Fires just before the server is deactivated. You can use this event handler to perform any cleanup you might need before the server stops processing new requests.

property OnBeforeServerDeactivate: TNotifyEvent read write

OnClientConnected    (declared in TROBaseAsyncSuperTcpServer)

This event is fired when client connects to the server.

property OnClientConnected: TROAsyncConnectionEvent read write
delegate: procedure OnClientConnected(aChannel: IROTransport; const aGuid: TGuid)

OnClientDisconnected    (declared in TROBaseAsyncSuperTcpServer)

This event is fired when client disconnects from the server.

property OnClientDisconnected: TROAsyncConnectionEvent read write
delegate: procedure OnClientDisconnected(aChannel: IROTransport; const aGuid: TGuid)

OnClientSocketBackgroundException    (declared in TROCustomIcsAsyncSuperTCPServer)

Fires when a client socket experiences a background exception. This is likely to occur when the client aborts the connection and data still has to be sent.

property OnClientSocketBackgroundException: TClientSocketBackgroundException read write
delegate: procedure OnClientSocketBackgroundException(Sender: TObject; Socket: TROAsyncSuperTCPServerSocketClient; E: TObject)

OnGetRODLReader    (declared in TROServer)

property OnGetRODLReader: TROGetRODLReader read write
delegate: procedure OnGetRODLReader(Sender: TROServer; var aRODLReader: TROCustomRODLReader)

OnReadFromStream    (declared in TROServer)

Fires after a stream with a request message has been received from the client. The event handler can inspect and possibly modify the stream, before it continues to be processed by the higher levels of the Remoting SDK framework.

property OnReadFromStream: TStreamOperation read write
delegate: procedure OnReadFromStream(aStream: TStream)

OnServerSocketBackgroundException    (declared in TROCustomIcsAsyncSuperTCPServer)

Fires when a server socket experiences a background exception.

property OnServerSocketBackgroundException: TServerSocketBackgroundException read write
delegate: procedure OnServerSocketBackgroundException(Sender: TObject; Socket: TROWSocketServer; E: TObject)

OnServerSocketSessionClosed    (declared in TROCustomIcsAsyncSuperTCPServer)

Fires when a server socket session closes.

property OnServerSocketSessionClosed: TServerSocketSessionClosed read write
delegate: procedure OnServerSocketSessionClosed(Sender: TObject; Socket: TROWSocketServer; ErrCode: Word)

OnWriteToStream    (declared in TROServer)

Fires just before a stream with a response message is sent back to the client. The event handler can inspect and possibly modify the stream, before it continues to be sent off to the client.

property OnWriteToStream: TStreamOperation read write
delegate: procedure OnWriteToStream(aStream: TStream)

See Also