HELPLIB.HLB  —  DCE  DCE_INTRO, dce_svc_intro
  NAME
      dce_svc_intro - Introduction to the DCE serviceability interface

  DESCRIPTION

  The routines listed below are intended to be used by servers that
  export the serviceability interface defined in service.idl. The
  complete list of these remote serviceability implementation calls
  is as follows (the remote operation name is given in the left column,
  and the corresponding implementation routine is given in the right
  column).

        dce_svc_set_route       dce_svc_routing
        dce_svc_set_dbg_route   dce_svc_debug_routing
        dce_svc_set_dbg_levels  dce_svc_debug_set_levels
        dce_svc_inq_components  dce_svc_components
        dce_svc_inq_table       dce_svc_table
        dce_svc_filter_control  dce_svc_filter
        dce_svc_inq_stats       dce_svc_inq_stats

  These routines perform all the necessary processing (except for
  checking clients' authorization) that must be done by the application
  manager to implement the remote serviceability operations.

  Note that most of these routines have little meaning except as
  implementations of remote operations. However, the dce_svc_routing(),
  dce_svc_filter(), dce_svc_debug_routing() and
  dce_svc_debug_set_levels() routines can conceivably be used by
  servers as purely local operations (for example, in order to allow
  routing and debug levels to be set via command line flags when the
  server is invoked).

  The dce_svc_log_ routines provide read access to BINFILE format logs
  which are created and written by the DCE serviceability routines;
  see svcroute for further information. The dce_svc_log_handle_t
  typedef is an opaque pointer to a handle for an opened logfile.

  Applications that use the serviceability interface can install a
  routine that will be effectively "hooked" into the operation of the
  interface. If a filter is installed, it will be called whenever one
  of the serviceability output routines (dce_svc_printf()) is about to
  output a message; whenever this happens, the filter will receive a
  group of parameters that describe the message that is about to be
  output and the circumstances that provoked the action. The filter can
  then allow the message output to proceed, or suppress the message.

  Along with the filter routine itself, the application also installs
  a filter control routine, whose purpose is to permit the behavior of
  the filter to be altered dynamically while the application is running.
  The dce_svc_filter() routine is the interface's call-in to such an
  installed filter control.

  THE DCE SERVICEABILITY ROUTINES

  The serviceability routines are as follows, listed in alphabetical
  order:

  dce_assert()        Adds runtime "can't happen" assertions to
                      programs (such as, programming errors).

  dce_svc_components()
                      Returns an array containing the names of all
                      components in the program that have been
                      registered with the dce_svc_register() routine.

  dce_svc_debug_routing()
                      Specifies both the level of an applications's
                      serviceability debug messaging, and where the
                      messages are routed.

  dce_svc_debug_set_levels()
                      Sets serviceability debugging message level(s)
                      for a component.

  dce_svc_define_filter()
                      Lets applications define serviceability filtering
                      routines.

  dce_svc_filter()    Controls the behavior of the serviceability
                      message filtering routine, if one exists.

  dce_svc_log_close() Closes an open binary format serviceability log
                      and releases all internal state associated with
                      the handle.

  dce_svc_log_get()   Reads the next entry from a binary format
                      serviceability log.

  dce_svc_log_open()  Opens the specified file for reading.

  dce_svc_log_rewind()
                      Rewinds the current reading position of the
                      specified (by handle) logfile to the first
                      record.

  dce_svc_printf()    Provides the normal call for writing or
                      displaying serviceability messages.

  dce_svc_register()  Registers a serviceability handle and sub-
                      component table.

  dce_svc_routing()   Specifies how normal (non-debug)
                      serviceability messages are routed.

  dce_svc_set_progname()
                      If not called, the application's generated
                      serviceability messages will be identified
                      by its process ID.

  dce_svc_table()     Returns the serviceability subcomponent table
                      registered with the specified component.

  dce_svc_unregister()
                      Destroys a serviceability handle, releasing all
                      allocated resources associated with the handle.

  DATA TYPES AND STRUCTURES

  dce_svc_filter_proc_t
                      The prototype of a serviceability filtering
                      routine.

  dce_svc_filterctl_proc_t
                      The prototype of a serviceability filter-control
                      routine.

  dce_svc_handle_t    An opaque handle to generate serviceability
                      messages.  (Use dce_svc_register() or
                      DCE_DEFINE_SVC_HANDLE to obtain one.)

  dce_svc_log_handle_t
                      An opaque handle to an open serviceability
                      binary format log file.  (Use dce_svc_log_open()
                      to obtain one.)

   dce_svc_log_prolog_t
                      A structure containing data about a serviceability
                      binary format log entry.

   dce_svc_prolog_t   A structure containing the initial message
                      parameters passed to the filtering routine.

  FILES

      dce/service.idl

      dce/dce_svc.h

  RELATED INFORMATION

      BOOKS: OSF DCE Application Development Guide

1  –  dce_assert

 NAME
   dce_assert - Inserts program diagnostics

 SYNOPSIS

   #define DCE_ASSERT
   #include <dce/assert.h>

   void dce_assert( dce_svc_handle_t handle,
                    int expression );

 PARAMETERS

   Input

   handle    A registered serviceability handle.

   expression
             An expression the truth of which is to be tested.

 DESCRIPTION

   The dce_assert macro is used to add runtime "can't happen"
   assertions to programs (that is, programming errors). On
   execution, when expression evaluates to 0 (that is, to "false"),
   then dce_svc_printf() is called with parameters to generate a
   message identifying the expression, source file and line number.
   The message is generated with a severity level of svc_c_sev_fatal,
   with the svc_c_action_abort flag specified (which will cause the
   program to abort when the assertion fails and the message is
   generated).  See the dce_svc_register reference page for more
   information.

   The handle parameter should be a registered serviceability handle; it
   can also be NULL, in which case an internal serviceability handle will
   be used.

   Assertion-checking can be enabled or disabled at compile time.
   The header file dce/assert.h can be included multiple times.
   If DCE_ASSERT is defined before the header is included, assertion
   checking is performed.  If it is not so defined, then the
   assertion-checking code is not compiled in.  The system default is
   set in dce/dce.h.

 ERROR CODES

   See dce_svc_register.

 RELATED INFORMATION

   Functions: dce_svc_register

2  –  dce_svc_components

 NAME
   dce_svc_components - DCE serviceability routine that returns
                        registered component names

 SYNOPSIS

   #include <dce/dce.h>
   #include <dce/svcremote.h>

   void dce_svc_components( dce_svc_stringarray_t *table,
                            error_status_t *status );

 PARAMETERS

   Output

   table  An array containing the names of all components that have been
          registered with the dce_svc_register() routine.

   status
          Returns the status code from this operation. The status code
          is a value that indicates whether the routine completed
          successfully and if not, why not.

 DESCRIPTION

   The dce_svc_components routine returns an array containing the names
   of all components in the program that have been registered with the
   dce_svc_register() routine.

 EXAMPLES

   The following code fragment shows how the dce_svc_components()
   routine should be used in a DCE application's implementation of the
   serviceability remote interface. The function defined below is the
   implementation of the app_svc_inq_components operation defined in the
   application's serviceability .epv file. Clients call this function
   remotely, and the function, when called, first checks the caller's
   authorization and then (if the client is authorized to perform the
   operation) calls the dce_svc_components() routine to perform the
   actual operation.

        /*****
        *
        * app_svc_inq_components -- remote request for list of all
        *                           components registered by
        *                           dce_svc_register().
        *
        *****/
        static void
        app_svc_inq_components( handle_t                h,
                                dce_svc_stringarray_t   *table,
                                error_status_t          *st )
        {
                int  ret;

    /* Check the client's permissions here; if they are insufficient, */
    /*  deny the request. Otherwise, proceed with the operation...    */

                dce_svc_components(table, st);
        }

 ERROR CODES

   See dce_svc_register.

 FILES

   dce/service.idl

3  –  dce_svc_debug_routing

 NAME
   dce_svc_debug_routing - Specifies how debugging messages are routed

 SYNOPSIS

   #include <dce/dce.h>
   #include <dce/svcremote.h>

   void dce_svc_debug_routing( unsigned char *where,
                               error_status_t *status );

 PARAMETERS

   Input

   where  A four-field routing string, the format of which is described
          in svcroute.

   Output

   status
          Returns the status code from this operation. The status code
          is a value that indicates whether the routine completed
          successfully and if not, why not.

 DESCRIPTION

   The dce_svc_debug_routing() routine specifies both the level of an
   applications's serviceability debug messaging, and where the messages
   are routed.  The where parameter is a four-field routing string, as
   described in svcroute. All four fields are required.

   The routine is used to specify the disposition of serviceability
   debug messages.  If called before the component is registered (with
   dce_svc_register()), the disposition is stored until it is needed.
   In case of error, the status parameter is filled in with an error
    code.

   To set only the debugging level for a component, use the
   dce_svc_debug_set_levels() routine.

 ERROR CODES

   See dce_svc_register.

 RELATED INFORMATION

   Functions: dce_svc_debug_set_levels.

   Files: svcroute

4  –  dce_svc_debug_set_levels

 NAME
   dce_svc_debug_set_levels - Sets the debugging level for a component

 SYNOPSIS

   #include <dce/dce.h>
   #include <dce/svcremote.h>

   void dce_svc_debug_set_levels( unsigned char *where,
                                  error_status_t *status );

 PARAMETERS

   Input

   where  A multi-field string consisting of the component name separated
          by a colon from a comma-separated list of subcomponent/level
          pairs, as described in svcroute.

   Output

   status
          Returns the status code from this operation. The status code
          is a value that indicates whether the routine completed
          successfully and if not, why not.

 DESCRIPTION

   The dce_svc_debug_set_levels() routine sets serviceability debugging
   message level(s) for a component. The where parameter is a multi-field
   string consisting of the component name separated by a colon from a
   comma-separated list of subcomponent/level pairs, as described in
   svcroute.  The subcomponents are specified by codes defined in the
   component's sams file; the levels are specified by single digits (1
   through 9).

   If the routine is called before the component is registered (with
   dce_svc_register()), the disposition is stored until it is needed.
   In case of error, the status parameter is filled in with an error
   code.

   To set both the debug level and routing for a component, use the
   dce_svc_debug_routing() routine.

 ERROR CODES

   See dce_svc_register.

 RELATED INFORMATION

   Functions: dce_svc_debug_routing

   Files: svcroute

