#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 } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|