#include <cms_xup.hh>
Inheritance diagram for CMS_XDR_UPDATER:


| Public Methods | |
| CMS_STATUS | update (char &x) | 
| CMS_STATUS | update (unsigned char &x) | 
| CMS_STATUS | update (short int &x) | 
| CMS_STATUS | update (unsigned short int &x) | 
| CMS_STATUS | update (int &x) | 
| CMS_STATUS | update (unsigned int &x) | 
| CMS_STATUS | update (long int &x) | 
| CMS_STATUS | update (unsigned long int &x) | 
| CMS_STATUS | update (float &x) | 
| CMS_STATUS | update (double &x) | 
| CMS_STATUS | update (long double &x) | 
| CMS_STATUS | update (char *x, unsigned int len) | 
| CMS_STATUS | update (unsigned char *x, unsigned int len) | 
| CMS_STATUS | update (short *x, unsigned int len) | 
| CMS_STATUS | update (unsigned short *x, unsigned int len) | 
| CMS_STATUS | update (int *x, unsigned int len) | 
| CMS_STATUS | update (unsigned int *x, unsigned int len) | 
| CMS_STATUS | update (long *x, unsigned int len) | 
| CMS_STATUS | update (unsigned long *x, unsigned int len) | 
| CMS_STATUS | update (float *x, unsigned int len) | 
| CMS_STATUS | update (double *x, unsigned int len) | 
| CMS_STATUS | update (long double *x, unsigned int len) | 
| int | set_mode (CMS_UPDATER_MODE) | 
| void | rewind () | 
| int | get_encoded_msg_size () | 
| void | set_encoded_data (void *, long _encoded_data_size) | 
| Protected Methods | |
| int | check_pointer (char RCS_HUGE *, long) | 
| CMS_XDR_UPDATER (CMS *) | |
| virtual | ~CMS_XDR_UPDATER () | 
| Protected Attributes | |
| XDR * | encode_data_stream | 
| XDR * | decode_data_stream | 
| XDR * | encode_header_stream | 
| XDR * | decode_header_stream | 
| XDR * | encode_queuing_header_stream | 
| XDR * | decode_queuing_header_stream | 
| XDR * | current_stream | 
| Friends | |
| class RCS_EXPORT | CMS | 
| 
 | 
