ClientTransaction
ClientTransaction
The ClientTransaction class defines a SIP client transaction object located on a SIP proxy.
A ClientTransaction object is created by calling ServerTransaction.CreateBranch on a ServerTransaction object. For forking proxy behaviors, ServerTransaction.CreateBranch can be called multiple times; however, a ClientTransaction object itself can service only one request. To send the request, call ClientTransaction.SendRequest.
To handle the responses for the request sent by a specific client transaction, you must register for the ClientTransaction.ResponseReceived event. This event will return a ResponseReceivedEventArgs object whenever it is raised, and contains the response as a Response Sip Class object.
Currently, the UAC client transaction case is not supported, where the server originates a client transaction. Only proxy behaviors are available for this class.
The ClientTransaction class is derived from the Transaction Sip Class class.
Public Methods
The ClientTransaction class has the following public methods.
Method |
Description |
---|---|
Inherited from Transaction. Cancels the transaction and raises the Transaction.Canceled event. |
|
Inherited from Transaction. Releases all resources used by this object and destroys it. |
|
Equals(Object) |
Inherited from System.Object. Determines whether the specified System.Object is equal to the current System.Object. |
GetHashCode() |
Inherited from System.Object. Serves as a hash function for a particular type, suitable for use in hashing algorithms and data structures like a hash table. |
GetType() |
Inherited from System.Object. Gets the System.Type of the current instance. |
Sends a SIP request to a server transaction on a proxy or UAS. |
|
ToString() |
Inherited from System.Object. Returns a System.String that represents the current System.Object. |
Public Properties
The ClientTransaction class has the following public properties.
Property |
Description |
---|---|
Data type: DateTimeAccess type: Read-only Inherited from Transaction. Contains the date and time the transaction originated. |
|
Data type: RequestAccess type: Read-only Inherited from Transaction. Contains the Request object that initiated the transaction. |
|
Data type: ResponseCollectionAccess type: Read-only Inherited from Transaction. Contains a collection of all Response objects associated with the transaction. |
|
Data type: ServerTransactionAccess type: Read-only Contains the root ServerTransaction object for which this client transaction is a branch. |
|
Data type: ObjectAccess type: Read-only Inherited from Transaction. Contains an object used for synchronizing access to a group of objects related to a server or client transaction. |
Public Events
The ClientTransaction class has the following public events.
Event |
Description |
---|---|
Inherited from Transaction. Occurs when the transaction is canceled. |
|
Occurs when a response message for the request sent by the ClientTransaction object has been received. |
|
Inherited from Transaction. Occurs when the transaction is terminated. |
|
Inherited from Transaction. Occurs when the transaction times out. |
Protected Methods
The ClientTransaction class has the following protected methods.
Method |
Description |
---|---|
Inherited from Transaction. Throws ObjectDisposedException if the transaction is in the disposed state. |
|
Inherited from Transaction. Releases all resources associated with the transaction. |
|
Inherited from Transaction. Destroys this transaction and releases all unmanaged resources as well as optionally releasing all managed ones. |
|
Inherited from Transaction. Provides a finalizer for this instance of the Transaction class. |
|
Inherited from Transaction. Raises the Transaction.Canceled event. |
|
Raises the ClientTransaction.ResponseReceived event. |
|
Inherited from Transaction. Raises the Transaction.Terminated event. |
|
Inherited from Transaction. Raises the Transaction.TimedOut event. |
Remarks
For specific information on the nature of client transactions, the UAC, inbound and outbound proxies, and server transactions, see Section 17 of RFC 3261 (SIP: Session Initiation Protocol).
Example Code
The following code example logs the time a request is passed to the "OnRequest" dispatch handler, and then forwards the request by creating a branch on the server transaction passed to the handler. Requests are dispatched to this method from the MSPL script in the application manifest using the Dispatch MSPL function.
public void OnRequest(object sender, RequestReceivedEventArgs e)
{
Console.WriteLine("Enter OnRequest:" + System.DateTime.Now.ToLongTimeString());
ClientTransaction branch = e.ServerTransaction.CreateBranch();
branch.SendRequest(e.Request);
}
Requirements
Redistributable: Requires Microsoft Lync Server 2010
Namespace: Microsoft.Rtc.Sip
Assembly: ServerAgent (in ServerAgent.dll)