/ src / libnml / nml / nml_srv.hh
nml_srv.hh
 1  /********************************************************************
 2  * Description: nml_srv.hh
 3  *
 4  *   Derived from a work by Fred Proctor & Will Shackleford
 5  *
 6  * Author:
 7  * License: LGPL Version 2
 8  * System: Linux
 9  *    
10  * Copyright (c) 2004 All rights reserved.
11  *
12  * Last change: 
13  ********************************************************************/
14  
15  #ifndef NML_SERVER_HH
16  #define NML_SERVER_HH
17  
18  #ifdef __cplusplus
19  extern "C" {
20  #endif
21  
22  #include <sys/types.h>
23  #include <unistd.h>		/* pid_t */
24  
25  #ifdef __cplusplus
26  }
27  #endif
28  #include "cms_srv.hh"		/* class CMS_SERVER */
29  #include "nml.hh"		/* class NML */
30  #include "rem_msg.hh"		/* struct REMOTE_READ_REQUEST, */
31  class NML_SERVER_LOCAL_PORT:public CMS_SERVER_LOCAL_PORT {
32    protected:
33      NML * nml;
34      REMOTE_READ_REPLY *reader(REMOTE_READ_REQUEST * _req);
35      REMOTE_READ_REPLY *blocking_read(REMOTE_READ_REQUEST * _req);
36      REMOTE_WRITE_REPLY *writer(REMOTE_WRITE_REQUEST * _req);
37      REMOTE_SET_DIAG_INFO_REPLY *set_diag_info(REMOTE_SET_DIAG_INFO_REQUEST *
38  	buf);
39      REMOTE_GET_DIAG_INFO_REPLY *get_diag_info(REMOTE_GET_DIAG_INFO_REQUEST *
40  	buf);
41      REMOTE_GET_MSG_COUNT_REPLY *get_msg_count(REMOTE_GET_DIAG_INFO_REQUEST *
42  	buf);
43      void reset_diag_info();
44  
45      friend class NML_SUPER_SERVER;
46      friend class NML_SERVER;
47      int batch_list_id;
48  
49    public:
50        NML_SERVER_LOCAL_PORT(NML * _nml);
51        virtual ~ NML_SERVER_LOCAL_PORT();
52  };
53  
54  class NML_SERVER:public CMS_SERVER {
55    protected:
56      int super_server_list_id;
57      int being_deleted;
58  
59    public:
60        NML_SERVER(NML * _nml, int set_to_master = 0);
61        virtual ~ NML_SERVER();
62      void delete_from_list();
63      void add_to_nml_server_list();
64      friend class NML_SUPER_SERVER;
65  };
66  
67  class NML_SUPER_SERVER {
68    public:
69      LinkedList * servers;
70      NML_SUPER_SERVER();
71      ~NML_SUPER_SERVER();
72      void add_to_list(NML *);
73      void add_to_list(NML_SERVER *);
74      void spawn_all_servers();
75      void kill_all_servers();
76      void delete_all_servers();
77      int unspawned_servers;
78  };
79  
80  extern NML_SUPER_SERVER *NML_Default_Super_Server;
81  extern void run_nml_servers();
82  extern void spawn_nml_servers();
83  extern void kill_nml_servers();
84  extern "C" {
85      extern void nml_server_cleanup();
86  }
87  #endif				/* !NML_SERVER_HH */