SuperTcpServerChannel

Overview

SuperTcpServerChannel implements the server side of the sophisticated and flexible TCP based communication channel that uses persistent connections to enable true asynchronous calls and server callbacks. This TCP channel is useful for scenarios where extensive use of events and server callbacks is needed.

Location


 

constructor

 

constructor

 

SuperTcpServerChannel()

 

init()

 

Sub New()

constructor (IContainer) .NET Framework

 

constructor(container: IContainer)

 

SuperTcpServerChannel(IContainer container)

 

init(_ container: IContainer)

 

Sub New(container As IContainer)

Parameters:

  • container:

AckWaitTimeout

Specifies the time frame, in milliseconds, in which an "acknowledgement" message is expected to be received for a sent event (default is 60000, 1 minute).

If no acknowledgement has been received after the specified time, delivery will be considered to have failed and the event will be stored in queue for future retries.

 

[DefaultValue(60000)]
property AckWaitTimeout: Int32 read write;

 

[DefaultValue(60000)]
Int32 AckWaitTimeout { get; set; }

 

@DefaultValue(60000)
var AckWaitTimeout: Int32 { get{} set{} }

 

<DefaultValue(60000)>
Property AckWaitTimeout() As Int32

Active    (declared in ServerChannel)

Toggles whether the server component is active or not. Set it to true (either from code or in the Property Pane) to have your server active and listening for requests from clients or set it to false to prevent new requests from being accepted.

 

[DefaultValue(false)]
property Active: Boolean read write;

 

[DefaultValue(false)]
Boolean Active { get; set; }

 

@DefaultValue(false)
var Active: Boolean { get{} set{} }

 

<DefaultValue(false)>
Property Active() As Boolean

AdjustConvertedRodl    (declared in ServerChannel)

 

event AdjustConvertedRodl: EventHandler<RodlEventArgs>

 

delegate EventHandler<RodlEventArgs> AdjustConvertedRodl()

 

__event EventHandler<RodlEventArgs>: AdjustConvertedRodl!

 

Event AdjustConvertedRodl As EventHandler<RodlEventArgs>

AdjustRodl    (declared in ServerChannel)

 

event AdjustRodl: EventHandler<RodlEventArgs>

 

delegate EventHandler<RodlEventArgs> AdjustRodl()

 

__event EventHandler<RodlEventArgs>: AdjustRodl!

 

Event AdjustRodl As EventHandler<RodlEventArgs>

AfterClose    (declared in ServerChannel)

 

event AfterClose: EventHandler

 

delegate EventHandler AfterClose()

 

__event EventHandler: AfterClose!

 

Event AfterClose As EventHandler

AfterOpen    (declared in ServerChannel)

 

event AfterOpen: EventHandler

 

delegate EventHandler AfterOpen()

 

__event EventHandler: AfterOpen!

 

Event AfterOpen As EventHandler

AfterReceiveStream    (declared in Channel)

This event is triggered by client and server channels directly after a request or response stream has been received and before the stream gets parsed into a message. User code can assign handlers to this event to process, inspect or modify incoming messages, before they get handled by the Remoting SDK framework. The passed Stream is a MemoryStream and may be modified.

If no handlers are assigned to the AfterReceiveStream event, the message will load the data directly from the incoming medium (usually the network stream); assigning event handlers to AfterReceiveStream will induce a slight overhead as the data will first be copied into a local memory buffer for the event handler. This should not have any noticeably effect except for very large messages or on resource-limited systems such as Compact Framework Clients, but if utmost performance is important, take this note into consideration.

 

event AfterReceiveStream: EventHandler<StreamEventArgs>

 

delegate EventHandler<StreamEventArgs> AfterReceiveStream()

 

__event EventHandler<StreamEventArgs>: AfterReceiveStream!

 

Event AfterReceiveStream As EventHandler<StreamEventArgs>

BeforeClose    (declared in ServerChannel)

 

event BeforeClose: EventHandler

 

delegate EventHandler BeforeClose()

 

__event EventHandler: BeforeClose!

 

Event BeforeClose As EventHandler

BeforeOpen    (declared in ServerChannel)

 

event BeforeOpen: EventHandler

 

delegate EventHandler BeforeOpen()

 

__event EventHandler: BeforeOpen!

 

Event BeforeOpen As EventHandler

BeforeSendStream    (declared in Channel)

This event is triggered by client and server channels directly before a request or response stream will be sent over the network. User code can assign handlers to this event to process, inspect or modify incoming messages before they get sent out to the remote system.

The passed Stream is a MemoryStream and may be modified.

 

event BeforeSendStream: EventHandler<StreamEventArgs>

 

delegate EventHandler<StreamEventArgs> BeforeSendStream()

 

__event EventHandler<StreamEventArgs>: BeforeSendStream!

 

Event BeforeSendStream As EventHandler<StreamEventArgs>

BlockingEvents

Affects the processing of events on the server.

Setting BlockingEvents to true delays the event's dispatching. In this case, client events will happen in the main thread of the server and will be suspended. This value is useful if you want to make sure that events arrive in order.

If you want to process multiple events at once, you should use the default value BlockingEvents = false. In this case, the event is put in queue and will be dispatched in a separate thread. You possibly will have to to control the thread pool queue from overflowing, using ThreadPool.MaxQueue and ThreadPool.MaxThreads properties.

 

[DefaultValue(false)]
property BlockingEvents: Boolean read write;

 

[DefaultValue(false)]
Boolean BlockingEvents { get; set; }

 

@DefaultValue(false)
var BlockingEvents: Boolean { get{} set{} }

 

<DefaultValue(false)>
Property BlockingEvents() As Boolean

ChannelType

This property is needed to determine the type of server channel for internal purposes. It has a "supertcp" value.

 

property ChannelType: String read;

 

String ChannelType { get; }

 

var ChannelType: String { get{} }

 

ReadOnly Property ChannelType() As String

Close    (declared in ServerChannel)

Closes the ServerChannel component and stops it from accepting any more incoming requests.

 