5  –  dce_svc_define_filter

 NAME
   dce_svc_define_filter - DCE serviceability filtering routines

 SYNOPSIS

   #include <stdarg.h>
   #include <dce/dce.h>
   #include <pthread.h>
   #include <dce/svcfilter.h>

   void dce_svc_define_filter(
                       dce_svc_handle_t handle,
                       dce_svc_filter_proc_t filter_function,
                       dce_svc_filterctl_proc_t filter_ctl_function,
                       error_status_t *status );

 DESCRIPTION

   The serviceability interface provides a hook'' into the message-output
   mechanism that allows applications to decide at the time of messaging
   whether the given message should be output or not. The application
   defines its own routine to perform whatever checking is desired, and
   installs the routine (the filter_function parameter) with a call to
   dce_svc_define_filter().

   The filter routine to be installed must have the signature defined
   by the dce_svc_filter_proc_t typedef.  Once installed, the routine
   will be automatically invoked every time a serviceability routine is
   called to output a message. The filter receives a prolog argument
   which contains all the pertinent information about the message.  If
   the filter returns TRUE, the message is output per the original
   serviceability call.  If the filter returns FALSE, the message is
   not output.  The information in the prolog allows such decisions to
   be made on the basis of severity level, subcomponent, message index,
   and so on. For details, see the header file dce/svcfilter.h.

   In addition, an application that installs a message-filtering
   routine must also define a routine that can be called remotely
   to alter the operation of the filter routine. This procedure must
   have the signature defined by the dce_svc_filterctl_proc_t typedef.
   The routine will be invoked with an opaque byte array parameter
   (and its length), which it is free to interpret in an appropriate
   manner. The remote-control routine is installed by the same call to
   dce_svc_define_filter() (as the filter_ctl_function parameter) in
   which the filter itself is installed.  See dce_svc_filter.

 EXAMPLES

   The following code fragment consists of example versions of an
   application's routines to: filter serviceability messages; alter the
   behavior of the filter routine; install the two routines.

     /*****
     * Filter routine-- this is the routine that's hooked into the
     *                  serviceability mechanism when you install it by
     *                  calling dce_svc_define_filter().
     *****/
     boolean app_filter(prolog, args)
     dce_svc_prolog_t prolog;
     va_list args;
     {
         if (filter_setting) {
             printf("The value of filter_setting is TRUE\n");
             printf("The progname is %s\n", prolog->progname);
             if (prolog->attributes & svc_c_sev_notice)
                 printf("This is a Notice-type message\n");

             switch (prolog->table_index) {
                 case app_s_server:
                     printf("Server sub-component\n");
                     break;
                 case app_s_refmon:
                     printf("Refmon sub-component\n");
                     break;
                 case app_s_manager:
                     printf("Manager sub-component\n");
                     break;
                     }
         }
         return 1;
     }

     /*****
     * Filter Control routine-- this is the entry point for the remote-
     *                          control call to modify the filter
     *                          routine's behavior.
     *****/
     void app_filter_control(arg_size, arg, status)
     idl_long_int arg_size;
     idl_byte *arg;
     error_status_t *status;
     {

         if (strncmp(arg, "Toggle", arg_size) != 0)
                 return;
         else {
             filter_setting = (filter_setting == FALSE) ? TRUE : FALSE;
             if (filter_setting)
                 printf("     FILTER IS TURNED ON\n");
             else
                 printf("     FILTER IS TURNED OFF\n");
         }
         return;
     }

     /*****
     * install_filters-- calls dce_svc_define_filter() to install the
     *                   above 2 routines.
     *****/
     void install_filters()
     {
             unsigned32      status;

             filter_setting = TRUE;
             dce_svc_define_filter(app_svc_handle, app_filter,
             dce_svc_filterctl_proc_t)app_filter_control, &status);
     }

 ERROR CODES

   See dce_svc_register.

 RELATED INFORMATION

   Functions: dce_svc_register
              DCE_SVC_DEFINE_HANDLE

