Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

rcs_oi.hh

Go to the documentation of this file.
00001 
00002 
00003 #ifndef RCS_OI_HH
00004 #define RCS_OI_HH
00005 
00006 #include "cms.hh"               /* class CMS */
00007 #include "nml.hh"               /* class NML, typedef NML_FORMAT_PTR */
00008 #include "nmlmsg.hh"            /* class NMLmsg */
00009 #include "cmd_msg.hh"           /* class RCS_CMD_MSG */
00010 #include "oi_msg.hh"            /* class RCS_OI_REQUEST_MSG, */
00011                                 /* class RCS_OI_REPLY_MSG */
00012                                 /* class RCS_OI_REQUEST_CHANNEL, */
00013                                 /* class RCS_OI_REPLY_CHANNEL */
00014 
00015 enum OI_MODE_TYPE
00016 {
00017   OI_TELEOPERATION,
00018   OI_BLOCKED,
00019   OI_ACCEPTING_REQUESTS,
00020   OI_EMERGENCY_REQUESTS_ONLY,
00021 };
00022 
00023 class RCS_OI
00024 {
00025 protected:
00026   RCS_OI_REQUEST_CHANNEL * request_channel;     /* channel for operator to */
00027   /* send requests to */
00028   RCS_OI_REPLY_CHANNEL *reply_channel;  /* channel for operator to */
00029   /* recieve replies from */
00030   RCS_OI_REQUEST_MSG *request_msg;      /* pointer to last request recvd  */
00031   RCS_OI_REPLY_MSG *reply_msg;  /* pointer to reply to be sent */
00032   int new_request_msg;          /* is the request_msg new? */
00033   int new_reply_msg;            /* is the reply_msg new? */
00034   NMLTYPE request_type;
00035   NMLTYPE reply_type;
00036   OI_MODE_TYPE mode;
00037   NODE *node;
00038   int oi_list_id;
00039 
00040   virtual void interpret_request ();    /* interpret incoming requests */
00041   virtual void choose_command_for_node ();      /* convert request to command  */
00042   virtual void choose_reply (); /* form replies */
00043 
00044 public:
00045     RCS_OI (NML_FORMAT_PTR, char *name, char *process, char *file, NODE * n);
00046     RCS_OI ();
00047     virtual ~ RCS_OI ();
00048 
00049   RCS_CMD_MSG *cmd_for_node;    /* command node will use if operator */
00050   /* request succeeds */
00051   int cmd_for_node_new;         /* is cmd_for_node new? */
00052   int request_flag;             /* NODE checks this flag if */
00053 
00054   virtual int get_request ();
00055   virtual void set_mode (OI_MODE_TYPE);
00056   virtual void acknowledge_request ();  /* NODE calls this if cmd_for_node */
00057   /* will be used. */
00058   virtual void request_done (); /* NODE calls this when status == done */
00059   virtual void cycle ();        /* NODE calls this every cycle  */
00060   virtual int send_reply ();    /* send out replies.  */
00061 };
00062 
00063 #endif

Generated on Sun Dec 2 15:56:51 2001 for rcslib by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001