#ifndef NML_SERVER_HH
#define NML_SERVER_HH
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/types.h>
#include <unistd.h>
#ifdef __cplusplus
}
#endif
#include "cms_srv.hh"
#include "nml.hh"
#include "rem_msg.hh"
class NML_SERVER_LOCAL_PORT:public CMS_SERVER_LOCAL_PORT {
protected:
NML * nml;
REMOTE_READ_REPLY *reader(REMOTE_READ_REQUEST * _req);
REMOTE_READ_REPLY *blocking_read(REMOTE_READ_REQUEST * _req);
REMOTE_WRITE_REPLY *writer(REMOTE_WRITE_REQUEST * _req);
REMOTE_SET_DIAG_INFO_REPLY *set_diag_info(REMOTE_SET_DIAG_INFO_REQUEST *
buf);
REMOTE_GET_DIAG_INFO_REPLY *get_diag_info(REMOTE_GET_DIAG_INFO_REQUEST *
buf);
REMOTE_GET_MSG_COUNT_REPLY *get_msg_count(REMOTE_GET_DIAG_INFO_REQUEST *
buf);
void reset_diag_info();
friend class NML_SUPER_SERVER;
friend class NML_SERVER;
int batch_list_id;
public:
NML_SERVER_LOCAL_PORT(NML * _nml);
virtual ~ NML_SERVER_LOCAL_PORT();
};
class NML_SERVER:public CMS_SERVER {
protected:
int super_server_list_id;
int being_deleted;
public:
NML_SERVER(NML * _nml, int set_to_master = 0);
virtual ~ NML_SERVER();
void delete_from_list();
void add_to_nml_server_list();
friend class NML_SUPER_SERVER;
};
class NML_SUPER_SERVER {
public:
LinkedList * servers;
NML_SUPER_SERVER();
~NML_SUPER_SERVER();
void add_to_list(NML *);
void add_to_list(NML_SERVER *);
void spawn_all_servers();
void kill_all_servers();
void delete_all_servers();
int unspawned_servers;
};
extern NML_SUPER_SERVER *NML_Default_Super_Server;
extern void run_nml_servers();
extern void spawn_nml_servers();
extern void kill_nml_servers();
extern "C" {
extern void nml_server_cleanup();
}
#endif