RealTimeServerTlsConnectionManager Members

Include Protected Members
Include Inherited Members

Provides advanced connection management for using endpoints. This class provides the same functionality as RealTimeConnectionManager and adds the ability to listen for incoming TLS connections.

The RealTimeServerTlsConnectionManager type exposes the following members.

Constructors

  Name Description
Public method RealTimeServerTlsConnectionManager(String, []) Initializes this instance with default localhost name and given certificate information.
Public method RealTimeServerTlsConnectionManager(String, String, []) Initializes this instance with given localhost and certificate information.

Top

Properties

  Name Description
Public property AllowedDomains Gets the list of domains allowed to make incoming connections.
Public property 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)
Public property 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)
Public property 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. (inherited from RealTimeServerConnectionManager)
Public property 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. (inherited from RealTimeServerConnectionManager)
Public property 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. (inherited from RealTimeServerConnectionManager)
Public property 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 (inherited from RealTimeServerConnectionManager)
Public property DnsLoadBalancingDisabled Gets or sets whether DNS load balancing is disabled. By default, DNS load balancing is enabled. (inherited from RealTimeConnectionManager)
Public property EndpointsCount Gets the number of endpoints currently supported by this manager. (inherited from RealTimeConnectionManager)
Public property EnhancedKeyUsage Gets a list of enhancedKeyUsage values that are required to be present in the remote's certificate.
Public property IsListening Gets the value indicating whether listening is enabled or not. (inherited from RealTimeServerConnectionManager)
Public property ListeningPort Gets the listening port. (inherited from RealTimeServerConnectionManager)
Public property LocalCertificateIssuerName Gets the issuer of the local certificate used. Can be null. (inherited from RealTimeConnectionManager)
Public property 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)
Public property 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. (inherited from RealTimeServerConnectionManager)
Public property 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. (inherited from RealTimeServerConnectionManager)
Public property NeedMutualTls Gets or sets whether a mutual TLS connection is required for outgoing TLS connections.
Public property PoolFqdn Gets or sets the pool fqdn for this machine.
Public property 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)

Top

Methods

  Name Description
Public method AddToAllowedDomains Adds a new entry into the list of allowed domains.
Protected method CanLocalHostBeChangedNow Set the local host. (inherited from RealTimeServerConnectionManager)
Protected method CanShutdownCoreManagerNow Get the value to determine if the core manager can be shut down now. (inherited from RealTimeServerConnectionManager)
Protected method CleanUpConnections This method is called to clean up connections. (inherited from RealTimeServerConnectionManager)
Protected method CoreManagerIncomingTlsNegotiationFailed This event callback is invoked when there is tls negotiation failure for incoming connection. (inherited from RealTimeServerConnectionManager)
Protected method 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. (inherited from RealTimeServerConnectionManager)
Public method 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)
Protected method Dispose(Boolean) Dispose implementation (inherited from RealTimeServerConnectionManager)
Public method Equals (inherited from Object)
Protected method Finalize Finalizer (inherited from RealTimeConnectionManager)
Public method GetConnectionPools Gets the list of connection pools in this connection manager. (inherited from RealTimeConnectionManager)
Protected method GetDestinationTuple Get the tuple needed to make the connection. (Overrides RealTimeConnectionManager.GetDestinationTuple(SipTransportType, String, Int32, String).)
Public method GetHashCode (inherited from Object)
Public method GetIncomingConnections Gets the list of incoming connections. (inherited from RealTimeServerConnectionManager)
Public method GetListeningAddresses Gets the collection of listening addresses. (inherited from RealTimeServerConnectionManager)
Public method GetLocalCertificateSerialNumber Gets the serial number of the local certificate used. Can be null. (inherited from RealTimeConnectionManager)
Public method GetOutgoingConnectionCount Returns the total number of outgoing connections in the connection pools. (inherited from RealTimeServerConnectionManager)
Public method GetType (inherited from Object)
Protected method IncomingConnectionConnected Handles incoming connection connected event. This class should not get this event since it is not listening but a subclass can. (inherited from RealTimeServerConnectionManager)
Protected method 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. (inherited from RealTimeServerConnectionManager)
Protected method 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. (inherited from RealTimeServerConnectionManager)
Protected method ListenForIncomingConnections This method does the actual S4 listening. (Overrides RealTimeServerConnectionManager.ListenForIncomingConnections(IPEndPoint).)
Protected method MemberwiseClone (inherited from Object)
Public method RemoveFromAllowedDomains Removes an existing entry from the allowed domains list.
Public method SetAllowedDomains Sets the list of allowed domains. This represents the list of computers that are allowed to make incoming connections when mutual TLS is used. The subject or alternate subjects in the certificate are matched against this list. Only computers that have a matching entry in this list will be allowed to make incoming connections. This can be set even while listening and will affect future incoming connections. The domain check is done based on suffix match. So, it is important to use "." at the beginning for domains. For example, ".microsoft.com" rather than "microsoft.com". If there is no leading ., then it is assumed to be FQDN and a complete match will be performed.
Protected method 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. (Overrides RealTimeConnectionManager.SetDefaultTlsTuple().)
Public method SetEnhancedKeyUsage Sets the list of allowed keys in the certificate of the remote host. This can be set event while listening and will affect future incoming connections.
Public method SetLocalCertificate Sets the local certificate information. This is used for mutual TLS authentication when needed. If 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. (Overrides RealTimeConnectionManager.SetLocalCertificate(String, []).)
Public method StartListening Starts listening on the specified address and port. (inherited from RealTimeServerConnectionManager)
Public method StopListening Stops listening for new connections. (inherited from RealTimeServerConnectionManager)
Protected method StopListeningForIncomingConnections This method does the actual S4 stop for listening. (Overrides RealTimeServerConnectionManager.StopListeningForIncomingConnections().)
Public method ToString (inherited from Object)

Top

Events

  Name Description
Public event ConnectionAuthorizationRequested Raised when an incoming or outgoing connection becomes connected. (inherited from RealTimeServerConnectionManager)
Public event ConnectionPoolAdded A connection pool was added. (inherited from RealTimeConnectionManager)
Public event ConnectionPoolRemoved A connection pool was removed. (inherited from RealTimeConnectionManager)
Public event IncomingConnectionAdded Raised when a new incoming connection is added. (inherited from RealTimeServerConnectionManager)
Public event IncomingConnectionRemoved Raised when a new incoming connection is removed. (inherited from RealTimeServerConnectionManager)
Public event 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. (inherited from RealTimeServerConnectionManager)
Public event 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. (inherited from RealTimeServerConnectionManager)
Public event ListeningAddressesChanged Raised when one or more items are added or removed from the list of listening addresses. (inherited from RealTimeServerConnectionManager)

Top

See Also

Reference

RealTimeServerTlsConnectionManager Class

Microsoft.Rtc.Signaling Namespace