method Close

 

void Close()

 

func Close()

 

Sub Close()

CloseChannel  protected

 

method CloseChannel

 

void CloseChannel()

 

func CloseChannel()

 

Sub CloseChannel()

CopyProperties  protected    (declared in Channel)

 

method CopyProperties(source: Channel)

 

void CopyProperties(Channel source)

 

func CopyProperties(_ source: Channel)

 

Sub CopyProperties(source As Channel)

Parameters:

  • source:

CustomParameters    (declared in ServerChannel)

 

property CustomParameters: IDictionary<String, String> read;

 

IDictionary<String, String> CustomParameters { get; }

 

var CustomParameters: IDictionary<String, String> { get{} }

 

ReadOnly Property CustomParameters() As IDictionary<String, String>

Dispatch  protected    (declared in ServerChannel)

 

method Dispatch(message: IMessage; channelInfo: IServerChannelInfo)

 

void Dispatch(IMessage message, IServerChannelInfo channelInfo)

 

func Dispatch(_ message: IMessage, _ channelInfo: IServerChannelInfo)

 

Sub Dispatch(message As IMessage, channelInfo As IServerChannelInfo)

Parameters:

  • message:
  • channelInfo:

Dispatchers    (declared in ServerChannel)

Organizes the different Dispatchers configured for the server. Depending on the server type, different dispatchers can be made accessible through different names (for example the HTTP based servers use the Path provided with the HTTP request to determine the dispatcher) or the dispatcher marked as Default will be used. Note: A design time editor for the Dispatcher collection is provided in the IDE, which you can invoke by clicking the ellipsis (...) button in the Properties Pane. You can use this editor to create new MessageDispatcher instances at design time and link them to the specific message components you have dropped onto your form.

 

property Dispatchers: MessageDispatchers read;

 

MessageDispatchers Dispatchers { get; }

 

var Dispatchers: MessageDispatchers { get{} }

 

ReadOnly Property Dispatchers() As MessageDispatchers

Dispose    (declared in Channel) .NET Core, .NET Standard

 

method Dispose

 

void Dispose()

 

func Dispose()

 

Sub Dispose()

Dispose (Boolean)  protected

 

method Dispose(disposing: Boolean)

 

void Dispose(Boolean disposing)

 

func Dispose(_ disposing: Boolean)

 

Sub Dispose(disposing As Boolean)

Parameters:

  • disposing:

GetRodl    (declared in ServerChannel)

 

event GetRodl: EventHandler<RodlEventArgs>

 

delegate EventHandler<RodlEventArgs> GetRodl()

 

__event EventHandler<RodlEventArgs>: GetRodl!

 

Event GetRodl As EventHandler<RodlEventArgs>

GetServerRodl  protected    (declared in ServerChannel)

 

method GetServerRodl(context: Object; dispatcher: MessageDispatcher; serviceGroups: String; out contentType: String): Stream

 

Stream GetServerRodl(Object context, MessageDispatcher dispatcher, String serviceGroups, out String contentType)

 

func GetServerRodl(_ context: Object, _ dispatcher: MessageDispatcher, _ serviceGroups: String, _ contentType: inout String) -> Stream

 

Function GetServerRodl(context As Object, dispatcher As MessageDispatcher, serviceGroups As String, <OutAttribute> ByRef contentType As String) As Stream

Parameters:

  • context:
  • dispatcher:
  • serviceGroups:
  • contentType:

GetServiceMetaData  protected    (declared in ServerChannel)

 

method GetServiceMetaData(context: Object; dispatcher: MessageDispatcher; serviceName: String; options: Hashtable; out contentType: String): Stream

 

Stream GetServiceMetaData(Object context, MessageDispatcher dispatcher, String serviceName, Hashtable options, out String contentType)

 

func GetServiceMetaData(_ context: Object, _ dispatcher: MessageDispatcher, _ serviceName: String, _ options: Hashtable, _ contentType: inout String) -> Stream

 

Function GetServiceMetaData(context As Object, dispatcher As MessageDispatcher, serviceName As String, options As Hashtable, <OutAttribute> ByRef contentType As String) As Stream

Parameters:

  • context:
  • dispatcher:
  • serviceName:
  • options:
  • contentType:

HasAfterReceiveStream  protected    (declared in Channel)

 

property HasAfterReceiveStream: Boolean read;

 

Boolean HasAfterReceiveStream { get; }

 

var HasAfterReceiveStream: Boolean { get{} }

 

ReadOnly Property HasAfterReceiveStream() As Boolean

HasBeforeSendStream  protected    (declared in Channel)

 

property HasBeforeSendStream: Boolean read;

 

Boolean HasBeforeSendStream { get; }

 

var HasBeforeSendStream: Boolean { get{} }

 

ReadOnly Property HasBeforeSendStream() As Boolean

IncomingData  protected

Enqueues incoming packages to the thread pool.

internal protected

 

method IncomingData(worker: SuperTcpServerChannelWorker; package: SuperTcpPackage)

 

void IncomingData(SuperTcpServerChannelWorker worker, SuperTcpPackage package)

 

func IncomingData(_ worker: SuperTcpServerChannelWorker, _ package: SuperTcpPackage)

 

Sub IncomingData(worker As SuperTcpServerChannelWorker, package As SuperTcpPackage)

Parameters:

  • worker:
  • package:

Initializing  protected    (declared in ServerChannel)

 

property Initializing: Boolean read;

 

Boolean Initializing { get; }

 

var Initializing: Boolean { get{} }

 

ReadOnly Property Initializing() As Boolean

IS_TRIAL_MODE  protected    (declared in ServerChannel)

 

const IS_TRIAL_MODE: Boolean = false

 

const Boolean IS_TRIAL_MODE = false

 

static let IS_TRIAL_MODE: Boolean = false

 

Const IS_TRIAL_MODE As Boolean = false

IsRegisteredWorker

 

method IsRegisteredWorker(worker: SuperTcpServerChannelWorker): Boolean

 

