TROIcsAsyncSuperTCPServer Class

From RemObjects Wiki
Jump to: navigation, search

This is a Library topic for RemObjects SDK for Delphi
This page is generated from external data, please do not update

InterfacesClassesAliasesImplements

Contents

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 RemObjects SDK.

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


Location

uROIcsAsyncSuperTcpServer.pas


Properties

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 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. The default value is "ROSC:Invalid connection string".



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

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


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 channel will transport (default is 10485760, 10MB).



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



property OnServerSocketSessionClosed:


Port

This is the network socket where the server will be listening. The default values is 8095.



property Port:


ServeRodl     (declared in TROServer)



property ServeRodl: Boolean read write


ServerSocket     (declared in TROCustomIcsAsyncSuperTCPServer)

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



property ServerSocket: TROWSocketServer read


SkipAck     (declared in TROBaseAsyncSuperTcpServer)

Defines whether "acknowledgement" messages are skipped.



property SkipAck: Boolean read write


ThreadPool     (declared in TROBaseAsyncSuperTcpServer)

Allows to specify the thread pool.



property ThreadPool: TROThreadPool read write


Instance Methods

constructor Create   override     (declared in TROCustomIcsAsyncSuperTCPServer)

Creates a new instance of the TROCustomIcsAsyncSuperTCPServer class.


constructor Create(aOwner: TComponent)


Parameters:

  • aOwner:


destructor Destroy   override     (declared in TROCustomIcsAsyncSuperTCPServer)

Frees the instance.


destructor Destroy


Assign   override     (declared in TROBaseAsyncSuperTcpServer)

Copies the contents of another, similar object.


procedure Assign(Source: TPersistent)


Parameters:

  • Source:


CheckProperties   virtual     (declared in TROServer)



procedure CheckProperties


Connect   protected     (declared in TROCustomIcsAsyncSuperTCPServer)

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


procedure Connect


Disconnect   protected     (declared in TROCustomIcsAsyncSuperTCPServer)

Closes the ServerSocket.


procedure Disconnect


DispatchEvent   protected     (declared in TROBaseAsyncSuperTcpServer)

This method is called when an event fires.


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:


DoAfterEncryptEvent   protected virtual obsolete     (declared in TROBaseConnection)



procedure DoAfterEncryptEvent(aEncryptedStream: TStream)


Parameters:

  • aEncryptedStream:


DoBeforeDecryptEvent   protected virtual obsolete     (declared in TROBaseConnection)



procedure DoBeforeDecryptEvent(aEncryptedStream: TStream)


Parameters:

  • aEncryptedStream:


DoDecryption   virtual obsolete     (declared in TROBaseConnection)



procedure DoDecryption(iCipherText: TStream; iPlainText: TStream)


Parameters:

  • iCipherText:
  • iPlainText:


DoDecryption2 obsolete     (declared in TROBaseConnection)



procedure DoDecryption2(const iStream: TStream)


Parameters:

  • iStream:


DoEncryption   virtual obsolete     (declared in TROBaseConnection)



procedure DoEncryption(iPlainText: TStream; iCipherText: TStream)


Parameters:

  • iPlainText:
  • iCipherText:


DoEncryption2 obsolete     (declared in TROBaseConnection)



procedure DoEncryption2(const iStream: TStream)


Parameters:

  • iStream:


EncodeEventStream   protected     (declared in TROServer)



procedure EncodeEventStream(aStream: TStream)


Parameters:

  • aStream:


GetDispatchersClass   protected virtual     (declared in TROServer)



function GetDispatchersClass: TROMessageDispatchersClass


GetPort   protected override     (declared in TROCustomIcsAsyncSuperTCPServer)

Returns the port number which is used with the active ServerSocket.


function GetPort: Integer


GetRODLReader   protected     (declared in TROServer)



function GetRODLReader: TROCustomRODLReader


GetServerType   protected virtual     (declared in TROServer)



function GetServerType: TROServerType


HasData   protected     (declared in TROBaseAsyncSuperTcpServer)

