#include <nml.hh>
Inheritance diagram for NML:


Public Methods | |
| void * | operator new (size_t) |
| void | operator delete (void *) |
| void | register_with_server () |
| void | add_to_channel_list () |
| NMLmsg * | get_address () |
| void | delete_channel () |
| NMLTYPE | read () |
| NMLTYPE | blocking_read (double timeout) |
| NMLTYPE | peek () |
| NMLTYPE | read (void *, long) |
| NMLTYPE | peek (void *, long) |
| int | write (NMLmsg &nml_msg) |
| int | write (NMLmsg *nml_msg) |
| int | write_if_read (NMLmsg &nml_msg) |
| int | write_if_read (NMLmsg *nml_msg) |
| NMLTYPE | blocking_read_extended (double timeout, double poll_interval) |
| int | write_subdivision (int subdiv, NMLmsg &nml_msg) |
| int | write_subdivision (int subdiv, NMLmsg *nml_msg) |
| int | write_if_read_subdivision (int subdiv, NMLmsg &nml_msg) |
| int | write_if_read_subdivision (int subdiv, NMLmsg *nml_msg) |
| NMLTYPE | read_subdivision (int subdiv) |
| NMLTYPE | blocking_read_subdivision (int subdiv, double timeout) |
| NMLTYPE | peek_subdivision (int subdiv) |
| NMLmsg * | get_address_subdivision (int subdiv) |
| int | get_total_subdivisions () |
| void | clean_buffers () |
| const char * | msg2str (NMLmsg &nml_msg) |
| const char * | msg2str (NMLmsg *nml_msg) |
| NMLTYPE | str2msg (const char *) |
| int | login (const char *name, const char *passwd) |
| void | reconnect () |
| void | disconnect () |
| int | valid () |
| int | check_if_read () |
| int | check_if_transfers_complete () |
| int | clear () |
| int | get_msg_count () |
| NML_DIAGNOSTICS_INFO * | get_diagnostics_info () |
| int | prefix_format_chain (NML_FORMAT_PTR) |
| NML (NML_FORMAT_PTR f_ptr, char *, char *, char *, int set_to_server=0, int set_to_master=0) | |
| NML (NML *, int set_to_server=0, int set_to_master=0) | |
| NML (char *buffer_line, char *proc_line) | |
| virtual | ~NML () |
| int | reset () |
| int | print_queue_info () |
| int | set_error () |
| void | print_info (char *bufname=NULL, char *procname=NULL, char *cfg_file=NULL) |
Data Fields | |
| RCS_LINKED_LIST * | format_chain |
| int | channel_list_id |
| NML_ERROR_TYPE | error_type |
| NMLTYPE(* | phantom_read )() |
| NMLTYPE(* | phantom_peek )() |
| int(* | phantom_write )(NMLmsg *nml_msg) |
| int(* | phantom_write_if_read )(NMLmsg *nml_msg) |
| int(* | phantom_check_if_read )() |
| int(* | phantom_clear )() |
| int | ignore_format_chain |
| int | queue_length |
| NML_CHANNEL_TYPE | channel_type |
| long | sizeof_message_header |
| int | forced_type |
Protected Methods | |
| int | run_format_chain (NMLTYPE, void *) |
| int | format_input (NMLmsg *nml_msg) |
| int | format_output () |
| NML (char *, char *, char *, int set_to_server=0, int set_to_master=0) | |
| void | reconstruct (NML_FORMAT_PTR, char *, char *, char *, int set_to_server=0, int set_to_master=0) |
| NML (NML &nml) | |
Protected Attributes | |
| int | fast_mode |
| int * | cms_status |
| long * | cms_inbuffer_header_size |
| int | info_printed |
| int | already_deleted |
| char | bufname [40] |
| char | procname [40] |
| char | cfgfilename [160] |
| double | blocking_read_poll_interval |
| CMS * | cms_for_msg_string_conversions |
|
||||||||||||||||||||||||||||
|
Definition at line 211 of file nml.cc. 00214 {
00215 cms_for_msg_string_conversions = 0;
00216 info_printed = 0;
00217 blocking_read_poll_interval = -1.0;
00218 forced_type = 0;
00219 strncpy (bufname, buf, 40);
00220 strncpy (procname, proc, 40);
00221 if (NULL == file)
00222 {
00223 file = default_nml_config_file;
00224 }
00225 strncpy (cfgfilename, file, 160);
00226
00227 if (rcs_errors_printed >= max_rcs_errors_to_print
00228 && max_rcs_errors_to_print > 0 && nml_reset_errors_printed)
00229 {
00230 rcs_errors_printed = 0;
00231 rcs_print
00232 ("\nResetting rcs_errors_printed because a new NML channel is being created.\n");
00233 }
00234
00235
00236 already_deleted = 0;
00237 channel_type = NML_GENERIC_CHANNEL_TYPE;
00238 sizeof_message_header = sizeof (NMLmsg);
00239
00240 reconstruct (f_ptr, buf, proc, file, set_to_server, set_to_master);
00241
00242 if (NULL != cms)
00243 {
00244 cms->sizeof_message_header = sizeof_message_header;
00245 char *forced_type_eq = strstr (cms->buflineupper, "FORCE_TYPE=");
00246 if (forced_type_eq != NULL)
00247 {
00248 #ifndef UNDER_CE
00249 long temp = strtol (forced_type_eq + 11, NULL, 0);
00250 #else
00251 long temp = atol (forced_type_eq + 11);
00252 #endif
00253 if (temp > 0)
00254 {
00255 forced_type = temp;
00256 fast_mode = 0;
00257 }
00258 }
00259 }
00260 }
|
|
||||||||||||||||
|
Definition at line 782 of file nml.cc. 00783 {
00784 cms_for_msg_string_conversions = 0;
00785 already_deleted = 0;
00786 forced_type = 0;
00787 cms = (CMS *) NULL;
00788 format_chain = (RCS_LINKED_LIST *) NULL;
00789 error_type = NML_NO_ERROR;
00790 ignore_format_chain = 0;
00791 channel_list_id = 0;
00792 fast_mode = 0;
00793 info_printed = 0;
00794 blocking_read_poll_interval = -1.0;
00795
00796
00797 channel_type = NML_GENERIC_CHANNEL_TYPE;
00798 sizeof_message_header = sizeof (NMLmsg);
00799
00800
00801 if (NULL != nml_ptr)
00802 {
00803 strncpy (bufname, nml_ptr->bufname, 40);
00804 strncpy (procname, nml_ptr->procname, 40);
00805 strncpy (cfgfilename, nml_ptr->cfgfilename, 160);
00806 if (NULL != nml_ptr->cms)
00807 {
00808 // Create a CMS channel identitical to the one from the argument
00809 // NML channel accept that the channel may be set_to_server or
00810 // set_to_master differently.
00811 cms_copy (&cms, nml_ptr->cms, set_to_server, set_to_master);
00812 if (NULL != cms)
00813 {
00814 cms->current_subdivision = nml_ptr->cms->current_subdivision;
00815 }
00816 }
00817 }
00818 if (!ignore_format_chain)
00819 {
00820 format_chain = new RCS_LINKED_LIST;
00821 if ((NULL != nml_ptr->format_chain) && (NULL != format_chain))
00822 {
00823 RCS_LINKED_LIST *from, *to;
00824 NML_FORMAT_PTR format_func_ptr;
00825 from = nml_ptr->format_chain;
00826 to = format_chain;
00827 format_func_ptr = (NML_FORMAT_PTR) from->get_head ();
00828 while (NULL != format_func_ptr)
00829 {
00830 to->store_at_tail ((void *) format_func_ptr, 0, 0);
00831 format_func_ptr = (NML_FORMAT_PTR) from->get_next ();
00832 }
00833 }
00834 }
00835 if (NULL == cms)
00836 {
00837 return;
00838 }
00839 add_to_channel_list ();
00840 if (!cms->is_phantom &&
00841 cms->ProcessType == CMS_LOCAL_TYPE && !cms->neutral && !cms->isserver)
00842 {
00843 fast_mode = 1;
00844 }
00845 cms_status = (int *) &(cms->status);
00846 cms_inbuffer_header_size = &(cms->header.in_buffer_size);
00847 char *forced_type_eq = strstr (cms->buflineupper, "FORCE_TYPE=");
00848 if (forced_type_eq != NULL)
00849 {
00850 #ifndef UNDER_CE
00851 long temp = strtol (forced_type_eq + 11, NULL, 0);
00852 #else
00853 long temp = atol (forced_type_eq + 11);
00854 #endif
00855 if (temp > 0)
00856 {
00857 forced_type = temp;
00858 fast_mode = 0;
00859 }
00860 }
00861 char *brpi_eq = strstr (cms->buflineupper, "BRPI=");
00862 if (brpi_eq != NULL)
00863 {
00864 #ifndef UNDER_CE
00865 blocking_read_poll_interval = strtod (brpi_eq + 5, NULL);
00866 #else
00867 blocking_read_poll_interval = RCS_CE_ATOF (brpi_eq + 5);
00868 #endif
00869 }
00870 if (NULL != nml_ptr->cms->dpi)
00871 {
00872 CMS_DIAG_PROC_INFO *dpi = cms->get_diag_proc_info ();
00873 *dpi = *(nml_ptr->cms->get_diag_proc_info ());
00874 cms->set_diag_proc_info (dpi);
00875 }
00876 cms->first_diag_store = nml_ptr->cms->first_diag_store;
00877 if (NULL != cms->handle_to_global_data &&
00878 NULL != nml_ptr->cms->handle_to_global_data)
00879 {
00880 cms->handle_to_global_data->total_bytes_moved =
00881 nml_ptr->cms->handle_to_global_data->total_bytes_moved;
00882 }
00883 }
|
|
||||||||||||
|
Definition at line 599 of file nml.cc. 00600 {
00601 cms_for_msg_string_conversions = 0;
00602 cms = (CMS *) NULL;
00603 blocking_read_poll_interval = -1.0;
00604 forced_type = 0;
00605 info_printed = 0;
00606 already_deleted = 0;
00607 format_chain = (RCS_LINKED_LIST *) NULL;
00608 phantom_read = (NMLTYPE (*)())NULL;
00609 phantom_peek = (NMLTYPE (*)())NULL;
00610 phantom_write = (int (*)(NMLmsg *)) NULL;
00611 phantom_write_if_read = (int (*)(NMLmsg *)) NULL;
00612 phantom_check_if_read = (int (*)()) NULL;
00613 phantom_clear = (int (*)()) NULL;
00614 channel_list_id = 0;
00615 error_type = NML_NO_ERROR;
00616 ignore_format_chain = 0;
00617 fast_mode = 0;
00618
00619 channel_type = NML_GENERIC_CHANNEL_TYPE;
00620 sizeof_message_header = sizeof (NMLmsg);
00621
00622 if (-1 == cms_create_from_lines (&cms, buffer_line, proc_line))
00623 {
00624 if (verbose_nml_error_messages)
00625 {
00626 rcs_print_error ("NML: cms_create_from_lines returned -1.\n");
00627 }
00628 if (!info_printed)
00629 {
00630 print_info ();
00631 }
00632 if (NULL != cms)
00633 {
00634 rcs_print_debug (PRINT_NML_DESTRUCTORS, " delete (CMS *) %X;\n",
00635 cms);
00636 delete cms;
00637 cms = (CMS *) NULL;
00638 }
00639 error_type = NML_INVALID_CONFIGURATION;
00640 return;
00641 }
00642 if (NULL == cms)
00643 {
00644 error_type = NML_INVALID_CONFIGURATION;
00645 return;
00646 }
00647 if (cms->status < 0)
00648 {
00649 error_type = NML_INVALID_CONFIGURATION;
00650 if (verbose_nml_error_messages)
00651 {
00652 rcs_print_error ("NML: cms->status = %d.\n", cms->status);
00653 }
00654 if (!info_printed)
00655 {
00656 print_info ();
00657 }
00658 rcs_print_debug (PRINT_NML_DESTRUCTORS, " delete (CMS *) %X;\n", cms);
00659 delete cms;
00660 cms = (CMS *) NULL;
00661 return;
00662 }
00663 add_to_channel_list ();
00664 if (!cms->is_phantom &&
00665 cms->ProcessType == CMS_LOCAL_TYPE && !cms->neutral && !cms->isserver)
00666 {
00667 fast_mode = 1;
00668 }
00669 cms_status = (int *) &(cms->status);
00670 cms_inbuffer_header_size = &(cms->header.in_buffer_size);
00671 if (NULL != cms)
00672 {
00673 cms->sizeof_message_header = sizeof_message_header;
00674 char *forced_type_eq = strstr (cms->buflineupper, "FORCE_TYPE=");
00675 if (forced_type_eq != NULL)
00676 {
00677 #ifndef UNDER_CE
00678 long temp = strtol (forced_type_eq + 11, NULL, 0);
00679 #else
00680 long temp = atol (forced_type_eq + 11);
00681 #endif
00682 if (temp > 0)
00683 {
00684 forced_type = temp;
00685 fast_mode = 0;
00686 }
00687 }
00688 char *brpi_eq = strstr (cms->buflineupper, "BRPI=");
00689 if (brpi_eq != NULL)
00690 {
00691 #ifndef UNDER_CE
00692 blocking_read_poll_interval = strtod (brpi_eq + 5, NULL);
00693 #else
00694 blocking_read_poll_interval = RCS_CE_ATOF (brpi_eq + 5);
00695 #endif
00696 }
00697 }
00698
00699 }
|
|
|
Definition at line 979 of file nml.cc. 00980 {
00981 if (already_deleted)
00982 {
00983 if (verbose_nml_error_messages)
00984 {
00985 rcs_print_error ("NML channel being deleted more than once.\n");
00986 }
00987 }
00988 already_deleted = 1;
00989 delete_channel ();
00990 }
|
|
||||||||||||||||||||||||
|
Definition at line 459 of file nml.cc. 00461 {
00462 if (NULL == file)
00463 {
00464 file = default_nml_config_file;
00465 }
00466 cms_for_msg_string_conversions = 0;
00467 strncpy (bufname, buf, 40);
00468 strncpy (procname, proc, 40);
00469 strncpy (cfgfilename, file, 160);
00470 blocking_read_poll_interval = -1.0;
00471 info_printed = 0;
00472 forced_type = 0;
00473 already_deleted = 0;
00474 cms = (CMS *) NULL;
00475 format_chain = (RCS_LINKED_LIST *) NULL;
00476 phantom_read = (NMLTYPE (*)())NULL;
00477 phantom_peek = (NMLTYPE (*)())NULL;
00478 phantom_write = (int (*)(NMLmsg *)) NULL;
00479 phantom_write_if_read = (int (*)(NMLmsg *)) NULL;
00480 phantom_check_if_read = (int (*)()) NULL;
00481 phantom_clear = (int (*)()) NULL;
00482 channel_list_id = 0;
00483 error_type = NML_NO_ERROR;
00484 ignore_format_chain = 0;
00485 fast_mode = 0;
00486
00487 channel_type = NML_GENERIC_CHANNEL_TYPE;
00488 sizeof_message_header = sizeof (NMLmsg);
00489
00490 if (-1 == cms_config (&cms, buf, proc, file, set_to_server, set_to_master))
00491 {
00492 if (verbose_nml_error_messages)
00493 {
00494 rcs_print_error ("NML: cms_config returned -1.\n");
00495 }
00496 if (!info_printed)
00497 {
00498 print_info (buf, proc, file);
00499 }
00500 if (NULL != cms)
00501 {
00502 rcs_print_debug (PRINT_NML_DESTRUCTORS, " delete (CMS *) %X;\n",
00503 cms);
00504 delete cms;
00505 cms = (CMS *) NULL;
00506 }
00507 error_type = NML_INVALID_CONFIGURATION;
00508 return;
00509 }
00510
00511 if (NULL == cms)
00512 {
00513 error_type = NML_INVALID_CONFIGURATION;
00514 if (!info_printed)
00515 {
00516 print_info (buf, proc, file);
00517 }
00518 return;
00519 }
00520
00521 if (cms->status < 0)
00522 {
00523 error_type = NML_INVALID_CONFIGURATION;
00524 if (!info_printed)
00525 {
00526 print_info (buf, proc, file);
00527 }
00528 rcs_print_debug (PRINT_NML_DESTRUCTORS, " delete (CMS *) %X;\n", cms);
00529 delete cms;
00530 cms = (CMS *) NULL;
00531 return;
00532 }
00533
00534 add_to_channel_list ();
00535 if (!cms->is_phantom &&
00536 cms->ProcessType == CMS_LOCAL_TYPE && !cms->neutral && !cms->isserver)
00537 {
00538 fast_mode = 1;
00539 }
00540 cms_status = (int *) &(cms->status);
00541 cms_inbuffer_header_size = &(cms->header.in_buffer_size);
00542
00543 if (NULL != cms)
00544 {
00545 cms->sizeof_message_header = sizeof_message_header;
00546 char *forced_type_eq = strstr (cms->buflineupper, "FORCE_TYPE=");
00547 if (forced_type_eq != NULL)
00548 {
00549 #ifndef UNDER_CE
00550 long temp = strtol (forced_type_eq + 11, NULL, 0);
00551 #else
00552 long temp = atol (forced_type_eq + 11);
00553 #endif
00554 if (temp > 0)
00555 {
00556 forced_type = temp;
00557 fast_mode = 0;
00558 }
00559 }
00560 char *brpi_eq = strstr (cms->buflineupper, "BRPI=");
00561 if (brpi_eq != NULL)
00562 {
00563 #ifndef UNDER_CE
00564 blocking_read_poll_interval = strtod (brpi_eq + 5, NULL);
00565 #else
00566 blocking_read_poll_interval = RCS_CE_ATOF (brpi_eq + 5);
00567 #endif
00568 }
00569 }
00570
00571 }
|
|
|
Definition at line 3001 of file nml.cc. 03002 {
03003 }
|
|
||||||||||||
|
Definition at line 2336 of file nml.cc. Referenced by format_input(), and format_output().
02337 {
02338 NML_FORMAT_PTR format_function;
02339
02340 format_function = (NML_FORMAT_PTR) format_chain->get_head ();
02341 while (NULL != format_function)
02342 {
02343 switch ((*format_function) (type, buf, cms))
02344 {
02345 case -1:
02346 return (-1);
02347 case 0:
02348 break;
02349 case 1:
02350 return (0);
02351 }
02352 format_function = (NML_FORMAT_PTR) format_chain->get_next ();
02353 }
02354 return (0);
02355 }
|
|
|
Definition at line 2205 of file nml.cc. Referenced by msg2str(), write(), and write_if_read().
02206 {
02207 NMLTYPE new_type;
02208 long new_size;
02209 if (NULL == cms)
02210 {
02211 return -1;
02212 }
02213
02214 if (cms->force_raw)
02215 {
02216 cms->mode = CMS_RAW_IN;
02217 }
02218
02219 switch (cms->mode)
02220 {
02221 case CMS_RAW_IN:
02222 /* Make sure the message size is not larger than the buffer size. */
02223 if (nml_msg->size > cms->max_message_size)
02224 {
02225 rcs_print_error ("NML: Message size(%d) too large for"
02226 " CMS buffer size of %d.\n",
02227 nml_msg->size, cms->max_message_size);
02228 cms->status = CMS_INSUFFICIENT_SPACE_ERROR;
02229 return (-1);
02230 }
02231 cms->header.in_buffer_size = nml_msg->size;
02232 break;
02233 case CMS_ENCODE:
02234 /* Make sure the message size is not larger than the buffer size. */
02235 if (nml_msg->size > cms->max_message_size)
02236 {
02237 rcs_print_error ("NML: Message size(%d) too large for"
02238 " CMS buffer size of %d.\n",
02239 nml_msg->size, cms->max_message_size);
02240 cms->status = CMS_INSUFFICIENT_SPACE_ERROR;
02241 return (-1);
02242 }
02243
02244 cms->format_low_ptr = (char RCS_HUGE *) nml_msg;
02245 cms->format_high_ptr = cms->format_low_ptr + nml_msg->size;
02246 /* Handle the generic part of the message. */
02247 cms->rewind (); /* Move to the start of the encoded buffer. */
02248 cms->update (nml_msg->type); /* Store message type in encoded buffer. */
02249 cms->update (nml_msg->size); /* Store message size in encoded buffer. */
02250
02251 /* Check list of format functions. */
02252 if (!ignore_format_chain)
02253 {
02254 if (NULL == format_chain)
02255 {
02256 rcs_print_error ("NML::read: Format chain is NULL.\n");
02257 return (-1);
02258 }
02259
02260 /* Run through list of format functions. */
02261 if (-1 == run_format_chain (nml_msg->type, nml_msg))
02262 {
02263 rcs_print_error ("NMLwrite: format error\n");
02264 if (verbose_nml_error_messages)
02265 {
02266 rcs_print_error (" (Buffer = %s, Process = %s)\n",
02267 cms->BufferName, cms->ProcessName);
02268 }
02269 return (-1);
02270 }
02271 }
02272 /* Determine the new size of the message now that its encoded. */
02273 cms->header.in_buffer_size = cms->get_encoded_msg_size ();
02274 break;
02275 case CMS_DECODE:
02276 cms->format_low_ptr = cms->format_high_ptr = (char *) NULL;
02277 cms->rewind (); /* Move to the start of the encoded buffer. */
02278 cms->update (new_type); /* Get message type from encoded buffer. */
02279 cms->update (new_size); /* Get message size from encoded buffer. */
02280
02281 /* Make sure the message size is not larger than the buffer size. */
02282 if (new_size > cms->max_message_size)
02283 {
02284 rcs_print_error ("NMLwrite: Message size(%d) too large for"
02285 " CMS buffer size of %d.\n",
02286 new_size, cms->max_message_size);
02287 cms->status = CMS_INSUFFICIENT_SPACE_ERROR;
02288 return (-1);
02289 }
02290 cms->format_low_ptr = (char RCS_HUGE *) cms->subdiv_data;
02291 cms->format_high_ptr = cms->format_low_ptr + cms->size;
02292
02293 /* Store the new type and size in the raw message. */
02294 ((NMLmsg *) cms->subdiv_data)->type = new_type;
02295 ((NMLmsg *) cms->subdiv_data)->size = new_size;
02296
02297 /* Check the list of format functions. */
02298 if (!ignore_format_chain)
02299 {
02300 if (NULL == format_chain)
02301 {
02302 rcs_print_error ("NML::read: Format chain is NULL.\n");
02303 return (-1);
02304 }
02305
02306 /* Run through the list of format functions. */
02307 if (-1 == run_format_chain (new_type, cms->subdiv_data))
02308 {
02309 rcs_print_error ("NMLwrite: format error\n");
02310 rcs_print_error (" (Buffer = %s, Process = %s)\n",
02311 cms->BufferName, cms->ProcessName);
02312 return (-1);
02313 }
02314 }
02315 /* Choose a size that will ensure the entire message will be read out. */
02316 if (cms->format_size < ((long) sizeof (NMLmsg)))
02317 {
02318 cms->format_size = sizeof (NMLmsg);
02319 }
02320 if (cms->format_size > new_size)
02321 {
02322 ((NMLmsg *) cms->subdiv_data)->size = (long) cms->format_size;
02323 }
02324 cms->header.in_buffer_size = ((NMLmsg *) cms->subdiv_data)->size;
02325 break;
02326 default:
02327 rcs_print_error ("NML::format_input: invalid mode (%d).\n", cms->mode);
02328 return (-1);
02329 }
02330
02331 return (((int) cms->status < 0) ? -1 : 0);
02332 }
|
|
|
Definition at line 1727 of file nml.cc. Referenced by blocking_read(), peek(), read(), and str2msg().
01728 {
01729 NMLTYPE new_type;
01730 long new_size;
01731
01732 /* Check pointers */
01733 if (NULL == cms)
01734 {
01735 rcs_print_error ("NML: cms is NULL.\n");
01736 return (-1);
01737 }
01738
01739 if (cms->force_raw)
01740 {
01741 return 0;
01742 }
01743
01744 if (forced_type > 0)
01745 {
01746 new_type = forced_type;
01747 }
01748
01749 switch (cms->mode)
01750 {
01751 case CMS_RAW_OUT:
01752 break;
01753 case CMS_DECODE:
01754 /* Check the status of CMS. */
01755 if (cms->status == CMS_READ_OK)
01756 {
01757 /* Handle the generic part of the message. */
01758 cms->format_low_ptr = cms->format_high_ptr = (char *) NULL;
01759 cms->rewind (); /* Move to the start of encoded buffer. */
01760 cms->update (new_type); /* Get the message type from encoded buffer. */
01761 cms->update (new_size); /* Get the message size from encoded buffer. */
01762 if (forced_type > 0)
01763 {
01764 new_type = forced_type;
01765 }
01766 ((NMLmsg *) cms->subdiv_data)->type = new_type; /* Store type in message. */
01767 ((NMLmsg *) cms->subdiv_data)->size = new_size; /* Store size in message. */
01768
01769
01770 if (new_size > cms->max_message_size)
01771 {
01772 rcs_print_error ("NML: Message %ld of size %ld \n", new_type,
01773 new_size);
01774 rcs_print_error
01775 (" too large for local buffer of %s of size %d.\n",
01776 cms->BufferName, cms->max_message_size);
01777 if (verbose_nml_error_messages)
01778 {
01779 rcs_print_error
01780 ("Check that all processes agree on buffer size.\n");
01781 }
01782 cms->status = CMS_INSUFFICIENT_SPACE_ERROR;
01783 return (-1);
01784 }
01785
01786 /* Check the list of format functions. */
01787 if (!ignore_format_chain)
01788 {
01789 cms->format_low_ptr = (char RCS_HUGE *) cms->subdiv_data;
01790 cms->format_high_ptr = cms->format_low_ptr + cms->size;
01791 if (NULL == format_chain)
01792 {
01793 rcs_print_error ("NML::read: Format chain is NULL.\n");
01794 return (-1);
01795 }
01796 /* Run through the list of format functions. */
01797 if (-1 == run_format_chain (new_type, cms->subdiv_data))
01798 {
01799 rcs_print_error ("NMLread: NMLformat error\n");
01800 if (verbose_nml_error_messages)
01801 {
01802 rcs_print_error (" (Buffer = %s, Process = %s)\n",
01803 cms->BufferName, cms->ProcessName);
01804 }
01805 return (-1);
01806 }
01807 }
01808 }
01809 break;
01810 case CMS_ENCODE:
01811 /* Check the status of CMS. */
01812 if (cms->status != CMS_MISC_ERROR)
01813 {
01814 cms->format_low_ptr = cms->format_high_ptr = (char *) NULL;
01815 cms->rewind (); /* Move to the start of the encoded buffer. */
01816
01817 /* Get the type and size from the message. */
01818 new_type = ((NMLmsg *) cms->subdiv_data)->type;
01819 new_size = ((NMLmsg *) cms->subdiv_data)->size;
01820
01821 if (forced_type > 0)
01822 {
01823 new_type = forced_type;
01824 ((NMLmsg *) cms->subdiv_data)->type = forced_type;
01825 }
01826
01827 /* Store the type and size in the encoded buffer. */
01828 cms->update (new_type);
01829 cms->update (new_size);
01830
01831 if (new_size > cms->max_message_size)
01832 {
01833 rcs_print_error ("NML: Message %ld of size %ld\n", new_type,
01834 new_size);
01835 rcs_print_error
01836 (" too large for local buffer of %s of size %d.\n",
01837 cms->BufferName, cms->max_message_size);
01838 if (verbose_nml_error_messages)
01839 {
01840 rcs_print_error
01841 ("Check that all processes agree on buffer size.\n");
01842 }
01843 cms->status = CMS_INSUFFICIENT_SPACE_ERROR;
01844 return (-1);
01845 }
01846
01847
01848 /* Check the list of format functions. */
01849 if (!ignore_format_chain)
01850 {
01851 cms->format_low_ptr = (char RCS_HUGE *) cms->subdiv_data;
01852 cms->format_high_ptr = cms->format_low_ptr + cms->size;
01853 if (NULL == format_chain)
01854 {
01855 rcs_print_error ("NML::read: Format chain is NULL.\n");
01856 return (-1);
01857 }
01858
01859 /* Run through the list of format functions. */
01860 if (-1 == run_format_chain (new_type, cms->subdiv_data))
01861 {
01862 rcs_print_error ("NMLread: NMLformat error\n");
01863 if (verbose_nml_error_messages)
01864 {
01865 rcs_print_error (" (Buffer = %s, Process = %s)\n",
01866 cms->BufferName, cms->ProcessName);
01867 }
01868 return (-1);
01869 }
01870
01871 /* Get the new size of the message now that it's been encoded. */
01872 cms->get_encoded_msg_size ();
01873 }
01874 }
01875 break;
01876 default:
01877 rcs_print_error ("NML::format_output: invalid format mode. (%d)\n",
01878 cms->mode);
01879 return (-1);
01880 }
01881 if (forced_type > 0)
01882 {
01883 new_type = forced_type;
01884 ((NMLmsg *) cms->subdiv_data)->type = forced_type;
01885 }
01886
01887 return (((int) cms->status < 0) ? -1 : 0);
01888 }
|
|
|
Definition at line 122 of file nml.cc. 00123 {
00124 if (size < sizeof (NML))
00125 {
00126 rcs_print_error
00127 ("void *NML::operator new() called with size (%d) < sizeof(NML) (%d) the code calling NML was probably not compiled with the correct header file version.\n",
00128 size, sizeof (NML));
00129 size = sizeof (NML);
00130 }
00131 void *nml_space = NULL;
00132 char *cptr = (char *) NULL;
00133 int dynamic_list_id = 0;
00134 nml_space = DEBUG_MALLOC (size + sizeof (int) * 2);
00135 if (NULL != nml_space)
00136 {
00137 memset (nml_space, 0, size);
00138 }
00139 if (NULL == Dynamically_Allocated_NML_Objects)
00140 {
00141 Dynamically_Allocated_NML_Objects = new RCS_LINKED_LIST ();
00142 }
00143 if (NULL != Dynamically_Allocated_NML_Objects)
00144 {
00145 dynamic_list_id =
00146 Dynamically_Allocated_NML_Objects->store_at_tail (nml_space,
00147 sizeof (NML), 0);
00148 cptr = ((char *) nml_space) + sizeof (NML);
00149 // guarantee alignment
00150 cptr += sizeof (int) - (((int) cptr) % sizeof (int));
00151 *((int *) cptr) = dynamic_list_id;
00152 }
00153 rcs_print_debug (PRINT_NML_CONSTRUCTORS, "%X = NML::operater new(%d)\n",
00154 nml_space, size);
00155 return nml_space;
00156 }
|
|
|
Definition at line 159 of file nml.cc. 00160 {
00161 int dynamic_list_id = 0;
00162 char *cptr = (char *) NULL;
00163
00164 rcs_print_debug (PRINT_NML_DESTRUCTORS, "NML::operater delete(%X)\n",
00165 nml_space);
00166
00167 if (NULL == nml_space)
00168 {
00169 return;
00170 }
00171
00172 if (NULL != Dynamically_Allocated_NML_Objects)
00173 {
00174 cptr = ((char *) nml_space) + sizeof (NML);
00175 cptr += sizeof (int) - (((int) cptr) % sizeof (int));
00176 dynamic_list_id = *((int *) cptr);
00177 Dynamically_Allocated_NML_Objects->delete_node (dynamic_list_id);
00178 if (Dynamically_Allocated_NML_Objects->list_size == 0)
00179 {
00180 delete Dynamically_Allocated_NML_Objects;
00181 Dynamically_Allocated_NML_Objects = (RCS_LINKED_LIST *) NULL;
00182 }
00183 }
00184 DEBUG_FREE (nml_space);
00185 }
|
|
|
Definition at line 745 of file nml.cc. Referenced by NML_ID_CHANNEL::NML_ID_CHANNEL(), NML_QUERY_CHANNEL::NML_QUERY_CHANNEL(), RCS_CMD_CHANNEL::RCS_CMD_CHANNEL(), RCS_OI_REPLY_CHANNEL::RCS_OI_REPLY_CHANNEL(), RCS_OI_REQUEST_CHANNEL::RCS_OI_REQUEST_CHANNEL(), RCS_STAT_CHANNEL::RCS_STAT_CHANNEL(), RCS_WM_CHANNEL::RCS_WM_CHANNEL(), reconstruct(), and reset().
00746 {
00747 #if !defined(__MSDOS__) || defined(WIN32)
00748 if (NULL != cms)
00749 {
00750 if (cms->spawn_server)
00751 {
00752 if (NULL == NML_Default_Super_Server)
00753 {
00754 NML_Default_Super_Server = new NML_SUPER_SERVER;
00755 }
00756 NML_Default_Super_Server->add_to_list (this);
00757 }
00758 }
00759 #endif
00760 }
|
|
|
Definition at line 712 of file nml.cc. Referenced by NML(), reconstruct(), and reset().
00713 {
00714 #ifdef VXWORKS
00715 pid = taskIdSelf ();
00716 #endif
00717 #ifdef _Windows
00718 #ifdef __WIN32__
00719 task_handle = (void RCS_FAR *) GetCurrentThread ();
00720 #else
00721 task_handle = GetCurrentTask ();
00722 #endif
00723 #endif
00724 if (NULL == NML_Main_Channel_List)
00725 {
00726 NML_Main_Channel_List = new RCS_LINKED_LIST;
00727 }
00728 if (NULL != NML_Main_Channel_List)
00729 {
00730 channel_list_id =
00731 NML_Main_Channel_List->store_at_tail (this, sizeof (NML), 0);
00732 }
00733 }
|
|
|
Reimplemented in NML_QUERY_CHANNEL, RCS_CMD_CHANNEL, RCS_OI_REQUEST_CHANNEL, RCS_OI_REPLY_CHANNEL, RCS_STAT_CHANNEL, and RCS_WM_CHANNEL. Definition at line 1030 of file nml.cc. Referenced by NML_QR_CLIENT::NML_QR_CLIENT(), RCS_WM_CHANNEL::get_address(), RCS_STAT_CHANNEL::get_address(), RCS_OI_REPLY_CHANNEL::get_address(), RCS_OI_REQUEST_CHANNEL::get_address(), NML_QUERY_CHANNEL::get_address(), RCS_CMD_CHANNEL::get_address(), nml_perf_combined_test(), nml_watch(), and NML_QR_CLIENT::reset().
01031 {
01032 if (NULL == cms)
01033 {
01034 if (NULL != cms_for_msg_string_conversions)
01035 {
01036 return ((NMLmsg *) cms_for_msg_string_conversions->subdiv_data);
01037 }
01038 error_type = NML_INVALID_CONFIGURATION;
01039 return ((NMLmsg *) NULL);
01040 }
01041 else
01042 {
01043 return ((NMLmsg *) cms->subdiv_data);
01044 }
01045 }
|
|
|
Definition at line 993 of file nml.cc. Referenced by nml_cleanup(), and ~NML().
00994 {
00995 rcs_print_debug (PRINT_NML_DESTRUCTORS, "deleting NML (%d)\n",
00996 channel_list_id);
00997 if (NULL != cms_for_msg_string_conversions
00998 && cms != cms_for_msg_string_conversions)
00999 {
01000 delete cms_for_msg_string_conversions;
01001 cms_for_msg_string_conversions = 0;
01002 }
01003 if (NULL != cms)
01004 {
01005 rcs_print_debug (PRINT_NML_DESTRUCTORS, " delete (CMS *) %X;\n", cms);
01006 delete cms;
01007 cms = (CMS *) NULL;
01008 }
01009 if (NULL != format_chain)
01010 {
01011 delete format_chain;
01012 format_chain = (RCS_LINKED_LIST *) NULL;
01013 }
01014 if (NULL != NML_Main_Channel_List && (0 != channel_list_id))
01015 {
01016 NML_Main_Channel_List->delete_node (channel_list_id);
01017 }
01018 rcs_print_debug (PRINT_NML_DESTRUCTORS, "Leaving ~NML()\n");
01019 }
|
|
|
Definition at line 1283 of file nml.cc. Referenced by NML_QR_CLIENT::NML_QR_CLIENT(), blocking_read_extended(), NODE::get_command_message(), RCS_OI::get_request(), NODE_LINK::get_status(), NODE::initialize_command_buffer(), nml_perf_combined_test(), NML_QR_SERVER::readQuery(), NML_MODULE::read_command_in(), read_subdivision(), NODE_LINK::read_wm(), NML_SERVER_LOCAL_PORT::reader(), and NML_QR_CLIENT::reset().
01284 {
01285 error_type = NML_NO_ERROR;
01286 if (fast_mode)
01287 {
01288 cms->read ();
01289 switch (cms->status)
01290 {
01291 case CMS_READ_OLD:
01292 return (0);
01293 case CMS_READ_OK:
01294 if (((NMLmsg *) cms->subdiv_data)->type <= 0 && !cms->isserver)
01295 {
01296 rcs_print_error
01297 ("NML: New data recieved but type of %d is invalid.\n",
01298 ((NMLmsg *) cms->subdiv_data)->type);
01299 return -1;
01300 }
01301 return (((NMLmsg *) cms->subdiv_data)->type);
01302
01303 default:
01304 set_error ();
01305 return -1;
01306 }
01307 }
01308 /* Check pointers. */
01309 if (NULL == cms)
01310 {
01311 if (error_type != NML_INVALID_CONFIGURATION)
01312 {
01313 error_type = NML_INVALID_CONFIGURATION;
01314 rcs_print_error ("NML::read: CMS not configured.\n");
01315 }
01316 return (-1);
01317 }
01318
01319 /* Handle PHANTOMs */
01320 if (cms->is_phantom)
01321 {
01322 if (NULL != phantom_read)
01323 {
01324 return ((*phantom_read) ());
01325 }
01326 else
01327 {
01328 return (0);
01329 }
01330 }
01331
01332 /* Read using CMS */
01333 if (!cms->force_raw)
01334 {
01335 cms->set_mode (CMS_READ);
01336 }
01337 cms->read ();
01338
01339 if (!cms->force_raw)
01340 {
01341 if (cms->status == CMS_READ_OK)
01342 {
01343 if (-1 == format_output ())
01344 {
01345 error_type = NML_FORMAT_ERROR;
01346 return (-1);
01347 }
01348 }
01349 }
01350
01351 /* Choose the return value. */
01352 switch (cms->status)
01353 {
01354 case CMS_READ_OLD:
01355 error_type = NML_NO_ERROR;
01356 return (0);
01357 case CMS_READ_OK:
01358 error_type = NML_NO_ERROR;
01359 if (((NMLmsg *) cms->subdiv_data)->type <= 0 && !cms->isserver)
01360 {
01361 rcs_print_error
01362 ("NML: New data recieved but type of %d is invalid.\n",
01363 ((NMLmsg *) cms->subdiv_data)->type);
01364 return -1;
01365 }
01366 return (((NMLmsg *) cms->subdiv_data)->type);
01367
01368 default:
01369 set_error ();
01370 return -1;
01371 }
01372 }
|
|
|
Definition at line 1393 of file nml.cc. Referenced by NML_SERVER_LOCAL_PORT::blocking_read(), blocking_read_extended(), blocking_read_subdivision(), and NML_QR_SERVER::waitForQuery().
01394 {
01395 error_type = NML_NO_ERROR;
01396 if (fast_mode)
01397 {
01398 cms->blocking_read (blocking_timeout);
01399 switch (cms->status)
01400 {
01401 case CMS_READ_OLD:
01402 return (0);
01403 case CMS_READ_OK:
01404 if (((NMLmsg *) cms->subdiv_data)->type <= 0 && !cms->isserver)
01405 {
01406 rcs_print_error
01407 ("NML: New data recieved but type of %d is invalid.\n",
01408 ((NMLmsg *) cms->subdiv_data)->type);
01409 return -1;
01410 }
01411 return (((NMLmsg *) cms->subdiv_data)->type);
01412 case CMS_TIMED_OUT:
01413 error_type = NML_NO_ERROR;
01414 return 0;
01415
01416 default:
01417 set_error ();
01418 return (-1);
01419 }
01420 }
01421 /* Check pointers. */
01422 if (NULL == cms)
01423 {
01424 if (error_type != NML_INVALID_CONFIGURATION)
01425 {
01426 error_type = NML_INVALID_CONFIGURATION;
01427 rcs_print_error ("NML::blocking_read: CMS not configured.\n");
01428 }
01429 return (-1);
01430 }
01431
01432 /* Handle PHANTOMs */
01433 if (cms->is_phantom)
01434 {
01435 if (NULL != phantom_read)
01436 {
01437 return ((*phantom_read) ());
01438 }
01439 else
01440 {
01441 return (0);
01442 }
01443 }
01444
01445 /* Read using CMS */
01446 if (!cms->force_raw)
01447 {
01448 cms->set_mode (CMS_READ);
01449 }
01450 if (cms->BufferType == CMS_SHMEM_TYPE)
01451 {
01452 cms->blocking_read (blocking_timeout);
01453 }
01454 else
01455 {
01456 double time_elapsed = 0.0;
01457 double start_time = 0.0;
01458 if (blocking_timeout > 0.0)
01459 {
01460 start_time = etime ();
01461 }
01462 double current_brpi = blocking_read_poll_interval;
01463 cms->status = CMS_READ_OLD;
01464 if (current_brpi < 2e-2)
01465 {
01466 current_brpi = 2e-2;
01467 }
01468 if (current_brpi > blocking_timeout / 2.0 && blocking_timeout > 1e-6)
01469 {
01470 current_brpi = blocking_timeout / 2.0;
01471 }
01472 while (cms->status == CMS_READ_OLD &&
01473 (time_elapsed < blocking_timeout || blocking_timeout < 0.0))
01474 {
01475
01476 esleep (current_brpi);
01477 cms->read ();
01478 if (blocking_timeout > 0.0 && cms->status == CMS_READ_OLD)
01479 {
01480 time_elapsed = etime () - start_time;
01481 }
01482 if (time_elapsed < 0.0)
01483 {
01484 break;
01485 }
01486 }
01487 }
01488
01489
01490 if (!cms->force_raw)
01491 {
01492 if (cms->status == CMS_READ_OK)
01493 {
01494 if (-1 == format_output ())
01495 {
01496 error_type = NML_FORMAT_ERROR;
01497 return (-1);
01498 }
01499 }
01500 }
01501
01502 /* Choose the return value. */
01503 switch (cms->status)
01504 {
01505 case CMS_READ_OLD:
01506 return (0);
01507 case CMS_READ_OK:
01508 if (((NMLmsg *) cms->subdiv_data)->type <= 0 && !cms->isserver)
01509 {
01510 rcs_print_error
01511 ("NML: New data recieved but type of %d is invalid.\n",
01512 ((NMLmsg *) cms->subdiv_data)->type);
01513 return -1;
01514 }
01515 return (((NMLmsg *) cms->subdiv_data)->type);
01516 case CMS_TIMED_OUT:
01517 error_type = NML_NO_ERROR;
01518 return 0;
01519
01520 default:
01521 set_error ();
01522 return (-1);
01523 }
01524
01525 }
|
|
|
Definition at line 1613 of file nml.cc. Referenced by nml_watch(), peek(), peek_subdivision(), read(), and NML_SERVER_LOCAL_PORT::reader().
01614 {
01615 error_type = NML_NO_ERROR;
01616 if (fast_mode)
01617 {
01618 cms->peek ();
01619 switch (cms->status)
01620 {
01621 case CMS_READ_OLD:
01622 return (0);
01623 case CMS_READ_OK:
01624 if (((NMLmsg *) cms->subdiv_data)->type <= 0 && !cms->isserver)
01625 {
01626 rcs_print_error
01627 ("NML: New data recieved but type of %d is invalid.\n",
01628 ((NMLmsg *) cms->subdiv_data)->type);
01629 return -1;
01630 }
01631 return (((NMLmsg *) cms->subdiv_data)->type);
01632
01633 default:
01634 set_error ();
01635 return -1;
01636 }
01637 }
01638 if (NULL == cms)
01639 {
01640 if (error_type != NML_INVALID_CONFIGURATION)
01641 {
01642 error_type = NML_INVALID_CONFIGURATION;
01643 rcs_print_error ("NML::peek: CMS not configured.\n");
01644 }
01645 return (-1);
01646 }
01647
01648 if (cms->is_phantom)
01649 {
01650 if (NULL != phantom_peek)
01651 {
01652 return ((*phantom_peek) ());
01653 }
01654 else
01655
01656
01657 {
01658 return (0);
01659 }
01660 }
01661 if (!cms->force_raw)
01662 {
01663 cms->set_mode (CMS_READ);
01664 }
01665
01666 cms->peek ();
01667 if (!cms->force_raw)
01668 {
01669 if (cms->status == CMS_READ_OK)
01670 {
01671 if (-1 == format_output ())
01672 {
01673 error_type = NML_FORMAT_ERROR;
01674 return (-1);
01675 }
01676 }
01677 }
01678
01679 switch (cms->status)
01680 {
01681 case CMS_READ_OLD:
01682 return (0);
01683 case CMS_READ_OK:
01684 if (((NMLmsg *) cms->subdiv_data)->type <= 0 && !cms->isserver)
01685 {
01686 rcs_print_error
01687 ("NML: New data recieved but type of %d is invalid.\n",
01688 ((NMLmsg *) cms->subdiv_data)->type);
01689 return -1;
01690 }
01691 return (((NMLmsg *) cms->subdiv_data)->type);
01692
01693 default:
01694 set_error ();
01695 return -1;
01696 }
01697
01698 }
|
|
||||||||||||
|
Definition at line 1549 of file nml.cc. 01550 {
01551 NMLTYPE return_value = 0;
01552 void *original_data;
01553 long original_size = cms->size;
01554 long original_max_message_size = cms->max_message_size;
01555 original_data = cms->data;
01556 cms->data = temp_data;
01557 cms->size = temp_size;
01558 if (cms->max_message_size > ((long) temp_size))
01559 {
01560 cms->max_message_size = temp_size;
01561 }
01562 return_value = peek ();
01563 cms->data = original_data;
01564 cms->size = original_size;
01565 cms->max_message_size = original_max_message_size;
01566 return return_value;
01567 }
|
|
||||||||||||
|
Definition at line 1572 of file nml.cc. 01573 {
01574 NMLTYPE return_value = 0;
01575 void *original_data;
01576 long original_size = cms->size;
01577 long original_max_message_size = cms->max_message_size;
01578 original_data = cms->data;
01579 cms->data = temp_data;
01580 cms->size = temp_size;
01581 if (cms->max_message_size > ((long) temp_size))
01582 {
01583 cms->max_message_size = temp_size;
01584 }
01585 return_value = peek ();
01586 cms->data = original_data;
01587 cms->size = original_size;
01588 cms->max_message_size = original_max_message_size;
01589 return return_value;
01590 }
|
|
|
Definition at line 1901 of file nml.cc. Referenced by NML_QR_CLIENT::NML_QR_CLIENT(), NODE::initialize_command_buffer(), NODE::initialize_status_buffer(), NODE::initialize_world_model_buffer(), NML_MODULE::logError(), NML_MODULE::logText(), logTextToNML(), NML_QR_SERVER::readQuery(), NML_MODULE::requestDisplay(), NML_QR_CLIENT::reset(), NML_QR_CLIENT::sendQuery(), NODE_LINK::send_command(), RCS_OI::send_reply(), NODE::send_status_message(), NML_MODULE::setSelfCommand(), NML_QR_SERVER::waitForQuery(), NML_MODULE::write_status_out(), write_subdivision(), NODE::write_world_model_out(), NML_SERVER_LOCAL_PORT::writer(), and NML_QR_CLIENT::~NML_QR_CLIENT().
01902 {
01903 return (write (&nml_msg)); /* Call the other NML::write() */
01904 }
|
|
|
Definition at line 1916 of file nml.cc. 01917 {
01918 error_type = NML_NO_ERROR;
01919 if (fast_mode)
01920 {
01921 *cms_inbuffer_header_size = nml_msg->size;
01922 cms->write (nml_msg);
01923 if (*cms_status == CMS_WRITE_OK)
01924 {
01925 return (0);
01926 }
01927 set_error ();
01928 return (-1);
01929 }
01930 /* Check pointers. */
01931 if (NULL == cms)
01932 {
01933 if (error_type != NML_INVALID_CONFIGURATION)
01934 {
01935 error_type = NML_INVALID_CONFIGURATION;
01936 rcs_print_error ("NML::write: CMS not configured.\n");
01937 }
01938 return (-1);
01939 }
01940
01941 if (NULL == nml_msg)
01942 {
01943 error_type = NML_INVALID_MESSAGE_ERROR;
01944 rcs_print_error ("NML::write: Message is NULL.\n");
01945 return (-1);
01946 }
01947
01948 if ((nml_msg->size == 0 || nml_msg->type == 0) && !cms->isserver)
01949 {
01950 error_type = NML_INVALID_MESSAGE_ERROR;
01951 rcs_print_error ("NML::write: Message size or type is zero.\n");
01952 rcs_print_error
01953 ("NML: Check that the message was properly constructed.\n");
01954 }
01955
01956 /* Handle Phantom Buffers. */
01957 if (cms->is_phantom)
01958 {
01959 if (NULL != phantom_write)
01960 {
01961 return ((*phantom_write) (nml_msg));
01962 }
01963 else
01964 {
01965 return (0);
01966 }
01967 }
01968
01969 /* Set CMS to a write mode. */
01970 cms->set_mode (CMS_WRITE);
01971
01972 /* Format the message if neccessary. */
01973 if (-1 == format_input (nml_msg))
01974 {
01975 error_type = NML_FORMAT_ERROR;
01976 return -1;
01977 }
01978
01979
01980 if (CMS_RAW_IN == cms->mode)
01981 {
01982 cms->write (nml_msg); /* Write the unformatted message. */
01983 }
01984 else
01985 {
01986 cms->write (cms->subdiv_data); /* Write the formatted message. */
01987 }
01988
01989 if (CMS_WRITE_OK == cms->status)
01990 {
01991 error_type = NML_NO_ERROR;
01992 return (0);
01993 }
01994
01995 return set_error ();
01996 }
|
|
|
Definition at line 2087 of file nml.cc. Referenced by NODE_LINK::send_command(), write_if_read_subdivision(), and NML_SERVER_LOCAL_PORT::writer().
02088 {
02089 return (write_if_read (&nml_msg));
02090 }
|
|
|
Definition at line 2105 of file nml.cc. 02106 {
02107 error_type = NML_NO_ERROR;
02108 if (fast_mode)
02109 {
02110 cms->header.in_buffer_size = nml_msg->size;
02111 cms->write (nml_msg);
02112 if (cms->status == CMS_WRITE_OK)
02113 {
02114 return (0);
02115 }
02116 set_error ();
02117 return (-1);
02118 }
02119 if (NULL == cms)
02120 {
02121 if (error_type != NML_INVALID_CONFIGURATION)
02122 {
02123 error_type = NML_INVALID_CONFIGURATION;
02124 rcs_print_error ("NML::write_if_read: CMS not configured.\n");
02125 }
02126 return (-1);
02127 }
02128
02129 if (NULL == nml_msg)
02130 {
02131 error_type = NML_INVALID_MESSAGE_ERROR;
02132 rcs_print_error ("NML::write_if_read: Message is NULL.\n");
02133 return (-1);
02134 }
02135
02136 if ((nml_msg->size == 0 || nml_msg->type == 0) && !cms->isserver)
02137 {
02138 error_type = NML_INVALID_MESSAGE_ERROR;
02139 rcs_print_error ("NML::write_if_read: Message size or type is zero.\n");
02140 if (verbose_nml_error_messages)
02141 {
02142 rcs_print_error
02143 ("NML: Check that the message was properly constructed.\n");
02144 }
02145 }
02146
02147 if (cms->is_phantom)
02148 {
02149 if (NULL != phantom_write_if_read)
02150 {
02151 return ((*phantom_write_if_read) (nml_msg));
02152 }
02153 else
02154 {
02155 return (0);
02156 }
02157 }
02158
02159
02160 cms->set_mode (CMS_WRITE);
02161 if (-1 == format_input (nml_msg))
02162 {
02163 error_type = NML_FORMAT_ERROR;
02164 return -1;
02165 }
02166
02167 if (CMS_RAW_IN == cms->mode)
02168 {
02169 cms->write_if_read (nml_msg);
02170 }
02171 else
02172 {
02173 cms->write_if_read (cms->subdiv_data);
02174 }
02175
02176 return (set_error ());
02177 }
|
|
||||||||||||
|
Definition at line 3007 of file nml.cc. 03008 {
03009 if (cms == NULL)
03010 {
03011 return -1;
03012 }
03013
03014 if (cms->BufferType == CMS_SHMEM_TYPE)
03015 {
03016 return blocking_read (timeout);
03017 }
03018 else
03019 {
03020 NMLTYPE type = 0;
03021 double time_elapsed = 0.0;
03022 double start_time = etime ();
03023 while (!type && (time_elapsed < timeout || timeout < 0.0))
03024 {
03025 esleep (poll_interval);
03026 type = read ();
03027 if (timeout > 0.0 && !type)
03028 {
03029 time_elapsed = etime () - start_time;
03030 }
03031 if (time_elapsed < 0.0)
03032 {
03033 break;
03034 }
03035 }
03036 return type;
03037 }
03038 }
|
|
||||||||||||
|
Definition at line 2900 of file nml.cc. Referenced by NML_QR_SERVER::replyToLastQuery().
|
|
||||||||||||
|
|
|
||||||||||||
|
Definition at line 2930 of file nml.cc. 02931 {
02932 if (NULL != cms)
02933 {
02934 if (cms->set_subdivision (subdiv) < 0)
02935 {
02936 return -1;
02937 }
02938 }
02939 return write_if_read (nml_msg);
02940 }
|
|
||||||||||||
|
Definition at line 2944 of file nml.cc. 02945 {
02946 if (NULL != cms)
02947 {
02948 if (cms->set_subdivision (subdiv) < 0)
02949 {
02950 return -1;
02951 }
02952 }
02953 return write_if_read (nml_msg);
02954 }
|
|
|
Definition at line 2959 of file nml.cc. Referenced by NML_QR_CLIENT::readReply().
|
|
||||||||||||
|
Definition at line 2974 of file nml.cc. Referenced by NML_QR_CLIENT::waitForReply().
02975 {
02976 if (NULL != cms)
02977 {
02978 if (cms->set_subdivision (subdiv) < 0)
02979 {
02980 return -1;
02981 }
02982 }
02983 return blocking_read (timeout);
02984 }
|
|
|
|
|
|
Definition at line 1056 of file nml.cc. Referenced by NML_QR_CLIENT::getReplyAddress().
01057 {
01058 if (NULL == cms)
01059 {
01060 error_type = NML_INVALID_CONFIGURATION;
01061 return ((NMLmsg *) NULL);
01062 }
01063 else
01064 {
01065 cms->set_subdivision (subdiv);
01066 return ((NMLmsg *) cms->subdiv_data);
01067 }
01068 }
|
|
|
Definition at line 1078 of file nml.cc. Referenced by NML_QR_SERVER::NML_QR_SERVER(), NML_QR_SERVER::readQuery(), NML_QR_SERVER::replyToLastQuery(), and NML_QR_SERVER::waitForQuery().
01079 {
01080 if (NULL == cms)
01081 {
01082 return (1);
01083 }
01084 else
01085 {
01086 return (cms->total_subdivisions);
01087 }
01088 }
|
|
|
Definition at line 1148 of file nml.cc. 01149 {
01150 if (NULL != cms)
01151 {
01152 cms->clean_buffers ();
01153 }
01154 }
|
|
|
Definition at line 2397 of file nml.cc. 02398 {
02399 return msg2str (&msg);
02400 }
|
|
|
Definition at line 2410 of file nml.cc. 02411 {
02412 CMS *orig_cms = cms;
02413 char *str = NULL;
02414 if (NULL == nml_msg)
02415 {
02416 return NULL;
02417 }
02418 if (NULL == cms)
02419 {
02420 int msg_length = nml_msg->size;
02421 if (NULL != cms_for_msg_string_conversions)
02422 {
02423 if ((cms_for_msg_string_conversions->size > 16 * msg_length &&
02424 cms_for_msg_string_conversions->size > 2048) ||
02425 cms_for_msg_string_conversions->size < 4 * msg_length)
02426 {
02427 delete cms_for_msg_string_conversions;
02428 cms_for_msg_string_conversions = 0;
02429 }
02430 }
02431 if (NULL == cms_for_msg_string_conversions)
02432 {
02433 cms_for_msg_string_conversions =
02434 new CMS (nml_msg->size * 4 + 16 + (16 - (nml_msg->size % 16)));
02435 }
02436 cms = cms_for_msg_string_conversions;
02437 }
02438 cms->set_temp_updater (CMS_DISPLAY_ASCII_ENCODING);
02439 cms->set_mode (CMS_ENCODE);
02440 if (-1 == format_input (nml_msg))
02441 {
02442 cms->restore_normal_updater ();
02443 error_type = NML_FORMAT_ERROR;
02444 cms = orig_cms;
02445 return ((char *) NULL);
02446 }
02447 cms->restore_normal_updater ();
02448 str = (char *) cms->encoded_data;
02449 cms = orig_cms;
02450 return (const char *) str;
02451 }
|
|
|
Definition at line 2460 of file nml.cc. 02461 {
02462 CMS *orig_cms = cms;
02463 if (NULL == string)
02464 {
02465 return -1;
02466 }
02467 if (NULL == cms)
02468 {
02469 int string_length = strlen (string);
02470 if (NULL != cms_for_msg_string_conversions)
02471 {
02472 if ((cms_for_msg_string_conversions->size > 16 * string_length &&
02473 cms_for_msg_string_conversions->size > 2048) ||
02474 cms_for_msg_string_conversions->size < 4 * string_length)
02475 {
02476 delete cms_for_msg_string_conversions;
02477 cms_for_msg_string_conversions = 0;
02478 }
02479 }
02480 if (NULL == cms_for_msg_string_conversions)
02481 {
02482 cms_for_msg_string_conversions =
02483 new CMS (string_length * 4 + 16 + (16 - (string_length % 16)));
02484 }
02485 cms = cms_for_msg_string_conversions;
02486 }
02487 cms->set_temp_updater (CMS_DISPLAY_ASCII_ENCODING);
02488 cms->set_mode (CMS_DECODE);
02489 strcpy ((char *) cms->encoded_data, (const char *) string);
02490 cms->status = CMS_READ_OK;
02491 if (-1 == format_output ())
02492 {
02493 cms->restore_normal_updater ();
02494 error_type = NML_FORMAT_ERROR;
02495 cms = orig_cms;
02496 return -1;
02497 }
02498 cms->restore_normal_updater ();
02499 cms = orig_cms;
02500
02501 switch (cms->status)
02502 {
02503 case CMS_READ_OLD:
02504 error_type = NML_NO_ERROR;
02505 return (0);
02506 case CMS_READ_OK:
02507 error_type = NML_NO_ERROR;
02508 return (((NMLmsg *) cms->subdiv_data)->type);
02509 case CMS_TIMED_OUT:
02510 error_type = NML_TIMED_OUT;
02511 return -1;
02512 case CMS_MISC_ERROR:
02513 case CMS_NO_MASTER_ERROR:
02514 error_type = NML_INTERNAL_CMS_ERROR;
02515 default:
02516 return -1;
02517 }
02518
02519 }
|
|
||||||||||||
|
Definition at line 307 of file nml.cc. 00308 {
00309 if (NULL == cms)
00310 {
00311 return 1;
00312 }
00313 return cms->login (name, passwd);
00314 }
|
|
|
Definition at line 1529 of file nml.cc. 01530 {
01531 if (NULL != cms)
01532 {
01533 cms->reconnect ();
01534 }
01535 }
|
|
|
Definition at line 1538 of file nml.cc. 01539 {
01540 if (NULL != cms)
01541 {
01542 cms->disconnect ();
01543 }
01544 }
|
|
|
Definition at line 1214 of file nml.cc. Referenced by NML_QR_CLIENT::NML_QR_CLIENT(), NODE_LINK::NODE_LINK(), NODE::check_if_valid(), create_NML(), NODE::initialize_command_buffer(), NODE::initialize_status_buffer(), NODE::initialize_world_model_buffer(), NML_MODULE::logError(), NML_MODULE::logText(), main(), nml_watch(), NML_MODULE::requestDisplay(), NML_QR_CLIENT::reset(), NML_QR_SERVER::reset(), reset(), NML_MODULE::setCmdChannel(), NML_MODULE::setErrorLogChannel(), NML_MODULE::setStatChannel(), NML_QR_CLIENT::valid(), and NML_QR_SERVER::valid().
01215 {
01216 if (NULL == cms)
01217 {
01218 error_type = NML_INVALID_CONFIGURATION;
01219 return (0);
01220 }
01221
01222 if (cms->is_phantom)
01223 {
01224 error_type = NML_NO_ERROR;
01225 return (1);
01226 }
01227
01228 if (CMS_MISC_ERROR == cms->status)
01229 {
01230 error_type = NML_INTERNAL_CMS_ERROR;
01231 return (0);
01232 }
01233
01234 if (CMS_NO_MASTER_ERROR == cms->status)
01235 {
01236 error_type = NML_NO_MASTER_ERROR;
01237 return (0);
01238 }
01239
01240 if (NULL == cms->data)
01241 {
01242 error_type = NML_INVALID_CONFIGURATION;
01243 return (0);
01244 }
01245
01246 if (cms->neutral && (NULL == cms->encoded_data) && !cms->isserver)
01247 {
01248 error_type = NML_INVALID_CONFIGURATION;
01249 return (0);
01250 }
01251
01252 if (!ignore_format_chain)
01253 {
01254 if (NULL == format_chain)
01255 {
01256 error_type = NML_INVALID_CONFIGURATION;
01257 return (0);
01258 }
01259 }
01260
01261 error_type = NML_NO_ERROR;
01262 return (1);
01263 }
|
|
|
Definition at line 1171 of file nml.cc. 01172 {
01173 if (NULL == cms)
01174 {
01175 error_type = NML_INVALID_CONFIGURATION;
01176 return (-1);
01177 }
01178 else
01179 {
01180 if (cms->is_phantom)
01181 {
01182 if (NULL != phantom_check_if_read)
01183 {
01184 return ((*phantom_check_if_read) ());
01185 }
01186 else
01187 {
01188 return (0);
01189 }
01190 }
01191 int return_value;
01192 error_type = NML_NO_ERROR;
01193 if ((return_value = cms->check_if_read ()) == -1)
01194 {
01195 error_type = NML_INTERNAL_CMS_ERROR;
01196 }
01197 if (cms->status == CMS_TIMED_OUT)
01198 {
01199 error_type = NML_TIMED_OUT;
01200 }
01201 return (return_value);
01202 }
01203 }
|
|
|
Definition at line 2380 of file nml.cc. 02381 {
02382 if (NULL == cms)
02383 {
02384 return 1;
02385 }
02386 return cms->check_if_transfers_complete ();
02387 }
|
|
|
Definition at line 1108 of file nml.cc. 01109 {
01110 if (NULL == cms)
01111 {
01112 error_type = NML_INVALID_CONFIGURATION;
01113 return (-1);
01114 }
01115 else
01116 {
01117 if (cms->is_phantom)
01118 {
01119 if (NULL != phantom_clear)
01120 {
01121 return ((*phantom_clear) ());
01122 }
01123 else
01124 {
01125 return (0);
01126 }
01127 }
01128 CMS_STATUS return_value;
01129 error_type = NML_NO_ERROR;
01130 if (((int) (return_value = cms->clear ())) > 0)
01131 {
01132 error_type = NML_INTERNAL_CMS_ERROR;
01133 }
01134 if (cms->status == CMS_TIMED_OUT)
01135 {
01136 error_type = NML_TIMED_OUT;
01137 }
01138 return (((int) return_value < 0) ? -1 : 0);
01139 }
01140 }
|
|
|
Definition at line 3043 of file nml.cc. 03044 {
03045 if (NULL == cms)
03046 {
03047 return -1;
03048 }
03049 return cms->get_msg_count ();
03050 }
|
|
|
Definition at line 3056 of file nml.cc. Referenced by nml_print_diag_list().
03057 {
03058 if (NULL == cms)
03059 {
03060 return NULL;
03061 }
03062 return (NML_DIAGNOSTICS_INFO *) cms->get_diagnostics_info ();
03063 }
|
|
|
Definition at line 2359 of file nml.cc. Referenced by NML_ID_CHANNEL::NML_ID_CHANNEL(), NML_QUERY_CHANNEL::NML_QUERY_CHANNEL(), RCS_CMD_CHANNEL::RCS_CMD_CHANNEL(), RCS_OI_REPLY_CHANNEL::RCS_OI_REPLY_CHANNEL(), RCS_OI_REQUEST_CHANNEL::RCS_OI_REQUEST_CHANNEL(), RCS_STAT_CHANNEL::RCS_STAT_CHANNEL(), RCS_WM_CHANNEL::RCS_WM_CHANNEL(), and reconstruct().
02360 {
02361 if (NULL == format_chain)
02362 {
02363 format_chain = new RCS_LINKED_LIST;
02364 }
02365 if (NULL != format_chain)
02366 {
02367 format_chain->store_at_head ((void *) f_ptr, 0, 0);
02368 }
02369 return (0);
02370 }
|
|
|
Definition at line 890 of file nml.cc. Referenced by nmlWaitOpen(), NML_QR_CLIENT::reset(), and NML_QR_SERVER::reset().
00891 {
00892 int cms_copy_ret = 0;
00893 if (valid ())
00894 {
00895 return 1;
00896 }
00897 if (NULL != cms)
00898 {
00899 // Recreate a CMS channel identitical to the old one, do not
00900 // re-read the config file.
00901 CMS *oldcms = cms;
00902 cms = NULL;
00903 cms_copy_ret = cms_copy (&cms, oldcms, 0, 0);
00904 if (cms_copy_ret < 0)
00905 {
00906 if (cms != NULL && cms != oldcms)
00907 {
00908 delete oldcms;
00909 }
00910 return 0;
00911 }
00912
00913 #if !defined(__MSDOS__) || defined(WIN32)
00914 register_with_server ();
00915 #endif
00916 add_to_channel_list ();
00917 // FAST MODE is a combination of options which allow certian checks during
00918 // a read or write operation to be avoided and therefore reduce the NML/CMS
00919 // overhead.
00920 if (!cms->is_phantom &&
00921 cms->ProcessType == CMS_LOCAL_TYPE &&
00922 !cms->neutral && !cms->isserver && !cms->enable_diagnostics)
00923 {
00924 fast_mode = 1;
00925 }
00926
00927 cms_status = (int *) &(cms->status);
00928 cms_inbuffer_header_size = &(cms->header.in_buffer_size);
00929 char *forced_type_eq = strstr (cms->buflineupper, "FORCE_TYPE=");
00930 if (forced_type_eq != NULL)
00931 {
00932 #ifndef UNDER_CE
00933 long temp = strtol (forced_type_eq + 11, NULL, 0);
00934 #else
00935 long temp = atol (forced_type_eq + 11);
00936 #endif
00937 if (temp > 0)
00938 {
00939 forced_type = temp;
00940 fast_mode = 0;
00941 }
00942 }
00943 char *brpi_eq = strstr (cms->buflineupper, "BRPI=");
00944 if (brpi_eq != NULL)
00945 {
00946 #ifndef UNDER_CE
00947 blocking_read_poll_interval = strtod (brpi_eq + 5, NULL);
00948 #else
00949 blocking_read_poll_interval = RCS_CE_ATOF (brpi_eq + 5);
00950 #endif
00951 }
00952
00953 delete oldcms;
00954 }
00955 else
00956 {
00957 // Re-read the config file before creating a new CMS object.
00958 if (cms_config (&cms, bufname, procname, cfgfilename, 0, 0) < 0)
00959 {
00960 return 0;
00961 }
00962 }
00963 return valid ();
00964 }
|
|
|
Definition at line 2850 of file nml.cc. 02851 {
02852 if (NULL == cms)
02853 {
02854 rcs_print_error ("NML::print_queue_info() - NULL == cms\n");
02855 return (-1);
02856 }
02857 if (!cms->queuing_enabled)
02858 {
02859 rcs_print_error ("NML::print_queue_info() - Queing Not Enabled.\n");
02860 return (-1);
02861 }
02862 if (cms->ProcessType != CMS_LOCAL_TYPE)
02863 {
02864 rcs_print_error
02865 ("NML::print_queue_info() - REMOTE Connection: Queing Data Not Available.\n");
02866 return (-1);
02867 }
02868 rcs_print
02869 ("head = %d(0x%X); tail=%d(0x%X); queue_length=%d,end_queue_space=%d(0x%X); write_id=%d\n",
02870 cms->queuing_header.head, cms->queuing_header.head,
02871 cms->queuing_header.tail, cms->queuing_header.tail,
02872 cms->queuing_header.queue_length, cms->queuing_header.end_queue_space,
02873 cms->queuing_header.end_queue_space, cms->queuing_header.write_id);
02874 return (0);
02875 }
|
|
|
Definition at line 2010 of file nml.cc. Referenced by blocking_read(), peek(), read(), reconstruct(), write(), and write_if_read().
02011 {
02012 if (error_type != NML_NO_ERROR)
02013 {
02014 return -1;
02015 }
02016
02017 if (NULL == cms)
02018 {
02019 error_type = NML_INVALID_CONFIGURATION;
02020 return 0;
02021 }
02022
02023 /* Choose return value. */
02024 switch (cms->status)
02025 {
02026 case CMS_TIMED_OUT:
02027 error_type = NML_TIMED_OUT;
02028 return (-1);
02029
02030 case CMS_QUEUE_FULL:
02031 error_type = NML_QUEUE_FULL_ERROR;
02032 break;
02033
02034 case CMS_NO_MASTER_ERROR:
02035 error_type = NML_NO_MASTER_ERROR;
02036 break;
02037
02038 case CMS_WRITE_WAS_BLOCKED:
02039 error_type = NML_BUFFER_NOT_READ;
02040 break;
02041
02042 case CMS_STATUS_NOT_SET: /* The status variable has not been set yet. */
02043 case CMS_READ_OLD: /* Read successful, but data is old. */
02044 case CMS_READ_OK: /* Read successful so far. */
02045 case CMS_WRITE_OK: /* Write successful so far. */
02046 case CMS_CLEAR_OK: /* A clear operation was successful. */
02047 error_type = NML_NO_ERROR;
02048 break;
02049
02050 case CMS_RESOURCE_CONFLICT_ERROR:
02051 case CMS_CREATE_ERROR:
02052 case CMS_CONFIG_ERROR:
02053 error_type = NML_INVALID_CONFIGURATION;
02054 break;
02055
02056 case CMS_MISC_ERROR:
02057 default:
02058 error_type = NML_INTERNAL_CMS_ERROR;
02059 break;
02060
02061 }
02062
02063 if (error_type == NML_NO_ERROR)
02064 {
02065 return 0;
02066 }
02067 if (!info_printed)
02068 {
02069 print_info ();
02070 }
02071
02072 return -1;
02073 }
|
|
||||||||||||||||
|
Definition at line 2562 of file nml.cc. Referenced by NML(), reconstruct(), and set_error().
02563 {
02564 info_printed = 1;
02565 if (!verbose_nml_error_messages)
02566 {
02567 return;
02568 }
02569 if (NULL == cms || error_type != NML_NO_ERROR)
02570 {
02571 if (max_rcs_errors_to_print <= rcs_errors_printed &&
02572 max_rcs_errors_to_print >= 0)
02573 {
02574 return;
02575 }
02576 }
02577 if (error_type == NML_QUEUE_FULL_ERROR && !cms_print_queue_full_messages)
02578 {
02579 return;
02580 }
02581 if (NULL != cms)
02582 {
02583 if (cms->status < 0)
02584 {
02585 if (max_rcs_errors_to_print <= rcs_errors_printed &&
02586 max_rcs_errors_to_print >= 0)
02587 {
02588 return;
02589 }
02590 }
02591 }
02592 if (NULL != bufname && NULL != procname && NULL != cfg_file)
02593 {
02594 if (!strncmp (bufname, last_bufname, 10)
02595 && !strncmp (procname, last_procname, 10)
02596 && !strncmp (cfg_file, last_cfg_file, 40))
02597 {
02598 return;
02599 }
02600 strncpy (last_bufname, bufname, 10);
02601 strncpy (last_procname, procname, 10);
02602 strncpy (last_cfg_file, cfg_file, 40);
02603 }
02604 if (!info_message_printed)
02605 {
02606 rcs_print
02607 ("\n**********************************************************\n");
02608 #if 0
02609 rcs_print ("* If you are having a problem with NML, \n");
02610 rcs_print ("* please send the following information,\n");
02611 rcs_print ("* a detailed description of the problem, \n");
02612 rcs_print ("* and any other error messages\n");
02613 rcs_print ("* to Will Shackleford (shackle@cme.nist.gov).\n");
02614 #endif
02615 #ifndef WINDOWS
02616 rcs_print ("* Current Directory = %s\n", getcwd (cwd_buf, 256));
02617 #endif
02618 if (nml_print_hostname_on_error)
02619 {
02620 dl_gethostname (host_name_buf, MAXHOSTNAMELEN);
02621 if (host_name_buf[0] != 0)
02622 {
02623 rcs_print ("* Host = %s\n", host_name_buf);
02624 }
02625 }
02626 rcs_print ("* ");
02627 print_rcs_version ();
02628 info_message_printed = 1;
02629 }
02630 rcs_print
02631 ("\n**********************************************************\n");
02632 if (NULL != cms)
02633 {
02634 rcs_print ("* BufferName = %s\n", cms->BufferName);
02635 rcs_print ("* BufferType = %d\n", cms->BufferType);
02636 rcs_print ("* ProcessName = %s\n", cms->ProcessName);
02637 rcs_print ("* Configuration File = %s\n", cfgfilename);
02638 rcs_print ("* CMS Status = %d (%s)\n", cms->status,
02639 cms->status_string (cms->status));
02640 rcs_print ("* Recent errors repeated:\n");
02641 rcs_print ("%s\n", last_error_bufs[0]);
02642 rcs_print ("%s\n", last_error_bufs[1]);
02643 rcs_print ("%s\n", last_error_bufs[2]);
02644 rcs_print ("%s\n", last_error_bufs[3]);
02645 memset (last_error_bufs[0], 0, 100);
02646 memset (last_error_bufs[1], 0, 100);
02647 memset (last_error_bufs[2], 0, 100);
02648 memset (last_error_bufs[3], 0, 100);
02649 if (NULL == strstr (cms->BufferLine, "\n"))
02650 {
02651 rcs_print ("* BufferLine: %s\n", cms->BufferLine);
02652
02653 }
02654 else
02655 {
02656 rcs_print ("* BufferLine: %s", cms->BufferLine);
02657 }
02658 if (NULL == strstr (cms->ProcessLine, "\n"))
02659 {
02660 rcs_print ("* ProcessLine: %s\n", cms->ProcessLine);
02661 }
02662 else
02663 {
02664 rcs_print ("* ProcessLine: %s", cms->ProcessLine);
02665 }
02666 }
02667 else
02668 {
02669 if (NULL != bufname)
02670 {
02671 rcs_print ("* BufferName = %s\n", bufname);
02672 }
02673 if (NULL != procname)
02674 {
02675 rcs_print ("* ProcessName = %s\n", procname);
02676 }
02677 }
02678 if (NULL != cfg_file)
02679 {
02680 rcs_print ("* Config File = %s\n", cfg_file);
02681 }
02682 rcs_print ("* error_type = %d (%s)\n", error_type,
02683 NML_ERROR_TYPE_STRINGS[error_type]);
02684 rcs_print
02685 ("************************************************************\n\n");
02686 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 318 of file nml.cc. Referenced by NML().
00320 {
00321
00322 cms = (CMS *) NULL;
00323 format_chain = (RCS_LINKED_LIST *) NULL;
00324 phantom_read = (NMLTYPE (*)())NULL;
00325 phantom_peek = (NMLTYPE (*)())NULL;
00326 phantom_write = (int (*)(NMLmsg *)) NULL;
00327 phantom_write_if_read = (int (*)(NMLmsg *)) NULL;
00328 phantom_check_if_read = (int (*)()) NULL;
00329 phantom_clear = (int (*)()) NULL;
00330 channel_list_id = 0;
00331 error_type = NML_NO_ERROR;
00332 fast_mode = 0;
00333 ignore_format_chain = 0;
00334 info_printed = 0;
00335
00336
00337 format_chain = new RCS_LINKED_LIST;
00338 if (NULL != format_chain)
00339 {
00340 prefix_format_chain (f_ptr);
00341 }
00342
00343 if (NULL == f_ptr)
00344 {
00345 rcs_print_error ("NML:(Format Function Pointer) f_ptr == NULL.\n");
00346 }
00347
00348 if (-1 == cms_config (&cms, buf, proc, file, set_to_server, set_to_master))
00349 {
00350 set_error ();
00351 if (!info_printed)
00352 {
00353 print_info (buf, proc, file);
00354 }
00355 if (NULL != cms)
00356 {
00357 rcs_print_debug (PRINT_NML_DESTRUCTORS, " delete (CMS *) %X;\n",
00358 cms);
00359 delete cms;
00360 cms = (CMS *) NULL;
00361 }
00362 return;
00363 }
00364
00365 if (NULL == cms)
00366 {
00367 if (!info_printed)
00368 {
00369 print_info (buf, proc, file);
00370 }
00371 error_type = NML_INVALID_CONFIGURATION;
00372 return;
00373 }
00374
00375 if (cms->status < 0)
00376 {
00377 error_type = NML_INVALID_CONFIGURATION;
00378 if (!info_printed)
00379 {
00380 print_info (buf, proc, file);
00381 }
00382 rcs_print_debug (PRINT_NML_DESTRUCTORS, " delete (CMS *) %X;\n", cms);
00383 delete cms;
00384 cms = (CMS *) NULL;
00385 return;
00386 }
00387
00388 #if !defined(__MSDOS__) || defined(WIN32)
00389 if (!set_to_server)
00390 {
00391 register_with_server ();
00392 }
00393 #endif
00394 add_to_channel_list ();
00395 // FAST MODE is a combination of options which allow certian checks during
00396 // a read or write operation to be avoided and therefore reduce the NML/CMS
00397 // overhead.
00398 if (!cms->is_phantom &&
00399 cms->ProcessType == CMS_LOCAL_TYPE &&
00400 !cms->neutral && !cms->isserver && !cms->enable_diagnostics)
00401 {
00402 fast_mode = 1;
00403 }
00404
00405 cms_status = (int *) &(cms->status);
00406 cms_inbuffer_header_size = &(cms->header.in_buffer_size);
00407 char *forced_type_eq = strstr (cms->buflineupper, "FORCE_TYPE=");
00408 if (forced_type_eq != NULL)
00409 {
00410 #ifndef UNDER_CE
00411 long temp = strtol (forced_type_eq + 11, NULL, 0);
00412 #else
00413 long temp = atol (forced_type_eq + 11);
00414 #endif
00415 if (temp > 0)
00416 {
00417 forced_type = temp;
00418 fast_mode = 0;
00419 }
00420 }
00421 char *brpi_eq = strstr (cms->buflineupper, "BRPI=");
00422 if (brpi_eq != NULL)
00423 {
00424 #ifndef UNDER_CE
00425 blocking_read_poll_interval = strtod (brpi_eq + 5, NULL);
00426 #else
00427 blocking_read_poll_interval = RCS_CE_ATOF (brpi_eq + 5);
00428 #endif
00429 }
00430
00431 }
|
|
|
Definition at line 90 of file nml.hh. Referenced by NML().
|
|
|
|
|
|
Definition at line 94 of file nml.hh. Referenced by NML_MODULE::read_command_in(), NODE_LINK::send_command(), and NML_MODULE::write_status_out().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 192 of file nml.hh. Referenced by create_NML().
|
|
|
Definition at line 193 of file nml.hh. Referenced by create_NML().
|
|
|
|
|
|
Definition at line 197 of file nml.hh. Referenced by NML().
|
|
|
Definition at line 198 of file nml.hh. Referenced by NML().
|
|
|
Definition at line 199 of file nml.hh. Referenced by NML().
|
|
|
|
|
|
|
1.2.11.1 written by Dimitri van Heesch,
© 1997-2001