00001
00002
00003 #ifndef NMLQR_HH
00004 #define NMLQR_HH
00005
00006 #include "rcs_defs.hh"
00007 #include "nml.hh"
00008 #include "nmlmsg.hh"
00009
00010 class NML_QUERY_MSG:public NMLmsg
00011 {
00012 public:
00013 NML_QUERY_MSG (NMLTYPE t, long s):NMLmsg (t, s)
00014 {
00015 };
00016 void update (CMS *);
00017 int subdiv_for_reply;
00018 };
00019
00020 class RCS_EXPORT NML_QUERY_CHANNEL:public NML
00021 {
00022 public:
00023 NML_QUERY_CHANNEL (NML_FORMAT_PTR, char *, char *, char *,
00024 int set_to_server = 0);
00025 ~NML_QUERY_CHANNEL ();
00026 NML_QUERY_MSG *get_address ()
00027 {
00028 return ((NML_QUERY_MSG *) NML::get_address ());
00029 };
00030 };
00031
00032 class RCS_EXPORT NML_ID_CHANNEL:public NML
00033 {
00034 public:
00035 NML_ID_CHANNEL (NML_FORMAT_PTR, char *, char *, char *,
00036 int set_to_server = 0);
00037 ~NML_ID_CHANNEL ();
00038 };
00039
00040
00041 #define NML_NO_TIMEOUT (-1.0)
00042
00043 class NML_QR_SERVER
00044 {
00045 public:
00046 NML_QR_SERVER (NML_FORMAT_PTR f_ptr, char *qr_name, char *process_name,
00047 char *config_file);
00048 ~NML_QR_SERVER ();
00049
00050 NMLTYPE readQuery ();
00051 NMLTYPE waitForQuery (double timeout);
00052 NMLmsg *getQueryAddress ();
00053 int replyToLastQuery (NMLmsg * message_to_send);
00054 int valid ();
00055 int reset ();
00056
00057 protected:
00058 NML * replyChannel;
00059 NML_QUERY_CHANNEL *queryChannel;
00060 NML_ID_CHANNEL *idChannel;
00061 int reply_subdiv;
00062 char *subdiv_allocation_table;
00063 };
00064
00065
00066 class NML_QR_CLIENT
00067 {
00068 public:
00069 NML_QR_CLIENT (NML_FORMAT_PTR f_ptr, char *qr_name, char *process_name,
00070 char *config_file);
00071 ~NML_QR_CLIENT ();
00072
00073 int sendQuery (NML_QUERY_MSG *);
00074 NMLTYPE readReply ();
00075 NMLTYPE waitForReply (double timeout);
00076 NMLmsg *getReplyAddress ();
00077 int valid ();
00078 int reset ();
00079
00080
00081 protected:
00082 NML * replyChannel;
00083 NML_QUERY_CHANNEL *queryChannel;
00084 NML_ID_CHANNEL *idChannel;
00085 int reply_subdiv;
00086 };
00087
00088
00089 #endif