6  –  dce_svc_filter

 NAME
   dce_svc_filter - Controls behavior of serviceability filter

 SYNOPSIS

   #include <dce/dce.h>
   #include <dce/svcremote.h>

   void dce_svc_filter( dce_svc_string_t component,
                        idl_long_int arg_size,
                        idl_byte *argument,
                        error_status_t *status );

 PARAMETERS

   Input

   component
          The name of the serviceability-registered component, defined
          in the component field of the sams file.

   arg_size
          The number of characters contained in argument.

   argument
          A string value to be interpreted by the target component's
          filter control routine.

   Output

   status
          Returns the status code from this operation. The status code
          is a value that indicates whether the routine completed
          successfully and if not, why not.

 DESCRIPTION

   The dce_svc_filter() routine controls the behavior of the
   serviceability message filtering routine, if one exists.

   Along with the filter routine itself, the application also installs
   a filter control routine, whose purpose is to permit the behavior of
   the filter to be altered dynamically while the application is running.
   The dce_svc_filter() routine is the interface's call-in to such an
   installed filter control.

   If an application has installed a serviceability filtering routine,
   and if filter remote control is desired, the application's filter
   routine (installed by the call to dce_svc_define_filter()) should be
   coded so that its operation can be switched to the various desired
   alternatives by the values of static variables to which it has
   access.  These variables should also be accessible to the filter
   control routine. The filter control routine thus receives from
   dce_svc_filter() an argument string (which it uses to set the
   variables), the meaning of whose contents are entirely application-
   defined.

 ERROR CODES

   See dce_svc_register.

 FILES

   dce/service.idl

