#include <rcs_oi.hh>
Collaboration diagram for RCS_OI:

Public Methods | |
| RCS_OI (NML_FORMAT_PTR, char *name, char *process, char *file, NODE *n) | |
| RCS_OI () | |
| virtual | ~RCS_OI () |
| virtual int | get_request () |
| virtual void | set_mode (OI_MODE_TYPE) |
| virtual void | acknowledge_request () |
| virtual void | request_done () |
| virtual void | cycle () |
| virtual int | send_reply () |
Data Fields | |
| RCS_CMD_MSG * | cmd_for_node |
| int | cmd_for_node_new |
| int | request_flag |
Protected Methods | |
| virtual void | interpret_request () |
| virtual void | choose_command_for_node () |
| virtual void | choose_reply () |
Protected Attributes | |
| RCS_OI_REQUEST_CHANNEL * | request_channel |
| RCS_OI_REPLY_CHANNEL * | reply_channel |
| RCS_OI_REQUEST_MSG * | request_msg |
| RCS_OI_REPLY_MSG * | reply_msg |
| int | new_request_msg |
| int | new_reply_msg |
| NMLTYPE | request_type |
| NMLTYPE | reply_type |
| OI_MODE_TYPE | mode |
| NODE * | node |
| int | oi_list_id |
|
||||||||||||||||||||||||
|
Definition at line 16 of file rcs_oi.cc. 00018 {
00019 char *request_buffer_name;
00020 char *reply_buffer_name;
00021
00022 node = _node;
00023 request_channel = NULL;
00024 reply_channel = NULL;
00025 request_msg = NULL;
00026 reply_msg = NULL;
00027 new_request_msg = 0;
00028 new_reply_msg = 0;
00029 mode = OI_ACCEPTING_REQUESTS;
00030
00031 /* Construct request_buffer_name */
00032 request_buffer_name = (char *) malloc (strlen (_name)
00033 + strlen (node->suffix.req) + 1);
00034 strcpy (request_buffer_name, _name);
00035 strcat (request_buffer_name, node->suffix.req);
00036
00037 /* Open request channel. */
00038 request_channel = new RCS_OI_REQUEST_CHANNEL (fptr,
00039 request_buffer_name, _process,
00040 file);
00041 delete request_buffer_name;
00042
00043 /* Construct reply_buffer_name */
00044 reply_buffer_name = (char *) malloc (strlen (_name)
00045 + strlen (node->suffix.reply) + 1);
00046 strcpy (reply_buffer_name, _name);
00047 strcat (reply_buffer_name, node->suffix.reply);
00048
00049 /* Open reply channel. */
00050 reply_channel = new RCS_OI_REPLY_CHANNEL (fptr,
00051 reply_buffer_name, _process,
00052 file);
00053 delete reply_buffer_name;
00054
00055 /* Add this RCS_OI to the list in the parent node. */
00056 if (NULL != node)
00057 {
00058 if (NULL != node->operator_interface_list)
00059 {
00060 oi_list_id =
00061 node->operator_interface_list->store_at_tail (this,
00062 sizeof (RCS_OI), 0);
00063 }
00064 }
00065 }
|
|
|
|
|
|
Definition at line 82 of file rcs_oi.cc. 00083 {
00084 if (NULL != request_channel)
00085 {
00086 delete request_channel;
00087 request_channel = NULL;
00088 }
00089 if (NULL != reply_channel)
00090 {
00091 delete reply_channel;
00092 reply_channel = NULL;
00093 }
00094 if (NULL != node)
00095 {
00096 if (NULL != node->operator_interface_list)
00097 {
00098 node->operator_interface_list->delete_node (oi_list_id);
00099 }
00100 }
00101 }
|
|
|
Definition at line 105 of file rcs_oi.cc. Referenced by cycle().
00106 {
00107 }
|
|
|
Definition at line 111 of file rcs_oi.cc. Referenced by cycle().
00112 {
00113 }
|
|
|
Definition at line 117 of file rcs_oi.cc. Referenced by cycle().
00118 {
00119 }
|
|
|
Definition at line 132 of file rcs_oi.cc. 00133 {
00134 NMLTYPE temp;
00135 if (NULL != request_channel)
00136 {
00137 switch (temp = request_channel->read ())
00138 {
00139 case -1: /* error */
00140 return -1;
00141 case 0: /* old */
00142 new_request_msg = 0;
00143 return 0;
00144 default: /* new */
00145 request_flag = 1;
00146 new_request_msg = 1;
00147 request_type = temp;
00148 request_msg = request_channel->get_address ();
00149 return 1;
00150 }
00151 }
00152 else
00153 {
00154 return -1;
00155 }
00156 }
|
|
|
Definition at line 164 of file rcs_oi.cc. 00165 {
00166 mode = new_mode;
00167 }
|
|
|
Definition at line 175 of file rcs_oi.cc. 00176 {
00177 request_flag = 0;
00178 }
|
|
|
Definition at line 186 of file rcs_oi.cc. 00187 {
00188 }
|
|
|
Definition at line 200 of file rcs_oi.cc. 00201 {
00202 interpret_request ();
00203 choose_command_for_node ();
00204 choose_reply ();
00205 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.2.11.1 written by Dimitri van Heesch,
© 1997-2001