RealTimeConnectionManager Class

Definition

Provides connection management, message dispatching, and other miscellaneous services to endpoints.

public ref class RealTimeConnectionManager abstract : IDisposable
public abstract class RealTimeConnectionManager : IDisposable
type RealTimeConnectionManager = class
    interface IDisposable
Public MustInherit Class RealTimeConnectionManager
Implements IDisposable
Inheritance
RealTimeConnectionManager
Derived
Implements

Constructors

RealTimeConnectionManager()

Initializes the instance with default localhost name and no certificates.

RealTimeConnectionManager(String)

Initializes a new instance of this class from localHost.

RealTimeConnectionManager(String, Byte[])

Initializes an instance of this class from the certificate information.

RealTimeConnectionManager(String, String, Byte[])

Initializes an instance of this class from localHost and the 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.

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.

DnsLoadBalancingDisabled

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

EndpointsCount

Gets the number of endpoints currently supported by this manager.

LocalCertificateIssuerName

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

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.

MaxHeaderNameLength

Gets or sets the maximum length for SignalingHeader Name.

MaxHeaderValueLength

Gets or sets the maximum length for SignalingHeader Value.

MaxMessageBodyLength

Gets or sets the maximum length of message body on SIP message

MaxParameterCount

Gets or sets the maximum number of parameters allowed on signaling header or URI.

OutboundConnectionDefaultAddressFamilyHint

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

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.

Methods

CanLocalHostBeChangedNow()

Gets the value indicating whether localhost can be changed now.

CanShutdownCoreManagerNow()

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

CleanUpConnections()

This method is called to cleanup connections.

CoreManagerIncomingTlsNegotiationFailed(IncomingTlsNegotiationFailedEventArgs)

This event callback is invoked when there is tls negotiation failure for incoming connection. Since this class does not listen, this method will do nothing by default.

DecrementThrottleCount()

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

DisableCrlChecks()

Disables network traffic to validate CRL checks on certificates which can add tens of seconds to call establishment times when the internet connection is not available.

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.

Dispose(Boolean)

Disposes connection manager.

Finalize()

Finalizer

GetConnectionPools()

Gets the list of connection pools in this connection manager.

GetDestinationTuple(SipTransportType, String, Int32, AddressFamilyHint, String)

Get the tuple needed to make the connection.

GetLocalCertificateSerialNumber()

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

GetLocalMachineFqdn()

Gets the local machine Fqdn.

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.

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.

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.

Events

ConnectionPoolAdded

A connection pool was added.

ConnectionPoolRemoved

A connection pool was removed.

Extension Methods

AddInDialogMessageReceivedEvent(RealTimeConnectionManager, EventHandler<InDialogMessageReceivedEventArgs>)
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