Boolean IsRegisteredWorker(SuperTcpServerChannelWorker worker)

 

func IsRegisteredWorker(_ worker: SuperTcpServerChannelWorker) -> Boolean

 

Function IsRegisteredWorker(worker As SuperTcpServerChannelWorker) As Boolean

Parameters:

  • worker:

IsSingleRegisteredWorker

 

method IsSingleRegisteredWorker(clientId: Guid): Boolean

 

Boolean IsSingleRegisteredWorker(Guid clientId)

 

func IsSingleRegisteredWorker(_ clientId: Guid) -> Boolean

 

Function IsSingleRegisteredWorker(clientId As Guid) As Boolean

Parameters:

  • clientId:

IsTlsEnabled

Specifies if TLS protocol is used

 

property IsTlsEnabled: Boolean read;

 

Boolean IsTlsEnabled { get; }

 

var IsTlsEnabled: Boolean { get{} }

 

ReadOnly Property IsTlsEnabled() As Boolean

MaxPackageSize

The maximum size of the data package the server will accept.

 

[DefaultValue(10485760)]
property MaxPackageSize: Int32 read write;

 

[DefaultValue(10485760)]
Int32 MaxPackageSize { get; set; }

 

@DefaultValue(10485760)
var MaxPackageSize: Int32 { get{} set{} }

 

<DefaultValue(10485760)>
Property MaxPackageSize() As Int32

Messages    (declared in ServerChannel)

 

property Messages: IList<String> read;

 

IList<String> Messages { get; }

 

var Messages: IList<String> { get{} }

 

ReadOnly Property Messages() As IList<String>

OnConnected

Fires when an active TCP connection to the server has been (re-)established.

 

event OnConnected: OnConnectedHandler
delegate: method OnConnected(sender: Object; info: IServerChannelInfo; clientId: Guid)

 

delegate OnConnectedHandler OnConnected()
delegate: void OnConnected(Object sender, IServerChannelInfo info, Guid clientId)

 

__event OnConnectedHandler: OnConnected!
delegate: func OnConnected(_ sender: Object, _ info: IServerChannelInfo, _ clientId: Guid)

 

Event OnConnected As OnConnectedHandler
delegate: Sub OnConnected(sender As Object, info As IServerChannelInfo, clientId As Guid)

OnDisconnected

Fires when the active TCP connection to the server has been dropped or lost.

 

event OnDisconnected: OnConnectedHandler
delegate: method OnDisconnected(sender: Object; info: IServerChannelInfo; clientId: Guid)

 

delegate OnConnectedHandler OnDisconnected()
delegate: void OnDisconnected(Object sender, IServerChannelInfo info, Guid clientId)

 

__event OnConnectedHandler: OnDisconnected!
delegate: func OnDisconnected(_ sender: Object, _ info: IServerChannelInfo, _ clientId: Guid)

 

Event OnDisconnected As OnConnectedHandler
delegate: Sub OnDisconnected(sender As Object, info As IServerChannelInfo, clientId As Guid)

Open    (declared in ServerChannel)

Opens the ServerChannel component and starts accepting incoming requests. Depending on the server type, this usually involves starting to listen on a network socket or polling some source for waiting messages.

 

method Open

 

void Open()

 

func Open()

 

Sub Open()

OpenChannel  protected

 

method OpenChannel

 

void OpenChannel()

 

func OpenChannel()

 

Sub OpenChannel()

Port

The network socket the server will be listening to (default for the Remoting SDK Super TCP servers is 8095).

 

[DefaultValue(8095)]
property Port: Int32 read write;

 

[DefaultValue(8095)]
Int32 Port { get; set; }

 

@DefaultValue(8095)
var Port: Int32 { get{} set{} }

 

<DefaultValue(8095)>
Property Port() As Int32

PROBE_REQUEST  protected    (declared in ServerChannel)

 

const PROBE_REQUEST: String = 'PROBE'

 

const String PROBE_REQUEST = "PROBE"

 

static let PROBE_REQUEST: String = "PROBE"

 

Const PROBE_REQUEST As String = "PROBE"

PROBE_REQUEST_LENGTH  protected    (declared in ServerChannel)

 

const PROBE_REQUEST_LENGTH: Int32 = 5

 

const Int32 PROBE_REQUEST_LENGTH = 5

 

static let PROBE_REQUEST_LENGTH: Int32 = 5

 

Const PROBE_REQUEST_LENGTH As Int32 = 5

PROBE_RESPONSE_LENGTH  protected    (declared in ServerChannel)

 

const PROBE_RESPONSE_LENGTH: Int32 = 8

 

const Int32 PROBE_RESPONSE_LENGTH = 8

 

static let PROBE_RESPONSE_LENGTH: Int32 = 8

 

Const PROBE_RESPONSE_LENGTH As Int32 = 8

RegisterWorker

 

method RegisterWorker(worker: SuperTcpServerChannelWorker)

 

void RegisterWorker(SuperTcpServerChannelWorker worker)

 

func RegisterWorker(_ worker: SuperTcpServerChannelWorker)

 

Sub RegisterWorker(worker As SuperTcpServerChannelWorker)

Parameters:

  • worker:

SecurityOptions    (declared in ServerChannel)

Exposes a number of settings you can use to protect your server against outside spoofing and denial-of-service attacks.
In particular, you can set a maximum message size to be received from clients (to avoid attackers bringing down your service by sending huge messages).

 

property SecurityOptions: ServerSecurityOptions read;

 

ServerSecurityOptions SecurityOptions { get; }

 

var SecurityOptions: ServerSecurityOptions { get{} }

 

ReadOnly Property SecurityOptions() As ServerSecurityOptions

Server

Provides read-only access to the underlying server object that wraps the server socket.

 

property Server: AsyncTcpServer read;

 

AsyncTcpServer Server { get; }

 

var Server: AsyncTcpServer { get{} }

 

ReadOnly Property Server() As AsyncTcpServer

ServeRodl    (declared in ServerChannel)

