summaryrefslogtreecommitdiff
path: root/CIAO/DAnCE/tools/Convert_Plan/Convert_Plan_Impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CIAO/DAnCE/tools/Convert_Plan/Convert_Plan_Impl.cpp')
-rw-r--r--CIAO/DAnCE/tools/Convert_Plan/Convert_Plan_Impl.cpp206
1 files changed, 88 insertions, 118 deletions
diff --git a/CIAO/DAnCE/tools/Convert_Plan/Convert_Plan_Impl.cpp b/CIAO/DAnCE/tools/Convert_Plan/Convert_Plan_Impl.cpp
index 5969a12273e..0acfc785dca 100644
--- a/CIAO/DAnCE/tools/Convert_Plan/Convert_Plan_Impl.cpp
+++ b/CIAO/DAnCE/tools/Convert_Plan/Convert_Plan_Impl.cpp
@@ -1,7 +1,7 @@
// $Id$
#include "Convert_Plan_Impl.h"
-#include "ace/OS_NS_stdio.h"
+#include "ace/FILE_Connector.h"
#include "tao/CDR.h"
#include "Config_Handlers/XML_File_Intf.h"
#include "Logger/Log_Macros.h"
@@ -11,12 +11,6 @@ namespace DAnCE
Deployment::DeploymentPlan *
Convert_Plan::read_xml_plan (const char *filename)
{
- if (!filename)
- {
- DANCE_ERROR (2, (LM_WARNING, DLINFO ACE_TEXT ("Convert_Plan::read_xml_plan - ")
- ACE_TEXT ("Passed a null pointer, returning.\n")));
- }
-
CIAO::Config_Handlers::XML_File_Intf xml_intf (filename);
xml_intf.add_search_path ("ACE_ROOT", "/docs/schema/");
xml_intf.add_search_path ("TAO_ROOT", "/docs/schema/");
@@ -29,54 +23,42 @@ namespace DAnCE
Deployment::DeploymentPlan *
Convert_Plan::read_cdr_plan (const char *filename)
{
- if (!filename)
+ ACE_FILE_Addr file_addr (ACE_sap_any_cast (ACE_FILE_Addr &));
+
+ if (filename)
+ file_addr.set (filename);
+ else
{
- DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("Convert_Plan::read_cdr_plan - ")
- ACE_TEXT ("Passed a null pointer, returning.\n")));
+ DANCE_ERROR (1, (LM_ERROR, DLINFO "Convert_Plan_Impl::read_cdr_plan - passed nil file name\n"));
return 0;
}
-
- FILE *file = ACE_OS::fopen (filename, "r");
-
- if (!file)
+
+ ACE_FILE_Connector conn;
+ ACE_FILE_IO file;
+
+ if (conn.connect (file,
+ file_addr,
+ 0,
+ ACE_Addr::sap_any,
+ 0,
+ O_RDONLY,
+ ACE_DEFAULT_FILE_PERMS == -1))
{
- DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("Convert_Plan::read_cdr_plan - ")
- ACE_TEXT ("Error: Unable to open file for reasding %C\n"),
+ DANCE_ERROR (1, (LM_ERROR, DLINFO "Convert_Plan_Impl::read_cdr_plan - unable to read file %p\n",
filename));
return 0;
}
-
- char byte_order;
- ssize_t n = ACE_OS::fread (&byte_order, sizeof (byte_order), 1, file);
-
- if (n == 0)
- {
- DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("Convert_Plan::read_cdr_plan - ")
- ACE_TEXT ("Byte order not written to file\n")));
- ACE_OS::fclose (file);
- return 0;
- }
-
- ACE_UINT32 bufsize (0);
- n = ACE_OS::fread (&bufsize, sizeof (bufsize), 1, file);
-
- if (n == 0)
+
+ ACE_FILE_Info info;
+ if (file.get_info (info) == -1)
{
- DANCE_ERROR (1, (LM_ERROR, DLINFO ACE_TEXT ("Convert_Plan::read_cdr_plan - ")
- ACE_TEXT ("Plan size not written to file\n")));
- ACE_OS::fclose (file);
+ DANCE_ERROR (1, (LM_ERROR, DLINFO "Convert_Plan_Impl::read_cdr_plan - unable to determine file size %p\n",
+ filename));
return 0;
}
-
- if (byte_order != ACE_CDR_BYTE_ORDER)
- {
- DANCE_DEBUG (6, (LM_DEBUG, DLINFO ACE_TEXT ("Convert_Plan::read_cdr_plan - ")
- ACE_TEXT ("Plan appears encoded in a different endian.\n")));
- ACE_CDR::swap_4 (reinterpret_cast<char *> (&bufsize),
- reinterpret_cast<char *> (&bufsize));
- }
-
-
+
+ ACE_OFF_T bufsize = info.size_ - 1;
+
char *buffer = 0;
ACE_NEW_RETURN (buffer,
char[bufsize],
@@ -85,17 +67,25 @@ namespace DAnCE
#if defined (ACE_INITIALIZE_MEMORY_BEFORE_USE)
ACE_OS::memset(buffer, 0, sizeof (buffer));
#endif /* ACE_INITIALIZE_MEMORY_BEFORE_USE */
-
+
// Make sure <buffer> is released automagically.
ACE_Auto_Basic_Array_Ptr<char> b (buffer);
- n = ACE_OS::fread (buffer, 1, bufsize, file);
- ACE_OS::fclose (file);
-
- if (n != bufsize)
+ if (file.seek (0, SEEK_SET) == -1)
+ {
+ DANCE_ERROR (1, (LM_ERROR, DLINFO "Convert_Plan_Impl::read_cdr_plan - seek failed %p\n",
+ filename));
+ return 0;
+ }
+
+ char byte_order;
+ ssize_t size = file.recv (&byte_order, 1);
+ size = file.recv (buffer, bufsize);
+
+ if (size != bufsize)
{
DANCE_ERROR (1, (LM_ERROR, DLINFO "Convert_Plan_Impl::read_cdr_plan - read %u bytes "
- "instead of %u bytes\n", n, bufsize));
+ "instead of %u bytes\n", size, bufsize));
return 0;
}
@@ -107,24 +97,17 @@ namespace DAnCE
input_cdr.reset_byte_order ((int) byte_order);
DANCE_DEBUG (9, (LM_TRACE, DLINFO "Convert_Plan_Impl::read_cdr_plan - "
- "Reading file %C in %s endian format with size %u\n",
- filename,
- ACE_CDR_BYTE_ORDER ? ACE_TEXT("little") : ACE_TEXT("big"),
- bufsize));
+ "Reading file %C in %s endian format\n",
+ filename, ACE_CDR_BYTE_ORDER ? ACE_TEXT("little") : ACE_TEXT("big")));
Deployment::DeploymentPlan *retval;
-
+
ACE_NEW_RETURN (retval, Deployment::DeploymentPlan (), 0);
- if (!(input_cdr >> *retval))
- {
- DANCE_ERROR (1, (LM_ERROR, ACE_TEXT ("Convert_Plan_Impl::read_cdr_plan - ")
- ACE_TEXT ("Failed to demarshal plan\n")));
- delete retval;
- return 0;
- }
+ input_cdr >> *retval;
+ file.close ();
return retval;
}
@@ -132,67 +115,54 @@ namespace DAnCE
bool
Convert_Plan::write_cdr_plan (const char *output_filename, Deployment::DeploymentPlan &plan)
{
- if (!output_filename)
- {
- DANCE_ERROR (1, (LM_ERROR, DLINFO "Convert_Plan_Impl::write_cdr_plan - passed nil file name\n"));
- return false;
- }
+ ACE_FILE_Addr file_addr (ACE_sap_any_cast (ACE_FILE_Addr &));
- TAO_OutputCDR output_cdr;
-
- if (output_cdr << plan)
+ if (output_filename)
+ file_addr.set (output_filename);
+ else
{
- FILE *file = ACE_OS::fopen (output_filename, "w");
-
- if (file == 0)
- {
- DANCE_ERROR (1, (LM_ERROR, DLINFO "Convert_Plan_Impl::write_cdr_plan - failed to open file %C\n",
- output_filename));
- return false;
- }
-
- // First write the byte order
- char byte_order = ACE_CDR_BYTE_ORDER;
- size_t n = ACE_OS::fwrite (&byte_order, sizeof(byte_order), 1, file);
-
- // Next write the length
- ACE_UINT32 cdr_length (output_cdr.total_length ());
- n += ACE_OS::fwrite (&cdr_length, sizeof (cdr_length), 1, file);
-
- DANCE_DEBUG (9, (LM_TRACE, DLINFO "Convert_Plan_Impl::write_cdr_plan - "
- ACE_TEXT ("Writing plan to file %s in %s endian format and length %u\n"),
- output_filename,
- ACE_CDR_BYTE_ORDER ? ACE_TEXT("little") : ACE_TEXT("big"),
- cdr_length));
-
- // Now write the IDL structure.
- for (const ACE_Message_Block *output_mb = output_cdr.begin ();
- output_mb != 0;
- output_mb = output_mb->cont ())
- {
- n += ACE_OS::fwrite (output_mb->rd_ptr (),
- 1,
- output_mb->length (),
- file);
- }
-
- ACE_OS::fclose (file);
-
- size_t total_size = sizeof (byte_order) + sizeof (cdr_length) + cdr_length;
- if (n != total_size)
- {
- DANCE_ERROR (1, (LM_ERROR, ACE_TEXT ("Convert_Plan::write_cdr_plan - ")
- ACE_TEXT ("Error: Unexpected number of bytes written: %u instead of %u\n"),
- n, total_size));
- }
+ DANCE_ERROR (1, (LM_ERROR, DLINFO "Convert_Plan_Impl::write_cdr_plan - passed nil file name\n"));
+ return 0;
}
- else
+
+ ACE_FILE_Connector conn;
+ ACE_FILE_IO file;
+
+ if (conn.connect (file,
+ file_addr,
+ 0,
+ ACE_Addr::sap_any,
+ 0,
+ O_RDWR | O_CREAT,
+ ACE_DEFAULT_FILE_PERMS == -1))
{
- DANCE_ERROR (1, (LM_ERROR, ACE_TEXT ("Convert_Plan::write_cdr_plan - ")
- ACE_TEXT ("Failed to mashal deployment plan\n")));
- return false;
+ DANCE_ERROR (1, (LM_ERROR, DLINFO "Convert_Plan_Impl::write_cdr_plan - unable to write file %p\n",
+ output_filename));
+ return 0;
}
+ char byte_order = ACE_CDR_BYTE_ORDER;
+ size_t n = file.send (&byte_order, 1);
+
+ TAO_OutputCDR output_cdr (0, ACE_CDR_BYTE_ORDER, 0, 0, 0,
+ ACE_DEFAULT_CDR_MEMCPY_TRADEOFF,
+ ACE_CDR_GIOP_MAJOR_VERSION,
+ ACE_CDR_GIOP_MINOR_VERSION);
+
+ output_cdr << plan;
+
+ const ACE_Message_Block *output_mb = output_cdr.begin ();
+
+ DANCE_DEBUG (9, (LM_TRACE, DLINFO "Convert_Plan_Impl::write_cdr_plan - "
+ ACE_TEXT ("Writing plan to file %s in %s endian format\n"),
+ output_filename,
+ ACE_CDR_BYTE_ORDER ? ACE_TEXT("little") : ACE_TEXT("big")));
+
+ n = file.send (output_mb->rd_ptr (),
+ output_mb->length ());
+
+ file.close ();
+
return true;
}
}