SignalingSession Members

Include Protected Members
Include Inherited Members

This class represents an Invite based two party session. The session is normally used for offer answer negotiation and signaling call control.

The SignalingSession type exposes the following members.

Constructors

  Name Description
Public method SignalingSession(RealTimeEndpoint, RealTimeAddress) Initializes a signaling session with endpoint and session target.
Public method SignalingSession(RealTimeEndpoint, SignalingSessionSettings) Creates a new instances of SignalingSession with endpoint and the supplied settings.
Public method SignalingSession(RealTimeEndpoint, RealTimeAddress, String) Creates a signaling session with a specified session ID.
Public method SignalingSession(RealTimeEndpoint, String, String, RealTimeAddress) Obsolete. Initializes a signaling session with specified information. It automatically generates a GUID-based call ID.
Public method SignalingSession(RealTimeEndpoint, String, String, RealTimeAddress, String) Obsolete. Creates a signaling session with specified information.

Top

Properties

  Name Description
Public property CallId Gets the session ID.
Public property Connection Gets the connection used by this signaling session. For incoming sessions, this property can be used to determine the address of the inviter. For outgoing sessions, this property can be used to retrieve information about the connection used. This property can return null if the connection does not exist at the moment.
Public property DesiredSessionTimerInterval Gets or sets the application's desired session timer interval (in seconds). This is used only for the initial invite or response.
Public property Endpoint Gets the endpoint associated with the session.
Public property FromTag Gets the tag used in the "From" header. This property may return null if not available. For outgoing sessions, this property may not be available until the state is Alerted or Connected. For incoming sessions, the property may be available right away. This property can be null after the session is terminated. The application is responsible for caching the tag if it requires it after the session is disconnected.
Public property Grid Obsolete. This property is obsolete in UCMA 2.0 and later versions. GRID functionality is no longer supported, so there is no alternative to this property.Gets or sets the grid context for this session. If this property is set, the endpoint has GRUU, and the GRUU does not have grid, this grid value is added to GRUU in the contact header. This is useful to associate this grid with this specific session when the endpoint has GRUU, but no grid. The association should be done by the application.
Public property IsIncoming Gets whether the session was initially received in the RealTimeEndpoint SessionReceived event.
Public property IsSessionTimerSupported Gets or sets the value indicating if the session supports a session timer. The default value of this property is inherited from the endpoint. An application can override this property per session. If the session is already using a session timer, this flag will only affect the behavior when the next session refresh occurs. If the flag is turned on after the session is connected, the application needs to call ReNegotiateMediaDescription to enable the session timer.
Public property LocalParticipant Gets the local participant of the session. This is helpful to get the URI of the local participant which can differ from the URI of the endpoint, particularly for incoming sessions.
Public property MinimumSessionExpiresInterval Gets the minimum session expires interval value (in seconds) currently used by this session.
Public property OfferAnswerNegotiation Gets or sets the offer answer negotiation callback interface implemented by the caller.
Public property ReliableProvisionalResponsePolicy Gets or sets the default policy for supporting 100rel extension feature. If an application supports this then the remote can ask for this when sending provisional responses which will result in a PRACK message getting sent to acknowledge the response. An application should set this before sending Invite or else it may not have any effect.
Public property RemoteParticipant Gets the remote participant of the session.
Public property RouteSetStatus Gets the status of the dialog's route set.
Public property SessionTarget Gets the target of this session.
Public property SessionTimerInterval Gets the session timer interval (in seconds) currently used.
Public property State Gets the state of this session.
Public property ToTag Gets the tag used in the "To" header. This property might return null if not available. For both outgoing and incoming sessions, this property may not available until the session is connected. This property can be null after the session is terminated. The application is responsible for caching the tag if it requires it after the session is disconnected.

Top

Methods

  Name Description