Toggles whether clients can request the RODL file for this server via IRodlAccess or channel-specific means (such as by submitting a HTTP GET request to an HTTP server). By default, this option is turned on; set this property to false if you want to prevent clients from retrieving the RODL file from the server.

 

[DefaultValue(true)]
property ServeRodl: Boolean read write;

 

[DefaultValue(true)]
Boolean ServeRodl { get; set; }

 

@DefaultValue(true)
var ServeRodl: Boolean { get{} set{} }

 

<DefaultValue(true)>
Property ServeRodl() As Boolean

ServiceGroup    (declared in ServerChannel)

Allows to get/set Service Groups

 

property ServiceGroup: String read write;

 

String ServiceGroup { get; set; }

 

var ServiceGroup: String { get{} set{} }

 

Property ServiceGroup() As String

SkipAck

 

[DefaultValue(false)]
property SkipAck: Boolean read write;

 

[DefaultValue(false)]
Boolean SkipAck { get; set; }

 

@DefaultValue(false)
var SkipAck: Boolean { get{} set{} }

 

<DefaultValue(false)>
Property SkipAck() As Boolean

SslOptions

Gets the SslConnectionFactory instance that can be used to configure the SSL options of the current instance.

 

property SslOptions: SslConnectionFactory read;

 

SslConnectionFactory SslOptions { get; }

 

var SslOptions: SslConnectionFactory { get{} }

 

ReadOnly Property SslOptions() As SslConnectionFactory

ThreadPool

 

property ThreadPool: IThreadPool read write;

 

IThreadPool ThreadPool { get; set; }

 

var ThreadPool: IThreadPool { get{} set{} }

 

Property ThreadPool() As IThreadPool

TriggerAdjustConvertedRodl  protected    (declared in ServerChannel)

 

method TriggerAdjustConvertedRodl(e: RodlEventArgs)

 

void TriggerAdjustConvertedRodl(RodlEventArgs e)

 

func TriggerAdjustConvertedRodl(_ e: RodlEventArgs)

 

Sub TriggerAdjustConvertedRodl(e As RodlEventArgs)

Parameters:

  • e:

TriggerAdjustRodl  protected    (declared in ServerChannel)

 

method TriggerAdjustRodl(e: RodlEventArgs)

 

void TriggerAdjustRodl(RodlEventArgs e)

 

func TriggerAdjustRodl(_ e: RodlEventArgs)

 

Sub TriggerAdjustRodl(e As RodlEventArgs)

Parameters:

  • e:

TriggerAfterClose  protected    (declared in ServerChannel)

 

method TriggerAfterClose

 

void TriggerAfterClose()

 

func TriggerAfterClose()

 

Sub TriggerAfterClose()

TriggerAfterOpen  protected    (declared in ServerChannel)

 

method TriggerAfterOpen

 

void TriggerAfterOpen()

 

func TriggerAfterOpen()

 

Sub TriggerAfterOpen()

TriggerAfterReceiveStream  protected    (declared in Channel)

 

method TriggerAfterReceiveStream(var stream: Stream)

 

void TriggerAfterReceiveStream(ref Stream stream)

 

func TriggerAfterReceiveStream(_ stream: inout Stream)

 

Sub TriggerAfterReceiveStream(ByRef stream As Stream)

Parameters:

  • stream:

TriggerBeforeClose  protected    (declared in ServerChannel)

 

method TriggerBeforeClose

 

void TriggerBeforeClose()

 

func TriggerBeforeClose()

 

Sub TriggerBeforeClose()

TriggerBeforeOpen  protected    (declared in ServerChannel)

 

method TriggerBeforeOpen

 

void TriggerBeforeOpen()

 

func TriggerBeforeOpen()

 

Sub TriggerBeforeOpen()

TriggerBeforeSendStream  protected    (declared in Channel)

 

method TriggerBeforeSendStream(var stream: Stream)

 

void TriggerBeforeSendStream(ref Stream stream)

 

func TriggerBeforeSendStream(_ stream: inout Stream)

 

Sub TriggerBeforeSendStream(ByRef stream As Stream)

Parameters:

  • stream:

TriggerGetRodl  protected    (declared in ServerChannel)

 

method TriggerGetRodl(e: RodlEventArgs)

 

void TriggerGetRodl(RodlEventArgs e)

 

func TriggerGetRodl(_ e: RodlEventArgs)

 

Sub TriggerGetRodl(e As RodlEventArgs)

Parameters:

  • e:

TriggerOnConnected  protected

Forces OnConnected event.

internal protected

 

method TriggerOnConnected(channel: IServerChannelInfo; clientId: Guid)

 

void TriggerOnConnected(IServerChannelInfo channel, Guid clientId)

 

func TriggerOnConnected(_ channel: IServerChannelInfo, _ clientId: Guid)

 

Sub TriggerOnConnected(channel As IServerChannelInfo, clientId As Guid)

Parameters:

  • channel:
  • clientId:

TriggerOnDisconnected  protected

Forces OnDisconnected event.

internal protected

 

method TriggerOnDisconnected(channel: IServerChannelInfo; clientId: Guid)

 

void TriggerOnDisconnected(IServerChannelInfo channel, Guid clientId)

 

func TriggerOnDisconnected(_ channel: IServerChannelInfo, _ clientId: Guid)

 

Sub TriggerOnDisconnected(channel As IServerChannelInfo, clientId As Guid)

Parameters:

  • channel:
  • clientId:

UnregisterWorker

 

method UnregisterWorker(worker: SuperTcpServerChannelWorker)

 

void UnregisterWorker(SuperTcpServerChannelWorker worker)

 

func UnregisterWorker(_ worker: SuperTcpServerChannelWorker)

 

Sub UnregisterWorker(worker As SuperTcpServerChannelWorker)

Parameters:

  • worker:

ValidateServiceGroup    (declared in ServerChannel)

 

method ValidateServiceGroup(serviceGroups: array of String): Boolean

 

Boolean ValidateServiceGroup(String[] serviceGroups)

 

func ValidateServiceGroup(_ serviceGroups: String...) -> Boolean

 

