00001 #ifndef RC_MSG_HEADER
00002 #define RC_MSG_HEADER
00003
00004 #include <stdio.h>
00005 #include <sys/types.h>
00006 #include <string.h>
00007 #include "iccp.h"
00008 #include "RC_MsgDefs.h"
00009
00010 #ifdef DEFINE_ONLINE
00011 #include <string>
00012 #endif
00013
00014 class RcComInfo;
00015
00016 struct MsgEnvHeader
00017 {
00018 RcComInfo *origin;
00019 u_int Seq;
00020
00021 };
00022
00023 MsgEnvHeader msg_env(RcComInfo *info);
00024
00025 class RcMsg
00026 {
00027 public:
00028 MsgEnvHeader envelope;
00029 ic_msg_head head;
00030 union
00031 {
00032
00033 char data[RCDATASIZE];
00034 uchar byte[RCDATASIZE];
00035 uint dword[RCDATASIZE/4];
00036 ushort word[RCDATASIZE/2];
00037
00038
00039
00040 rc_daq_connect daq_connect;
00041 rc_daq_error daq_error;
00042
00043
00044 rc_cmd_response cmd_response;
00045 rc_drc_send_error drc_send_error;
00046
00047
00048 rc_drc_connect drc_connect;
00049 rc_cmd_nop cmd_nop;
00050 rc_drc_ping drc_ping;
00051 rc_drc_stophandler drc_stophandler;
00052 rc_drc_clear_handler drc_clear_handler;
00053 rc_drc_querysystem drc_querysystem;
00054 rc_drc_get_systems drc_get_systems;
00055 rc_drc_get_threads drc_get_threads;
00056 rc_cmd_timeout cmd_timeout;
00057 rc_drc_reconfig drc_reconfig;
00058 rc_drc_add_component drc_add_component;
00059 rc_cmd_reboot cmd_reboot;
00060 rc_drc_run_start drc_run_start;
00061 rc_drc_run_stop drc_run_stop;
00062 rc_drc_run_pause drc_run_pause;
00063 rc_drc_run_resume drc_run_resume;
00064 rc_drc_set_config drc_set_config;
00065 rc_drc_get_config drc_get_config;
00066 rc_drc_send_config drc_send_config;
00067 rc_drc_set_busy drc_set_busy;
00068 rc_drc_release_busy drc_release_busy;
00069 rc_drc_flush_tokens drc_flush_tokens;
00070 rc_drc_query_tokens drc_query_tokens;
00071 rc_drc_client_control drc_client_control;
00072 rc_drc_reconnect drc_reconnect;
00073 rc_drc_get_errors drc_get_errors;
00074 rc_drc_clear_errors drc_clear_errors;
00075 rc_drc_update_query drc_update_query;
00076
00077
00078 rc_cmd_ack cmd_ack;
00079 rc_cmd_ping cmd_ping;
00080 rc_daq_run_start daq_run_start;
00081 rc_daq_run_stop daq_run_stop;
00082 rc_daq_run_pause daq_run_pause;
00083 rc_daq_run_resume daq_run_resume;
00084 rc_daq_send_config daq_send_config;
00085 rc_daq_set_busy daq_set_busy;
00086 rc_daq_release_busy daq_release_busy;
00087 rc_daq_flush_tokens daq_flush_tokens;
00088 rc_daq_query_tokens daq_query_tokens;
00089 rc_mz_emul_fiber mz_emul_fiber;
00090 rc_rts_reconnect rts_reconnect;
00091 rc_drc_monitor_send drc_monitor_send;
00092 };
00093
00094 void AddEnvelope(const MsgEnvHeader& env)
00095 {
00096 envelope = env;
00097 };
00098
00099 void make_LOG_DATA(char *str);
00100 void Clear(const MsgEnvHeader& env, unsigned char st,
00101 unsigned char dt, unsigned char cmd=0);
00102 void Write(FILE* fd);
00103 int Rcv(u_int fd, bool handshake=false) ;
00104 int Snd(u_int fd, bool handshake=true) ;
00105 int SockPeekHeader(u_int fd, u_int timeout);
00106 void Dump(FILE* fd);
00107 };
00108
00109 #endif
00110