RealTimeServerConnectionManager Class

Definition

Represents the server-class connection manager that enables listening for incoming connections.

public ref class RealTimeServerConnectionManager abstract : Microsoft::Rtc::Signaling::RealTimeConnectionManager
public abstract class RealTimeServerConnectionManager : Microsoft.Rtc.Signaling.RealTimeConnectionManager
type RealTimeServerConnectionManager = class
    inherit RealTimeConnectionManager
Public MustInherit Class RealTimeServerConnectionManager
Inherits RealTimeConnectionManager
Inheritance
RealTimeServerConnectionManager
Derived

Constructors

RealTimeServerConnectionManager()

Initializes this instance with default localhost name.

RealTimeServerConnectionManager(String)

Initializes this instance with given localhost.

RealTimeServerConnectionManager(String, String, Byte[])

Initializes this instance with given localhost and certificate information.

Properties

ConnectionThrottlingHighMark

Gets or sets the high water mark for all connections. When number of outstanding transactions on a connection exceeds the high water mark, the connection is throttled until it goes below the low water mark. When the connection is throttled, send/receive will fail. Responses, however, can be sent to bring the level down. Outstanding outgoing transactions that are pending will timeout. The connection buffer is not processed until the outstanding transactions count falls below the low water mark. This value cannot be set below the low water mark. By default, this value is int.MaxValue. If both water mark levels are set to int.MaxValue, the connection throttling is disabled.

(Inherited from RealTimeConnectionManager)
ConnectionThrottlingLowMark

Gets or sets the low water mark for all connections. When number of outstanding transactions on a connection exceeds the high water mark, the connection is throttled until it goes below the low water mark. When the connection is throttled, send/receive will fail. Responses, however, can be sent to bring the level down. Outstanding outgoing transactions that are pending will timeout. The connection buffer is not processed until the outstanding transactions count falls below the low water mark. This value cannot be set above the high water mark. By default, this value is int.MaxValue. If both water mark levels are set to int.MaxValue, the connection throttling is disabled.

(Inherited from RealTimeConnectionManager)
CurrentMessageThrottlingCount

Get the current count of incoming messages (Invite, page mode messages, in-dialog messages, etc) that are waiting in internal queues (thread pool queue or session queue) for reporting to the application.

DefaultIncomingConnectionTimeout

Gets or sets the default time-out value for any incoming connections. Any incoming connection that is idle for the duration specified by this value will be disconnected. This value does not affect existing connections.

DefaultMaximumNumberOfConnectionsPerPool

Gets or sets the pool size used for connection pools. This property can be used to globally control the pool size used for new connection pools.

DefaultOutgoingConnectionTimeout

Gets or sets the default outgoing connection timeout value. If the connection is idle for the duration specified by this value, the connection will be disconnected. To disable, the value can be set to TimeSpan.Zero

DnsLoadBalancingDisabled

Gets or sets whether DNS load balancing is disabled. By default, DNS load balancing is enabled.

(Inherited from RealTimeConnectionManager)
EndpointsCount

Gets the number of endpoints currently supported by this manager.

(Inherited from RealTimeConnectionManager)
IsListening

Gets the value indicating whether listening is enabled or not.

ListeningPort

Gets the listening port.

LocalCertificateIssuerName

Gets the issuer of the local certificate used. Can be null.

(Inherited from RealTimeConnectionManager)
LocalHostName

Gets the fully qualified local host name. This is either the local fully-qualified domain name (FQDN), if the certificate is not used, or the host in the certificate, or the value set by the application.

(Inherited from RealTimeConnectionManager)
MessageThrottlingHighMark

Gets or sets the value that controls the high water mark limit for outstanding incoming messages (Invite, page mode messages, in-dialog messages, etc) that are maintained in internal queue including thread pool queue and not seen by the application yet. If the current number of outstanding incoming messages is higher than this value, new incoming messages are automatically rejected until the value goes under the lower water mark. To reduce the value below the current lower water mark, the lower water mark value should be changed first. By default, this value is int.MaxValue. If both low and high water mark values are int.MaxValue, water mark checks are disabled.

MessageThrottlingLowMark

Gets or sets the value that controls the low water mark limit for outstanding incoming messages (Invite, page mode messages, in-dialog messages, etc) that are maintained in internal queue including thread pool queue and not seen by the application yet. If the current number of outstanding incoming messages is lower than this value, new incoming messages are automatically processed again if they processing was stopped due to high water mark. By default, this value is int.MaxValue. If both low and high water mark values are int.MaxValue, water mark checks are disabled.

OutboundConnectionDefaultAddressFamilyHint

Gets or sets the address families enabled for making outbound connnections.

(Inherited from RealTimeConnectionManager)
StrictDispatching

Gets or sets whether incoming messages are routed to the hosted endpoints by this connection manager. By default, this flag is false. This flag is used only when there is only one peer-to-peer endpoint hosted by the connection manager. Normally, incoming messages are routed to the endpoint only when the To header URI and epid (if any) match those of the endpoint. If this flag is set, the message is routed to the single peer-to-peer endpoint ignoring the To header values. In this case, it is the responsibility of the endpoint or application using the endpoint to handle the situation appropriately.

(Inherited from RealTimeConnectionManager)

Methods

BeginStartListening(Int32, AsyncCallback, Object)

Starts listening on default addresses on the specified port.

BeginStartListening(Int32, IEnumerable<IPAddress>, StartListeningOptions, AsyncCallback, Object)

Starts listening on default addresses on the specified port.

BeginStopListening(AsyncCallback, Object)

Starts an operation to stop listening on all addresses.

CanLocalHostBeChangedNow()

Set the local host.