Function ValidateServiceGroup(serviceGroups As String()) As Boolean

Parameters:

  • serviceGroups:

 

IS_TRIAL_MODE  protected    (declared in ServerChannel)

 

const IS_TRIAL_MODE: Boolean = false

 

const Boolean IS_TRIAL_MODE = false

 

static let IS_TRIAL_MODE: Boolean = false

 

Const IS_TRIAL_MODE As Boolean = false

PROBE_REQUEST  protected    (declared in ServerChannel)

 

const PROBE_REQUEST: String = 'PROBE'

 

const String PROBE_REQUEST = "PROBE"

 

static let PROBE_REQUEST: String = "PROBE"

 

Const PROBE_REQUEST As String = "PROBE"

PROBE_REQUEST_LENGTH  protected    (declared in ServerChannel)

 

const PROBE_REQUEST_LENGTH: Int32 = 5

 

const Int32 PROBE_REQUEST_LENGTH = 5

 

static let PROBE_REQUEST_LENGTH: Int32 = 5

 

Const PROBE_REQUEST_LENGTH As Int32 = 5

PROBE_RESPONSE_LENGTH  protected    (declared in ServerChannel)

 

const PROBE_RESPONSE_LENGTH: Int32 = 8

 

const Int32 PROBE_RESPONSE_LENGTH = 8

 

static let PROBE_RESPONSE_LENGTH: Int32 = 8

 

Const PROBE_RESPONSE_LENGTH As Int32 = 8

 

AckWaitTimeout

Specifies the time frame, in milliseconds, in which an "acknowledgement" message is expected to be received for a sent event (default is 60000, 1 minute).

If no acknowledgement has been received after the specified time, delivery will be considered to have failed and the event will be stored in queue for future retries.

 

[DefaultValue(60000)]
property AckWaitTimeout: Int32 read write;

 

[DefaultValue(60000)]
Int32 AckWaitTimeout { get; set; }

 

@DefaultValue(60000)
var AckWaitTimeout: Int32 { get{} set{} }

 

<DefaultValue(60000)>
Property AckWaitTimeout() As Int32

Active    (declared in ServerChannel)

Toggles whether the server component is active or not. Set it to true (either from code or in the Property Pane) to have your server active and listening for requests from clients or set it to false to prevent new requests from being accepted.

 

[DefaultValue(false)]
property Active: Boolean read write;

 

[DefaultValue(false)]
Boolean Active { get; set; }

 

@DefaultValue(false)
var Active: Boolean { get{} set{} }

 

<DefaultValue(false)>
Property Active() As Boolean

BlockingEvents

Affects the processing of events on the server.

Setting BlockingEvents to true delays the event's dispatching. In this case, client events will happen in the main thread of the server and will be suspended. This value is useful if you want to make sure that events arrive in order.

If you want to process multiple events at once, you should use the default value BlockingEvents = false. In this case, the event is put in queue and will be dispatched in a separate thread. You possibly will have to to control the thread pool queue from overflowing, using ThreadPool.MaxQueue and ThreadPool.MaxThreads properties.

 

[DefaultValue(false)]
property BlockingEvents: Boolean read write;

 

[DefaultValue(false)]
Boolean BlockingEvents { get; set; }

 

@DefaultValue(false)
var BlockingEvents: Boolean { get{} set{} }

 

<DefaultValue(false)>
Property BlockingEvents() As Boolean

ChannelType

This property is needed to determine the type of server channel for internal purposes. It has a "supertcp" value.

 

property ChannelType: String read;

 

String ChannelType { get; }

 

var ChannelType: String { get{} }

 

ReadOnly Property ChannelType() As String

CustomParameters    (declared in ServerChannel)

 

property CustomParameters: IDictionary<String, String> read;

 

IDictionary<String, String> CustomParameters { get; }

 

var CustomParameters: IDictionary<String, String> { get{} }

 

ReadOnly Property CustomParameters() As IDictionary<String, String>

Dispatchers    (declared in ServerChannel)

Organizes the different Dispatchers configured for the server. Depending on the server type, different dispatchers can be made accessible through different names (for example the HTTP based servers use the Path provided with the HTTP request to determine the dispatcher) or the dispatcher marked as Default will be used. Note: A design time editor for the Dispatcher collection is provided in the IDE, which you can invoke by clicking the ellipsis (...) button in the Properties Pane. You can use this editor to create new MessageDispatcher instances at design time and link them to the specific message components you have dropped onto your form.

 

property Dispatchers: MessageDispatchers read;

 

MessageDispatchers Dispatchers { get; }

 

var Dispatchers: MessageDispatchers { get{} }

 

ReadOnly Property Dispatchers() As MessageDispatchers

HasAfterReceiveStream  protected    (declared in Channel)

 

property HasAfterReceiveStream: Boolean read;

 

Boolean HasAfterReceiveStream { get; }

 

var HasAfterReceiveStream: Boolean { get{} }

 

ReadOnly Property HasAfterReceiveStream() As Boolean

HasBeforeSendStream  protected    (declared in Channel)

 

property HasBeforeSendStream: Boolean read;

 

Boolean HasBeforeSendStream { get; }

 

var HasBeforeSendStream: Boolean { get{} }

 

ReadOnly Property HasBeforeSendStream() As Boolean

Initializing  protected    (declared in ServerChannel)

 

property Initializing: Boolean read;

 

Boolean Initializing { get; }

 

var Initializing: Boolean { get{} }

 

ReadOnly Property Initializing() As Boolean

IsTlsEnabled

Specifies if TLS protocol is used

 

property IsTlsEnabled: Boolean read;

 

Boolean IsTlsEnabled { get; }

 

var IsTlsEnabled: Boolean { get{} }

 

ReadOnly Property IsTlsEnabled() As Boolean

MaxPackageSize

The maximum size of the data package the server will accept.

 

[DefaultValue(10485760)]
property MaxPackageSize: Int32 read write;

 

[DefaultValue(10485760)]
Int32 MaxPackageSize { get; set; }

 

