Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

nml_srv.hh

Go to the documentation of this file.
00001 /*************************************************************************
00002 * File:nml_srv.hh                                                        *
00003 * Authors: Fred Proctor, Will Shackleford                                *
00004 * Purpose: C++ Header file for RPC server that reads and writes          *
00005 *          to a local NML buffer for remote processes.                   *
00006 * Includes:                                                              *
00007 *          1. class NML_SERVER                                           *
00008 *************************************************************************/
00009 
00010 #ifndef NML_SERVER_HH
00011 #define NML_SERVER_HH
00012 
00013 #include "rcs_defs.hh"          /* EXTERN_C_STD_HEADERS  */
00014 
00015 #ifdef EXTERN_C_STD_HEADERS
00016 extern "C"
00017 {
00018 #endif
00019 
00020 #ifdef WIN32
00021 
00022 #if defined(WIN32) && !defined(USE_OLD_WINSOCK)
00023   /* Lame problem if windows.h is included before winsock2.h many redefined
00024      compiler errors result. */
00025 #include <winsock2.h>
00026 #endif
00027 
00028 #include <windows.h>
00029 #else
00030 
00031 #ifndef VXWORKS
00032 #include <sys/types.h>
00033 #include <unistd.h>             /* pid_t */
00034 #endif
00035 #endif
00036 
00037 #ifdef EXTERN_C_STD_HEADERS
00038 }
00039 #endif
00040 
00041 #include "cms_srv.hh"           /* class CMS_SERVER */
00042 #include "nml.hh"               /* class NML */
00043 #include "rem_msg.hh"           /* struct REMOTE_READ_REQUEST, */
00044                                 /* struct REMOTE_WRITE_REQUEST, */
00045 
00046 /* Server class */
00047 class RCS_EXPORT NML_SERVER_LOCAL_PORT:public CMS_SERVER_LOCAL_PORT
00048 {
00049 protected:
00050   NML * nml;
00051   REMOTE_READ_REPLY *reader (REMOTE_READ_REQUEST * _req);
00052   REMOTE_READ_REPLY *blocking_read (REMOTE_READ_REQUEST * _req);
00053   REMOTE_WRITE_REPLY *writer (REMOTE_WRITE_REQUEST * _req);
00054   REMOTE_SET_DIAG_INFO_REPLY *set_diag_info (REMOTE_SET_DIAG_INFO_REQUEST *
00055                                              buf);
00056   REMOTE_GET_DIAG_INFO_REPLY *get_diag_info (REMOTE_GET_DIAG_INFO_REQUEST *
00057                                              buf);
00058   REMOTE_GET_MSG_COUNT_REPLY *get_msg_count (REMOTE_GET_DIAG_INFO_REQUEST *
00059                                              buf);
00060   void reset_diag_info ();
00061 
00062   friend class NML_SUPER_SERVER;
00063   friend class NML_SERVER;
00064   int batch_list_id;
00065 
00066 public:
00067     NML_SERVER_LOCAL_PORT (NML * _nml);
00068     virtual ~ NML_SERVER_LOCAL_PORT ();
00069 };
00070 
00071 class RCS_EXPORT NML_SERVER:public CMS_SERVER
00072 {
00073 protected:
00074   int super_server_list_id;
00075   int being_deleted;
00076 
00077 public:
00078     NML_SERVER (NML * _nml, int set_to_master = 0);
00079     virtual ~ NML_SERVER ();
00080   void delete_from_list ();
00081   void add_to_nml_server_list ();
00082   friend class NML_SUPER_SERVER;
00083 };
00084 
00085 class RCS_EXPORT NML_SUPER_SERVER
00086 {
00087 public:
00088   RCS_LINKED_LIST * servers;
00089   NML_SUPER_SERVER ();
00090   ~NML_SUPER_SERVER ();
00091   void add_to_list (NML *);
00092   void add_to_list (NML_SERVER *);
00093   void spawn_all_servers ();
00094   void kill_all_servers ();
00095   void delete_all_servers ();
00096   int unspawned_servers;
00097 };
00098 
00099 extern RCS_EXPORT NML_SUPER_SERVER *NML_Default_Super_Server;
00100 extern void RCS_EXPORT run_nml_servers ();
00101 extern void RCS_EXPORT spawn_nml_servers ();
00102 extern void RCS_EXPORT kill_nml_servers ();
00103 extern "C"
00104 {
00105   extern void RCS_EXPORT nml_server_cleanup ();
00106 }
00107 
00108 #endif                          /* !NML_SERVER_HH */

Generated on Sun Dec 2 15:56:50 2001 for rcslib by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001