CanShutdownCoreManagerNow()

Get the value to determine if the core manager can be shut down now.

CleanUpConnections()

This method is called to clean up connections.

CoreManagerIncomingTlsNegotiationFailed(IncomingTlsNegotiationFailedEventArgs)

This event callback is invoked when there is tls negotiation failure for incoming connection.

DecrementThrottleCount()

Method to be called after the application is notified of the incoming message (Invite, Message etc) that was in internal queue. This will decrement the current outstanding count.

DisableIpV6Support()

Disables IPV6 support in the network stack to be compatible with previous versions of the stack.

Dispose()

Releases the resources used by the connection manager. The application can call this method to dispose the connection manager when it is no longer needed. Once the resources are released, the connection manager and the associated endpoints are not usable.

(Inherited from RealTimeConnectionManager)
Dispose(Boolean)

Dispose implementation

EndStartListening(IAsyncResult)

Waits for the start listening operation to complete.

EndStopListening(IAsyncResult)

Waits for the stop listening operation to complete.

GetConnectionPools()

Gets the list of connection pools in this connection manager.

(Inherited from RealTimeConnectionManager)
GetDestinationTuple(SipTransportType, String, Int32, AddressFamilyHint, String)

Get the tuple needed to make the connection.

(Inherited from RealTimeConnectionManager)
GetIncomingConnections()

Gets the list of incoming connections.

GetListeningAddresses()
Obsolete.

Gets the collection of listening addresses.

GetLocalCertificateSerialNumber()

Gets the serial number of the local certificate used. Can be null.

(Inherited from RealTimeConnectionManager)
GetOutgoingConnectionCount()

Returns the total number of outgoing connections in the connection pools.

IncomingConnectionConnected(SipConnection, String, X509Certificate2)

Handles incoming connection connected event. This class should not get this event since it is not listening but a subclass can.

IncrementThrottleCount()

Method to be called when the application places an incoming message (Invite, Message etc) in an internal queue. This will increment the current outstanding count.

IsThrottlingInEffect()

Method that determines if the incoming message should be throttled or not. If throttling is in effect, it should be rejected automatically. Otherwise, it can be processed in placed in some queue (thread pool or internal). Once the application is notified, DecrementThrottleCount should be called. If rejected due to throttling, DecrementThrottleCount can be called right away.

ListenForIncomingConnections(IPEndPoint)

This method does the actual S4 listening.

SetDefaultTlsTuple()

Set the default TlsCredentials for the core manager. This might be used by S4 when it needs Tls tuple for outgoing connection and one was not provided to it directly.

(Inherited from RealTimeConnectionManager)
SetLocalCertificate(String, Byte[])

Sets the local certificate information. This is used for mutual TLS authentication when needed. If the mutual TLS is not used, there is no need to set these values. The certificate is retrieved from the certificate store on the local computer.

(Inherited from RealTimeConnectionManager)
StartListening(IPEndPoint)

Starts listening on the specified address and port.

StopListening()

Stops listening for new connections.

StopListeningForIncomingConnections()

This method does the actual S4 stop for listening.

Events

ConnectionAuthorizationRequested

Raised when an incoming or outgoing connection becomes connected.

ConnectionPoolAdded

A connection pool was added.

(Inherited from RealTimeConnectionManager)
ConnectionPoolRemoved

A connection pool was removed.

(Inherited from RealTimeConnectionManager)
IncomingConnectionAdded

Raised when a new incoming connection is added.

IncomingConnectionRemoved

Raised when a new incoming connection is removed.

IncomingTlsNegotiationFailed

Raised when the TLS negotiation fails for an incoming connection. The failure may be due to an invalid local certificate, or remote not trusting the local certificate, or some other reason.

ListeningAborted

Raised when the listening is aborted either due to application calling StopListening or when an internal failure occurs such as failure to accept an incoming connection. The exception in the event argument can be null if the application called StopListening.

ListeningAddressesChanged

Raised when one or more items are added or removed from the list of listening addresses.

Extension Methods

AddInDialogMessageReceivedEvent(RealTimeConnectionManager, EventHandler<InDialogMessageReceivedEventArgs>)
DisconnectIncomingConnections(RealTimeServerConnectionManager)
GetTraceFilterConfiguration(RealTimeConnectionManager)
RegisterConnectionConfigurationRequested(RealTimeConnectionManager, EventHandler<ConnectionConfigurationRequestedEventArgs>)
RemoveInDialogMessageReceivedEvent(RealTimeConnectionManager, EventHandler<InDialogMessageReceivedEventArgs>)
SetConnectionFailoverTimeout(RealTimeConnectionManager, Int32)
SetCustomSipConnection(RealTimeConnectionManager, RealTimeConnectionManagerExtensions+GetCustomSipConnectionDelegate)
SetDiagnosticsMode(RealTimeConnectionManager, ConnectionManagerDiagnosticsMode)
SetKeepAliveUASEnabled(RealTimeConnectionManager, Boolean)
SetLocalProxyRedirectionPolicy(RealTimeConnectionManager, Boolean)
SetOutboundDefaultLocalBinding(RealTimeConnectionManager, IPEndPoint)
SetPoolConfiguration(RealTimeConnectionManager, PoolConfiguration)
SetTerminateDialogOnNoMaxForwards(RealTimeConnectionManager, Boolean)
SetTraceFilterConfiguration(RealTimeConnectionManager, ITraceFilterConfiguration)
SetXmppMode(RealTimeConnectionManager, Boolean)
UnregisterConnectionConfigurationRequested(RealTimeConnectionManager, EventHandler<ConnectionConfigurationRequestedEventArgs>)

Applies to