7  –  dce_svc_log_close

 NAME
   dce_svc_log_close - Closes an open logfile

 SYNOPSIS

   #include <dce/dce.h>
   #include <pthread.h>
   #include <dce/svclog.h>

   void dce_svc_log_close( dce_svc_log_handle_t handle,
                           error_status_t *status );

 PARAMETERS

   Input

   handle    The handle (returned by dce_svc_log_open()) of the logfile
             to be closed.

   Output

   status    Returns the status code from this operation. The status
             code is a value that indicates whether the routine
             completed successfully and if not, why not.

 DESCRIPTION

   The dce_svc_log_close() routine closes an open binary format
   serviceability log and releases all internal state associated
   with the handle.

 ERROR CODES

   See dce_svc_register.

 RELATED INFORMATION

   Functions: dce_svc_log_get
              dce_svc_log_open
              dce_svc_log_rewind

8  –  dce_svc_log_get

 NAME
   dce_svc_log_get - Reads the next record from a binary logfile

 SYNOPSIS

   #include <dce/dce.h>
   #include <pthread.h>
   #include <dce/svclog.h>

   void dce_svc_log_get( dce_svc_log_handle_t handle,
                         dce_svc_log_prolog_t *prolog,
                         error_status_t *status );

 PARAMETERS

   Input

   handle    The handle (returned by dce_svc_log_open()) of the logfile
             to be read.

   Output

   prolog    A pointer to a structure containing information read from
             the logfile record.

   status    Returns the status code from this operation. The status
             code is a value that indicates whether the routine
             completed successfully and if not, why not.

 DESCRIPTION

   The dce_svc_log_get() routine reads the next entry from a binary
   format serviceability log, and fills in prolog with a pointer to a
   private data area containing the data read.  The contents of the
   prolog structure are defined in dce/svclog.h.

 ERROR CODES

   See dce_svc_register.

 RELATED INFORMATION

   Functions: dce_svc_log_close
              dce_svc_log_open
              dce_svc_log_rewind