@DefaultValue(10485760)
var MaxPackageSize: Int32 { get{} set{} }

 

<DefaultValue(10485760)>
Property MaxPackageSize() As Int32

Messages    (declared in ServerChannel)

 

property Messages: IList<String> read;

 

IList<String> Messages { get; }

 

var Messages: IList<String> { get{} }

 

ReadOnly Property Messages() As IList<String>

Port

The network socket the server will be listening to (default for the Remoting SDK Super TCP servers is 8095).

 

[DefaultValue(8095)]
property Port: Int32 read write;

 

[DefaultValue(8095)]
Int32 Port { get; set; }

 

@DefaultValue(8095)
var Port: Int32 { get{} set{} }

 

<DefaultValue(8095)>
Property Port() As Int32

SecurityOptions    (declared in ServerChannel)

Exposes a number of settings you can use to protect your server against outside spoofing and denial-of-service attacks.
In particular, you can set a maximum message size to be received from clients (to avoid attackers bringing down your service by sending huge messages).

 

property SecurityOptions: ServerSecurityOptions read;

 

ServerSecurityOptions SecurityOptions { get; }

 

var SecurityOptions: ServerSecurityOptions { get{} }

 

ReadOnly Property SecurityOptions() As ServerSecurityOptions

Server

Provides read-only access to the underlying server object that wraps the server socket.

 

property Server: AsyncTcpServer read;

 

AsyncTcpServer Server { get; }

 

var Server: AsyncTcpServer { get{} }

 

ReadOnly Property Server() As AsyncTcpServer

ServeRodl    (declared in ServerChannel)

Toggles whether clients can request the RODL file for this server via IRodlAccess or channel-specific means (such as by submitting a HTTP GET request to an HTTP server). By default, this option is turned on; set this property to false if you want to prevent clients from retrieving the RODL file from the server.

 

[DefaultValue(true)]
property ServeRodl: Boolean read write;

 

[DefaultValue(true)]
Boolean ServeRodl { get; set; }

 

@DefaultValue(true)
var ServeRodl: Boolean { get{} set{} }

 

<DefaultValue(true)>
Property ServeRodl() As Boolean

ServiceGroup    (declared in ServerChannel)

Allows to get/set Service Groups

 

property ServiceGroup: String read write;

 

String ServiceGroup { get; set; }

 

var ServiceGroup: String { get{} set{} }

 

Property ServiceGroup() As String

SkipAck

 

[DefaultValue(false)]
property SkipAck: Boolean read write;

 

[DefaultValue(false)]
Boolean SkipAck { get; set; }

 

@DefaultValue(false)
var SkipAck: Boolean { get{} set{} }

 

<DefaultValue(false)>
Property SkipAck() As Boolean

SslOptions

Gets the SslConnectionFactory instance that can be used to configure the SSL options of the current instance.

 

property SslOptions: SslConnectionFactory read;

 

SslConnectionFactory SslOptions { get; }

 

var SslOptions: SslConnectionFactory { get{} }

 

ReadOnly Property SslOptions() As SslConnectionFactory

ThreadPool

 

property ThreadPool: IThreadPool read write;

 

IThreadPool ThreadPool { get; set; }

 

var ThreadPool: IThreadPool { get{} set{} }

 

Property ThreadPool() As IThreadPool

 

constructor

 

constructor

 

SuperTcpServerChannel()

 

init()

 

Sub New()

constructor (IContainer) .NET Framework

 

constructor(container: IContainer)

 

SuperTcpServerChannel(IContainer container)

 

init(_ container: IContainer)

 

Sub New(container As IContainer)

Parameters:

  • container:

Close    (declared in ServerChannel)

Closes the ServerChannel component and stops it from accepting any more incoming requests.

 

method Close

 

void Close()

 

func Close()

 

Sub Close()

CloseChannel  protected

 

method CloseChannel

 

void CloseChannel()

 

func CloseChannel()

 

Sub CloseChannel()

CopyProperties  protected    (declared in Channel)

 

method CopyProperties(source: Channel)

 

void CopyProperties(Channel source)

 

func CopyProperties(_ source: Channel)

 

Sub CopyProperties(source As Channel)

Parameters:

  • source:

Dispatch  protected    (declared in ServerChannel)

 

method Dispatch(message: IMessage; channelInfo: IServerChannelInfo)

 

void Dispatch(IMessage message, IServerChannelInfo channelInfo)

 

func Dispatch(_ message: IMessage, _ channelInfo: IServerChannelInfo)

 

Sub Dispatch(message As IMessage, channelInfo As IServerChannelInfo)

Parameters:

  • message:
  • channelInfo:

Dispose    (declared in Channel) .NET Core, .NET Standard

 

method Dispose

 

void Dispose()

 

func Dispose()

 

Sub Dispose()

Dispose (Boolean)  protected

 

method Dispose(disposing: Boolean)

 

void Dispose(Boolean disposing)

 

func Dispose(_ disposing: Boolean)

 

Sub Dispose(disposing As Boolean)

Parameters:

  • disposing:

GetServerRodl  protected    (declared in ServerChannel)

 

method GetServerRodl(context: Object; dispatcher: MessageDispatcher; serviceGroups: String; out contentType: String): Stream

 

Stream GetServerRodl(Object context, MessageDispatcher dispatcher, String serviceGroups, out String contentType)

 

func GetServerRodl(_ context: Object, _ dispatcher: MessageDispatcher, _ serviceGroups: String, _ contentType: inout String) -> Stream

 

Function GetServerRodl(context As Object, dispatcher As MessageDispatcher, serviceGroups As String, <OutAttribute> ByRef contentType As String) As Stream

Parameters:

  • context:
  • dispatcher:
  • serviceGroups:
  • contentType:

GetServiceMetaData  protected    (declared in ServerChannel)

 

method GetServiceMetaData(context: Object; dispatcher: MessageDispatcher; serviceName: String; options: Hashtable; out contentType: String): Stream

 

