diff options
author | schmidt <douglascraigschmidt@users.noreply.github.com> | 1997-07-05 19:46:46 +0000 |
---|---|---|
committer | schmidt <douglascraigschmidt@users.noreply.github.com> | 1997-07-05 19:46:46 +0000 |
commit | cbe83b855905dd5736574f0a61aab8c6f5d1acb5 (patch) | |
tree | 03aa1f12d08ea2863e0edd72951f306162cc2c49 /apps/JAWS | |
parent | f6376ef8f359e7dba6df110f8a0b55ccc2d263c6 (diff) | |
download | ATCD-cbe83b855905dd5736574f0a61aab8c6f5d1acb5.tar.gz |
*** empty log message ***
Diffstat (limited to 'apps/JAWS')
-rw-r--r-- | apps/JAWS/Makefile | 5 | ||||
-rw-r--r-- | apps/JAWS/README | 10 | ||||
-rw-r--r-- | apps/JAWS/clients/Blobby/Blob.cpp | 90 | ||||
-rw-r--r-- | apps/JAWS/clients/Blobby/Blob.h | 82 | ||||
-rw-r--r-- | apps/JAWS/clients/Blobby/Blob_Handler.cpp | 338 | ||||
-rw-r--r-- | apps/JAWS/clients/Blobby/Blob_Handler.h | 110 | ||||
-rw-r--r-- | apps/JAWS/clients/Blobby/Makefile | 350 | ||||
-rw-r--r-- | apps/JAWS/clients/Blobby/Options.cpp | 79 | ||||
-rw-r--r-- | apps/JAWS/clients/Blobby/Options.h | 66 | ||||
-rw-r--r-- | apps/JAWS/clients/Blobby/README | 33 | ||||
-rw-r--r-- | apps/JAWS/clients/Blobby/blobby.cpp | 97 | ||||
-rw-r--r-- | apps/JAWS/clients/Blobby/blobby.mak | 694 | ||||
-rw-r--r-- | apps/JAWS/clients/Blobby/blobby.mdp | bin | 0 -> 51712 bytes |
13 files changed, 1944 insertions, 10 deletions
diff --git a/apps/JAWS/Makefile b/apps/JAWS/Makefile index 44fd29fbae2..81fe0e49407 100644 --- a/apps/JAWS/Makefile +++ b/apps/JAWS/Makefile @@ -1,7 +1,7 @@ #---------------------------------------------------------------------------- # @(#)Makefile 1.1 10/18/96 # -# Makefile for the Gateway application +# Makefile for JAWS #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- @@ -11,8 +11,7 @@ INFO = README DIRS = server \ - client \ - stress_testing + client #---------------------------------------------------------------------------- # Include macros and targets diff --git a/apps/JAWS/README b/apps/JAWS/README index 687b10690a2..d7d69cc4b47 100644 --- a/apps/JAWS/README +++ b/apps/JAWS/README @@ -6,14 +6,10 @@ http://www.cs.wustl.edu/~jxh/research/ The subdirectories in this directory contain the following components - . client -- This contains the source code for an example - application that exercises the file uploading and downloading - features of JAWS + . client -- This contains the source code for various + client applications that exercise the file uploading and + downloading features of JAWS . server -- This contains the source code for the JAWS HTTP Web server. It illustrates a number of sophisticated ACE concurrency and event demultiplexing strategies. - - . stress-testing -- This is the http_tester suite, an ACE - based HTTP benchmarking tool, used to evaluate the - performance of JAWS and other HTTP servers. diff --git a/apps/JAWS/clients/Blobby/Blob.cpp b/apps/JAWS/clients/Blobby/Blob.cpp new file mode 100644 index 00000000000..250dc572e36 --- /dev/null +++ b/apps/JAWS/clients/Blobby/Blob.cpp @@ -0,0 +1,90 @@ +// $Id$ + +#include "Blob.h" +#include "Blob_Handler.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 (char *filename, char *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; + +} + +#if defined (ACE_TEMPLATES_REQUIRE_SPECIALIZATION) +template class ACE_Connector<ACE_Blob_Handler, ACE_SOCK_CONNECTOR>; +template class ACE_Svc_Tuple <ACE_Blob_Handler>; +template class ACE_Map_Entry<ACE_HANDLE, ACE_Svc_Tuple <ACE_Blob_Handler> *>; +template class ACE_Map_Iterator<ACE_HANDLE, ACE_Svc_Tuple <ACE_Blob_Handler> *, ACE_SYNCH_RW_MUTEX>; +template class ACE_Map_Manager<ACE_HANDLE, ACE_Svc_Tuple <ACE_Blob_Handler> *, ACE_SYNCH_RW_MUTEX>; + +#if defined (ACE_HAS_THREADS) + template class ACE_Guard<ACE_SYNCH_RW_MUTEX>; + template class ACE_Read_Guard<ACE_SYNCH_RW_MUTEX>; + template class ACE_Write_Guard<ACE_SYNCH_RW_MUTEX>; +#else + // These are specialized in libACE if ACE doesn't have threads. +#endif /* ACE_HAS_THREADS */ +#endif /* ACE_TEMPLATES_REQUIRE_SPECIALIZATION */ diff --git a/apps/JAWS/clients/Blobby/Blob.h b/apps/JAWS/clients/Blobby/Blob.h new file mode 100644 index 00000000000..7f7c79076ec --- /dev/null +++ b/apps/JAWS/clients/Blobby/Blob.h @@ -0,0 +1,82 @@ +/* -*- C++ -*- */ +// $Id$ + +//============================================================================ +// +// = LIBRARY +// JAWS +// +// = FILENAME +// Blob.h +// +// = DESCRIPTION +// This is the ACE_Blob class, which is the API for doing file +// uploads/downloads. +// +// = AUTHOR +// Prashant Jain and Sumedh Mungee +// +//============================================================================ + +#if !defined (ACE_BLOB_H) +#define ACE_BLOB_H + +#include "ace/OS.h" +#include "ace/Connector.h" +#include "ace/INET_Addr.h" +#include "ace/Svc_Handler.h" +#include "ace/SOCK_Connector.h" +#include "ace/Message_Block.h" +#include "Blob_Handler.h" + +class ACE_Blob + // = TITLE + // Blob is intended to provide application API to + // classes that wish to do network i/o at a very + // high level of abstraction. + // + // = This class provides the ability to retrieve data from + // the network, of specified length and offset, and potentially + // use any protocol "under the hood" to do so. It currently + // uses HTTP. See Blob_Handler also. +{ +public: + ACE_Blob (void); + ~ACE_Blob (void); + + int open (char *filename, + char *hostname = ACE_DEFAULT_SERVER_HOST , + u_short port = 80); + // initializes the class with the given filename, hostname and port. + // it should be called with the filename, before any read/write calls + + + int read (ACE_Message_Block *mb, size_t length, size_t offset); + // starts a connection, and reads a file from the server, + // of length and offset as specified, into Message_Block mb + // The message block should have capacity to hold length number + // of bytes + + int write (ACE_Message_Block *mb, size_t length, size_t offset); + // starts a connection, and writes a file to the server, + // of length and offset as specified, from Message_Block mb + // thus the message block should contain atleast length + offset + // bytes of data + + + int close (); + // Frees memory allocated for filename. + +private: + ACE_INET_Addr inet_addr_; + // store the internet address of the server + + char *filename_; + // The filename + + ACE_Connector<ACE_Blob_Handler, ACE_SOCK_CONNECTOR> connector_; + // The connector endpoint to initiate the client connection + +}; + +#endif /* ACE_BLOB_H */ diff --git a/apps/JAWS/clients/Blobby/Blob_Handler.cpp b/apps/JAWS/clients/Blobby/Blob_Handler.cpp new file mode 100644 index 00000000000..28d98d46cd8 --- /dev/null +++ b/apps/JAWS/clients/Blobby/Blob_Handler.cpp @@ -0,0 +1,338 @@ +// $Id$ + +#include "Blob_Handler.h" + +// Empty constructor for compliance with new Connector behavior. +ACE_Blob_Handler::ACE_Blob_Handler (void) +{ +} + +// Always use this constructor +ACE_Blob_Handler::ACE_Blob_Handler (ACE_Message_Block * mb, + size_t length, + size_t offset, + char *filename) : + mb_ (mb), + length_ (length), + offset_ (offset), + filename_ (ACE_OS::strdup (filename)), + bytecount_ (0) +{ +} + +ACE_Blob_Handler::~ACE_Blob_Handler (void) +{ + if (filename_) + { + ACE_OS::free ((void *) filename_); + filename_ = 0; + } +} + +// Called by Connector after connection is established +int +ACE_Blob_Handler::open (void *) +{ + if (this->send_request () != 0) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Blob_Handler::open():send_request failed"), -1); + + if (this->receive_reply () != 0) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Blob_Handler::open():receive_reply failed"), -1); + return 0; + +} + +// No-op +int +ACE_Blob_Handler::close (u_long flags) +{ + ACE_UNUSED_ARG (flags); + return 0; +} + + +// Always overridden by the derived classes +int +ACE_Blob_Handler::send_request (void) +{ + return -1; +} + +// Always overridden by the derived classes +int +ACE_Blob_Handler::receive_reply (void) +{ + return -1; +} + +// used to retrieve the number of bytes read/written by the +// last operation on the Blob +int +ACE_Blob_Handler::byte_count (void) +{ + return bytecount_; +} + +// Reader ************************************************** + +ACE_Blob_Reader::ACE_Blob_Reader (ACE_Message_Block * mb, + size_t length, + size_t offset, + char *filename, + char *request_prefix, + char *request_suffix) : + ACE_Blob_Handler (mb, length, offset, filename), + request_prefix_ (request_prefix), + request_suffix_ (request_suffix) +{ +} + +// Send the HTTP request +int +ACE_Blob_Reader::send_request (void) +{ + char mesg [MAX_HEADER_SIZE]; + + // Check to see if the request is too big + if ( MAX_HEADER_SIZE < (strlen (request_prefix_) + strlen (filename_) + strlen (request_suffix_) + 4)) + ACE_ERROR_RETURN((LM_ERROR,"Request too large!"), -1); + + // Create a message to send to the server requesting retrieval of the file + int len = ACE_OS::sprintf (mesg, "%s %s %s", request_prefix_, filename_, request_suffix_); + + // Send the message to server + if (peer ().send_n (mesg, len) != len) + ACE_ERROR_RETURN((LM_ERROR,"Error sending request"), -1); + + + return 0; +} + +// Recieve the HTTP Reply +int +ACE_Blob_Reader::receive_reply (void) +{ + ssize_t len; + char buf [MAX_HEADER_SIZE + 1]; + char *buf_ptr; + int bytes_read = 0; + int bytes_left = length_; + int offset_left = offset_; + + // Receive the first MAX_HEADER_SIZE bytes to be able to strip off the + // header. Note that we assume that the header will fit into the + // first MAX_HEADER_SIZE bytes of the transmitted data. + if ((len = peer ().recv_n (buf, MAX_HEADER_SIZE)) >= 0) + { + buf[len] = '\0'; + + // Search for the header termination string "\r\n\r\n", or "\n\n". If + // found, move past it to get to the data portion. + if ((buf_ptr = ACE_OS::strstr (buf,"\r\n\r\n")) != NULL) + buf_ptr += 4; + else if ((buf_ptr = ACE_OS::strstr (buf, "\n\n")) != NULL) + buf_ptr += 2; + else + buf_ptr = buf; + + // Determine number of data bytes read. This is equal to the + // total butes read minus number of header bytes. + bytes_read = (buf + len) - buf_ptr; + } + else + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Blob_Reader::receiveReply():Error while reading header"), -1); + + // *************************************************************** + // At this point, we have stripped off the header and are ready to + // process data. buf_ptr points to the data + + // First adjust for offset. There are two cases: + // (1) The first block of data encountered the offset. In this case + // we simply increment the buf_ptr by offset. + // (2) The first block of data did not encounter the offset. That + // is, the offset needs to go past the number of data bytes already read. + if (bytes_read > offset_left) + { + // The first case is true -- that is offset is less than the + // data bytes we just read. + buf_ptr += offset_left; + + // Determine how many data bytes are actually there. This is + // basically the total number of data bytes we read minus any + // offset we have. + int data_bytes = bytes_read - offset_left; + + // Check for the case where the bytes read are enough to fulfill + // our request (for length bytes). If this is the case, then we + // don't need to do any extra recvs and can simply return with + // the data. + if (data_bytes >= bytes_left) + { + // The first block contains enough data to satisfy the + // length. So copy the data into the message buffer. + if (mb_->copy (buf_ptr, bytes_left) == -1) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", + "ACE Blob_Reader::receiveReply():Error copying data into Message_Block"), -1); + bytecount_ = length_; + return 0; + } + + // Copy over all the data bytes into our message buffer. + if (mb_->copy (buf_ptr, data_bytes) == -1) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", + "ACE_Blob_Reader::receiveReply():Error copying data into Message_Block" ), -1); + + // Adjust bytes left + bytes_left -= data_bytes; + + // No more offset left. So set it to zero. + offset_left = 0; + } + else + { + // The second case is true -- that is offset is greater than + // the data bytes we just read. + offset_left -= bytes_read; + } + + // If we had any offset left, take care of that. + while (offset_left > 0) + { + // MAX_HEADER_SIZE in which case we should do a receive of + // offset bytes into a temporary buffer. Otherwise, we should + // receive MAX_HEADER_SIZE bytes into temporary buffer and + // decrement offset_left. + if (offset_left < (int) (sizeof buf)) + len = offset_left; + else + len = sizeof buf; + if (peer().recv_n (buf, len) != len) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", + "ACE_Blob_Reader::receiveReply():Read error" ), + -1); + offset_left -= len; + } + + // ***************************************************************** + // At this point we are all set to receive the actual data which the + // user wants. We have made adjustments for offset and are ready to + // receive the actual data. Receive the data directly into the + // message buffer. + + len = peer().recv_n (mb_->wr_ptr (), bytes_left); + + if (len != bytes_left) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", + "ACE_Blob_Reader::receiveReply():Read error" ), -1); + + // Adjust the message buffer write pointer by number of bytes we + // received. + mb_->wr_ptr (len); + + // Set the byte count to number of bytes received + this->bytecount_ = length_; + + return 0; +} + +// Writer ************************************************** + +ACE_Blob_Writer::ACE_Blob_Writer (ACE_Message_Block * mb, + size_t length, + size_t offset, + char *filename, + char *request_prefix, + char *request_suffix) : + ACE_Blob_Handler (mb, length, offset, filename), + request_prefix_ (request_prefix), + request_suffix_ (request_suffix) +{ +} + +int +ACE_Blob_Writer::send_request (void) +{ + // Check for sanity -- check if we have any data to send. + if (offset_+ length_ > mb_->length ()) + ACE_ERROR_RETURN((LM_ERROR, "%p\n", + "ACE_Blob_Writer::sendRequest():Invalid offset/length"), -1); + + // Determine the length of the header message we will be sending to + // the server. Note that we add 32 for safety -- this corresponds to + // the number of bytes needed for the length field. + u_short mesglen = + ACE_OS::strlen (request_prefix_) + + ACE_OS::strlen (filename_) + + ACE_OS::strlen (request_suffix_) + + 32; // safety + + // Allocate a buffer to hold the header + char *mesg; + ACE_NEW_RETURN (mesg, char [mesglen], -1); + + // Create the header, store the actual length in mesglen + mesglen = ACE_OS::sprintf (mesg, "%s /%s %s %d\n\n", + request_prefix_, filename_, request_suffix_, length_); + + // Send the header followed by the data + + // First send the header + if (peer ().send_n (mesg, mesglen) == -1) + ACE_ERROR_RETURN((LM_ERROR, "%p\n", "Error sending request"), -1); + + // "Consume" the offset by moving the read pointer of the message + // buffer + mb_->rd_ptr (offset_); + + // Now send the data + if (peer ().send_n (mb_->rd_ptr (), length_) != (int)length_) + ACE_ERROR_RETURN((LM_ERROR, "%p\n", "Error sending file"), -1); + + // Adjust the read pointer of the mesage buffer + mb_->rd_ptr (length_); + + return 0; +} + +int +ACE_Blob_Writer::receive_reply (void) +{ + // Allocate a buffer big enough to hold the header + char buf[MAX_HEADER_SIZE]; + + // Receive the reply from the server + ssize_t len = peer ().recv_n (buf, sizeof buf - 1); // reserve one byte to store the \0 + if (len ==-1) + ACE_ERROR_RETURN((LM_ERROR, "%p\n", "Error reading header"), -1); + + buf [len] = 0; + + // Parse the header + char *lasts; + + // First check if this was a valid header -- HTTP/1.0 + char *token = ACE_OS::strtok_r (buf, " \t", &lasts); + + if ( (token == NULL) || (ACE_OS::strcasecmp (token, "HTTP/1.0") != 0)) + ACE_ERROR_RETURN((LM_ERROR, "%p\n", "Did not receive a HTTP/1.0 response"), -1); + + // Get the return code. + int return_code = ACE_OS::atoi (ACE_OS::strtok_r (NULL, " \t", &lasts)); + + // Check if the transaction succeeded. The only success codes are in + // the range of 200-299 (HTTP specification). + if (return_code >= 200 && return_code < 300) + return 0; + else + { + // Something went wrong! + // Get the description from the header message of what went wrong. + char *description = ACE_OS::strtok_r (NULL, "\n\r", &lasts); + ACE_ERROR_RETURN((LM_ERROR, "%p\n", description), -1); + } + return 0; +} + +#if defined (ACE_TEMPLATES_REQUIRE_SPECIALIZATION) +template class ACE_Svc_Handler <ACE_SOCK_STREAM, ACE_NULL_SYNCH>; +#endif /* ACE_TEMPLATES_REQUIRE_SPECIALIZATION */ diff --git a/apps/JAWS/clients/Blobby/Blob_Handler.h b/apps/JAWS/clients/Blobby/Blob_Handler.h new file mode 100644 index 00000000000..31012824491 --- /dev/null +++ b/apps/JAWS/clients/Blobby/Blob_Handler.h @@ -0,0 +1,110 @@ +/* -*- C++ -*- */ +// $Id$ + +//============================================================================ +// +// = LIBRARY +// JAWS +// +// = FILENAME +// Blob.h +// +// = DESCRIPTION +// ACE_Blob_Handler is a base class for ACE_Blob_Reader and +// ACE_Blob_Writer which are created in response to calls to +// read/write, as appropriate +// +// = AUTHOR +// Prashant Jain and Sumedh Mungee +// +//============================================================================ + +#if !defined (ACE_BLOB_HANDLER_H) +#define ACE_BLOB_HANDLER_H + +#include "ace/OS.h" +#include "ace/INET_Addr.h" +#include "ace/Svc_Handler.h" +#include "ace/Message_Block.h" + +class ACE_Blob_Handler : public ACE_Svc_Handler <ACE_SOCK_STREAM, ACE_NULL_SYNCH> + // = TITLE + // Blob is intended to provide application API to + // classes that wish to do network i/o at a very + // high level of abstraction. + // + // = This class provides the ability to retrieve data from + // the network, of specified length and offset, and potentially + // use any protocol "under the hood" to do so. It currently + // uses HTTP. See Blob_Handler also. +{ +public: + ACE_Blob_Handler (void); + // Null constructor, insures that it works properly with Connector + + ACE_Blob_Handler (ACE_Message_Block *mb, size_t length, size_t offset, char *filename); + // Always use this constructor to make Blob_Handlers + + int byte_count (void); + // returns the number of bytes read/written in the last operation. + + virtual int open (void * = 0); + // Activate this instance of the <ACE_Blob_Handler> + + virtual int close (u_long flags = 0); + // Close down the Blob + + ~ACE_Blob_Handler (void); + +protected: + virtual int send_request (void); + virtual int receive_reply (void); + + ACE_Message_Block *mb_; + size_t length_; + size_t offset_; + char *filename_; + int bytecount_; + enum + { + MAX_HEADER_SIZE = 2048 + // The handler assumes that the first 2048 bytes of a server response + // contains the header + }; +}; + +class ACE_Blob_Reader : public ACE_Blob_Handler +{ +public: + ACE_Blob_Reader (ACE_Message_Block *mb, + size_t length, + size_t offset, + char *filename, + char *request_prefix = "GET", + char *request_suffix = "HTTP/1.0\r\n\r\n"); + +private: + int send_request (void); + int receive_reply (void); + const char *request_prefix_; + const char *request_suffix_; +}; + +class ACE_Blob_Writer : public ACE_Blob_Handler +{ +public: + ACE_Blob_Writer (ACE_Message_Block *mb, + size_t length, + size_t offset, + char *filename, + char *request_prefix = "PUT", + char *request_suffix = "HTTP/1.0\nContent-length:"); + +private: + int send_request (void); + int receive_reply (void); + const char *request_prefix_; + const char *request_suffix_; +}; + +#endif /* ACE_BLOB_HANDLER_H */ diff --git a/apps/JAWS/clients/Blobby/Makefile b/apps/JAWS/clients/Blobby/Makefile new file mode 100644 index 00000000000..0c0455118fe --- /dev/null +++ b/apps/JAWS/clients/Blobby/Makefile @@ -0,0 +1,350 @@ +#---------------------------------------------------------------------------- +# %W% %G% +# +# Makefile for the ACE Adapter Web Server (JAWS) client +#---------------------------------------------------------------------------- + +#---------------------------------------------------------------------------- +# Local macros +#---------------------------------------------------------------------------- + +BIN = blobby + +FILES = Blob \ + Blob_Handler \ + Options + +LSRC = $(addsuffix .cpp,$(FILES)) +LOBJ = $(addsuffix .o,$(FILES)) +SHOBJ = $(addsuffix .so,$(FILES)) + +LDLIBS = $(addprefix .shobj/,$(SHOBJ)) + +VLDLIBS = $(LDLIBS:%=%$(VAR)) + +BUILD = $(VBIN) + +#---------------------------------------------------------------------------- +# Include macros and targets +#---------------------------------------------------------------------------- + +include $(WRAPPER_ROOT)/include/makeinclude/wrapper_macros.GNU +include $(WRAPPER_ROOT)/include/makeinclude/macros.GNU +include $(WRAPPER_ROOT)/include/makeinclude/rules.common.GNU +include $(WRAPPER_ROOT)/include/makeinclude/rules.nonested.GNU +include $(WRAPPER_ROOT)/include/makeinclude/rules.lib.GNU +include $(WRAPPER_ROOT)/include/makeinclude/rules.bin.GNU +include $(WRAPPER_ROOT)/include/makeinclude/rules.local.GNU + +#---------------------------------------------------------------------------- +# Local targets +#---------------------------------------------------------------------------- + +#---------------------------------------------------------------------------- +# Dependencies +#---------------------------------------------------------------------------- +# DO NOT DELETE THIS LINE -- g++dep uses it. +# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. + +.obj/Blob.o .shobj/Blob.so: Blob.cpp Blob.h \ + $(WRAPPER_ROOT)/ace/OS.h \ + $(WRAPPER_ROOT)/ace/config.h \ + $(WRAPPER_ROOT)/ace/stdcpp.h \ + $(WRAPPER_ROOT)/ace/OS.i \ + $(WRAPPER_ROOT)/ace/Trace.h \ + $(WRAPPER_ROOT)/ace/Log_Msg.h \ + $(WRAPPER_ROOT)/ace/Log_Record.h \ + $(WRAPPER_ROOT)/ace/Log_Priority.h \ + $(WRAPPER_ROOT)/ace/ACE.h \ + $(WRAPPER_ROOT)/ace/ACE.i \ + $(WRAPPER_ROOT)/ace/Log_Record.i \ + $(WRAPPER_ROOT)/ace/Connector.h \ + $(WRAPPER_ROOT)/ace/Service_Config.h \ + $(WRAPPER_ROOT)/ace/Service_Object.h \ + $(WRAPPER_ROOT)/ace/Shared_Object.h \ + $(WRAPPER_ROOT)/ace/Shared_Object.i \ + $(WRAPPER_ROOT)/ace/Event_Handler.h \ + $(WRAPPER_ROOT)/ace/Event_Handler.i \ + $(WRAPPER_ROOT)/ace/Service_Object.i \ + $(WRAPPER_ROOT)/ace/Thread_Manager.h \ + $(WRAPPER_ROOT)/ace/Thread.h \ + $(WRAPPER_ROOT)/ace/Thread.i \ + $(WRAPPER_ROOT)/ace/Synch.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ + $(WRAPPER_ROOT)/ace/Synch.i \ + $(WRAPPER_ROOT)/ace/Synch_T.h \ + $(WRAPPER_ROOT)/ace/Synch_T.i \ + $(WRAPPER_ROOT)/ace/Thread_Manager.i \ + $(WRAPPER_ROOT)/ace/Signal.h \ + $(WRAPPER_ROOT)/ace/Containers.h \ + $(WRAPPER_ROOT)/ace/Containers.i \ + $(WRAPPER_ROOT)/ace/Signal.i \ + $(WRAPPER_ROOT)/ace/Service_Config.i \ + $(WRAPPER_ROOT)/ace/Reactor.h \ + $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Handle_Set.i \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue_T.h \ + $(WRAPPER_ROOT)/ace/Time_Value.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue_T.i \ + $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Token.i \ + $(WRAPPER_ROOT)/ace/Pipe.h \ + $(WRAPPER_ROOT)/ace/Pipe.i \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ + $(WRAPPER_ROOT)/ace/SOCK_IO.h \ + $(WRAPPER_ROOT)/ace/SOCK.h \ + $(WRAPPER_ROOT)/ace/Addr.h \ + $(WRAPPER_ROOT)/ace/Addr.i \ + $(WRAPPER_ROOT)/ace/IPC_SAP.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.i \ + $(WRAPPER_ROOT)/ace/SOCK.i \ + $(WRAPPER_ROOT)/ace/SOCK_IO.i \ + $(WRAPPER_ROOT)/ace/INET_Addr.h \ + $(WRAPPER_ROOT)/ace/INET_Addr.i \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ + $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Asynch_IO.h \ + $(WRAPPER_ROOT)/ace/Timer_List.h \ + $(WRAPPER_ROOT)/ace/Timer_List_T.h \ + $(WRAPPER_ROOT)/ace/Timer_Heap.h \ + $(WRAPPER_ROOT)/ace/Timer_Heap_T.h \ + $(WRAPPER_ROOT)/ace/Timer_Wheel.h \ + $(WRAPPER_ROOT)/ace/Timer_Wheel_T.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc.i \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.i \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.i \ + $(WRAPPER_ROOT)/ace/Memory_Pool.i \ + $(WRAPPER_ROOT)/ace/Message_Block.i \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ + $(WRAPPER_ROOT)/ace/Synch_Options.h \ + $(WRAPPER_ROOT)/ace/Hash_Map_Manager.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.i \ + $(WRAPPER_ROOT)/ace/ReactorEx.i \ + $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ + $(WRAPPER_ROOT)/ace/Map_Manager.h \ + $(WRAPPER_ROOT)/ace/Map_Manager.i \ + $(WRAPPER_ROOT)/ace/Svc_Handler.h \ + $(WRAPPER_ROOT)/ace/Task.h \ + $(WRAPPER_ROOT)/ace/Task.i \ + $(WRAPPER_ROOT)/ace/Task_T.h \ + $(WRAPPER_ROOT)/ace/Task_T.i \ + $(WRAPPER_ROOT)/ace/Svc_Handler.i \ + $(WRAPPER_ROOT)/ace/Connector.i \ + $(WRAPPER_ROOT)/ace/SOCK_Connector.h \ + $(WRAPPER_ROOT)/ace/SOCK_Connector.i \ + Blob_Handler.h +.obj/Blob_Handler.o .shobj/Blob_Handler.so: Blob_Handler.cpp Blob_Handler.h \ + $(WRAPPER_ROOT)/ace/OS.h \ + $(WRAPPER_ROOT)/ace/config.h \ + $(WRAPPER_ROOT)/ace/stdcpp.h \ + $(WRAPPER_ROOT)/ace/OS.i \ + $(WRAPPER_ROOT)/ace/Trace.h \ + $(WRAPPER_ROOT)/ace/Log_Msg.h \ + $(WRAPPER_ROOT)/ace/Log_Record.h \ + $(WRAPPER_ROOT)/ace/Log_Priority.h \ + $(WRAPPER_ROOT)/ace/ACE.h \ + $(WRAPPER_ROOT)/ace/ACE.i \ + $(WRAPPER_ROOT)/ace/Log_Record.i \ + $(WRAPPER_ROOT)/ace/INET_Addr.h \ + $(WRAPPER_ROOT)/ace/Addr.h \ + $(WRAPPER_ROOT)/ace/Addr.i \ + $(WRAPPER_ROOT)/ace/INET_Addr.i \ + $(WRAPPER_ROOT)/ace/Svc_Handler.h \ + $(WRAPPER_ROOT)/ace/Synch_Options.h \ + $(WRAPPER_ROOT)/ace/Task.h \ + $(WRAPPER_ROOT)/ace/Service_Object.h \ + $(WRAPPER_ROOT)/ace/Shared_Object.h \ + $(WRAPPER_ROOT)/ace/Shared_Object.i \ + $(WRAPPER_ROOT)/ace/Event_Handler.h \ + $(WRAPPER_ROOT)/ace/Event_Handler.i \ + $(WRAPPER_ROOT)/ace/Service_Object.i \ + $(WRAPPER_ROOT)/ace/Thread_Manager.h \ + $(WRAPPER_ROOT)/ace/Thread.h \ + $(WRAPPER_ROOT)/ace/Thread.i \ + $(WRAPPER_ROOT)/ace/Synch.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ + $(WRAPPER_ROOT)/ace/Synch.i \ + $(WRAPPER_ROOT)/ace/Synch_T.h \ + $(WRAPPER_ROOT)/ace/Synch_T.i \ + $(WRAPPER_ROOT)/ace/Thread_Manager.i \ + $(WRAPPER_ROOT)/ace/Task.i \ + $(WRAPPER_ROOT)/ace/Task_T.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc.i \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.i \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Signal.h \ + $(WRAPPER_ROOT)/ace/Containers.h \ + $(WRAPPER_ROOT)/ace/Containers.i \ + $(WRAPPER_ROOT)/ace/Signal.i \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.i \ + $(WRAPPER_ROOT)/ace/Memory_Pool.i \ + $(WRAPPER_ROOT)/ace/Message_Block.i \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ + $(WRAPPER_ROOT)/ace/Service_Config.h \ + $(WRAPPER_ROOT)/ace/Service_Config.i \ + $(WRAPPER_ROOT)/ace/Reactor.h \ + $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Handle_Set.i \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue_T.h \ + $(WRAPPER_ROOT)/ace/Time_Value.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue_T.i \ + $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Token.i \ + $(WRAPPER_ROOT)/ace/Pipe.h \ + $(WRAPPER_ROOT)/ace/Pipe.i \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ + $(WRAPPER_ROOT)/ace/SOCK_IO.h \ + $(WRAPPER_ROOT)/ace/SOCK.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.i \ + $(WRAPPER_ROOT)/ace/SOCK.i \ + $(WRAPPER_ROOT)/ace/SOCK_IO.i \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ + $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Asynch_IO.h \ + $(WRAPPER_ROOT)/ace/Timer_List.h \ + $(WRAPPER_ROOT)/ace/Timer_List_T.h \ + $(WRAPPER_ROOT)/ace/Timer_Heap.h \ + $(WRAPPER_ROOT)/ace/Timer_Heap_T.h \ + $(WRAPPER_ROOT)/ace/Timer_Wheel.h \ + $(WRAPPER_ROOT)/ace/Timer_Wheel_T.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.i \ + $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ + $(WRAPPER_ROOT)/ace/Hash_Map_Manager.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.i \ + $(WRAPPER_ROOT)/ace/Task_T.i \ + $(WRAPPER_ROOT)/ace/Svc_Handler.i +.obj/Options.o .shobj/Options.so: Options.cpp Blob.h \ + $(WRAPPER_ROOT)/ace/OS.h \ + $(WRAPPER_ROOT)/ace/config.h \ + $(WRAPPER_ROOT)/ace/stdcpp.h \ + $(WRAPPER_ROOT)/ace/OS.i \ + $(WRAPPER_ROOT)/ace/Trace.h \ + $(WRAPPER_ROOT)/ace/Log_Msg.h \ + $(WRAPPER_ROOT)/ace/Log_Record.h \ + $(WRAPPER_ROOT)/ace/Log_Priority.h \ + $(WRAPPER_ROOT)/ace/ACE.h \ + $(WRAPPER_ROOT)/ace/ACE.i \ + $(WRAPPER_ROOT)/ace/Log_Record.i \ + $(WRAPPER_ROOT)/ace/Connector.h \ + $(WRAPPER_ROOT)/ace/Service_Config.h \ + $(WRAPPER_ROOT)/ace/Service_Object.h \ + $(WRAPPER_ROOT)/ace/Shared_Object.h \ + $(WRAPPER_ROOT)/ace/Shared_Object.i \ + $(WRAPPER_ROOT)/ace/Event_Handler.h \ + $(WRAPPER_ROOT)/ace/Event_Handler.i \ + $(WRAPPER_ROOT)/ace/Service_Object.i \ + $(WRAPPER_ROOT)/ace/Thread_Manager.h \ + $(WRAPPER_ROOT)/ace/Thread.h \ + $(WRAPPER_ROOT)/ace/Thread.i \ + $(WRAPPER_ROOT)/ace/Synch.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.h \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Simple.i \ + $(WRAPPER_ROOT)/ace/SV_Semaphore_Complex.i \ + $(WRAPPER_ROOT)/ace/Synch.i \ + $(WRAPPER_ROOT)/ace/Synch_T.h \ + $(WRAPPER_ROOT)/ace/Synch_T.i \ + $(WRAPPER_ROOT)/ace/Thread_Manager.i \ + $(WRAPPER_ROOT)/ace/Signal.h \ + $(WRAPPER_ROOT)/ace/Containers.h \ + $(WRAPPER_ROOT)/ace/Containers.i \ + $(WRAPPER_ROOT)/ace/Signal.i \ + $(WRAPPER_ROOT)/ace/Service_Config.i \ + $(WRAPPER_ROOT)/ace/Reactor.h \ + $(WRAPPER_ROOT)/ace/Handle_Set.h \ + $(WRAPPER_ROOT)/ace/Handle_Set.i \ + $(WRAPPER_ROOT)/ace/Timer_Queue.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue_T.h \ + $(WRAPPER_ROOT)/ace/Time_Value.h \ + $(WRAPPER_ROOT)/ace/Timer_Queue_T.i \ + $(WRAPPER_ROOT)/ace/Token.h \ + $(WRAPPER_ROOT)/ace/Token.i \ + $(WRAPPER_ROOT)/ace/Pipe.h \ + $(WRAPPER_ROOT)/ace/Pipe.i \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.h \ + $(WRAPPER_ROOT)/ace/SOCK_IO.h \ + $(WRAPPER_ROOT)/ace/SOCK.h \ + $(WRAPPER_ROOT)/ace/Addr.h \ + $(WRAPPER_ROOT)/ace/Addr.i \ + $(WRAPPER_ROOT)/ace/IPC_SAP.h \ + $(WRAPPER_ROOT)/ace/IPC_SAP.i \ + $(WRAPPER_ROOT)/ace/SOCK.i \ + $(WRAPPER_ROOT)/ace/SOCK_IO.i \ + $(WRAPPER_ROOT)/ace/INET_Addr.h \ + $(WRAPPER_ROOT)/ace/INET_Addr.i \ + $(WRAPPER_ROOT)/ace/SOCK_Stream.i \ + $(WRAPPER_ROOT)/ace/Reactor.i \ + $(WRAPPER_ROOT)/ace/Proactor.h \ + $(WRAPPER_ROOT)/ace/Asynch_IO.h \ + $(WRAPPER_ROOT)/ace/Timer_List.h \ + $(WRAPPER_ROOT)/ace/Timer_List_T.h \ + $(WRAPPER_ROOT)/ace/Timer_Heap.h \ + $(WRAPPER_ROOT)/ace/Timer_Heap_T.h \ + $(WRAPPER_ROOT)/ace/Timer_Wheel.h \ + $(WRAPPER_ROOT)/ace/Timer_Wheel_T.h \ + $(WRAPPER_ROOT)/ace/ReactorEx.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.h \ + $(WRAPPER_ROOT)/ace/Message_Block.h \ + $(WRAPPER_ROOT)/ace/Malloc.h \ + $(WRAPPER_ROOT)/ace/Malloc.i \ + $(WRAPPER_ROOT)/ace/Malloc_T.h \ + $(WRAPPER_ROOT)/ace/Malloc_T.i \ + $(WRAPPER_ROOT)/ace/Memory_Pool.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.h \ + $(WRAPPER_ROOT)/ace/Mem_Map.i \ + $(WRAPPER_ROOT)/ace/Memory_Pool.i \ + $(WRAPPER_ROOT)/ace/Message_Block.i \ + $(WRAPPER_ROOT)/ace/IO_Cntl_Msg.h \ + $(WRAPPER_ROOT)/ace/Strategies.h \ + $(WRAPPER_ROOT)/ace/Strategies_T.h \ + $(WRAPPER_ROOT)/ace/Synch_Options.h \ + $(WRAPPER_ROOT)/ace/Hash_Map_Manager.h \ + $(WRAPPER_ROOT)/ace/Message_Queue.i \ + $(WRAPPER_ROOT)/ace/ReactorEx.i \ + $(WRAPPER_ROOT)/ace/Svc_Conf_Tokens.h \ + $(WRAPPER_ROOT)/ace/Map_Manager.h \ + $(WRAPPER_ROOT)/ace/Map_Manager.i \ + $(WRAPPER_ROOT)/ace/Svc_Handler.h \ + $(WRAPPER_ROOT)/ace/Task.h \ + $(WRAPPER_ROOT)/ace/Task.i \ + $(WRAPPER_ROOT)/ace/Task_T.h \ + $(WRAPPER_ROOT)/ace/Task_T.i \ + $(WRAPPER_ROOT)/ace/Svc_Handler.i \ + $(WRAPPER_ROOT)/ace/Connector.i \ + $(WRAPPER_ROOT)/ace/SOCK_Connector.h \ + $(WRAPPER_ROOT)/ace/SOCK_Connector.i \ + Blob_Handler.h \ + $(WRAPPER_ROOT)/ace/Get_Opt.h \ + $(WRAPPER_ROOT)/ace/Get_Opt.i \ + $(WRAPPER_ROOT)/ace/ARGV.h \ + $(WRAPPER_ROOT)/ace/ARGV.i Options.h + +# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/apps/JAWS/clients/Blobby/Options.cpp b/apps/JAWS/clients/Blobby/Options.cpp new file mode 100644 index 00000000000..3c8a9dece3a --- /dev/null +++ b/apps/JAWS/clients/Blobby/Options.cpp @@ -0,0 +1,79 @@ +// $Id$ + +#include "Blob.h" +#include "Blob_Handler.h" +#include "ace/Get_Opt.h" +#include "ace/ARGV.h" +#include "Options.h" + +Options *Options::instance_ = 0; + +Options * +Options::instance (void) +{ + + if (Options::instance_ == 0) + Options::instance_ = new Options; + + return Options::instance_; +} + +void +Options::parse_args (int argc, char *argv[]) +{ + ACE_Get_Opt get_opt (argc, argv, "rwh:p:f:l:o:d"); + + int c; + + while ((c = get_opt ()) != -1) + switch (c) + { + case 'd': + this->debug_ = 1; + break; + case 'r': + this->operation_ = 'r'; + break; + case 'w': + this->operation_ = 'w'; + break; + case 'h': + this->hostname_ = get_opt.optarg; + break; + case 'p': + this->port_ = ACE_OS::atoi (get_opt.optarg); + break; + case 'f': + this->filename_ = get_opt.optarg; + break; + case 'l': + this->length_ = ACE_OS::atoi (get_opt.optarg); + break; + case 'o': + this->offset_ = ACE_OS::atoi (get_opt.optarg); + break; + // Usage fallthrough. + default: + ACE_DEBUG ((LM_DEBUG, "%s -h hostname -f filename -[r/w] [-p port] [-l length] [-o offset] [-d]\n", argv[0])); + ACE_OS::exit (1); + } + if (this->hostname_ == NULL || this->filename_ == NULL) + { + ACE_DEBUG ((LM_DEBUG, + "%s -h hostname -f filename -[r/w] [-p port] [-l length] [-o offset] [-d]\n", + argv[0])); + ACE_OS::exit (1); + } + +} + +Options::Options (void) + : hostname_ (NULL), + port_ (ACE_DEFAULT_HTTP_SERVER_PORT), + filename_ (NULL), + length_ (0), + offset_ (0), + operation_ ('r'), + debug_ (0) +{ +} diff --git a/apps/JAWS/clients/Blobby/Options.h b/apps/JAWS/clients/Blobby/Options.h new file mode 100644 index 00000000000..086fa003a37 --- /dev/null +++ b/apps/JAWS/clients/Blobby/Options.h @@ -0,0 +1,66 @@ +/* -*- C++ -*- */ +// $Id$ + +//============================================================================ +// +// = LIBRARY +// JAWS +// +// = FILENAME +// Options.h +// +// = DESCRIPTION +// Options is an Singleton for blobby +// +// = AUTHOR +// Prashant Jain and Sumedh Mungee +// +//============================================================================ + +#if !defined (ACE_BLOBBY_OPTIONS_H) +#define ACE_BLOBBY_OPTIONS_H + +#include "Blob.h" +#include "Blob_Handler.h" +#include "ace/Get_Opt.h" +#include "ace/ARGV.h" + +class Options +{ +public: + static Options *instance (void); + // Returns the singleton instance + + void parse_args (int argc, char *argv[]); + // parses commandline arguments + + char *hostname_; + // Hostname to connect to + + u_short port_; + // Port number to use + + char *filename_; + // Filename to upload/download + + int length_; + // number of bytes to read/write + + int offset_; + // offset to read/write + + char operation_; + // "r" means download (read), and "w" means upload (write). + + int debug_; + // turns on verbosity + +protected: + Options (void); + // protected constructor, singleton + + static Options *instance_; + // the singleton +}; + +#endif /* ACE_BLOBBY_OPTIONS_H */ diff --git a/apps/JAWS/clients/Blobby/README b/apps/JAWS/clients/Blobby/README new file mode 100644 index 00000000000..1a1cadf91ca --- /dev/null +++ b/apps/JAWS/clients/Blobby/README @@ -0,0 +1,33 @@ +README for blobby, the example application for JAWS +--------------------------------------------------- + +Blobby is a simple application written using the ACE_Blob class, which +is capable of doing both file uploads and downloads from the JAWS +server. + +If a file is downloaded, the downloaded data is sent to standard +output, so that it can be piped as necessary. + +It is an ACE application, and should be compiled exactly like any +other ACE application. + +It accepts the following command line arguments: + + + -r Read (download) the file from the server + -w Write (upload) the file to the server + (Default is Read file) + + -h hostname Use the server running on hostname + (Default is localhost) + + -p port Port number of the server + (Default is 80) + + -f filename The file to upload/download from the server + + -l length The number of bytes to read/write from the server + -o offset The offset into the file to be read/written + + -d Puts blobby into debug mode, where it echoes + its command line arguments diff --git a/apps/JAWS/clients/Blobby/blobby.cpp b/apps/JAWS/clients/Blobby/blobby.cpp new file mode 100644 index 00000000000..20a2e1b8e98 --- /dev/null +++ b/apps/JAWS/clients/Blobby/blobby.cpp @@ -0,0 +1,97 @@ +/* -*- C++ -*- */ +// $Id$ + +//============================================================================ +// +// = LIBRARY +// JAWS +// +// = FILENAME +// blobby.c +// +// = DESCRIPTION +// Simple client application to illustrate the use of the ACE_Blob class +// +// It reads "length" number of bytes, after skipping offset "offset" +// from hostname, port and filename as specified. (if -r specified) +// +// It writes "length" number of bytes, after skipping offset "offset" +// to hostname, port and filename as specified (if -w specified) +// +// = AUTHOR +// Prashant Jain and Sumedh Mungee +// +//============================================================================ + +#include "Options.h" + +int +main (int argc, char *argv[]) +{ + // Options is a singleton + Options *options = Options::instance (); + options->parse_args (argc, argv); + + // Explain what is going to happen + if (options->debug_) + ACE_DEBUG ((LM_DEBUG, + "hostname = %s, port = %d, filename = %s, length = %d, offset = %d, operation = %c\n", + options->hostname_, + options->port_, + options->filename_, + options->length_, + options->offset_, + options->operation_)); + + // Create a blob + ACE_Blob blob; + + // User requested a read + if (options->operation_ == 'r') + { + ACE_Message_Block mb (0, options->length_); + + // Open the blob + if (blob.open (options->filename_, options->hostname_, options->port_) == -1) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "open error"), -1); + + // Read from it + if (blob.read (&mb, options->length_, options->offset_) == -1) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "read error"), -1); + + // Write to STDOUT + if (ACE_OS::write (ACE_STDOUT, mb.rd_ptr(), mb.length()) == -1) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "write error"), -1); + } + else + { + int total = options->length_ + options->offset_; + ACE_Message_Block mb (total); + + // Open the file to be sent + ACE_HANDLE h = ACE_OS::open (options->filename_, O_RDONLY); + if (h == ACE_INVALID_HANDLE) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "file open error"), -1); + + // Open the blob + if (blob.open (options->filename_, options->hostname_, options->port_) == -1) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "connection open error"), -1); + + // Read from the file + if (ACE_OS::read (h, mb.wr_ptr (), total) != total) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "file read error"), -1); + + // Close the file + ACE_OS::close (h); + + // Adjust the offset + mb.wr_ptr (mb.size ()); + + // Write to the blob + if (blob.write (&mb, options->length_, options->offset_) == -1) + ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "network write error"), -1); + } + + blob.close (); + return 0; +} diff --git a/apps/JAWS/clients/Blobby/blobby.mak b/apps/JAWS/clients/Blobby/blobby.mak new file mode 100644 index 00000000000..20166f992bb --- /dev/null +++ b/apps/JAWS/clients/Blobby/blobby.mak @@ -0,0 +1,694 @@ +# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+!IF "$(CFG)" == ""
+CFG=blobby - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to blobby - Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "blobby - Win32 Release" && "$(CFG)" != "blobby - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE on this makefile
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "blobby.mak" CFG="blobby - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "blobby - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "blobby - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+################################################################################
+# Begin Project
+# PROP Target_Last_Scanned "blobby - Win32 Debug"
+RSC=rc.exe
+CPP=cl.exe
+
+!IF "$(CFG)" == "blobby - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+OUTDIR=.\.
+INTDIR=.\Release
+
+ALL : "$(OUTDIR)\blobby.exe"
+
+CLEAN :
+ -@erase "$(INTDIR)\Blob.obj"
+ -@erase "$(INTDIR)\Blob_Handler.obj"
+ -@erase "$(INTDIR)\blobby.obj"
+ -@erase "$(INTDIR)\blobby_options.obj"
+ -@erase "$(OUTDIR)\blobby.exe"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+ if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /MDd /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
+ /Fp"$(INTDIR)/blobby.pch" /YX /Fo"$(INTDIR)/" /c
+CPP_OBJS=.\Release/
+CPP_SBRS=.\.
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/blobby.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ace.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+LINK32_FLAGS=ace.lib kernel32.lib user32.lib gdi32.lib winspool.lib\
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib\
+ odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)/blobby.pdb" /machine:I386 /out:"$(OUTDIR)/blobby.exe"
+LINK32_OBJS= \
+ "$(INTDIR)\Blob.obj" \
+ "$(INTDIR)\Blob_Handler.obj" \
+ "$(INTDIR)\blobby.obj" \
+ "$(INTDIR)\blobby_options.obj"
+
+"$(OUTDIR)\blobby.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "blobby - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "."
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+OUTDIR=.\.
+INTDIR=.\Debug
+
+ALL : "$(OUTDIR)\blobby.exe"
+
+CLEAN :
+ -@erase "$(INTDIR)\Blob.obj"
+ -@erase "$(INTDIR)\Blob_Handler.obj"
+ -@erase "$(INTDIR)\blobby.obj"
+ -@erase "$(INTDIR)\blobby_options.obj"
+ -@erase "$(INTDIR)\vc40.idb"
+ -@erase "$(INTDIR)\vc40.pdb"
+ -@erase "$(OUTDIR)\blobby.exe"
+ -@erase "$(OUTDIR)\blobby.ilk"
+ -@erase "$(OUTDIR)\blobby.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+"$(INTDIR)" :
+ if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
+
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\
+ /Fp"$(INTDIR)/blobby.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
+CPP_OBJS=.\Debug/
+CPP_SBRS=.\.
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/blobby.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 ace.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+LINK32_FLAGS=ace.lib kernel32.lib user32.lib gdi32.lib winspool.lib\
+ comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib\
+ odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes\
+ /pdb:"$(OUTDIR)/blobby.pdb" /debug /machine:I386 /out:"$(OUTDIR)/blobby.exe"
+LINK32_OBJS= \
+ "$(INTDIR)\Blob.obj" \
+ "$(INTDIR)\Blob_Handler.obj" \
+ "$(INTDIR)\blobby.obj" \
+ "$(INTDIR)\blobby_options.obj"
+
+"$(OUTDIR)\blobby.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+.c{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_OBJS)}.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.c{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx{$(CPP_SBRS)}.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+################################################################################
+# Begin Target
+
+# Name "blobby - Win32 Release"
+# Name "blobby - Win32 Debug"
+
+!IF "$(CFG)" == "blobby - Win32 Release"
+
+!ELSEIF "$(CFG)" == "blobby - Win32 Debug"
+
+!ENDIF
+
+################################################################################
+# Begin Source File
+
+SOURCE=.\blobby.cpp
+DEP_CPP_BLOBB=\
+ ".\Blob.h"\
+ ".\Blob_Handler.h"\
+ ".\blobby_options.h"\
+ {$(INCLUDE)}"\ace\ACE.h"\
+ {$(INCLUDE)}"\ace\ACE.i"\
+ {$(INCLUDE)}"\ace\Addr.h"\
+ {$(INCLUDE)}"\ace\Addr.i"\
+ {$(INCLUDE)}"\ace\ARGV.h"\
+ {$(INCLUDE)}"\ace\ARGV.i"\
+ {$(INCLUDE)}"\ace\Asynch_IO.h"\
+ {$(INCLUDE)}"\ace\Asynch_IO.i"\
+ {$(INCLUDE)}"\ace\config-win32-common.h"\
+ {$(INCLUDE)}"\ace\config.h"\
+ {$(INCLUDE)}"\ace\Connector.cpp"\
+ {$(INCLUDE)}"\ace\Connector.h"\
+ {$(INCLUDE)}"\ace\Connector.i"\
+ {$(INCLUDE)}"\ace\Dynamic.h"\
+ {$(INCLUDE)}"\ace\Dynamic.i"\
+ {$(INCLUDE)}"\ace\Event_Handler.h"\
+ {$(INCLUDE)}"\ace\Event_Handler.i"\
+ {$(INCLUDE)}"\ace\Get_Opt.h"\
+ {$(INCLUDE)}"\ace\Get_Opt.i"\
+ {$(INCLUDE)}"\ace\Handle_Set.h"\
+ {$(INCLUDE)}"\ace\Handle_Set.i"\
+ {$(INCLUDE)}"\ace\INET_Addr.h"\
+ {$(INCLUDE)}"\ace\INET_Addr.i"\
+ {$(INCLUDE)}"\ace\IO_Cntl_Msg.h"\
+ {$(INCLUDE)}"\ace\IPC_SAP.h"\
+ {$(INCLUDE)}"\ace\IPC_SAP.i"\
+ {$(INCLUDE)}"\ace\Local_Tokens.h"\
+ {$(INCLUDE)}"\ace\Local_Tokens.i"\
+ {$(INCLUDE)}"\ace\Log_Msg.h"\
+ {$(INCLUDE)}"\ace\Log_Priority.h"\
+ {$(INCLUDE)}"\ace\Log_Record.h"\
+ {$(INCLUDE)}"\ace\Log_Record.i"\
+ {$(INCLUDE)}"\ace\Malloc.h"\
+ {$(INCLUDE)}"\ace\Malloc.i"\
+ {$(INCLUDE)}"\ace\Malloc_T.cpp"\
+ {$(INCLUDE)}"\ace\Malloc_T.h"\
+ {$(INCLUDE)}"\ace\Malloc_T.i"\
+ {$(INCLUDE)}"\ace\Map_Manager.cpp"\
+ {$(INCLUDE)}"\ace\Map_Manager.h"\
+ {$(INCLUDE)}"\ace\Map_Manager.i"\
+ {$(INCLUDE)}"\ace\Mem_Map.h"\
+ {$(INCLUDE)}"\ace\Mem_Map.i"\
+ {$(INCLUDE)}"\ace\Memory_Pool.h"\
+ {$(INCLUDE)}"\ace\Memory_Pool.i"\
+ {$(INCLUDE)}"\ace\Message_Block.h"\
+ {$(INCLUDE)}"\ace\Message_Block.i"\
+ {$(INCLUDE)}"\ace\Message_Queue.cpp"\
+ {$(INCLUDE)}"\ace\Message_Queue.h"\
+ {$(INCLUDE)}"\ace\Message_Queue.i"\
+ {$(INCLUDE)}"\ace\Module.cpp"\
+ {$(INCLUDE)}"\ace\Module.h"\
+ {$(INCLUDE)}"\ace\Module.i"\
+ {$(INCLUDE)}"\ace\OS.h"\
+ {$(INCLUDE)}"\ace\OS.i"\
+ {$(INCLUDE)}"\ace\Pipe.h"\
+ {$(INCLUDE)}"\ace\Pipe.i"\
+ {$(INCLUDE)}"\ace\Proactor.h"\
+ {$(INCLUDE)}"\ace\Proactor.i"\
+ {$(INCLUDE)}"\ace\Reactor.h"\
+ {$(INCLUDE)}"\ace\Reactor.i"\
+ {$(INCLUDE)}"\ace\ReactorEx.h"\
+ {$(INCLUDE)}"\ace\ReactorEx.i"\
+ {$(INCLUDE)}"\ace\Service_Config.h"\
+ {$(INCLUDE)}"\ace\Service_Config.i"\
+ {$(INCLUDE)}"\ace\Service_Object.h"\
+ {$(INCLUDE)}"\ace\Service_Object.i"\
+ {$(INCLUDE)}"\ace\Set.cpp"\
+ {$(INCLUDE)}"\ace\Set.h"\
+ {$(INCLUDE)}"\ace\Set.i"\
+ {$(INCLUDE)}"\ace\Shared_Object.h"\
+ {$(INCLUDE)}"\ace\Shared_Object.i"\
+ {$(INCLUDE)}"\ace\Signal.h"\
+ {$(INCLUDE)}"\ace\Signal.i"\
+ {$(INCLUDE)}"\ace\SOCK.h"\
+ {$(INCLUDE)}"\ace\SOCK.i"\
+ {$(INCLUDE)}"\ace\SOCK_Connector.h"\
+ {$(INCLUDE)}"\ace\SOCK_Connector.i"\
+ {$(INCLUDE)}"\ace\SOCK_IO.h"\
+ {$(INCLUDE)}"\ace\SOCK_IO.i"\
+ {$(INCLUDE)}"\ace\SOCK_Stream.h"\
+ {$(INCLUDE)}"\ace\SOCK_Stream.i"\
+ {$(INCLUDE)}"\ace\SString.h"\
+ {$(INCLUDE)}"\ace\SString.i"\
+ {$(INCLUDE)}"\ace\Stack.cpp"\
+ {$(INCLUDE)}"\ace\Stack.h"\
+ {$(INCLUDE)}"\ace\Stack.i"\
+ {$(INCLUDE)}"\ace\stdcpp.h"\
+ {$(INCLUDE)}"\ace\Strategies.h"\
+ {$(INCLUDE)}"\ace\Strategies_T.cpp"\
+ {$(INCLUDE)}"\ace\Strategies_T.h"\
+ {$(INCLUDE)}"\ace\Stream_Modules.cpp"\
+ {$(INCLUDE)}"\ace\Stream_Modules.h"\
+ {$(INCLUDE)}"\ace\Stream_Modules.i"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Complex.h"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Complex.i"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Simple.h"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Simple.i"\
+ {$(INCLUDE)}"\ace\Svc_Conf_Tokens.h"\
+ {$(INCLUDE)}"\ace\Svc_Handler.cpp"\
+ {$(INCLUDE)}"\ace\Svc_Handler.h"\
+ {$(INCLUDE)}"\ace\Svc_Handler.i"\
+ {$(INCLUDE)}"\ace\Synch.h"\
+ {$(INCLUDE)}"\ace\Synch.i"\
+ {$(INCLUDE)}"\ace\Synch_Options.h"\
+ {$(INCLUDE)}"\ace\Synch_T.cpp"\
+ {$(INCLUDE)}"\ace\Synch_T.h"\
+ {$(INCLUDE)}"\ace\Synch_T.i"\
+ {$(INCLUDE)}"\ace\Task.h"\
+ {$(INCLUDE)}"\ace\Task.i"\
+ {$(INCLUDE)}"\ace\Task_T.cpp"\
+ {$(INCLUDE)}"\ace\Task_T.h"\
+ {$(INCLUDE)}"\ace\Task_T.i"\
+ {$(INCLUDE)}"\ace\Thread.h"\
+ {$(INCLUDE)}"\ace\Thread.i"\
+ {$(INCLUDE)}"\ace\Thread_Manager.h"\
+ {$(INCLUDE)}"\ace\Thread_Manager.i"\
+ {$(INCLUDE)}"\ace\Time_Value.h"\
+ {$(INCLUDE)}"\ace\Timer_Heap.h"\
+ {$(INCLUDE)}"\ace\Timer_Heap_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_Heap_T.h"\
+ {$(INCLUDE)}"\ace\Timer_List.h"\
+ {$(INCLUDE)}"\ace\Timer_List_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_List_T.h"\
+ {$(INCLUDE)}"\ace\Timer_Queue.h"\
+ {$(INCLUDE)}"\ace\Timer_Queue_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_Queue_T.h"\
+ {$(INCLUDE)}"\ace\Timer_Queue_T.i"\
+ {$(INCLUDE)}"\ace\Timer_Wheel.h"\
+ {$(INCLUDE)}"\ace\Timer_Wheel_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_Wheel_T.h"\
+ {$(INCLUDE)}"\ace\Token.h"\
+ {$(INCLUDE)}"\ace\Token.i"\
+ {$(INCLUDE)}"\ace\Trace.h"\
+ {$(INCLUDE)}"\ace\ws2tcpip.h"\
+
+
+"$(INTDIR)\blobby.obj" : $(SOURCE) $(DEP_CPP_BLOBB) "$(INTDIR)"
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE=.\Blob_Handler.cpp
+
+!IF "$(CFG)" == "blobby - Win32 Release"
+
+DEP_CPP_BLOB_=\
+ ".\Blob_Handler.h"\
+ {$(INCLUDE)}"\ace\ACE.h"\
+ {$(INCLUDE)}"\ace\ACE.i"\
+ {$(INCLUDE)}"\ace\Addr.h"\
+ {$(INCLUDE)}"\ace\Addr.i"\
+ {$(INCLUDE)}"\ace\config-win32-common.h"\
+ {$(INCLUDE)}"\ace\config.h"\
+ {$(INCLUDE)}"\ace\INET_Addr.h"\
+ {$(INCLUDE)}"\ace\INET_Addr.i"\
+ {$(INCLUDE)}"\ace\Log_Msg.h"\
+ {$(INCLUDE)}"\ace\Log_Priority.h"\
+ {$(INCLUDE)}"\ace\Log_Record.h"\
+ {$(INCLUDE)}"\ace\Log_Record.i"\
+ {$(INCLUDE)}"\ace\OS.h"\
+ {$(INCLUDE)}"\ace\OS.i"\
+ {$(INCLUDE)}"\ace\stdcpp.h"\
+ {$(INCLUDE)}"\ace\Trace.h"\
+ {$(INCLUDE)}"\ace\ws2tcpip.h"\
+
+
+"$(INTDIR)\Blob_Handler.obj" : $(SOURCE) $(DEP_CPP_BLOB_) "$(INTDIR)"
+
+
+!ELSEIF "$(CFG)" == "blobby - Win32 Debug"
+
+DEP_CPP_BLOB_=\
+ ".\Blob_Handler.h"\
+ {$(INCLUDE)}"\ace\ACE.h"\
+ {$(INCLUDE)}"\ace\ACE.i"\
+ {$(INCLUDE)}"\ace\Addr.h"\
+ {$(INCLUDE)}"\ace\Addr.i"\
+ {$(INCLUDE)}"\ace\config-win32-common.h"\
+ {$(INCLUDE)}"\ace\config.h"\
+ {$(INCLUDE)}"\ace\INET_Addr.h"\
+ {$(INCLUDE)}"\ace\INET_Addr.i"\
+ {$(INCLUDE)}"\ace\OS.h"\
+ {$(INCLUDE)}"\ace\OS.i"\
+ {$(INCLUDE)}"\ace\stdcpp.h"\
+ {$(INCLUDE)}"\ace\Svc_Handler.h"\
+ {$(INCLUDE)}"\ace\ws2tcpip.h"\
+
+
+"$(INTDIR)\Blob_Handler.obj" : $(SOURCE) $(DEP_CPP_BLOB_) "$(INTDIR)"
+
+
+!ENDIF
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE=.\Blob.cpp
+DEP_CPP_BLOB_C=\
+ ".\Blob.h"\
+ ".\Blob_Handler.h"\
+ {$(INCLUDE)}"\ace\ACE.h"\
+ {$(INCLUDE)}"\ace\ACE.i"\
+ {$(INCLUDE)}"\ace\Addr.h"\
+ {$(INCLUDE)}"\ace\Addr.i"\
+ {$(INCLUDE)}"\ace\Asynch_IO.h"\
+ {$(INCLUDE)}"\ace\Asynch_IO.i"\
+ {$(INCLUDE)}"\ace\config-win32-common.h"\
+ {$(INCLUDE)}"\ace\config.h"\
+ {$(INCLUDE)}"\ace\Connector.cpp"\
+ {$(INCLUDE)}"\ace\Connector.h"\
+ {$(INCLUDE)}"\ace\Connector.i"\
+ {$(INCLUDE)}"\ace\Dynamic.h"\
+ {$(INCLUDE)}"\ace\Dynamic.i"\
+ {$(INCLUDE)}"\ace\Event_Handler.h"\
+ {$(INCLUDE)}"\ace\Event_Handler.i"\
+ {$(INCLUDE)}"\ace\Handle_Set.h"\
+ {$(INCLUDE)}"\ace\Handle_Set.i"\
+ {$(INCLUDE)}"\ace\INET_Addr.h"\
+ {$(INCLUDE)}"\ace\INET_Addr.i"\
+ {$(INCLUDE)}"\ace\IO_Cntl_Msg.h"\
+ {$(INCLUDE)}"\ace\IPC_SAP.h"\
+ {$(INCLUDE)}"\ace\IPC_SAP.i"\
+ {$(INCLUDE)}"\ace\Local_Tokens.h"\
+ {$(INCLUDE)}"\ace\Local_Tokens.i"\
+ {$(INCLUDE)}"\ace\Log_Msg.h"\
+ {$(INCLUDE)}"\ace\Log_Priority.h"\
+ {$(INCLUDE)}"\ace\Log_Record.h"\
+ {$(INCLUDE)}"\ace\Log_Record.i"\
+ {$(INCLUDE)}"\ace\Malloc.h"\
+ {$(INCLUDE)}"\ace\Malloc.i"\
+ {$(INCLUDE)}"\ace\Malloc_T.cpp"\
+ {$(INCLUDE)}"\ace\Malloc_T.h"\
+ {$(INCLUDE)}"\ace\Malloc_T.i"\
+ {$(INCLUDE)}"\ace\Map_Manager.cpp"\
+ {$(INCLUDE)}"\ace\Map_Manager.h"\
+ {$(INCLUDE)}"\ace\Map_Manager.i"\
+ {$(INCLUDE)}"\ace\Mem_Map.h"\
+ {$(INCLUDE)}"\ace\Mem_Map.i"\
+ {$(INCLUDE)}"\ace\Memory_Pool.h"\
+ {$(INCLUDE)}"\ace\Memory_Pool.i"\
+ {$(INCLUDE)}"\ace\Message_Block.h"\
+ {$(INCLUDE)}"\ace\Message_Block.i"\
+ {$(INCLUDE)}"\ace\Message_Queue.cpp"\
+ {$(INCLUDE)}"\ace\Message_Queue.h"\
+ {$(INCLUDE)}"\ace\Message_Queue.i"\
+ {$(INCLUDE)}"\ace\Module.cpp"\
+ {$(INCLUDE)}"\ace\Module.h"\
+ {$(INCLUDE)}"\ace\Module.i"\
+ {$(INCLUDE)}"\ace\OS.h"\
+ {$(INCLUDE)}"\ace\OS.i"\
+ {$(INCLUDE)}"\ace\Pipe.h"\
+ {$(INCLUDE)}"\ace\Pipe.i"\
+ {$(INCLUDE)}"\ace\Proactor.h"\
+ {$(INCLUDE)}"\ace\Proactor.i"\
+ {$(INCLUDE)}"\ace\Reactor.h"\
+ {$(INCLUDE)}"\ace\Reactor.i"\
+ {$(INCLUDE)}"\ace\ReactorEx.h"\
+ {$(INCLUDE)}"\ace\ReactorEx.i"\
+ {$(INCLUDE)}"\ace\Service_Config.h"\
+ {$(INCLUDE)}"\ace\Service_Config.i"\
+ {$(INCLUDE)}"\ace\Service_Object.h"\
+ {$(INCLUDE)}"\ace\Service_Object.i"\
+ {$(INCLUDE)}"\ace\Set.cpp"\
+ {$(INCLUDE)}"\ace\Set.h"\
+ {$(INCLUDE)}"\ace\Set.i"\
+ {$(INCLUDE)}"\ace\Shared_Object.h"\
+ {$(INCLUDE)}"\ace\Shared_Object.i"\
+ {$(INCLUDE)}"\ace\Signal.h"\
+ {$(INCLUDE)}"\ace\Signal.i"\
+ {$(INCLUDE)}"\ace\SOCK.h"\
+ {$(INCLUDE)}"\ace\SOCK.i"\
+ {$(INCLUDE)}"\ace\SOCK_Connector.h"\
+ {$(INCLUDE)}"\ace\SOCK_Connector.i"\
+ {$(INCLUDE)}"\ace\SOCK_IO.h"\
+ {$(INCLUDE)}"\ace\SOCK_IO.i"\
+ {$(INCLUDE)}"\ace\SOCK_Stream.h"\
+ {$(INCLUDE)}"\ace\SOCK_Stream.i"\
+ {$(INCLUDE)}"\ace\SString.h"\
+ {$(INCLUDE)}"\ace\SString.i"\
+ {$(INCLUDE)}"\ace\Stack.cpp"\
+ {$(INCLUDE)}"\ace\Stack.h"\
+ {$(INCLUDE)}"\ace\Stack.i"\
+ {$(INCLUDE)}"\ace\stdcpp.h"\
+ {$(INCLUDE)}"\ace\Strategies.h"\
+ {$(INCLUDE)}"\ace\Strategies_T.cpp"\
+ {$(INCLUDE)}"\ace\Strategies_T.h"\
+ {$(INCLUDE)}"\ace\Stream_Modules.cpp"\
+ {$(INCLUDE)}"\ace\Stream_Modules.h"\
+ {$(INCLUDE)}"\ace\Stream_Modules.i"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Complex.h"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Complex.i"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Simple.h"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Simple.i"\
+ {$(INCLUDE)}"\ace\Svc_Conf_Tokens.h"\
+ {$(INCLUDE)}"\ace\Svc_Handler.cpp"\
+ {$(INCLUDE)}"\ace\Svc_Handler.h"\
+ {$(INCLUDE)}"\ace\Svc_Handler.i"\
+ {$(INCLUDE)}"\ace\Synch.h"\
+ {$(INCLUDE)}"\ace\Synch.i"\
+ {$(INCLUDE)}"\ace\Synch_Options.h"\
+ {$(INCLUDE)}"\ace\Synch_T.cpp"\
+ {$(INCLUDE)}"\ace\Synch_T.h"\
+ {$(INCLUDE)}"\ace\Synch_T.i"\
+ {$(INCLUDE)}"\ace\Task.h"\
+ {$(INCLUDE)}"\ace\Task.i"\
+ {$(INCLUDE)}"\ace\Task_T.cpp"\
+ {$(INCLUDE)}"\ace\Task_T.h"\
+ {$(INCLUDE)}"\ace\Task_T.i"\
+ {$(INCLUDE)}"\ace\Thread.h"\
+ {$(INCLUDE)}"\ace\Thread.i"\
+ {$(INCLUDE)}"\ace\Thread_Manager.h"\
+ {$(INCLUDE)}"\ace\Thread_Manager.i"\
+ {$(INCLUDE)}"\ace\Time_Value.h"\
+ {$(INCLUDE)}"\ace\Timer_Heap.h"\
+ {$(INCLUDE)}"\ace\Timer_Heap_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_Heap_T.h"\
+ {$(INCLUDE)}"\ace\Timer_List.h"\
+ {$(INCLUDE)}"\ace\Timer_List_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_List_T.h"\
+ {$(INCLUDE)}"\ace\Timer_Queue.h"\
+ {$(INCLUDE)}"\ace\Timer_Queue_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_Queue_T.h"\
+ {$(INCLUDE)}"\ace\Timer_Queue_T.i"\
+ {$(INCLUDE)}"\ace\Timer_Wheel.h"\
+ {$(INCLUDE)}"\ace\Timer_Wheel_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_Wheel_T.h"\
+ {$(INCLUDE)}"\ace\Token.h"\
+ {$(INCLUDE)}"\ace\Token.i"\
+ {$(INCLUDE)}"\ace\Trace.h"\
+ {$(INCLUDE)}"\ace\ws2tcpip.h"\
+
+
+"$(INTDIR)\Blob.obj" : $(SOURCE) $(DEP_CPP_BLOB_C) "$(INTDIR)"
+
+
+# End Source File
+################################################################################
+# Begin Source File
+
+SOURCE=.\blobby_options.cpp
+DEP_CPP_BLOBBY=\
+ ".\Blob.h"\
+ ".\Blob_Handler.h"\
+ ".\blobby_options.h"\
+ {$(INCLUDE)}"\ace\ACE.h"\
+ {$(INCLUDE)}"\ace\ACE.i"\
+ {$(INCLUDE)}"\ace\Addr.h"\
+ {$(INCLUDE)}"\ace\Addr.i"\
+ {$(INCLUDE)}"\ace\ARGV.h"\
+ {$(INCLUDE)}"\ace\ARGV.i"\
+ {$(INCLUDE)}"\ace\Asynch_IO.h"\
+ {$(INCLUDE)}"\ace\Asynch_IO.i"\
+ {$(INCLUDE)}"\ace\config-win32-common.h"\
+ {$(INCLUDE)}"\ace\config.h"\
+ {$(INCLUDE)}"\ace\Connector.cpp"\
+ {$(INCLUDE)}"\ace\Connector.h"\
+ {$(INCLUDE)}"\ace\Connector.i"\
+ {$(INCLUDE)}"\ace\Dynamic.h"\
+ {$(INCLUDE)}"\ace\Dynamic.i"\
+ {$(INCLUDE)}"\ace\Event_Handler.h"\
+ {$(INCLUDE)}"\ace\Event_Handler.i"\
+ {$(INCLUDE)}"\ace\Get_Opt.h"\
+ {$(INCLUDE)}"\ace\Get_Opt.i"\
+ {$(INCLUDE)}"\ace\Handle_Set.h"\
+ {$(INCLUDE)}"\ace\Handle_Set.i"\
+ {$(INCLUDE)}"\ace\INET_Addr.h"\
+ {$(INCLUDE)}"\ace\INET_Addr.i"\
+ {$(INCLUDE)}"\ace\IO_Cntl_Msg.h"\
+ {$(INCLUDE)}"\ace\IPC_SAP.h"\
+ {$(INCLUDE)}"\ace\IPC_SAP.i"\
+ {$(INCLUDE)}"\ace\Local_Tokens.h"\
+ {$(INCLUDE)}"\ace\Local_Tokens.i"\
+ {$(INCLUDE)}"\ace\Log_Msg.h"\
+ {$(INCLUDE)}"\ace\Log_Priority.h"\
+ {$(INCLUDE)}"\ace\Log_Record.h"\
+ {$(INCLUDE)}"\ace\Log_Record.i"\
+ {$(INCLUDE)}"\ace\Malloc.h"\
+ {$(INCLUDE)}"\ace\Malloc.i"\
+ {$(INCLUDE)}"\ace\Malloc_T.cpp"\
+ {$(INCLUDE)}"\ace\Malloc_T.h"\
+ {$(INCLUDE)}"\ace\Malloc_T.i"\
+ {$(INCLUDE)}"\ace\Map_Manager.cpp"\
+ {$(INCLUDE)}"\ace\Map_Manager.h"\
+ {$(INCLUDE)}"\ace\Map_Manager.i"\
+ {$(INCLUDE)}"\ace\Mem_Map.h"\
+ {$(INCLUDE)}"\ace\Mem_Map.i"\
+ {$(INCLUDE)}"\ace\Memory_Pool.h"\
+ {$(INCLUDE)}"\ace\Memory_Pool.i"\
+ {$(INCLUDE)}"\ace\Message_Block.h"\
+ {$(INCLUDE)}"\ace\Message_Block.i"\
+ {$(INCLUDE)}"\ace\Message_Queue.cpp"\
+ {$(INCLUDE)}"\ace\Message_Queue.h"\
+ {$(INCLUDE)}"\ace\Message_Queue.i"\
+ {$(INCLUDE)}"\ace\Module.cpp"\
+ {$(INCLUDE)}"\ace\Module.h"\
+ {$(INCLUDE)}"\ace\Module.i"\
+ {$(INCLUDE)}"\ace\OS.h"\
+ {$(INCLUDE)}"\ace\OS.i"\
+ {$(INCLUDE)}"\ace\Pipe.h"\
+ {$(INCLUDE)}"\ace\Pipe.i"\
+ {$(INCLUDE)}"\ace\Proactor.h"\
+ {$(INCLUDE)}"\ace\Proactor.i"\
+ {$(INCLUDE)}"\ace\Reactor.h"\
+ {$(INCLUDE)}"\ace\Reactor.i"\
+ {$(INCLUDE)}"\ace\ReactorEx.h"\
+ {$(INCLUDE)}"\ace\ReactorEx.i"\
+ {$(INCLUDE)}"\ace\Service_Config.h"\
+ {$(INCLUDE)}"\ace\Service_Config.i"\
+ {$(INCLUDE)}"\ace\Service_Object.h"\
+ {$(INCLUDE)}"\ace\Service_Object.i"\
+ {$(INCLUDE)}"\ace\Set.cpp"\
+ {$(INCLUDE)}"\ace\Set.h"\
+ {$(INCLUDE)}"\ace\Set.i"\
+ {$(INCLUDE)}"\ace\Shared_Object.h"\
+ {$(INCLUDE)}"\ace\Shared_Object.i"\
+ {$(INCLUDE)}"\ace\Signal.h"\
+ {$(INCLUDE)}"\ace\Signal.i"\
+ {$(INCLUDE)}"\ace\SOCK.h"\
+ {$(INCLUDE)}"\ace\SOCK.i"\
+ {$(INCLUDE)}"\ace\SOCK_Connector.h"\
+ {$(INCLUDE)}"\ace\SOCK_Connector.i"\
+ {$(INCLUDE)}"\ace\SOCK_IO.h"\
+ {$(INCLUDE)}"\ace\SOCK_IO.i"\
+ {$(INCLUDE)}"\ace\SOCK_Stream.h"\
+ {$(INCLUDE)}"\ace\SOCK_Stream.i"\
+ {$(INCLUDE)}"\ace\SString.h"\
+ {$(INCLUDE)}"\ace\SString.i"\
+ {$(INCLUDE)}"\ace\Stack.cpp"\
+ {$(INCLUDE)}"\ace\Stack.h"\
+ {$(INCLUDE)}"\ace\Stack.i"\
+ {$(INCLUDE)}"\ace\stdcpp.h"\
+ {$(INCLUDE)}"\ace\Strategies.h"\
+ {$(INCLUDE)}"\ace\Strategies_T.cpp"\
+ {$(INCLUDE)}"\ace\Strategies_T.h"\
+ {$(INCLUDE)}"\ace\Stream_Modules.cpp"\
+ {$(INCLUDE)}"\ace\Stream_Modules.h"\
+ {$(INCLUDE)}"\ace\Stream_Modules.i"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Complex.h"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Complex.i"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Simple.h"\
+ {$(INCLUDE)}"\ace\SV_Semaphore_Simple.i"\
+ {$(INCLUDE)}"\ace\Svc_Conf_Tokens.h"\
+ {$(INCLUDE)}"\ace\Svc_Handler.cpp"\
+ {$(INCLUDE)}"\ace\Svc_Handler.h"\
+ {$(INCLUDE)}"\ace\Svc_Handler.i"\
+ {$(INCLUDE)}"\ace\Synch.h"\
+ {$(INCLUDE)}"\ace\Synch.i"\
+ {$(INCLUDE)}"\ace\Synch_Options.h"\
+ {$(INCLUDE)}"\ace\Synch_T.cpp"\
+ {$(INCLUDE)}"\ace\Synch_T.h"\
+ {$(INCLUDE)}"\ace\Synch_T.i"\
+ {$(INCLUDE)}"\ace\Task.h"\
+ {$(INCLUDE)}"\ace\Task.i"\
+ {$(INCLUDE)}"\ace\Task_T.cpp"\
+ {$(INCLUDE)}"\ace\Task_T.h"\
+ {$(INCLUDE)}"\ace\Task_T.i"\
+ {$(INCLUDE)}"\ace\Thread.h"\
+ {$(INCLUDE)}"\ace\Thread.i"\
+ {$(INCLUDE)}"\ace\Thread_Manager.h"\
+ {$(INCLUDE)}"\ace\Thread_Manager.i"\
+ {$(INCLUDE)}"\ace\Time_Value.h"\
+ {$(INCLUDE)}"\ace\Timer_Heap.h"\
+ {$(INCLUDE)}"\ace\Timer_Heap_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_Heap_T.h"\
+ {$(INCLUDE)}"\ace\Timer_List.h"\
+ {$(INCLUDE)}"\ace\Timer_List_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_List_T.h"\
+ {$(INCLUDE)}"\ace\Timer_Queue.h"\
+ {$(INCLUDE)}"\ace\Timer_Queue_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_Queue_T.h"\
+ {$(INCLUDE)}"\ace\Timer_Queue_T.i"\
+ {$(INCLUDE)}"\ace\Timer_Wheel.h"\
+ {$(INCLUDE)}"\ace\Timer_Wheel_T.cpp"\
+ {$(INCLUDE)}"\ace\Timer_Wheel_T.h"\
+ {$(INCLUDE)}"\ace\Token.h"\
+ {$(INCLUDE)}"\ace\Token.i"\
+ {$(INCLUDE)}"\ace\Trace.h"\
+ {$(INCLUDE)}"\ace\ws2tcpip.h"\
+
+
+"$(INTDIR)\blobby_options.obj" : $(SOURCE) $(DEP_CPP_BLOBBY) "$(INTDIR)"
+
+
+# End Source File
+# End Target
+# End Project
+################################################################################
diff --git a/apps/JAWS/clients/Blobby/blobby.mdp b/apps/JAWS/clients/Blobby/blobby.mdp Binary files differnew file mode 100644 index 00000000000..23c01c58985 --- /dev/null +++ b/apps/JAWS/clients/Blobby/blobby.mdp |