Specification of DCP: ===================== The Distributed Configuration Protocol v0.2.1 ============================================= Date: December 18, 1998. Author: Fabio Kon (f-kon@cs.uiuc.edu) This is a preliminary version of the Distributed Configuration Protocol which will be used to configure components and distributed component implementations across a distributed system. DCP can be used in client/server, peer-to-peer, and active networking situations. It's being implemented initially on ACE and will provide reconfiguration of TAO components. Later, it will be available to any 2K application or system module. Note that, in the protocol operations, the term SERVICE refers to a place holder, or hook, to concrete implementations. It doesn't need to be a CORBA service, it might be any place holder to which an implementation can be hooked. Thus, it can refer to a TAO component, to an application internal component, to a service running on top of TAO, etc. 1) Getting information about a remote node's persistent repository ------------------------------------------------------------------ LIST_SERVICES returns: list of strings (separated by "\r\n") representing the services in the local persistent repository LIST_IMPLEMENTATIONS returns: list of strings representing the implementations of a particular service in the local persistent repository 1.1) Getting information about the services linked to the run-time ------------------------------------------------------------------- LIST_LOADED_SERVICES returns: list of strings representing the services linked to the server process run-time. GET_INFO returns: string containing a description of a particular service. GET_USAGE returns: string representing the command-line initialization string for a particular service. LIST_APPLICATIONS returns: list of strings representing the applications registered with the Dynamic_Service_Config. LIST_HOOKS returns: list of strings representing the hooks in a particular application. GET_COMP_INFO returns: a string describing a particular component (or application). 2) Reconfiguring the services linked to the run-time ---------------------------------------------------- LOAD_SERVICE [] returns: ACK or NACK plus error message HOOK_SERVICE SUSPEND_SERVICE returns: ACK or NACK plus error message RESUME_SERVICE returns: ACK or NACK plus error message REMOVE_SERVICE returns: ACK or NACK plus error message REPLACE_SERVICE returns: ACK or NACK plus error message CONFIGURE_SERVICE returns: ACK or NACK plus error message RESTART returns: ACK or NACK plus error message 3) Updating a remote node's persistent service repository --------------------------------------------------------- UPLOAD_IMPLEMENTATION returns: ACK or NACK plus error message DELETE_IMPLEMENTATION returns: ACK or NACK plus error message 4) Miscellaneous ---------------- QUIT returns: ACK HELP returns: string containing human-readable help and protocol version information. ................................................................................ Future Extensions ================= - SECURITY - MANAGE INTER-COMPONENT DEPENDECE - inter-service dependence - service <-> application dependence ................................................................................ DCP class interface and implementation: ======================================= The DCP.h and DCP.cpp files containing the implementation of this class in C++ is available at the 2K source tree. class DCP { public: static const char * const LIST_SERVICES; // implemented static const char * const LIST_IMPLEMENTATIONS; // implemented static const char * const LIST_LOADED_SERVICES; // implemented static const char * const GET_INFO; // implemented static const char * const LIST_APPLICATIONS; // implemented static const char * const LIST_HOOKS; // implemented static const char * const GET_COMP_INFO; // implemented static const char * const LOAD_SERVICE; // implemented static const char * const HOOK_SERVICE; // implemented static const char * const SUSPEND_SERVICE; // implemented static const char * const RESUME_SERVICE; // implemented static const char * const REMOVE_SERVICE; // implemented static const char * const REPLACE_SERVICE; static const char * const CONFIGURE_SERVICE; static const char * const UPLOAD_IMPLEMENTATION; // implemented static const char * const DELETE_IMPLEMENTATION; // implemented static const char * const RESTART; // implemented static const char * const QUIT; // implemented static const char * const HELP; // implemented enum { major_version = 0, minor_version = 2, MAX_MESSAGE_SIZE = 1024}; }; class DCP_Reply { public: static const char * const ACK; static const char * const NACK; static const char * const UNKNOWN_REQUEST; static const char * const UNKNOWN_ENTITY; static const char * const EMPTY; static const char * const MALFORMED_REQUEST; };