9  –  dce_svc_log_open

 NAME
   dce_svc_log_open - Opens binary log file

 SYNOPSIS

   #include <dce/dce.h>
   #include <pthread.h>
   #include <dce/svclog.h>

   void dce_svc_log_open( const char *name,
                          dce_svc_log_handle_t *handle,
                          error_status_t *status );

 PARAMETERS

   Input

   name      The pathname of the logfile to be opened.

   Output

   handle    A filled-in handle to the opened logfile specified by name.

   status    Returns the status code from this operation. The status
             code is a value that indicates whether the routine
             completed successfully and if not, why not.

 DESCRIPTION

   The dce_svc_log_open() routine opens the binary log file specified
   by name for reading.  If the call is successful, handle is filled in
   with a handle to be used with the other dce_svc_log_ calls.  On
   error, status will contain an error code.

 ERROR CODES

   See dce_svc_register.

 RELATED INFORMATION

   Functions: dce_svc_log_close
              dce_svc_log_get
              dce_svc_log_rewind

10  –  dce_svc_log_rewind

 NAME
   dce_svc_log_rewind - Rewinds binary logfile to first record

 SYNOPSIS

   #include <dce/dce.h>
   #include <pthread.h>
   #include <dce/svclog.h>

   void dce_svc_log_rewind( dce_svc_log_handle_t handle,
                            error_status_t *status );

 PARAMETERS

   Input

   handle    The handle (returned by dce_svc_log_open()) of the
             logfile to be rewound.

   Output

   status    Returns the status code from this operation. The status
             code is a value that indicates whether the routine
             completed successfully and if not, why not.

 DESCRIPTION

   The dce_svc_log_rewind() routine rewinds the current reading
   position of the specified (by handle) binary logfile to the
   first record.

 ERROR CODES

   See dce_svc_register.

 RELATED INFORMATION

   Functions: dce_svc_log_close
              dce_svc_log_get
              dce_svc_log_open