Stream GetServiceMetaData(Object context, MessageDispatcher dispatcher, String serviceName, Hashtable options, out String contentType)

 

func GetServiceMetaData(_ context: Object, _ dispatcher: MessageDispatcher, _ serviceName: String, _ options: Hashtable, _ contentType: inout String) -> Stream

 

Function GetServiceMetaData(context As Object, dispatcher As MessageDispatcher, serviceName As String, options As Hashtable, <OutAttribute> ByRef contentType As String) As Stream

Parameters:

  • context:
  • dispatcher:
  • serviceName:
  • options:
  • contentType:

IncomingData  protected

Enqueues incoming packages to the thread pool.

internal protected

 

method IncomingData(worker: SuperTcpServerChannelWorker; package: SuperTcpPackage)

 

void IncomingData(SuperTcpServerChannelWorker worker, SuperTcpPackage package)

 

func IncomingData(_ worker: SuperTcpServerChannelWorker, _ package: SuperTcpPackage)

 

Sub IncomingData(worker As SuperTcpServerChannelWorker, package As SuperTcpPackage)

Parameters:

  • worker:
  • package:

IsRegisteredWorker

 

method IsRegisteredWorker(worker: SuperTcpServerChannelWorker): Boolean

 

Boolean IsRegisteredWorker(SuperTcpServerChannelWorker worker)

 

func IsRegisteredWorker(_ worker: SuperTcpServerChannelWorker) -> Boolean

 

Function IsRegisteredWorker(worker As SuperTcpServerChannelWorker) As Boolean

Parameters:

  • worker:

IsSingleRegisteredWorker

 

method IsSingleRegisteredWorker(clientId: Guid): Boolean

 

Boolean IsSingleRegisteredWorker(Guid clientId)

 

func IsSingleRegisteredWorker(_ clientId: Guid) -> Boolean

 

Function IsSingleRegisteredWorker(clientId As Guid) As Boolean

Parameters:

  • clientId:

Open    (declared in ServerChannel)

Opens the ServerChannel component and starts accepting incoming requests. Depending on the server type, this usually involves starting to listen on a network socket or polling some source for waiting messages.

 

method Open

 

void Open()

 

func Open()

 

Sub Open()

OpenChannel  protected

 

method OpenChannel

 

void OpenChannel()

 

func OpenChannel()

 

Sub OpenChannel()

RegisterWorker

 

method RegisterWorker(worker: SuperTcpServerChannelWorker)

 

void RegisterWorker(SuperTcpServerChannelWorker worker)

 

func RegisterWorker(_ worker: SuperTcpServerChannelWorker)

 

Sub RegisterWorker(worker As SuperTcpServerChannelWorker)

Parameters:

  • worker:

TriggerAdjustConvertedRodl  protected    (declared in ServerChannel)

 

method TriggerAdjustConvertedRodl(e: RodlEventArgs)

 

void TriggerAdjustConvertedRodl(RodlEventArgs e)

 

func TriggerAdjustConvertedRodl(_ e: RodlEventArgs)

 

Sub TriggerAdjustConvertedRodl(e As RodlEventArgs)

Parameters:

  • e:

TriggerAdjustRodl  protected    (declared in ServerChannel)

 

method TriggerAdjustRodl(e: RodlEventArgs)

 

void TriggerAdjustRodl(RodlEventArgs e)

 

func TriggerAdjustRodl(_ e: RodlEventArgs)

 

Sub TriggerAdjustRodl(e As RodlEventArgs)

Parameters:

  • e:

TriggerAfterClose  protected    (declared in ServerChannel)

 

method TriggerAfterClose

 

void TriggerAfterClose()

 

func TriggerAfterClose()

 

Sub TriggerAfterClose()

TriggerAfterOpen  protected    (declared in ServerChannel)

 

method TriggerAfterOpen

 

void TriggerAfterOpen()

 

func TriggerAfterOpen()

 

Sub TriggerAfterOpen()

TriggerAfterReceiveStream  protected    (declared in Channel)

 

method TriggerAfterReceiveStream(var stream: Stream)

 

void TriggerAfterReceiveStream(ref Stream stream)

 

func TriggerAfterReceiveStream(_ stream: inout Stream)

 

Sub TriggerAfterReceiveStream(ByRef stream As Stream)

Parameters:

  • stream:

TriggerBeforeClose  protected    (declared in ServerChannel)

 

method TriggerBeforeClose

 

void TriggerBeforeClose()

 

func TriggerBeforeClose()

 

Sub TriggerBeforeClose()

TriggerBeforeOpen  protected    (declared in ServerChannel)

 

method TriggerBeforeOpen

 

void TriggerBeforeOpen()

 

func TriggerBeforeOpen()

 

Sub TriggerBeforeOpen()

TriggerBeforeSendStream  protected    (declared in Channel)

 

method TriggerBeforeSendStream(var stream: Stream)

 

void TriggerBeforeSendStream(ref Stream stream)

 

func TriggerBeforeSendStream(_ stream: inout Stream)

 

Sub TriggerBeforeSendStream(ByRef stream As Stream)

Parameters:

  • stream:

TriggerGetRodl  protected    (declared in ServerChannel)

 

method TriggerGetRodl(e: RodlEventArgs)

 

void TriggerGetRodl(RodlEventArgs e)

 

func TriggerGetRodl(_ e: RodlEventArgs)

 

Sub TriggerGetRodl(e As RodlEventArgs)

Parameters:

  • e:

TriggerOnConnected  protected

Forces OnConnected event.

internal protected

 

method TriggerOnConnected(channel: IServerChannelInfo; clientId: Guid)

 

void TriggerOnConnected(IServerChannelInfo channel, Guid clientId)

 

func TriggerOnConnected(_ channel: IServerChannelInfo, _ clientId: Guid)

 

Sub TriggerOnConnected(channel As IServerChannelInfo, clientId As Guid)

Parameters:

  • channel:
  • clientId:

TriggerOnDisconnected  protected

Forces OnDisconnected event.

internal protected

 

