Next Previous Up Top Contents Index

A.5.4 Dynamic Skeleton Interface

A.5.4.1 Dynamic Implementation Routine

Background

The Dynamic Implementation Routine (DIR) is intended to support a variety of uses, including dynamic programming/scripting languages, bridge building, debugging, monitoring, and so on.

The idea is that a particular kind of registered servant is invoked via the DIR for all operations instead of invoking particular skeletons and thence particular implementation methods.

An auxiliary function is required for the application to inform the POA of the repository-ID of the most derived interface supported by the dynamic servant.

Specification

There shall be a subclass of portableserver/<servant> called portableserver/<dynamic-servant>. Instances of subclasses of this class registered with the adapter as servants for objects shall have operations invoked via the DIR function corba/serverrequest/invoke.

The shall be an open generic function portableserver/servant/primary-interface which shall be called by the POA to determine the repository-ID of the most derived interface supported by the dynamic servant.

The pseudo IDL of the above is:

// IDL
module CORBA {
  interface PortableServer::Dynamic_Servant :
    PortableServer::Servant {};

interface ServerRequest { ... void invoke (in PortableServer::Dynamic_Servant servant); }; };

module PortableServer { interface Servant { ... RepositoryID primary_interface (in ObjectID id, in POA poa) }; };

Rationale

We just need to specify the function that is called on the registered servant for all operations, plus the auxiliary function for determining the repository-ID.

Example

// Dylan
define class <buckstop> (portableserver/<dynamic-servant>)
end class;

define method corba/serverrequest/invoke (request :: corba/<serverrequest>, servant :: <buckstop>) => () ... end method;

define method portableserver/servant/primary-interface (servant :: <buckstop>, id :: <string>, poa :: portableserver/<poa>) => (repositoryid :: <string>) "LOCAL:buckstop" end method;


Developing Component Software with CORBA - 26 May 1999

Next Previous Up Top Contents Index