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 */