ServerAgent.ServerAgent(Object,ApplicationManifest) constructor

Microsoft Office Live Communications Server 2005 with SP1

ServerAgent.ServerAgent (Object, ApplicationManifest)

The ServerAgent constructor creates an instance of a ServerAgent object with the specified dispatch handler object and application manifest.

[C#]public ServerAgent(Objectapp,
ApplicationManifestmanifest);
[Visual Basic .NET]Public Sub New( _
  ByVal app As Object, _
  ByVal manifest As ApplicationManifest _
)

Parameters

  • app
    Specifies an application object that implements dispatch handler methods specified in the manifest.
  • manifest
    Specifies a compiled ApplicationManifest object.

Remarks

This constructor is used by applications that receive messages dispatched from an MSPL script in the application manifest. The provided object implements the dispatch handlers for filtered messages.

A method used for handling specific dispatches is specified in the message filter script by calls to the MSPL built-in function Dispatch, passing the name of the method. Within the application, these methods must be implemented on a class, an instance of which is passed to this constructor. For example, if you have a call to Dispatch within the message filter script that appears as follows:

if (sipRequest) {
   Dispatch("OnRequestReceived");
}

You also need a corresponding method implemented in the application, as shown below. Note that for request handlers, the function signature must match that of the RequestReceivedEventHandler delegate. For responses, the function signature must match that of the ResponseReceivedEventHandler delegate.

class MyRequestHandlers {
   ...
   public MyRequestHandlers() {
      // Constructor logic here
   }
   ...
   public void OnRequestReceived(object sender, RequestReceivedEventArgs rreArgs) {
      // Implement message handling behavior here
   }
   ...
}

With the class and the dispatch handlers implemented, you are able to call the constructor and create an instance of the ServerAgent class.

// First, create an instance of the class that contains the dispatch handlers.
MyRequestHandlers myHandlers = new MyRequestHandlers();

// Second, obtain and compile your application manifest.
ApplicationManifest myAppManifest = ApplicationManifest.CreateFromFile("C:\\xmldocs\\my_app_manifest_xml_file.xml");

try {

   myAppManifest.Compile();

}
catch (CompilerErrorException compilerErrorException) {

   Console.WriteLine("The following MSPL compiler errors occurred:");
   foreach (object errMsg in compilerErrorException.ErrorMessages)
   {
      Console.Write("\t{0}", errMsg.ToString());
   }
   Console.WriteLine();

}

// Now, create an instance of ServerAgent.
try {

   ServerAgent.WaitForServerAvailable(3); // Maximum 3 tries before failure
   ServerAgent myServerAgent = new ServerAgent(myHandlers, myAppManifest);

}
catch (UnauthorizedException ue) {

   Console.WriteLine("User is not authorized to connect to Live Communications Server: {0}", ue.ToString());

}
catch (ServerNotFoundException snfe) {

   Console.WriteLine("Live Communications Server not available: {0}", snfe.ToString());

}

The assembly containing the specified application object is searched for classes inheriting from built-in SIP classes, such as ServerTransaction. These classes are used whenever the SIP library needs to create a SIP object. This allows applications to maintain additional state with each SIP object. To take advantage of this feature, an application should use the [DefaultRTCClassAttribute] attribute on the class definition.

Two common exceptions that should be caught when calling this constructor are:

  • ServerNotFoundException: The Live Communications Server is not running.
  • UnauthorizedException: A connection to the Live Communications Server could not be initialized. This is because of the current security context (user must be a member of the "Live Communications Server Users" local group), because the application has not been configured to run on this server (through WMI), or because an application with the same URI (as specified in the application manifest) is already running.

Requirements

Redistributable: Requires Microsoft Office Live Communications Server 2005 with SP1.
Namespace: Microsoft.Rtc.Sip
Assembly: ServerAgent (in ServerAgent.dll)

See Also

Application Manifests, Creating a SIP Application for Live Communications Server, ServerAgent

What did you think of this topic?
© 2008 Microsoft Corporation. All rights reserved.