Public method BeginAccept(AsyncCallback, Object) Accept the session.
Public method BeginAccept(SignalingSessionAcceptOptions, AsyncCallback, Object) Accept the session with options specified.
Public method BeginEstablish(AsyncCallback, Object) Establish the session.
Public method BeginEstablish(SignalingSessionEstablishOptions, AsyncCallback, Object) Establish the session with options specified.
Public method BeginParticipate(AsyncCallback, Object) Participates in a session. This method needs to be called (for both outgoing and incoming messages) to establish the session.
Public method BeginParticipate(IEnumerable<SignalingHeader>, AsyncCallback, Object) Participates in a session. This method needs to be called (for both outgoing and incoming messages) to establish the session.
Public method BeginRefer(RealTimeAddress, ReferStatus, AsyncCallback, Object) Refers a URI to the remote participant.
Public method BeginRefer(RealTimeAddress, ReferStatus, IEnumerable<SignalingHeader>, AsyncCallback, Object) Refers a URI to the remote participant.
Public method BeginRefer(RealTimeAddress, ReferStatus, IEnumerable<SignalingHeader>, ContentType, [], AsyncCallback, Object) Refers a URI to the remote participant.
Public method BeginRenegotiateDescription(AsyncCallback, Object) Renegotiates the media description. Only one negotiation can be outstanding at any time. The session should be in the Connected state for this method to work.
Public method BeginRenegotiateDescription(IEnumerable<SignalingHeader>, AsyncCallback, Object) Renegotiates the media description with the specified participant. Only one negotiation can be outstanding with any participant at any time. The participant should be part of the session for this method to succeed. The participant cannot be a local participant. A given topology may not allow the exchange of descriptions with certain participants.
Public method BeginRenegotiateDescription(SipDialogContext, IEnumerable<SignalingHeader>, AsyncCallback, Object) Renegotiates the media description. Only one negotiation can be outstanding at any time. The session should be in the Connected state for this method to work.
Public method BeginSendMessage(MessageType, ContentType, [], AsyncCallback, Object) Sends a message. The session should be in the Connected state.
Public method BeginSendMessage(MessageType, ContentType, [], IEnumerable<SignalingHeader>, AsyncCallback, Object) Send message to participant specified. Participant who is not part of the session is ignored.
Public method BeginSendProvisionalResponse(Int32, AsyncCallback, Object) Sends a provisional response.
Public method BeginSendProvisionalResponse(Int32, SendProvisionalResponseOptions, AsyncCallback, Object) Sends a provisional response.
Public method BeginSendReliableProvisionalResponse(Int32, IEnumerable<SignalingHeader>, Boolean, AsyncCallback, Object) This method can be used to send a reliable provisional response with option to send answer for early media. If the inviter supports 100rel and the local policy is not unsupported, this method will wait for the PRACK. Otherwise, this method will not require 100rel. Any application that supports 100rel is recommended to use this method for sending provisional response. SendProvisional method can be used only when the application knows for sure that the remote does not require 100rel.
Public method BeginSendReliableProvisionalResponse(Int32, String, IEnumerable<SignalingHeader>, Boolean, AsyncCallback, Object) This method can be used to send a reliable provisional response with option to send answer for early media. If the inviter supports 100rel and the local policy is not unsupported, this method will wait for the PRACK. Otherwise, this method will not require 100rel. Any application that supports 100rel is recommended to use this method for sending provisional response. SendProvisional method can be used only when the application knows for sure that the remote does not require 100rel.
Public method BeginSetConnection Obsolete. This method is obsolete in UCMA 3.0 and will be removed from later versions. In its place use the ConnectionContext property on the SignalingSessionEstablishOptions class. Sets the connection to use for the outgoing signaling session before calling Participate. The initial Invite for the session will use this connection instead getting the connection based on endpoint settings. This method can be used only for SipPeerToPeer endpoint. Signaling sessions for SipEndpoint will use the connection maintained by SipEndpoint. The transport specified for the connection should be as secure as the tranport needed to send the Invite or else the Participate method call may fail. IMPORTANT: This is an advanced API. To work properly, the application should call this method before every redirect as well. The RedirectReceived event call back handler in the application should use TryThis and call this method before returning.
Public method BeginTerminate(AsyncCallback, Object) Terminates the session asynchronously. The session will be no longer usable.
Public method BeginTerminate(IEnumerable<SignalingHeader>, AsyncCallback, Object) Terminates the session asynchronously. The session will be no longer usable.
Public method EndAccept Waits for the pending accept operation to complete.
Public method EndEstablish Waits for the pending establish operation to complete.
Public method EndParticipate Waits for the pending participate operation to complete.
Public method EndRefer Waits for the pending refer operation to complete.
Public method EndRenegotiateDescription Waits for the pending renegotiate operation to complete.
Public method EndSendMessage Waits for the pending SendMessage operation to complete.
Public method EndSendProvisionalResponse Waits for the send provisional operation to complete.
Public method EndSendReliableProvisionalResponse Waits for the pending SendProvisionalResponse operation to complete.
Public method EndSetConnection Obsolete. This method is obsolete in UCMA 3.0 and will be removed from later versions. In its place use the ConnectionContext property on the SignalingSessionEstablishOptions class. Waits for the pending SetConnection operation to complete.
Public method EndTerminate Completes the pending Terminate operation.
Public method Equals (inherited from Object)
Protected method Finalize (inherited from Object)
Public method GetHashCode (inherited from Object)
Public method GetNewEarlyDialog Creates a new dialog context.
Public method GetTraceCorrelationID Gets the trace correlation id for this instance.
Public method GetType (inherited from Object)
Protected method MemberwiseClone (inherited from Object)
Public method Participate() Synchronously participates in a session. This method is not recommended for UI threads or scalable server applications.
Public method Participate(IEnumerable<SignalingHeader>) Synchronously participates in a session. This method is not recommended for UI threads or scalable server applications.
Public method Refer(RealTimeAddress, ReferStatus) Synchronously transfers the current session to a different real-time address. This method will wait until the transfer is completed. It is not recommended for a UI thread.
Public method Refer(RealTimeAddress, ReferStatus, IEnumerable<SignalingHeader>) Synchronously transfers the current session to a different real-time address. This method will wait until the transfer is completed. It is not recommended for a UI thread.
Public method RenegotiateDescription() Synchronously renegotiates the media description. This method will wait until the media description is renegotiated. It is not recommended for a UI thread.
Public method RenegotiateDescription(IEnumerable<SignalingHeader>) Synchronously renegotiates the media description. This method will wait until the media description is renegotiated. It is not recommended for a UI thread.
Public method SendMessage(MessageType, ContentType, []) Synchronously sends a message. The session should be in the Connected state. This method is not recommended for a UI thread.
Public method SendMessage(MessageType, ContentType, [], IEnumerable<SignalingHeader>) Synchronously sends a message. The session should be in the Connected state. This method is not recommended for a UI thread.
Public method SendProvisionalResponse(Int32, IEnumerable<SignalingHeader>) Sends a provisional response synchronously.
Public method SendProvisionalResponse(Int32, IEnumerable<SignalingHeader>, Boolean) Sends a provisional response synchronously with optional support for early media.
Public method SendProvisionalResponse(Int32, String, IEnumerable<SignalingHeader>, Boolean) Sends a provisional response synchronously with optional support for early media.
Public method SetConnection Obsolete. This method is obsolete in UCMA 3.0 and will be removed from later versions. In its place use the ConnectionContext property on the SignalingSessionEstablishOptions class. Sets the connection to use for the outgoing signaling session before calling Participate. The initial Invite for the session will use this connection instead of getting the connection based on endpoint settings. This method can be used only for the SipPeerToPeer endpoint. Signaling sessions for SipEndpoint will use the connection maintained by SipEndpoint. The transport specified for the connection should be as secure as the tranport needed to send the Invite or else the Participate method call may fail. IMPORTANT: This is an advanced API. To work properly, the application should call this method before every redirect as well. The RedirectReceived event callback handler in the application should use TryThis and call this method before returning.
Public method Terminate() Synchronously terminates the session.
Public method Terminate(IEnumerable<SignalingHeader>) Synchronously terminates the session.
Public method TerminateWithRedirection(RealTimeAddress) Terminates an incoming session by redirecting the inviter with an address.
Public method TerminateWithRedirection(IEnumerable<RealTimeAddress>) Terminates an incoming session by redirecting (with response code 302) the inviter with a list of addresses.
Public method TerminateWithRedirection(Int32, IEnumerable<RealTimeAddress>) Terminates an incoming session by redirecting the inviter (with specific redirect response code given) with a list of addresses.
Public method TerminateWithRejection Terminates a session by rejecting the incoming invite. This method can be called only for an incoming session before participating in it.
Public method ToString (inherited from Object)
Public method TryCancelRenegotiateDescription() Tries to cancel a pending renegotiation. Returns if cancel is either sent or setup to be sent. This method does not guarantee that renegotiation will not receive a final response since there is possibility that a final response is on the way before cancel message can reach the remote.
Public method TryCancelRenegotiateDescription(IEnumerable<SignalingHeader>) Tries to cancel a pending renegotiation. Returns if cancel is either sent or setup to be sent. This method does not guarantee that renegotiation will not receive a final response since there is possibility that a final response is on the way before cancel message can reach the remote.