11  –  dce_svc_printf

 NAME
   dce_svc_printf - Generates a serviceability message

 SYNOPSIS

   #include <dce/dce.h>

   void dce_svc_printf(
           DCE_SVC(dce_svc_handle_t handle, char * argtypes),
           const unsigned32 table_index,
           const unsigned32 attributes,
           const unsigned32 messageID,
           . . . );

 PARAMETERS

   Input

   handle The caller's serviceability handle.

   argtypes
          Format string for the message.

   table_index
          The message's sub-component name (defined in the sams file).

   attributes
          Any routing, severity, action, or debug attributes that are
          to associated with the generated message, OR'd together.

   messageID
          The message ID, defined in the message's code field in the
          sams file.

   . . .  Any format arguments for the message string.

 DESCRIPTION

   The dce_svc_printf() routine is the normal call for writing or
   displaying serviceability messages.  It cannot be called with a
   literal text argument.  Instead, the message text is retrieved
   from a message catalog or an in-core message table.  These are
   generated by the sams utility, which in turn outputs sets of tables
   from which the messages are extracted for output.

   There are two main ways in which to call the routine. If a message
   has been defined in the sams file with both sub-component and
   attributes specified, then the sams output will include a
   "convenience macro" for the message that can be passed as the single
   argument to dce_svc_printf(), for example:

        dce_svc_printf(SIGN_ON_MSG);

   The convenience macro's name will be generated from the uppercase
   version of the message's code value (as specified in the sams file),
   with the string _MSG appended.

   If a convenience macro is not generated, or if you want to override
   some of the message's attributes at the time of output, then you must
   call the routine in its long form. An example of this form of the call
   looks as follows:

        dce_svc_printf(DCE_SVC(app_svc_handle, ""), app_subcomponent,
                       svc_c_sev_error | svc_c_route_stderr, messageID);

   DCE_SVC() is a macro that must be passed as the first argument to
   dce_svc_printf() if a convenience macro is not being used. It takes
   two arguments:

     +  The caller's serviceability handle

     +  A format string for the message that is to be output

   The format string is for use with messages that have been coded with
   argument specifiers.  It is a character string consisting of the
   argument types as they would be passed to a printf call.  If the
   message is to be routed to a binary file, the format is extended to
   include a %b specifier; using %b in a different routing will give
   unpredictable results. The %b specifier takes two arguments: an
   integer size, and a buffer pointer.

   The remaining arguments passed to dce_svc_printf() are as follows:

     +  subcomponent table index

        This symbol is declared in the sub-component list coded in
        Part II of the sams file; its value is used to index into the
        subtable of messages in which the desired message is located.

     +  message attribute(s)

        This argument consists of one or more attributes to be applied
        to the message that is to be printed.  Note that you must
        specify at least one severity here.  Multiple attributes are
        OR'd together, as shown in the following example.

        There are four categories of message attributes:

        Routing   The available routing attribute constants are:

                    - svc_c_route_stderr

                    - svc_c_route_nolog

                  However, most routing is done either by passing
                  specially-formatted strings to dce_svc_routing() or
                  by environment variable values.  Note that using
                  svc_c_route_nolog without using svc_c_route_stderr
                  will result in no message being generated.

        Severity  The available severity attribute constants are:

                    - svc_c_sev_fatal

                    - svc_c_sev_error

                    - svc_c_sev_warning

                    - svc_c_sev_notice

                    - svc_c_sev_notice_verbose

        Action    The available message action attribute constants are:

                    - svc_c_action_abort

                    - svc_c_action_exit_bad

                    - svc_c_action_exit_ok

                    - svc_c_action_brief

                    - svc_c_action_none

                  Note that svc_c_action_brief is used to suppress
                  the standard prolog.

        Debug Level
                  Nine different debug levels can be specified
                  (svc_c_debug1...svc_c_debug9 or svc_c_debug_off).

     +  message ID

        This argument consists of the message's code, as declared in
        the sams file.

 ERROR CODES

   This routine has no return value.

 RELATED INFORMATION

   Functions: dce_svc_register
              DCE_SVC_DEFINE_HANDLE