| 
 Definition at line 86 of file cms_xup.cc. 00086 :CMS_UPDATER (_cms_parent, 00087 0, 2) 00088 { 00089 /* Set pointers to NULL. */ 00090 encode_data_stream = (XDR *) NULL; 00091 decode_data_stream = (XDR *) NULL; 00092 encode_header_stream = (XDR *) NULL; 00093 decode_header_stream = (XDR *) NULL; 00094 encode_queuing_header_stream = (XDR *) NULL; 00095 decode_queuing_header_stream = (XDR *) NULL; 00096 encoded_header = NULL; 00097 encoded_queuing_header = NULL; 00098 00099 if (!cms_parent->isserver) 00100 { 00101 encoded_data = NULL; 00102 } 00103 using_external_encoded_data = 0; 00104 00105 #if 0 00106 if (load_rpc_interface () < 0) 00107 { 00108 rcs_print_error 00109 ("CMS_XDR_UPDATER requires the rpc interface and it failed to load.\n"); 00110 status = CMS_UPDATE_ERROR; 00111 return; 00112 } 00113 #endif 00114 /* Store and validate constructors arguments. */ 00115 cms_parent = _cms_parent; 00116 if (NULL == cms_parent) 00117 { 00118 rcs_print_error ("CMS parent for updater is NULL.\n"); 00119 status = CMS_UPDATE_ERROR; 00120 return; 00121 } 00122 00123 /* Allocate memory for: */ 00124 /* - encoded copies of the global buffer and the header */ 00125 /* - XDR streams. */ 00126 /* (Also initialize the XDR streams.) */ 00127 00128 /* Allocate the encoded header too large, */ 00129 /* and find out what size it really is. */ 00130 encoded_header = DEBUG_MALLOC (neutral_size_factor * sizeof (CMS_HEADER)); 00131 if (encoded_header == NULL) 00132 { 00133 rcs_print_error ("CMS:can't malloc encoded_header"); 00134 status = CMS_CREATE_ERROR; 00135 return; 00136 } 00137 00138 encode_header_stream = (XDR *) DEBUG_MALLOC (sizeof (XDR)); 00139 if (encode_header_stream == NULL) 00140 { 00141 cms_parent->status = CMS_CREATE_ERROR; 00142 rcs_print_error ("CMS:can't malloc encode_header_stream"); 00143 return; 00144 } 00145 xdrmem_create ((XDR *) encode_header_stream, (char *) encoded_header, 00146 (int) neutral_size_factor * sizeof (CMS_HEADER), XDR_ENCODE); 00147 00148 decode_header_stream = (XDR *) DEBUG_MALLOC (sizeof (XDR)); 00149 if (decode_header_stream == NULL) 00150 { 00151 rcs_print_error ("CMS:can't malloc decode_header_stream"); 00152 status = CMS_CREATE_ERROR; 00153 return; 00154 } 00155 xdrmem_create ((XDR *) decode_header_stream, (char *) encoded_header, 00156 (int) neutral_size_factor * sizeof (CMS_HEADER), XDR_DECODE); 00157 00158 /* If queuing is enabled, then initialize streams for */ 00159 /* encoding and decoding the header with the queue information. */ 00160 if (cms_parent->queuing_enabled) 00161 { 00162 /* Allocate the encoded header too large, */ 00163 /* and find out what size it really is. */ 00164 encoded_queuing_header = 00165 DEBUG_MALLOC (neutral_size_factor * sizeof (CMS_QUEUING_HEADER)); 00166 if (encoded_queuing_header == NULL) 00167 { 00168 rcs_print_error ("CMS:can't malloc encoded_queuing_header"); 00169 status = CMS_CREATE_ERROR; 00170 return; 00171 } 00172 encode_queuing_header_stream = (XDR *) DEBUG_MALLOC (sizeof (XDR)); 00173 if (encode_queuing_header_stream == NULL) 00174 { 00175 status = CMS_CREATE_ERROR; 00176 rcs_print_error ("CMS:can't malloc encode_queuing_header_stream"); 00177 return; 00178 } 00179 xdrmem_create ((XDR *) encode_queuing_header_stream, 00180 (char *) encoded_queuing_header, 00181 (int) neutral_size_factor * sizeof (CMS_QUEUING_HEADER), 00182 XDR_ENCODE); 00183 00184 decode_queuing_header_stream = (XDR *) DEBUG_MALLOC (sizeof (XDR)); 00185 if (decode_queuing_header_stream == NULL) 00186 { 00187 rcs_print_error ("CMS:can't malloc decode_queuing_header_stream"); 00188 status = CMS_CREATE_ERROR; 00189 return; 00190 } 00191 xdrmem_create ((XDR *) decode_queuing_header_stream, 00192 (char *) encoded_queuing_header, 00193 (int) neutral_size_factor * sizeof (CMS_QUEUING_HEADER), 00194 XDR_DECODE); 00195 } 00196 if (!cms_parent->isserver) 00197 { 00198 if (cms_parent->enc_max_size > 0 00199 && cms_parent->enc_max_size < neutral_size_factor * size) 00200 { 00201 set_encoded_data (DEBUG_MALLOC (cms_parent->enc_max_size), 00202 cms_parent->enc_max_size); 00203 } 00204 else 00205 { 00206 set_encoded_data (DEBUG_MALLOC (neutral_size_factor * size), 00207 neutral_size_factor * size); 00208 } 00209 } 00210 using_external_encoded_data = 0; 00211 } | 
| 
 | 
| 
 Definition at line 213 of file cms_xup.cc. 00214 {
00215   /* If encoded buffers were used destroy the xdr streams and free */
00216   /* memory used for encoded buffers. */
00217   if (NULL != encode_data_stream)
00218     {
00219       xdr_destroy (encode_data_stream);
00220       corrected_free (encode_data_stream);
00221       encode_data_stream = (XDR *) NULL;
00222     }
00223   if (NULL != decode_data_stream)
00224     {
00225       xdr_destroy (decode_data_stream);
00226       corrected_free (decode_data_stream);
00227       decode_data_stream = (XDR *) NULL;
00228     }
00229   if (NULL != encode_header_stream)
00230     {
00231       xdr_destroy (((XDR *) encode_header_stream));
00232       corrected_free (encode_header_stream);
00233       encode_header_stream = (XDR *) NULL;
00234     }
00235   if (NULL != decode_header_stream)
00236     {
00237       xdr_destroy (((XDR *) decode_header_stream));
00238       corrected_free (decode_header_stream);
00239       decode_header_stream = (XDR *) NULL;
00240     }
00241   if (NULL != encode_queuing_header_stream)
00242     {
00243       xdr_destroy (((XDR *) encode_queuing_header_stream));
00244       corrected_free (encode_queuing_header_stream);
00245       encode_queuing_header_stream = (XDR *) NULL;
00246     }
00247   if (NULL != decode_queuing_header_stream)
00248     {
00249       xdr_destroy (((XDR *) decode_queuing_header_stream));
00250       corrected_free (decode_queuing_header_stream);
00251       decode_queuing_header_stream = (XDR *) NULL;
00252     }
00253   if (NULL != encoded_data && !using_external_encoded_data)
00254     {
00255       corrected_free (encoded_data);
00256       encoded_data = NULL;
00257     }
00258   if (NULL != encoded_header)
00259     {
00260       corrected_free (encoded_header);
00261       encoded_header = NULL;
00262     }
00263   if (NULL != encoded_queuing_header)
00264     {
00265       corrected_free (encoded_queuing_header);
00266       encoded_queuing_header = NULL;
00267     }
00268 #if 0
00269   unload_rpc_interface ();
00270 #endif
00271 }
 | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. Definition at line 445 of file cms_xup.cc. 00446 {
00447   /* Check to see if the pointers are in the proper range. */
00448   if (-1 == check_pointer ((char RCS_HUGE *) &x, sizeof (char)))
00449     {
00450       return (CMS_UPDATE_ERROR);
00451     }
00452   if (xdr_char (current_stream, &x) != TRUE)
00453     {
00454       rcs_print_error ("CMS_XDR_UPDATER: xdr_char failed.\n");
00455       return (status = CMS_UPDATE_ERROR);
00456     }
00457   return (status);
00458 }
 | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. Definition at line 478 of file cms_xup.cc. 00479 {
00480   /* Check to see if the pointers are in the proper range. */
00481   if (-1 == check_pointer ((char RCS_HUGE *) &x, sizeof (char)))
00482     {
00483       return (CMS_UPDATE_ERROR);
00484     }
00485   if (xdr_u_char (current_stream, (unsigned char *) &x) != TRUE)
00486     {
00487       rcs_print_error ("CMS_XDR_UPDATER: xdr_u_char failed.\n");
00488       return (status = CMS_UPDATE_ERROR);
00489     }
00490   return (status);
00491 }
 | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. Definition at line 588 of file cms_xup.cc. 00589 {
00590   if (-1 == check_pointer ((char RCS_HUGE *) &x, sizeof (int)))
00591     {
00592       return (CMS_UPDATE_ERROR);
00593     }
00594 
00595   if (xdr_int (current_stream, &x) != TRUE)
00596     {
00597       rcs_print_error ("CMS_XDR_UPDATER: xdr_int failed.\n");
00598       return (status = CMS_UPDATE_ERROR);
00599     }
00600   return (status);
00601 }
 | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. Definition at line 620 of file cms_xup.cc. 00621 {
00622   if (-1 == check_pointer ((char RCS_HUGE *) &x, sizeof (unsigned int)))
00623     {
00624       return (CMS_UPDATE_ERROR);
00625     }
00626 
00627   if (xdr_u_int (current_stream, &x) != TRUE)
00628     {
00629       rcs_print_error ("CMS_XDR_UPDATER: xdr_u_int failed.\n");
00630       return (status = CMS_UPDATE_ERROR);
00631     }
00632   return (status);
00633 }
 | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. Definition at line 729 of file cms_xup.cc. 00730 {
00731   if (-1 == check_pointer ((char RCS_HUGE *) &x, sizeof (float)))
00732     {
00733       return (CMS_UPDATE_ERROR);
00734     }
00735 
00736   if (xdr_float (current_stream, &x) != TRUE)
00737     {
00738       rcs_print_error ("CMS_XDR_UPDATER: xdr_float failed.\n");
00739       return (status = CMS_UPDATE_ERROR);
00740     }
00741   return (status);
00742 }
 | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. Definition at line 763 of file cms_xup.cc. 00764 {
00765   if (-1 == check_pointer ((char RCS_HUGE *) &x, sizeof (double)))
00766     {
00767       return (CMS_UPDATE_ERROR);
00768     }
00769 
00770   if (xdr_double (current_stream, &x) != TRUE)
00771     {
00772       rcs_print_error ("CMS_XDR_UPDATER: xdr_double failed.\n");
00773       return (status = CMS_UPDATE_ERROR);
00774     }
00775   return (status);
00776 }
 | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. Definition at line 802 of file cms_xup.cc. 00803 {
00804   if (-1 == check_pointer ((char RCS_HUGE *) &x, sizeof (long double)))
00805     {
00806       return (CMS_UPDATE_ERROR);
00807     }
00808 
00809   double y;
00810 #ifdef __BORLANDC__
00811   /* The Borland C++ compiler seems to need a little help in converting */
00812   /* long doubles to ordinary doubles. */
00813   if (x > 1E308)
00814     x = 1E308;
00815   if (x < -1E308)
00816     x = -1E308;
00817   if ((-2E-308 < x) && (x < 2E-308))
00818     x = 0.0;
00819 #endif
00820 
00821   y = (double) x;
00822 
00823 
00824   if (xdr_double (current_stream, &y) != TRUE)
00825     {
00826       rcs_print_error ("CMS_XDR_UPDATER: xdr_double failed.\n");
00827       return (status = CMS_UPDATE_ERROR);
00828     }
00829   x = (long double) y;
00830   return (status);
00831 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 461 of file cms_xup.cc. 00462 {
00463   /* Check to see if the pointers are in the proper range. */
00464   if (-1 == check_pointer ((char RCS_HUGE *) x, len * sizeof (char)))
00465     {
00466       return (CMS_UPDATE_ERROR);
00467     }
00468 
00469   if (xdr_bytes (current_stream, (char **) &x, &len, len) != TRUE)
00470     {
00471       rcs_print_error ("CMS_XDR_UPDATER: xdr_bytes failed.\n");
00472       return (status = CMS_UPDATE_ERROR);
00473     }
00474   return (status);
00475 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 494 of file cms_xup.cc. 00495 {
00496   /* Check to see if the pointers are in the proper range. */
00497   if (-1 == check_pointer ((char RCS_HUGE *) x, len * sizeof (unsigned char)))
00498     {
00499       return (CMS_UPDATE_ERROR);
00500     }
00501 
00502   if (xdr_bytes (current_stream, (char **) &x, &len, len) != TRUE)
00503     {
00504       rcs_print_error ("CMS_XDR_UPDATER: xdr_bytes failed.\n");
00505       return (status = CMS_UPDATE_ERROR);
00506     }
00507   return (status);
00508 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 530 of file cms_xup.cc. 00531 {
00532   /* Check to see if the pointers are in the proper range. */
00533   if (-1 == check_pointer ((char RCS_HUGE *) x, len * sizeof (short)))
00534     {
00535       return (CMS_UPDATE_ERROR);
00536     }
00537 
00538   if (xdr_vector (current_stream, (char *) x, len, sizeof (short),
00539                   (xdrproc_t) xdr_short) != TRUE)
00540     {
00541       rcs_print_error
00542         ("CMS_XDR_UPDATER: xdr_vector(... xdr_short) failed.\n");
00543       return (status = CMS_UPDATE_ERROR);
00544     }
00545   return (status);
00546 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 566 of file cms_xup.cc. 00567 {
00568   if (-1 ==
00569       check_pointer ((char RCS_HUGE *) x, len * sizeof (unsigned short)))
00570     {
00571       return (CMS_UPDATE_ERROR);
00572     }
00573 
00574   if (xdr_vector (current_stream,
00575                   (char *) x, len,
00576                   sizeof (unsigned short), (xdrproc_t) xdr_u_short) != TRUE)
00577     {
00578       rcs_print_error
00579         ("CMS_XDR_UPDATER: xdr_vector(... xdr_u_short) failed.\n");
00580       return (status = CMS_UPDATE_ERROR);
00581     }
00582   return (status);
00583 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 604 of file cms_xup.cc. 00605 {
00606   if (-1 == check_pointer ((char RCS_HUGE *) x, len * sizeof (int)))
00607     {
00608       return (CMS_UPDATE_ERROR);
00609     }
00610   if (xdr_vector (current_stream, (char *) x, len, sizeof (int),
00611                   (xdrproc_t) xdr_int) != TRUE)
00612     {
00613       rcs_print_error ("CMS_XDR_UPDATER: xdr_vector( ... xdr_int) failed.\n");
00614       return (status = CMS_UPDATE_ERROR);
00615     }
00616   return (status);
00617 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 636 of file cms_xup.cc. 00637 {
00638   if (-1 == check_pointer ((char RCS_HUGE *) x, len * sizeof (unsigned int)))
00639     {
00640       return (CMS_UPDATE_ERROR);
00641     }
00642 
00643   if (xdr_vector (current_stream,
00644                   (char *) x, len,
00645                   sizeof (unsigned int), (xdrproc_t) xdr_u_int) != TRUE)
00646     {
00647       rcs_print_error
00648         ("CMS_XDR_UPDATER: xdr_vector(... xdr_u_int) failed.\n");
00649       return (status = CMS_UPDATE_ERROR);
00650     }
00651   return (status);
00652 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 674 of file cms_xup.cc. 00675 {
00676   if (-1 == check_pointer ((char RCS_HUGE *) x, len * sizeof (long)))
00677     {
00678       return (CMS_UPDATE_ERROR);
00679     }
00680 
00681   if (xdr_vector (current_stream, (char *) x, len, sizeof (long),
00682                   (xdrproc_t) xdr_long) != TRUE)
00683     {
00684       rcs_print_error ("CMS_XDR_UPDATER: xdr_vector(... xdr_long) failed.\n");
00685       return (status = CMS_UPDATE_ERROR);
00686     }
00687   return (status);
00688 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 708 of file cms_xup.cc. 00709 {
00710   if (-1 == check_pointer ((char RCS_HUGE *) x, len * sizeof (unsigned long)))
00711     {
00712       return (CMS_UPDATE_ERROR);
00713     }
00714 
00715   if (xdr_vector (current_stream,
00716                   (char *) x, len, sizeof (unsigned long),
00717                   (xdrproc_t) xdr_u_long) != TRUE)
00718     {
00719       rcs_print_error
00720         ("CMS_XDR_UPDATER: xdr_vector(... xdr_u_long) failed.\n");
00721       return (status = CMS_UPDATE_ERROR);
00722     }
00723   return (status);
00724 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 745 of file cms_xup.cc. 00746 {
00747   if (-1 == check_pointer ((char RCS_HUGE *) x, len * sizeof (float)))
00748     {
00749       return (CMS_UPDATE_ERROR);
00750     }
00751 
00752   if (xdr_vector (current_stream, (char *) x, len, sizeof (float),
00753                   (xdrproc_t) xdr_float) != TRUE)
00754     {
00755       rcs_print_error
00756         ("CMS_XDR_UPDATER: xdr_vector(... xdr_float) failed.\n");
00757       return (status = CMS_UPDATE_ERROR);
00758     }
00759   return (status);
00760 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 779 of file cms_xup.cc. 00780 {
00781   if (-1 == check_pointer ((char RCS_HUGE *) x, len * sizeof (double)))
00782     {
00783       return (CMS_UPDATE_ERROR);
00784     }
00785 
00786   if (xdr_vector (current_stream, (char *) x, len, sizeof (double),
00787                   (xdrproc_t) xdr_double) != TRUE)
00788     {
00789       rcs_print_error
00790         ("CMS_XDR_UPDATER: xdr_vector(... xdr_double) failed.\n");
00791       return (status = CMS_UPDATE_ERROR);
00792     }
00793 
00794   return (status);
00795 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 834 of file cms_xup.cc. 00835 {
00836   if (-1 == check_pointer ((char RCS_HUGE *) x, len * sizeof (long double)))
00837     {
00838       return (CMS_UPDATE_ERROR);
00839     }
00840 
00841   unsigned int i;
00842   double *y;
00843   y = (double *) DEBUG_MALLOC (sizeof (double) * len);
00844   for (i = 0; i < len; i++)
00845     {
00846 #ifdef __BORLANDC__
00847       /* The Borland C++ compiler seems to need a little help in converting */
00848       /* long doubles to ordinary doubles. */
00849       if (x[i] > 1E308)
00850         x[i] = 1E308;
00851       if (x[i] < -1E308)
00852         x[i] = -1E308;
00853       if ((-2E-308 < x[i]) && (x[i] < 2E-308))
00854         x[i] = 0.0;
00855 #endif
00856       y[i] = (double) x[i];
00857     }
00858 
00859 
00860   if (xdr_vector (current_stream, (char *) y, len, sizeof (double),
00861                   (xdrproc_t) xdr_double) != TRUE)
00862     {
00863       rcs_print_error
00864         ("CMS_XDR_UPDATER: xdr_vector(... xdr_double) failed.\n");
00865       return (status = CMS_UPDATE_ERROR);
00866     }
00867 
00868   for (i = 0; i < len; i++)
00869     {
00870       x[i] = (long double) y[i];
00871     }
00872   corrected_free (y);
00873   return (status);
00874 }
 | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. Definition at line 342 of file cms_xup.cc. 00343 {
00344   mode = _mode;
00345   CMS_UPDATER::set_mode (_mode);
00346   switch (mode)
00347     {
00348     case CMS_NO_UPDATE:
00349       current_stream = (XDR *) NULL;
00350       break;
00351 
00352     case CMS_ENCODE_DATA:
00353       current_stream = encode_data_stream;
00354       break;
00355 
00356     case CMS_DECODE_DATA:
00357       current_stream = decode_data_stream;
00358       break;
00359 
00360     case CMS_ENCODE_HEADER:
00361       current_stream = encode_header_stream;
00362       break;
00363 
00364     case CMS_DECODE_HEADER:
00365       current_stream = decode_header_stream;
00366       break;
00367 
00368     case CMS_ENCODE_QUEUING_HEADER:
00369       current_stream = encode_queuing_header_stream;
00370       break;
00371 
00372     case CMS_DECODE_QUEUING_HEADER:
00373       current_stream = decode_queuing_header_stream;
00374       break;
00375 
00376     default:
00377       rcs_print_error ("CMS updater in invalid mode.(%d)\n", mode);
00378       return (-1);
00379     }
00380   return (0);
00381 }
 | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. Definition at line 410 of file cms_xup.cc. 00411 {
00412   CMS_UPDATER::rewind ();
00413   if (NULL != current_stream)
00414     {
00415       xdr_setpos (current_stream, 0);
00416     }
00417   else
00418     {
00419       rcs_print_error
00420         ("CMS_XDR_UPDATER: Can't rewind because current_stream is NULL.\n");
00421     }
00422   if (NULL != cms_parent)
00423     {
00424       cms_parent->format_size = 0;
00425     }
00426 }
 | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. Definition at line 430 of file cms_xup.cc. 00431 {
00432   if (NULL == current_stream)
00433     {
00434       rcs_print_error
00435         ("CMS_XDR_UPDATER can not provide encoded_msg_size because the current stream is NULL.\n");
00436       return (-1);
00437     }
00438   return (xdr_getpos (current_stream));
00439 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 274 of file cms_xup.cc. Referenced by CMS_XDR_UPDATER(). 
 00276 {
00277   /* If the encoded data area has already been setup then release it. */
00278   if (NULL != encoded_data && !using_external_encoded_data)
00279     {
00280       corrected_free (encoded_data);
00281       encoded_data = NULL;
00282     }
00283 
00284   encoded_data_size = _encoded_data_size;
00285   encoded_data = _encoded_data;
00286   using_external_encoded_data = 1;
00287   if (encoded_data == NULL)
00288     {
00289       rcs_print_error ("CMS: Attempt to set  encoded_data buffer to NULL.\n");
00290       status = CMS_MISC_ERROR;
00291       return;
00292     }
00293   /* Allocate memory for XDR structures. */
00294   if (NULL == encode_data_stream)
00295     {
00296       encode_data_stream = (XDR *) DEBUG_MALLOC (sizeof (XDR));
00297     }
00298   else
00299     {
00300       xdr_destroy (encode_data_stream);
00301     }
00302   if (NULL == encode_data_stream)
00303     {
00304       rcs_print_error ("CMS:can't malloc encode_data_stream");
00305       status = CMS_CREATE_ERROR;
00306       return;
00307     }
00308   if (NULL == decode_data_stream)
00309     {
00310       decode_data_stream = (XDR *) DEBUG_MALLOC (sizeof (XDR));
00311     }
00312   else
00313     {
00314       xdr_destroy (decode_data_stream);
00315     }
00316   if (NULL == decode_data_stream)
00317     {
00318       rcs_print_error ("CMS:can't malloc decode_data_stream");
00319       status = CMS_CREATE_ERROR;
00320       return;
00321     }
00322 
00323   /* Initialize the XDR streams. */
00324   int nsize = (int) (neutral_size_factor * size);
00325   if (nsize > cms_parent->max_encoded_message_size
00326       && cms_parent->max_encoded_message_size > 0)
00327     {
00328       nsize = cms_parent->max_encoded_message_size;
00329     }
00330   if (nsize > cms_parent->enc_max_size && cms_parent->enc_max_size > 0)
00331     {
00332       nsize = cms_parent->enc_max_size;
00333     }
00334   xdrmem_create (encode_data_stream, (char *) encoded_data, nsize,
00335                  XDR_ENCODE);
00336   xdrmem_create (decode_data_stream, (char *) encoded_data, nsize,
00337                  XDR_DECODE);
00338 
00339 }
 | 
| 
 | ||||||||||||
| 
 Reimplemented from CMS_UPDATER. Definition at line 384 of file cms_xup.cc. Referenced by update(). 
 00385 {
00386   if (NULL == cms_parent || NULL == current_stream)
00387     {
00388       rcs_print_error ("CMS_XDR_UPDATER: Required pointer is NULL.\n");
00389       return (-1);
00390     }
00391   if (
00392       (current_stream == encode_data_stream) ||
00393       (current_stream == decode_data_stream) ||
00394       (mode == CMS_ENCODE_DATA) || (mode == CMS_DECODE_DATA))
00395     {
00396       int xdr_pos = xdr_getpos (current_stream);
00397       if (xdr_pos + _bytes > encoded_data_size)
00398         {
00399           rcs_print_error
00400             ("Encoded message buffer full. (xdr_pos=%d,_bytes=%d,(xdr_pos+_bytes)=%d,encoded_data_size=%d)\n",
00401              xdr_pos, _bytes, (xdr_pos + _bytes), encoded_data_size);
00402           return -1;
00403         }
00404     }
00405   return (cms_parent->check_pointer (_pointer, _bytes));
00406 }
 | 
| 
 | 
| 
 Reimplemented from CMS_UPDATER. Definition at line 57 of file cms_xup.hh. | 
| 
 | 
| 
 Definition at line 58 of file cms_xup.hh. | 
| 
 | 
| 
 Definition at line 59 of file cms_xup.hh. | 
| 
 | 
| 
 Definition at line 60 of file cms_xup.hh. | 
| 
 | 
| 
 Definition at line 61 of file cms_xup.hh. | 
| 
 | 
| 
 Definition at line 62 of file cms_xup.hh. | 
| 
 | 
| 
 Definition at line 63 of file cms_xup.hh. | 
| 
 | 
| 
 Definition at line 64 of file cms_xup.hh. | 
 1.2.11.1 written by Dimitri van Heesch,
 © 1997-2001
1.2.11.1 written by Dimitri van Heesch,
 © 1997-2001