method TriggerOnDisconnected(channel: IServerChannelInfo; clientId: Guid)

 

void TriggerOnDisconnected(IServerChannelInfo channel, Guid clientId)

 

func TriggerOnDisconnected(_ channel: IServerChannelInfo, _ clientId: Guid)

 

Sub TriggerOnDisconnected(channel As IServerChannelInfo, clientId As Guid)

Parameters:

  • channel:
  • clientId:

UnregisterWorker

 

method UnregisterWorker(worker: SuperTcpServerChannelWorker)

 

void UnregisterWorker(SuperTcpServerChannelWorker worker)

 

func UnregisterWorker(_ worker: SuperTcpServerChannelWorker)

 

Sub UnregisterWorker(worker As SuperTcpServerChannelWorker)

Parameters:

  • worker:

ValidateServiceGroup    (declared in ServerChannel)

 

method ValidateServiceGroup(serviceGroups: array of String): Boolean

 

Boolean ValidateServiceGroup(String[] serviceGroups)

 

func ValidateServiceGroup(_ serviceGroups: String...) -> Boolean

 

Function ValidateServiceGroup(serviceGroups As String()) As Boolean

Parameters:

  • serviceGroups:

 

AdjustConvertedRodl    (declared in ServerChannel)

 

event AdjustConvertedRodl: EventHandler<RodlEventArgs>

 

delegate EventHandler<RodlEventArgs> AdjustConvertedRodl()

 

__event EventHandler<RodlEventArgs>: AdjustConvertedRodl!

 

Event AdjustConvertedRodl As EventHandler<RodlEventArgs>

AdjustRodl    (declared in ServerChannel)

 

event AdjustRodl: EventHandler<RodlEventArgs>

 

delegate EventHandler<RodlEventArgs> AdjustRodl()

 

__event EventHandler<RodlEventArgs>: AdjustRodl!

 

Event AdjustRodl As EventHandler<RodlEventArgs>

AfterClose    (declared in ServerChannel)

 

event AfterClose: EventHandler

 

delegate EventHandler AfterClose()

 

__event EventHandler: AfterClose!

 

Event AfterClose As EventHandler

AfterOpen    (declared in ServerChannel)

 

event AfterOpen: EventHandler

 

delegate EventHandler AfterOpen()

 

__event EventHandler: AfterOpen!

 

Event AfterOpen As EventHandler

AfterReceiveStream    (declared in Channel)

This event is triggered by client and server channels directly after a request or response stream has been received and before the stream gets parsed into a message. User code can assign handlers to this event to process, inspect or modify incoming messages, before they get handled by the Remoting SDK framework. The passed Stream is a MemoryStream and may be modified.

If no handlers are assigned to the AfterReceiveStream event, the message will load the data directly from the incoming medium (usually the network stream); assigning event handlers to AfterReceiveStream will induce a slight overhead as the data will first be copied into a local memory buffer for the event handler. This should not have any noticeably effect except for very large messages or on resource-limited systems such as Compact Framework Clients, but if utmost performance is important, take this note into consideration.

 

event AfterReceiveStream: EventHandler<StreamEventArgs>

 

delegate EventHandler<StreamEventArgs> AfterReceiveStream()

 

__event EventHandler<StreamEventArgs>: AfterReceiveStream!

 

Event AfterReceiveStream As EventHandler<StreamEventArgs>

BeforeClose    (declared in ServerChannel)

 

event BeforeClose: EventHandler

 

delegate EventHandler BeforeClose()

 

__event EventHandler: BeforeClose!

 

Event BeforeClose As EventHandler

BeforeOpen    (declared in ServerChannel)

 

event BeforeOpen: EventHandler

 

delegate EventHandler BeforeOpen()

 

__event EventHandler: BeforeOpen!

 

Event BeforeOpen As EventHandler

BeforeSendStream    (declared in Channel)

This event is triggered by client and server channels directly before a request or response stream will be sent over the network. User code can assign handlers to this event to process, inspect or modify incoming messages before they get sent out to the remote system.

The passed Stream is a MemoryStream and may be modified.

 

event BeforeSendStream: EventHandler<StreamEventArgs>

 

delegate EventHandler<StreamEventArgs> BeforeSendStream()

 

__event EventHandler<StreamEventArgs>: BeforeSendStream!

 

Event BeforeSendStream As EventHandler<StreamEventArgs>

GetRodl    (declared in ServerChannel)

 

event GetRodl: EventHandler<RodlEventArgs>

 

delegate EventHandler<RodlEventArgs> GetRodl()

 

__event EventHandler<RodlEventArgs>: GetRodl!

 

Event GetRodl As EventHandler<RodlEventArgs>

OnConnected

Fires when an active TCP connection to the server has been (re-)established.

 

event OnConnected: OnConnectedHandler
delegate: method OnConnected(sender: Object; info: IServerChannelInfo; clientId: Guid)

 

delegate OnConnectedHandler OnConnected()
delegate: void OnConnected(Object sender, IServerChannelInfo info, Guid clientId)

 

__event OnConnectedHandler: OnConnected!
delegate: func OnConnected(_ sender: Object, _ info: IServerChannelInfo, _ clientId: Guid)

 

Event OnConnected As OnConnectedHandler
delegate: Sub OnConnected(sender As Object, info As IServerChannelInfo, clientId As Guid)

OnDisconnected

Fires when the active TCP connection to the server has been dropped or lost.

 

event OnDisconnected: OnConnectedHandler
delegate: method OnDisconnected(sender: Object; info: IServerChannelInfo; clientId: Guid)

 

delegate OnConnectedHandler OnDisconnected()
delegate: void OnDisconnected(Object sender, IServerChannelInfo info, Guid clientId)

 

__event OnConnectedHandler: OnDisconnected!
delegate: func OnDisconnected(_ sender: Object, _ info: IServerChannelInfo, _ clientId: Guid)

 

Event OnDisconnected As OnConnectedHandler
delegate: Sub OnDisconnected(sender As Object, info As IServerChannelInfo, clientId As Guid)