Top

Events

  Name Description
Public event InvitationAccepted Raised when the remote has accepted the invite. Typically, this happens when a successful response is received. This event is optional for an application. Applications that want to send headers in the acknowledgement can register for this event.
Public event InvitationCompleted Raised when the invite process completes. Typically, this happens when the inviter acknowledges a successful response. This event is optional for an application. Applications that want to access headers in the acknowledgement can register for this event. Note that EndParticipate for the incoming side also exposes the Ack message. This event is provided for convenience.
Public event MessageReceived Raised when a message is received.
Public event ProvisionalResponseReceived Raised when the session received any provisional response (101-199).
Public event Redirecting Raised when a redirect request is received.
Public event ReferReceived Raised when a new Refer is received.
Public event ReInviteReceived Raised when the remote sends a re-invite. This event is optional for an application. Applications that want to access headers in the re-invite can register for this event.
Public event RenegotiationToRefreshNeeded Raised when the session is enabled for a session timer, the local endpoint is the refresher, and the remote does not support the UPDATE method. The application is responsible for calling BeginRenegotiateDescription to keep the session alive.
Public event RequestOrResponseReceived Raised when a request or response is received.
Public event RouteSetStatusChanged Raised when the state of the route set of the session changes.
Public event StateChanged Raised when the state of the session changes.
Public event TerminatedByRemote Raised when the remote side terminates the session by sending a Bye or Cancel message. This event is optional for an application. This event is useful only if the application is interested in accessing the headers in the Bye or Cancel message for custom scenarios.

Top

See Also

Reference

SignalingSession Class

Microsoft.Rtc.Signaling Namespace