summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS/clients/Blobby/Blob.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS/clients/Blobby/Blob.cpp')
-rw-r--r--ACE/apps/JAWS/clients/Blobby/Blob.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/clients/Blobby/Blob.cpp b/ACE/apps/JAWS/clients/Blobby/Blob.cpp
new file mode 100644
index 00000000000..b28d2601142
--- /dev/null
+++ b/ACE/apps/JAWS/clients/Blobby/Blob.cpp
@@ -0,0 +1,75 @@
+// $Id$
+
+#include "Blob.h"
+#include "Blob_Handler.h"
+#include "ace/OS_NS_string.h"
+
+ACE_Blob::ACE_Blob (void)
+{
+}
+
+ACE_Blob::~ACE_Blob (void)
+{
+ this->close ();
+}
+
+// initialize address and filename. No network i/o in open
+
+int
+ACE_Blob::open (const ACE_TCHAR *filename, const ACE_TCHAR *hostname , u_short port)
+{
+ filename_ = ACE_OS::strdup (filename);
+ inet_addr_.set (port, hostname);
+ return 0;
+}
+
+// read from connection length bytes from offset, into Message block
+
+int
+ACE_Blob::read (ACE_Message_Block *mb, size_t length, size_t offset)
+{
+
+ // Create a Blob Reader
+ ACE_Blob_Reader blob_reader (mb, length, offset, filename_);
+ ACE_Blob_Handler *brp = &blob_reader;
+
+ // Connect to the server
+ if (connector_.connect (brp, inet_addr_) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Blob::read():Connector error"), -1);
+
+ return blob_reader.byte_count ();
+
+}
+
+// write to connection length bytes from offset, into Message block
+
+int
+ACE_Blob::write (ACE_Message_Block *mb, size_t length, size_t offset)
+{
+
+ // Create a Blob Writer
+ ACE_Blob_Writer blob_writer (mb, length, offset, filename_);
+ ACE_Blob_Handler *bwp = &blob_writer;
+
+ // Connect to the server
+ if (connector_.connect (bwp, inet_addr_) == -1)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Blob::write():Connector error"), -1);
+
+ return blob_writer.byte_count ();
+}
+
+// close down the blob
+
+int
+ACE_Blob::close (void)
+{
+
+ if (filename_)
+ {
+ ACE_OS::free ((void *) filename_);
+ filename_ = 0;
+ }
+ return 0;
+
+}
+