This method is called by the TROAsyncSuperChannelWorker when incoming data is present.


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


Parameters:

  • Id:
  • aClient:
  • aData:


IntDispatchMessage   protected     (declared in TROServer)



function IntDispatchMessage(Dispatcher: TROMessageDispatcher; const aTransport: IROTransport; aRequeststream: TStream; aResponsestream: TStream; out oResponseOptions: TROResponseOptions): boolean


Parameters:

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


IntGetActive   protected override     (declared in TROCustomIcsAsyncSuperTCPServer)

Returns true if the ServerSocket is assigned and the ServerSocket state is not in wsClosed or wsInvalidState. Otherwise returns false.


function IntGetActive: boolean


IntSetActive   protected override     (declared in TROCustomIcsAsyncSuperTCPServer)

Sets the specified state of the current TROCustomIcsAsyncSuperTCPServer object.


procedure IntSetActive(const Value: boolean)


Parameters:

  • Value: Specified server channel state


IsEncryptionUsed   protected     (declared in TROServer)



function IsEncryptionUsed: Boolean


Loaded   protected override     (declared in TROServer)



procedure Loaded


Notification   protected override     (declared in TROBaseAsyncSuperTcpServer)

Forwards notification messages to all owned components.


procedure Notification(AComponent: TComponent; Operation: TOperation)


Parameters:

  • AComponent:
  • Operation:


QueryInterface   protected override     (declared in TROServer)



function QueryInterface(const IID: TGUID; out Obj: ): HResult


Parameters:

  • IID:
  • Obj:


ROFreeNotification     (declared in TROComponent)



procedure ROFreeNotification(AComponent: TComponent)


Parameters:

  • AComponent:


RORemoveFreeNotification     (declared in TROComponent)



procedure RORemoveFreeNotification(AComponent: TComponent)


Parameters:

  • AComponent:


SendRemoveNotification   protected     (declared in TROComponent)



procedure SendRemoveNotification(AComponent: TComponent)


Parameters:

  • AComponent:


SetPort   protected override     (declared in TROCustomIcsAsyncSuperTCPServer)

Sets the ServerSocket port number with the specified Value.


procedure SetPort(const Value: Integer)


Parameters:

  • Value: Specified port number


TriggerReadFromStream   protected     (declared in TROServer)



procedure TriggerReadFromStream(iStream: TStream)


Parameters:

  • iStream:


TriggerWriteToStream   protected     (declared in TROServer)



procedure TriggerWriteToStream(iStream: TStream)


Parameters:

  • iStream:


Events

onAfterEncrypt obsolete     (declared in TROBaseConnection)



property onAfterEncrypt: TROBaseConnectionOperation read write delegate: procedure Invoke(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 obsolete     (declared in TROBaseConnection)



property onBeforeDecrypt: TROBaseConnectionOperation read write delegate: procedure Invoke(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)



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


OnClientDisconnected     (declared in TROBaseAsyncSuperTcpServer)



property OnClientDisconnected: TROAsyncConnectionEvent read write delegate: procedure Invoke(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 Invoke(Sender: TObject; Socket: TROAsyncSuperTCPServerSocketClient; E: TObject)


OnGetRODLReader     (declared in TROServer)



property OnGetRODLReader: TROGetRODLReader read write delegate: procedure Invoke(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 RemObjects SDK framework.



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


OnServerSocketBackgroundException     (declared in TROCustomIcsAsyncSuperTCPServer)

Fires when a server socket experiences a background exception.



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


OnServerSocketSessionClosed     (declared in TROCustomIcsAsyncSuperTCPServer)

Fires when a server socket session closes.



property OnServerSocketSessionClosed: TServerSocketSessionClosed read write delegate: procedure Invoke(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 Invoke(aStream: TStream)


See Also


Product: RemObjects SDK
Available Editions: RemObjects SDK for .NET, Xcode, Delphi, Java and JavaScript

GlossaryArticlesLibrarySamples

Personal tools
Namespaces

Variants
Actions
Navigation
products
platforms
special
Toolbox