12  –  dce_svc_register

 NAME
   dce_svc_register - Registers a serviceability message table

 SYNOPSIS

   #include <dce/dce.h>

   dce_svc_handle_t dce_svc_register( dce_svc_subcomp_t *table,
                                      const idl_char *component_name,
                                      error_status_t *status );

 PARAMETERS

   Input

   table  A message table structure (defined in a header file generated
          by sams during compilation).

   component_name
          The serviceability name of the component, defined in the
          component field of the sams file.

   Output

   status
          Returns the status code from this operation. The status code
          is a value that indicates whether the routine completed
          successfully and if not, why not.

 DESCRIPTION

   The dce_svc_register() routine registers a serviceability message
   table. An application must call either it (or the
   DCE_SVC_DEFINE_HANDLE() macro) in order to set up its table(s) and
   obtain the serviceability handle it must have in order to use the
   serviceability interface.

   Two parameters are required for the call: table is a pointer to
   the application's serviceability table, defined in a file called
   dceappsvc.h generated by the sams utility.  component_name is a
   string whose value is app, which is defined in the component field
   of the sams file in which the serviceability messages are defined.

   On error, this routine returns NULL and fills in status with an
   error code.

 ERROR CODES

   The following serviceability status codes are defined:

   svc_s_assertion_failed
             A programmer-developed compile-time assertion failed.

   svc_s_at_end
             No more data is available.

   svc_s_bad_routespec
             See svcroute for information on routing specification
             format.

   svc_s_cantopen
             Permission denied or file does not exist; consult errno.

   svc_s_no_filter
             Attempted to send data to the filter-control handle for
             a component that does not have a filter registered.

   svc_s_no_memory
             Could not allocate memory for message table, string copy
             or other internal requirement.

   svc_s_no_stats
             The definition of the return value has not been specified.

   svc_s_ok  Operation performed.

   svc_s_unknown_component
             Could not find the service handle for a component.

 RELATED INFORMATION

   Functions: dce_svc_debug_routing
              dce_svc_debug_set_levels
              dce_svc_define_filter
              dce_svc_routing
              dce_svc_unregister

13  –  dce_svc_routing

 NAME
   dce_svc_routing - Specifies routing of serviceability messages

 SYNOPSIS

   #include <dce/dce.h>
   #include <dce/svcremote.h>

   void dce_svc_routing( unsigned char *where,
                         error_status_t *status );

 PARAMETERS

   Input

   where  A three-field routing string, as described in svcroute.

   Output

   status
          Returns the status code from this operation. The status code
          is a value that indicates whether the routine completed
          successfully and if not, why not.

 DESCRIPTION

   The dce_svc_routing() routine specifies how normal (non-debug)
   serviceability messages are routed. The where parameter is a three-
   field routing string, as described in svcroute.  For convenience,
   the first field of the routing specifier (which indicates the message
   severity type to which the routing is to be applied) may be an *
   (asterisk) to indicate that all messages, whatever their severity,
   should be routed as specified.

   If the routine is called before the component is registered (with
   the dce_svc_register() routine), the routing is stored until it is
   needed.  In case of error, the status parameter is filled in with an
   error code.

 ERROR CODES

   See dce_svc_register.

 FILES

   dce/service.idl

14  –  dce_svc_set_progname

 NAME
   dce_svc_set_progname - Sets an application's program name

 SYNOPSIS

   #include <dce/dce.h>

   void dce_svc_set_progname( char *program_name,
                              error_status_t *status );

 PARAMETERS

   Input

   program_name
          A string containing the name that is to be included in the
          text of all serviceability messages that the application
          generates during the session.

   Output

   status
          Returns the status code from this operation. The status code
          is a value that indicates whether the routine completed
          successfully and if not, why not.

 DESCRIPTION

   This function sets the application's program name, which is included
   in serviceability messages.  This allows serviceability messages
   from more than one application to be written to the same file and
   still be distinguishable as to their separate origins.

   If dce_svc_set_progname() is not called, the application's generated
   serviceability messages will be identified by its process ID.

 EXAMPLES

   Suppose an application sets its program name to be "demo_program",
   as shown:

        dce_svc_set_progname("demo_program", &status);

   Serviceability messages generated by the program will as a result
   look like the following:

        1994-04-05-20:13:34.500+00:00I----- demo_program NOTICE app
                                            main.c 123 0xa444e208
        message text

   If the application does not set its program name, its generated
   serviceability messages will have the following form:

        1994-04-05-20:13:34.500+00:00I----- PID#9467 NOTICE app main.c
                                            123 0xa444e208
        message text

 ERROR CODES

   See dce_svc_register.

 RELATED INFORMATION

   Functions: dce_printf
              dce_svc_printf
              DCE_SVC_DEBUG

15  –  dce_svc_table

 NAME
   dce_svc_table - Returns a registered component's subcomponent table

 SYNOPSIS

   #include <dce/dce.h>
   #include <dce/svcremote.h>

   void dce_svc_table( dce_svc_string_t component,
                       dce_svc_subcomparray_t *table,
                       error_status_t *status );

 PARAMETERS

   Input

   component
          The name of the serviceability-registered component, defined
          in the component field of the application's sams file.

   Output

   table  An array of elements, each of which describes one of the
          component's serviceability sub-components (as defined in its
          sams file).

   status
          Returns the status code from this operation. The status code
          is a value that indicates whether the routine completed
          successfully and if not, why not.

 DESCRIPTION

   The dce_svc_table routine returns the serviceability subcomponent
   table registered with the specified component.  The returned table
   consists of an array of elements, each of which describes one sub-
   component.  Each element consists of four fields, which contain the
   sub-component name, its description, its message catalog ID, and the
   current value of its debug message level.  The first three of these
   values are specified in the sams file which is processed during the
   application's compilation, and from which the application's message
   catalogs and other serviceability and message files are generated.

 EXAMPLES

   The following code fragment shows how the remote operation might be
   called from an application's client side, and how the results might
   be printed out:

        #include <dce/rpc.h>
        #include <dce/service.h>

        handle_t svc_bind_handle;
        dce_svc_string_t component;
        dce_svc_subcomparray_t subcomponents_table;
        error_status_t remote_status;
        int i;

        dce_svc_inq_table( svc_bind_handle,
                           component,
                           &subcomponents_table,
                           &remote_status );

        fprintf(stdout, "Subcomponent table size received is: %d...\n",
                subcomponents_table.tab_size);
        fprintf(stdout, "Subcomponent table contents are:\n");
        for (i = 0; i < subcomponents_table.tab_size; i++)
        {
            fprintf(stdout, "Name: %s\n",
                subcomponents_table.table[i].sc_name);
            fprintf(stdout, "Desc: %s\n",
                subcomponents_table.table[i].sc_descr);
            fprintf(stdout, "Msg Cat ID: 0x%8.8lx\n",
                (long) subcomponents_table.table[i].sc_descr_msgid);
            fprintf(stdout, "Active debug level: %d\n\n",
                subcomponents_table.table[i].sc_level);
        }

 ERROR CODES

   See dce_svc_register.

 FILES

   dce/service.idl

16  –  dce_svc_unregister

 NAME
   dce_svc_unregister - Destroys a serviceability handle

 SYNOPSIS

   #include <dce/dce.h>

   void dce_svc_unregister( dce_svc_handle_t handle,
                            error_status_t *status );

 PARAMETERS

   Input

   handle    The application's serviceability handle, originally
             returned by a call to dce_svc_register(), or filled in
             by the DCE_SVC_DEFINE_HANDLE() macro

   Output

   status    Returns the status code from this operation. The status
             code is a value that indicates whether the routine
             completed successfully and if not, why not.

 DESCRIPTION

   The dce_svc_unregister() routine destroys a serviceability handle.
   Calling it closes any open serviceability message routes and frees
   all allocated resources associated with the handle.

   The handle parameter is the serviceability handle that was originally
   returned by the call to dce_svc_register(), or filled in by the
   DCE_SVC_DEFINE_HANDLE() macro. On error, the routine fills in status
   with an error code.

   Note that it is not usually necessary to call this routine, since
   the normal process exit will perform the required cleanup.

 ERROR CODES

   See dce_svc_register.

 RELATED INFORMATION

   Functions:  dce_svc_register
Close Help