diff options
Diffstat (limited to 'apps')
399 files changed, 0 insertions, 73864 deletions
diff --git a/apps/Gateway/Gateway/Channel.cpp b/apps/Gateway/Gateway/Channel.cpp deleted file mode 100644 index 99699a6ee87..00000000000 --- a/apps/Gateway/Gateway/Channel.cpp +++ /dev/null @@ -1,710 +0,0 @@ - -// $Id$ - -#include "Routing_Entry.h" -#include "Channel_Connector.h" - -// Convenient short-hands. -#define CO CONDITION -#define MU MUTEX - -// = The total number of bytes sent/received on this channel. -size_t -Channel::total_bytes (void) -{ - return this->total_bytes_; -} - -void -Channel::total_bytes (size_t bytes) -{ - this->total_bytes_ += bytes; -} - -Channel::Channel (ROUTING_TABLE *rt, - Channel_Connector *cc, - ACE_Thread_Manager *thr_mgr, - int socket_queue_size) - : ACE_Svc_Handler<CHANNEL_PEER_STREAM, SYNCH> (thr_mgr), - routing_table_ (rt), - id_ (-1), - total_bytes_ (0), - state_ (Channel::IDLE), - connector_ (cc), - timeout_ (1), - max_timeout_ (Channel::MAX_RETRY_TIMEOUT), - socket_queue_size_ (socket_queue_size) -{ -} - -// Set the associated channel. - -void -Channel::active (int a) -{ - this->state (a == 0 ? Channel::IDLE : Channel::ESTABLISHED); -} - -// Get the associated channel. - -int -Channel::active (void) -{ - return this->state () == Channel::ESTABLISHED; -} - -// Set the direction. - -void -Channel::direction (char d) -{ - this->direction_ = d; -} - -// Get the direction. - -char -Channel::direction (void) -{ - return this->direction_; -} - -// Sets the timeout delay. - -void -Channel::timeout (int to) -{ - if (to > this->max_timeout_) - to = this->max_timeout_; - - this->timeout_ = to; -} - -// Recalculate the current retry timeout delay using exponential -// backoff. Returns the original timeout (i.e., before the -// recalculation). - -int -Channel::timeout (void) -{ - int old_timeout = this->timeout_; - this->timeout_ *= 2; - - if (this->timeout_ > this->max_timeout_) - this->timeout_ = this->max_timeout_; - - return old_timeout; -} - -// Sets the max timeout delay. - -void -Channel::max_timeout (int mto) -{ - this->max_timeout_ = mto; -} - -// Gets the max timeout delay. - -int -Channel::max_timeout (void) -{ - return this->max_timeout_; -} - -// Restart connection asynchronously when timeout occurs. - -int -Channel::handle_timeout (const ACE_Time_Value &, const void *) -{ - ACE_DEBUG ((LM_DEBUG, - "(%t) attempting to reconnect Channel %d with timeout = %d\n", - this->id (), this->timeout_)); - return this->connector_->initiate_connection (this, ACE_Synch_Options::asynch); -} - -// Restart connection (blocking_semantics dicates whether we -// restart synchronously or asynchronously). - -int -Channel::reinitiate_connection (void) -{ - // Skip over deactivated descriptors. - if (this->get_handle () != -1) - { - // Make sure to close down peer to reclaim descriptor. - this->peer ().close (); - -#if 0 -// if (this->state () == FAILED) -// { - // Reinitiate timeout to improve reconnection time. -// this->timeout (1); -#endif - - ACE_DEBUG ((LM_DEBUG, - "(%t) scheduling reinitiation of Channel %d\n", - this->id ())); - - // Reschedule ourselves to try and connect again. - if (ACE_Service_Config::reactor ()->schedule_timer (this, 0, - this->timeout ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "schedule_timer"), -1); - } - return 0; -} - -// Handle shutdown of the Channel object. - -int -Channel::handle_close (ACE_HANDLE, ACE_Reactor_Mask) -{ - ACE_DEBUG ((LM_DEBUG, "(%t) shutting down Channel %d on handle %d\n", - this->id (), this->get_handle ())); - - return this->reinitiate_connection (); -} - -// Set the state of the channel. - -void -Channel::state (Channel::State s) -{ - this->state_ = s; -} - -// Perform the first-time initiation of a connection to the peer. - -int -Channel::initialize_connection (void) -{ - this->state_ = Channel::ESTABLISHED; - - // Restart the timeout to 1. - this->timeout (1); - -#if defined (ASSIGN_ROUTING_ID) - // Action that sends the route id to the peerd. - - CONN_ID id = htons (this->id ()); - - ssize_t n = this->peer ().send ((const void *) &id, sizeof id); - - if (n != sizeof id) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - n == 0 ? "gatewayd has closed down unexpectedly" : "send"), -1); -#endif /* ASSIGN_ROUTING_ID */ - return 0; -} - -// Set the size of the socket queue. - -void -Channel::socket_queue_size (void) -{ - if (this->socket_queue_size_ > 0) - { - int option = this->direction_ == 'I' ? SO_RCVBUF : SO_SNDBUF; - - if (this->peer ().set_option (SOL_SOCKET, option, - &this->socket_queue_size_, sizeof (int)) == -1) - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "set_option")); - } -} - -// Upcall from the ACE_Acceptor::handle_input() that -// delegates control to our application-specific Channel. - -int -Channel::open (void *a) -{ - ACE_DEBUG ((LM_DEBUG, "(%t) Channel's fd = %d\n", this->peer ().get_handle ())); - - // Set the size of the socket queue. - this->socket_queue_size (); - - // Turn on non-blocking I/O. - if (this->peer ().enable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enable"), -1); - - // Call down to the base class to activate and register this handler. - if (this->ACE_Svc_Handler<CHANNEL_PEER_STREAM, SYNCH>::open (a) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "activate"), -1); - - return this->initialize_connection (); -} - -// Return the current state of the channel. - -Channel::State -Channel::state (void) -{ - return this->state_; -} - -void -Channel::id (CONN_ID id) -{ - this->id_ = id; -} - -CONN_ID -Channel::id (void) -{ - return this->id_; -} - -// Set the peer's address information. -int -Channel::bind (const ACE_INET_Addr &remote_addr, - const ACE_INET_Addr &local_addr, - CONN_ID id) -{ - this->remote_addr_ = remote_addr; - this->local_addr_ = local_addr; - this->id_ = id; - return 0; -} - -ACE_INET_Addr & -Channel::remote_addr (void) -{ - return this->remote_addr_; -} - -ACE_INET_Addr & -Channel::local_addr (void) -{ - return this->local_addr_; -} - -// Constructor sets the routing table pointer. - -Output_Channel::Output_Channel (ROUTING_TABLE *rt, - Channel_Connector *cc, - ACE_Thread_Manager *thr_mgr, - int socket_queue_size) - : Channel (rt, cc, thr_mgr, socket_queue_size) -{ - this->direction_ = 'O'; - this->msg_queue ()->high_water_mark (Output_Channel::QUEUE_SIZE); -} - -// This method should be called only when the peer shuts down -// unexpectedly. This method simply marks the Channel as -// having failed so that handle_close () can reconnect. - -int -Output_Channel::handle_input (ACE_HANDLE) -{ - char buf[1]; - - this->state (Channel::FAILED); - - switch (this->peer ().recv (buf, sizeof buf)) - { - case -1: - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Peer has failed unexpectedly for Output Channel %d\n", - this->id ()), -1); - /* NOTREACHED */ - case 0: - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Peer has shutdown unexpectedly for Output Channel %d\n", - this->id ()), -1); - /* NOTREACHED */ - default: - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Peer is sending input on Output Channel %d\n", - this->id ()), -1); - /* NOTREACHED */ - } -} - -int -Output_Channel::svc (void) -{ - ACE_ERROR_RETURN ((LM_ERROR, "(%t) svc should not be called on Output_Channel!\n"), -1); -} - -// Perform a non-blocking put() of message MB. If we are unable to -// send the entire message the remainder is re-queued at the *front* of -// the Message_List. - -int -Output_Channel::nonblk_put (ACE_Message_Block *mb) -{ - // Try to send the message. If we don't send it all (e.g., due to - // flow control), then re-queue the remainder at the head of the - // Message_List and ask the ACE_Reactor to inform us (via - // handle_output()) when it is possible to try again. - - ssize_t n; - - if ((n = this->send_peer (mb)) == -1) - { - // Things have gone wrong, let's try to close down and set up a new reconnection. - this->state (Channel::FAILED); - this->handle_close (); - return -1; - } - else if (errno == EWOULDBLOCK) // Didn't manage to send everything. - { - ACE_DEBUG ((LM_DEBUG, "(%t) queueing activated on handle %d to routing id %d\n", - this->get_handle (), this->id ())); - - // ACE_Queue in *front* of the list to preserve order. - if (this->msg_queue ()->enqueue_head (mb, (ACE_Time_Value *) &ACE_Time_Value::zero) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enqueue_head"), -1); - - // Tell ACE_Reactor to call us back when we can send again. - else if (ACE_Service_Config::reactor ()-> - schedule_wakeup (this, ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "schedule_wakeup"), -1); - return 0; - } - else - return n; -} - -int -Output_Channel::send_peer (ACE_Message_Block *mb) -{ - ssize_t n; - size_t len = mb->length (); - - if ((n = this->peer ().send (mb->rd_ptr (), len)) <= 0) - return errno == EWOULDBLOCK ? 0 : n; - else if (n < len) - // Re-adjust pointer to skip over the part we did send. - mb->rd_ptr (n); - else /* if (n == length) */ - { - // The whole message is sent, we can now safely deallocate the buffer. - // Note that this should decrement a reference count... - delete mb; - errno = 0; - } - this->total_bytes (n); - return n; -} - -// Finish sending a message when flow control conditions abate. -// This method is automatically called by the ACE_Reactor. - -int -Output_Channel::handle_output (ACE_HANDLE) -{ - ACE_Message_Block *mb = 0; - int status = 0; - - ACE_DEBUG ((LM_DEBUG, "(%t) in handle_output on handle %d\n", this->get_handle ())); - // The list had better not be empty, otherwise there's a bug! - - if (this->msg_queue ()->dequeue_head (mb, (ACE_Time_Value *) &ACE_Time_Value::zero) != -1) - { - switch (this->nonblk_put (mb)) - { - case 0: // Partial send. - ACE_ASSERT (errno == EWOULDBLOCK); - // Didn't write everything this time, come back later... - break; - - case -1: - // Caller is responsible for freeing a ACE_Message_Block if failures occur. - delete mb; - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "transmission failure")); - - /* FALLTHROUGH */ - default: // Sent the whole thing. - - // If we succeed in writing the entire message (or we did not fail - // due to EWOULDBLOCK) then check if there are more messages on the Message_List. - // If there aren't, tell the ACE_Reactor not to notify us anymore (at least - // until there are new messages queued up). - - if (this->msg_queue ()->is_empty ()) - { - ACE_DEBUG ((LM_DEBUG, "(%t) queueing deactivated on handle %d to routing id %d\n", - this->get_handle (), this->id ())); - - - if (ACE_Service_Config::reactor ()-> - cancel_wakeup (this, ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "cancel_wakeup")); - } - } - } - else - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "dequeue_head")); - return 0; -} - -// Send a message to a peer (may queue if necessary). - -int -Output_Channel::put (ACE_Message_Block *mb, ACE_Time_Value *) -{ - if (this->msg_queue ()->is_empty ()) - // Try to send the message *without* blocking! - return this->nonblk_put (mb); - else - // If we have queued up messages due to flow control - // then just enqueue and return. - return this->msg_queue ()->enqueue_tail (mb, (ACE_Time_Value *) &ACE_Time_Value::zero); -} - -// Constructor sets the routing table pointer and the connector pointer. - -Input_Channel::Input_Channel (ROUTING_TABLE *rt, - Channel_Connector *cc, - ACE_Thread_Manager *thr_mgr, - int socket_queue_size) - : msg_frag_ (0), - Channel (rt, cc, thr_mgr, socket_queue_size) -{ - this->direction_ = 'I'; - this->msg_queue ()->high_water_mark (0); -} - -int -Input_Channel::put (ACE_Message_Block *, ACE_Time_Value *) -{ - ACE_ERROR_RETURN ((LM_ERROR, "(%t) put should not be called on Input_Channel!\n"), -1); -} - -int -Input_Channel::svc (void) -{ - ACE_ERROR_RETURN ((LM_ERROR, "(%t) svc should not be called on Input_Channel!\n"), -1); -} - -// Receive a Peer message from peerd. Handles fragmentation. -// -// The routing message returned from recv_peer consists of two parts: -// 1. The Address part, contains the virtual routing id. -// 2. The Data part, which contains the actual data to be routed. -// -// The reason for having two parts is to shield the higher layers -// of software from knowledge of the message structure. - -int -Input_Channel::recv_peer (ACE_Message_Block *&route_addr) -{ - Peer_Message *peer_msg; - size_t len; - ssize_t n = 0; - ssize_t m = 0; - size_t offset = 0; - - if (this->msg_frag_ == 0) - // No existing fragment... - ACE_NEW_RETURN (this->msg_frag_, - ACE_Message_Block (sizeof (Peer_Message)), - -1); - - peer_msg = (Peer_Message *) this->msg_frag_->rd_ptr (); - - const ssize_t HEADER_SIZE = sizeof (Peer_Header); - ssize_t header_bytes_left_to_read = HEADER_SIZE - this->msg_frag_->length (); - - if (header_bytes_left_to_read > 0) - { - n = this->peer ().recv (this->msg_frag_->wr_ptr (), header_bytes_left_to_read); - - if (n == -1 /* error */ - || n == 0 /* EOF */) - { - ACE_ERROR ((LM_ERROR, "%p\n", "Recv error during header read ")); - ACE_DEBUG ((LM_DEBUG, "attempted to read %d\n", header_bytes_left_to_read)); - delete this->msg_frag_; - this->msg_frag_ = 0; - return n; - } - - // Bump the write pointer by the amount read. - this->msg_frag_->wr_ptr (n); - - // At this point we may or may not have the ENTIRE header. - if (this->msg_frag_->length () < HEADER_SIZE) - { - ACE_DEBUG ((LM_DEBUG, "Partial header received: only %d bytes\n", - this->msg_frag_->length ())); - // Notify the caller that we didn't get an entire message. - errno = EWOULDBLOCK; - return -1; - } - } - - // At this point there is a complete, valid header in msg_frag_ - len = sizeof peer_msg->buf_ + HEADER_SIZE - this->msg_frag_->length (); - - // Try to receive the remainder of the message - - switch (m = this->peer ().recv (peer_msg->buf_ + offset, len)) - { - case -1: - if (errno == EWOULDBLOCK) - { - // This shouldn't happen since the ACE_Reactor - // just triggered us to handle pending I/O! - ACE_DEBUG ((LM_DEBUG, "(%t) unexpected recv failure\n")); - errno = EWOULDBLOCK; - return -1; - } - else - /* FALLTHROUGH */; - - case 0: // Premature EOF. - delete this->msg_frag_; - this->msg_frag_ = 0; - return 0; - - default: - if (m != len) - // Re-adjust pointer to skip over the part we've read. - { - this->msg_frag_->wr_ptr (m); - errno = EWOULDBLOCK; - return -1; // Inform caller that we didn't get the whole message. - } - else - { - // Set the write pointer at 1 past the end of the message. - this->msg_frag_->wr_ptr (m); - - // Set the read pointer to the beginning of the message. - this->msg_frag_->rd_ptr (this->msg_frag_->base ()); - - // Allocate a routing message header and chain the data portion - // onto its continuation field. - ACE_NEW_RETURN (route_addr, - ACE_Message_Block (sizeof (Peer_Addr), - ACE_Message_Block::MB_PROTO, - this->msg_frag_), - -1); - - Peer_Addr peer_addr (this->id (), peer_msg->header_.routing_id_, 0); - // Copy the routing address from the Peer_Message into routing_addr. - route_addr->copy ((char *) &peer_addr, sizeof (Peer_Addr)); - - // Reset the pointer to indicate we've got an entire message. - this->msg_frag_ = 0; - } - this->total_bytes (m + n); -#if defined (VERBOSE) - ACE_DEBUG ((LM_DEBUG, "(%t) channel id = %d, route id = %d, len = %d, payload = %*s", - peer_addr.conn_id_, peer_msg->header_.routing_id_, peer_msg->header_.len_, - peer_msg->header_.len_, peer_msg->buf_)); -#else - ACE_DEBUG ((LM_DEBUG, "(%t) route id = %d, cur len = %d, total bytes read = %d\n", - peer_msg->header_.routing_id_, peer_msg->header_.len_, this->total_bytes ())); -#endif - return m + n; - } -} - -// Receive various types of input (e.g., Peer message from the -// gatewayd, as well as stdio). - -int -Input_Channel::handle_input (ACE_HANDLE) -{ - ACE_Message_Block *route_addr = 0; - - switch (this->recv_peer (route_addr)) - { - case 0: - // Note that a peer should never initiate a shutdown. - this->state (Channel::FAILED); - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Peer has closed down unexpectedly for Input Channel %d\n", - this->id ()), -1); - /* NOTREACHED */ - case -1: - if (errno == EWOULDBLOCK) - // A short-read, we'll come back and finish it up later on! - return 0; - else // A weird problem occurred, shut down and start again. - { - this->state (Channel::FAILED); - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p for Input Channel %d\n", - "Peer has failed unexpectedly", - this->id ()), -1); - } - /* NOTREACHED */ - default: - return this->route_message (route_addr); - } -} - -// Route a message to its appropriate destination. - -int -Input_Channel::route_message (ACE_Message_Block *route_addr) -{ - // We got a valid message, so determine its virtual routing id, - // which is stored in the first of the two message blocks chained together. - - Peer_Addr *routing_key = (Peer_Addr *) route_addr->rd_ptr (); - - // Skip over the address portion. - const ACE_Message_Block *const data = route_addr->cont (); - - // RE points to the routing entry located for this routing id. - Routing_Entry *re = 0; - - if (this->routing_table_->find (*routing_key, re) != -1) - { - // Check to see if there are any destinations. - if (re->destinations ()->size () == 0) - ACE_DEBUG ((LM_WARNING, - "there are no active destinations for this message currently\n")); - - else // There are destinations, so forward the message. - { - Routing_Entry::ENTRY_SET *esp = re->destinations (); - Routing_Entry::ENTRY_ITERATOR si (*esp); - - for (Channel **channel = 0; si.next (channel) != 0; si.advance ()) - { - // Only process active channels. - if ((*channel)->active ()) - { - // Clone the message portion (should be doing reference counting here...) - ACE_Message_Block *newmsg = data->clone (); - - ACE_DEBUG ((LM_DEBUG, "(%t) sending to peer %d\n", (*channel)->id ())); - - if ((*channel)->put (newmsg) == -1) - { - if (errno == EWOULDBLOCK) // The queue has filled up! - ACE_ERROR ((LM_ERROR, "(%t) %p\n", - "gateway is flow controlled, so we're dropping messages")); - else - ACE_ERROR ((LM_ERROR, "(%t) %p transmission error to route %d\n", - "put", (*channel)->id ())); - - // Caller is responsible for freeing a ACE_Message_Block if failures occur. - delete newmsg; - } - } - } - // Will become superfluous once we have reference counting... - delete route_addr; - return 0; - } - } - delete route_addr; - // Failure return. - ACE_ERROR ((LM_DEBUG, "(%t) find failed on conn id = %d, logical id = %d, payload = %d\n", - routing_key->conn_id_, routing_key->logical_id_, routing_key->payload_)); - return 0; -} - -#if defined (ACE_TEMPLATES_REQUIRE_SPECIALIZATION) -template class ACE_Map_Manager<Peer_Addr, Routing_Entry *, MUTEX>; -template class ACE_Map_Iterator<Peer_Addr, Routing_Entry *, MUTEX>; -template class ACE_Map_Entry<Peer_Addr, Routing_Entry *>; -#endif /* ACE_TEMPLATES_REQUIRE_SPECIALIZATION */ diff --git a/apps/Gateway/Gateway/Channel.h b/apps/Gateway/Gateway/Channel.h deleted file mode 100644 index 339716bc55a..00000000000 --- a/apps/Gateway/Gateway/Channel.h +++ /dev/null @@ -1,280 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Channel.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_CHANNEL) -#define _CHANNEL - -#include "ace/Service_Config.h" -#include "ace/INET_Addr.h" -#include "ace/SOCK_Connector.h" -#include "ace/Svc_Handler.h" -#include "Routing_Table.h" -#include "Routing_Entry.h" -#include "Peer_Message.h" - -// The following typedefs are used in order to parameterize the -// synchronization policies without changing the source code! - -// If we don't have threads then use the single-threaded synchronization. -#if !defined (ACE_HAS_THREADS) -#define SYNCH ACE_NULL_SYNCH -typedef ACE_Null_Mutex MUTEX; -#define CHANNEL_PEER_STREAM ACE_SOCK_STREAM -#define CHANNEL_PEER_CONNECTOR ACE_SOCK_CONNECTOR -#else /* ACE_HAS_THREADS */ - -// Select communication mechanisms. -#if 0 // defined (ACE_HAS_TLI) -// Note that due to inconsistencies between the semantics of sockets -// and TLI with respect to establishing non-blocking connections it's -// not a good idea to use TLI... -#include "ace/TLI_Connector.h" -#define CHANNEL_PEER_STREAM ACE_TLI_STREAM -#define CHANNEL_PEER_CONNECTOR ACE_TLI_CONNECTOR -#else -#define CHANNEL_PEER_STREAM ACE_SOCK_STREAM -#define CHANNEL_PEER_CONNECTOR ACE_SOCK_CONNECTOR -#endif /* 0 */ - -// Note that we only need to make the ACE_Task thread-safe if we -// are using the multi-threaded Thr_Output_Channel... -#if defined (USE_OUTPUT_MT) -#define SYNCH ACE_MT_SYNCH -#else -#define SYNCH ACE_NULL_SYNCH -#endif /* USE_OUTPUT_MT || USE_INPUT_MT */ - -// Note that we only need to make the ACE_Map_Manager thread-safe if -// we are using the multi-threaded Thr_Input_Channel... -#if defined (USE_INPUT_MT) -typedef ACE_RW_Mutex MUTEX; -#else -typedef ACE_Null_Mutex MUTEX; -#endif /* USE_INPUT_MT */ -#endif /* ACE_HAS_THREADS */ - -// Typedef for the routing table. -typedef Routing_Table<Peer_Addr, Routing_Entry, MUTEX> - ROUTING_TABLE; - -// Forward declaration. -class Channel_Connector; - -class Channel : public ACE_Svc_Handler<CHANNEL_PEER_STREAM, SYNCH> - // = TITLE - // Channel contains info about connection state and addressing. - // - // = DESCRIPTION - // The Channel classes process messages sent from the peers to the - // gateway. These classes works as follows: - // - // 1. Channel_Connector creates a number of connections with the set of - // peers specified in a configuration file. - // - // 2. For each peer that connects successfully, Channel_Connector - // creates an Channel object. Each object assigns a unique routing - // id to its associated peer. The Channels are used by gatewayd - // that to receive, route, and forward messages from source peer(s) - // to destination peer(s). -{ -public: - Channel (ROUTING_TABLE *, - Channel_Connector *, - ACE_Thread_Manager * = 0, - int socket_queue_size = 0); - - virtual int open (void * = 0); - // Initialize and activate a single-threaded Channel (called by - // ACE_Connector::handle_output()). - - int bind (const ACE_INET_Addr &remote_addr, - const ACE_INET_Addr &local_addr, - CONN_ID); - // Set the peer's addressing and routing information. - - ACE_INET_Addr &remote_addr (void); - // Returns the peer's routing address. - - ACE_INET_Addr &local_addr (void); - // Returns our local address. - - // = Set/get routing id. - CONN_ID id (void); - void id (CONN_ID); - - // = Set/get the current state of the Channel. - enum State - { - IDLE = 1, // Prior to initialization. - CONNECTING, // During connection establishment. - ESTABLISHED, // Channel is established and active. - DISCONNECTING, // Channel is in the process of connecting. - FAILED // Channel has failed. - }; - - // = Set/get the current state. - State state (void); - void state (State); - - // = Set/get the current retry timeout delay. - int timeout (void); - void timeout (int); - - // = Set/get the maximum retry timeout delay. - int max_timeout (void); - void max_timeout (int); - - // = Set/get Channel activity status. - int active (void); - void active (int); - - // = Set/get direction (necessary for error checking). - char direction (void); - void direction (char); - - // = The total number of bytes sent/received on this channel. - size_t total_bytes (void); - void total_bytes (size_t bytes); - // Increment count by <bytes>. - - virtual int handle_timeout (const ACE_Time_Value &, const void *arg); - // Perform timer-based Channel reconnection. - -protected: - enum - { - MAX_RETRY_TIMEOUT = 300 // 5 minutes is the maximum timeout. - }; - - int initialize_connection (void); - // Perform the first-time initiation of a connection to the peer. - - int reinitiate_connection (void); - // Reinitiate a connection asynchronously when peers fail. - - void socket_queue_size (void); - // Set the socket queue size. - - virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE, - ACE_Reactor_Mask = ACE_Event_Handler::RWE_MASK); - // Perform Channel termination. - - ROUTING_TABLE *routing_table_; - // Pointer to table that maps a Peer_Addr - // to a Set of Channel *'s for output. - - ACE_INET_Addr remote_addr_; - // Address of peer. - - ACE_INET_Addr local_addr_; - // Address of us. - - CONN_ID id_; - // The assigned routing ID of this entry. - - size_t total_bytes_; - // The total number of bytes sent/received on this channel. - - State state_; - // The current state of the channel. - - Channel_Connector *connector_; - // Back pointer to Channel_Connector to reestablish broken - // connections. - - int timeout_; - // Amount of time to wait between reconnection attempts. - - int max_timeout_; - // Maximum amount of time to wait between reconnection attempts. - - char direction_; - // Indicates which direction data flows through the channel ('O' == - // output and 'I' == input). - - int socket_queue_size_; - // Size of the socket queue (0 means "use default"). -}; - -class Input_Channel : public Channel - // = TITLE - // Handle reception of Peer messages arriving as events. -{ -public: - Input_Channel (ROUTING_TABLE *, - Channel_Connector *, - ACE_Thread_Manager * = 0, - int socket_queue_size = 0); - // Constructor sets the routing table pointer. - - virtual int handle_input (ACE_HANDLE = ACE_INVALID_HANDLE); - // Receive and process peer messages. - -protected: - virtual int recv_peer (ACE_Message_Block *&); - // Receive a message from a peer. - - int route_message (ACE_Message_Block *); - // Action that receives messages from peerd. - - ACE_Message_Block *msg_frag_; - // Keep track of message fragment to handle non-blocking recv's from - // peers. - - virtual int svc (void); - // This method is not used since we are single-threaded. - -private: - virtual int put (ACE_Message_Block *, ACE_Time_Value *tv = 0); - // This methods should not be called to handle input. -}; - -class Output_Channel : public Channel - // = TITLE - // Handle transmission of messages to other Peers using a - // single-threaded approach. -{ -public: - Output_Channel (ROUTING_TABLE *, - Channel_Connector *, - ACE_Thread_Manager * = 0, - int socket_queue_size = 0); - - virtual int put (ACE_Message_Block *, ACE_Time_Value * = 0); - // Send a message to a gateway (may be queued if necessary). - -protected: - // = We'll allow up to 16 megabytes to be queued per-output - // channel. - enum {QUEUE_SIZE = 1024 * 1024 * 16}; - - virtual int handle_input (ACE_HANDLE); - // Receive and process shutdowns from peer. - - virtual int handle_output (ACE_HANDLE); - // Finish sending a message when flow control conditions abate. - - int nonblk_put (ACE_Message_Block *mb); - // Perform a non-blocking put(). - - virtual int send_peer (ACE_Message_Block *); - // Send a message to a peer. - - virtual int svc (void); - // This method is not used since we are single-threaded. -}; - -#endif /* _CHANNEL */ diff --git a/apps/Gateway/Gateway/Channel_Connector.cpp b/apps/Gateway/Gateway/Channel_Connector.cpp deleted file mode 100644 index a5394e8b013..00000000000 --- a/apps/Gateway/Gateway/Channel_Connector.cpp +++ /dev/null @@ -1,92 +0,0 @@ -#include "Channel_Connector.h" -// $Id$ - - -Channel_Connector::Channel_Connector (void) -{ -} - -// Override the connection-failure method to add timer support. -// Note that these timers perform "expoential backoff" to -// avoid rapidly trying to reestablish connections when a link -// goes down. - -int -Channel_Connector::handle_close (ACE_HANDLE sd, ACE_Reactor_Mask) -{ - ACE_Connector<Channel, CHANNEL_PEER_CONNECTOR>::AST *stp = 0; - - // Locate the ACE_Svc_Handler corresponding to the socket descriptor. - if (this->handler_map_.find (sd, stp) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) can't locate channel %d in map, %p\n", - sd, "find"), -1); - - Channel *channel = stp->svc_handler (); - - // Schedule a reconnection request at some point in the future - // (note that channel uses an exponential backoff scheme). - if (ACE_Service_Config::reactor ()->schedule_timer (channel, 0, - channel->timeout ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "schedule_timer"), -1); - return 0; -} - -// Initiate (or reinitiate) a connection to the Channel. - -int -Channel_Connector::initiate_connection (Channel *channel, - ACE_Synch_Options &synch_options) -{ - char buf[MAXHOSTNAMELEN]; - - // Mark ourselves as idle so that the various iterators - // will ignore us until we are reconnected. - channel->state (Channel::IDLE); - - if (channel->remote_addr ().addr_to_string (buf, sizeof buf) == -1 - || channel->local_addr ().addr_to_string (buf, sizeof buf) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "can't obtain peer's address"), -1); - - // Try to connect to the Peer. - - if (this->connect (channel, channel->remote_addr (), - synch_options, channel->local_addr ()) == -1) - { - if (errno != EWOULDBLOCK) - { - channel->state (Channel::FAILED); - ACE_DEBUG ((LM_DEBUG, "(%t) %p on address %s\n", - "connect", buf)); - - // Reschedule ourselves to try and connect again. - if (synch_options[ACE_Synch_Options::USE_REACTOR]) - { - if (ACE_Service_Config::reactor ()->schedule_timer - (channel, 0, channel->timeout ()) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "schedule_timer"), -1); - } - else - // Failures on synchronous connects are reported as errors - // so that the caller can decide how to proceed. - return -1; - } - else - { - channel->state (Channel::CONNECTING); - ACE_DEBUG ((LM_DEBUG, - "(%t) in the process of connecting %s to %s\n", - synch_options[ACE_Synch_Options::USE_REACTOR] - ? "asynchronously" : "synchronously", buf)); - } - } - else - { - channel->state (Channel::ESTABLISHED); - ACE_DEBUG ((LM_DEBUG, "(%t) connected to %s on %d\n", - buf, channel->get_handle ())); - } - return 0; -} diff --git a/apps/Gateway/Gateway/Channel_Connector.h b/apps/Gateway/Gateway/Channel_Connector.h deleted file mode 100644 index 3e27f37355a..00000000000 --- a/apps/Gateway/Gateway/Channel_Connector.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Channel_Connector.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_CHANNEL_CONNECTOR) -#define _CHANNEL_CONNECTOR - -#include "ace/Connector.h" -#include "Thr_Channel.h" - -class Channel_Connector : public ACE_Connector<Channel, CHANNEL_PEER_CONNECTOR> - // = TITLE - // A concrete factory class that setups connections to peerds - // and produces a new Channel object to do the dirty work... -{ -public: - Channel_Connector (void); - - // Initiate (or reinitiate) a connection on the Channel. - int initiate_connection (Channel *, - ACE_Synch_Options & = ACE_Synch_Options::synch); - -protected: - // Override the connection-failure method to add timer support. - virtual int handle_close (ACE_HANDLE sd, ACE_Reactor_Mask); -}; - -#endif /* _CHANNEL_CONNECTOR */ diff --git a/apps/Gateway/Gateway/Concrete_Connection_Handlers.cpp b/apps/Gateway/Gateway/Concrete_Connection_Handlers.cpp deleted file mode 100644 index 02ff3e3dec8..00000000000 --- a/apps/Gateway/Gateway/Concrete_Connection_Handlers.cpp +++ /dev/null @@ -1,619 +0,0 @@ -// $Id$ - -#define ACE_BUILD_SVC_DLL -#include "Event_Channel.h" -#include "Concrete_Connection_Handlers.h" - -Consumer_Handler::Consumer_Handler (const Connection_Config_Info &pci) - : Connection_Handler (pci) -{ - this->connection_role_ = 'C'; - this->msg_queue ()->high_water_mark (Options::instance ()->max_queue_size ()); -} - -// This method should be called only when the Consumer shuts down -// unexpectedly. This method simply marks the Connection_Handler as -// having failed so that handle_close () can reconnect. - -int -Consumer_Handler::handle_input (ACE_HANDLE) -{ - char buf[1]; - - this->state (Connection_Handler::FAILED); - - switch (this->peer ().recv (buf, sizeof buf)) - { - case -1: - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Peer has failed unexpectedly for Consumer_Handler %d\n", - this->connection_id ()), - -1); - /* NOTREACHED */ - case 0: - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Peer has shutdown unexpectedly for Consumer_Handler %d\n", - this->connection_id ()), - -1); - /* NOTREACHED */ - default: - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Consumer is erroneously sending input to Consumer_Handler %d\n", - this->connection_id ()), - -1); - /* NOTREACHED */ - } -} - -// Perform a non-blocking put() of event. If we are unable to send -// the entire event the remainder is re-queued at the *front* of the -// Event_List. - -int -Consumer_Handler::nonblk_put (ACE_Message_Block *event) -{ - // Try to send the event. If we don't send it all (e.g., due to - // flow control), then re-queue the remainder at the head of the - // Event_List and ask the ACE_Reactor to inform us (via - // handle_output()) when it is possible to try again. - - ssize_t n = this->send (event); - - if (n == -1) - { - // Things have gone wrong, let's try to close down and set up a - // new reconnection by calling handle_close(). - this->state (Connection_Handler::FAILED); - this->handle_close (); - return -1; - } - else if (errno == EWOULDBLOCK) // Didn't manage to send everything. - { - ACE_DEBUG ((LM_DEBUG, - "(%t) queueing activated on handle %d to routing id %d\n", - this->get_handle (), - this->connection_id ())); - - // ACE_Queue in *front* of the list to preserve order. - if (this->msg_queue ()->enqueue_head - (event, (ACE_Time_Value *) &ACE_Time_Value::zero) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enqueue_head"), -1); - - // Tell ACE_Reactor to call us back when we can send again. - else if (ACE_Reactor::instance ()->schedule_wakeup - (this, ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "schedule_wakeup"), -1); - return 0; - } - else - return n; -} - -ssize_t -Consumer_Handler::send (ACE_Message_Block *event) -{ - ACE_DEBUG ((LM_DEBUG, - "(%t) sending %d bytes to Consumer %d\n", - event->length (), - this->connection_id ())); - - ssize_t len = event->length (); - ssize_t n = this->peer ().send (event->rd_ptr (), len); - - if (n <= 0) - return errno == EWOULDBLOCK ? 0 : n; - else if (n < len) - // Re-adjust pointer to skip over the part we did send. - event->rd_ptr (n); - else // if (n == length) - { - // The whole event is sent, we now decrement the reference count - // (which deletes itself with it reaches 0). - event->release (); - errno = 0; - } - this->total_bytes (n); - return n; -} - -// Finish sending an event when flow control conditions abate. -// This method is automatically called by the ACE_Reactor. - -int -Consumer_Handler::handle_output (ACE_HANDLE) -{ - ACE_Message_Block *event = 0; - - ACE_DEBUG ((LM_DEBUG, - "(%t) in handle_output on handle %d\n", - this->get_handle ())); - - // The list had better not be empty, otherwise there's a bug! - - if (this->msg_queue ()->dequeue_head - (event, (ACE_Time_Value *) &ACE_Time_Value::zero) != -1) - { - switch (this->nonblk_put (event)) - { - case 0: // Partial send. - ACE_ASSERT (errno == EWOULDBLOCK); - // Didn't write everything this time, come back later... - break; - - case -1: - // We are responsible for releasing an ACE_Message_Block if - // failures occur. - event->release (); - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "transmission failure")); - - /* FALLTHROUGH */ - default: // Sent the whole thing. - - // If we succeed in writing the entire event (or we did not - // fail due to EWOULDBLOCK) then check if there are more - // events on the Message_Queue. If there aren't, tell the - // ACE_Reactor not to notify us anymore (at least until - // there are new events queued up). - - if (this->msg_queue ()->is_empty ()) - { - ACE_DEBUG ((LM_DEBUG, - "(%t) queueing deactivated on handle %d to routing id %d\n", - this->get_handle (), - this->connection_id ())); - - - if (ACE_Reactor::instance ()->cancel_wakeup - (this, ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "cancel_wakeup")); - } - } - } - else - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "dequeue_head")); - return 0; -} - -// Send an event to a Consumer (may queue if necessary). - -int -Consumer_Handler::put (ACE_Message_Block *event, ACE_Time_Value *) -{ - if (this->msg_queue ()->is_empty ()) - // Try to send the event *without* blocking! - return this->nonblk_put (event); - else - // If we have queued up events due to flow control then just - // enqueue and return. - return this->msg_queue ()->enqueue_tail - (event, (ACE_Time_Value *) &ACE_Time_Value::zero); -} - -Supplier_Handler::Supplier_Handler (const Connection_Config_Info &pci) - : Connection_Handler (pci), - msg_frag_ (0) -{ - this->connection_role_ = 'S'; - this->msg_queue ()->high_water_mark (0); -} - -// Receive an Event from a Supplier. Handles fragmentation. -// -// The event returned from recv consists of two parts: -// -// 1. The Address part, contains the "virtual" routing id. -// -// 2. The Data part, which contains the actual data to be forwarded. -// -// The reason for having two parts is to shield the higher layers -// of software from knowledge of the event structure. - -int -Supplier_Handler::recv (ACE_Message_Block *&forward_addr) -{ - if (this->msg_frag_ == 0) - // No existing fragment... - ACE_NEW_RETURN (this->msg_frag_, - ACE_Message_Block (sizeof (Event), - ACE_Message_Block::MB_DATA, - 0, - 0, - 0, - Options::instance ()->locking_strategy ()), - -1); - - Event *event = (Event *) this->msg_frag_->rd_ptr (); - ssize_t header_received = 0; - - const ssize_t HEADER_SIZE = sizeof (Event_Header); - ssize_t header_bytes_left_to_read = - HEADER_SIZE - this->msg_frag_->length (); - - if (header_bytes_left_to_read > 0) - { - header_received = this->peer ().recv - (this->msg_frag_->wr_ptr (), header_bytes_left_to_read); - - if (header_received == -1 /* error */ - || header_received == 0 /* EOF */) - { - ACE_ERROR ((LM_ERROR, "%p\n", - "Recv error during header read ")); - ACE_DEBUG ((LM_DEBUG, - "attempted to read %d\n", - header_bytes_left_to_read)); - this->msg_frag_ = this->msg_frag_->release (); - return header_received; - } - - // Bump the write pointer by the amount read. - this->msg_frag_->wr_ptr (header_received); - - // At this point we may or may not have the ENTIRE header. - if (this->msg_frag_->length () < HEADER_SIZE) - { - ACE_DEBUG ((LM_DEBUG, - "Partial header received: only %d bytes\n", - this->msg_frag_->length ())); - // Notify the caller that we didn't get an entire event. - errno = EWOULDBLOCK; - return -1; - } - - // Convert the header into host byte order so that we can access - // it directly without having to repeatedly muck with it... - event->header_.decode (); - - if (event->header_.len_ > sizeof event->data_) - { - // This data_ payload is too big! - errno = EINVAL; - ACE_DEBUG ((LM_DEBUG, - "Data payload is too big (%d bytes)\n", - event->header_.len_)); - return -1; - } - - } - - // At this point there is a complete, valid header in Event. Now we - // need to get the event payload. Due to incomplete reads this may - // not be the first time we've read in a fragment for this message. - // We account for this here. Note that the first time in here - // msg_frag_->wr_ptr() will point to event->data_. Every time we do - // a successful fragment read, we advance wr_ptr(). Therefore, by - // subtracting how much we've already read from the - // event->header_.len_ we complete the data_bytes_left_to_read... - - ssize_t data_bytes_left_to_read = - ssize_t (event->header_.len_ - (msg_frag_->wr_ptr () - event->data_)); - - ssize_t data_received = - this->peer ().recv (this->msg_frag_->wr_ptr (), data_bytes_left_to_read); - - // Try to receive the remainder of the event. - - switch (data_received) - { - case -1: - if (errno == EWOULDBLOCK) - // This might happen if only the header came through. - return -1; - else - /* FALLTHROUGH */; - - case 0: // Premature EOF. - this->msg_frag_ = this->msg_frag_->release (); - return 0; - - default: - // Set the write pointer at 1 past the end of the event. - this->msg_frag_->wr_ptr (data_received); - - if (data_received != data_bytes_left_to_read) - { - errno = EWOULDBLOCK; - // Inform caller that we didn't get the whole event. - return -1; - } - else - { - // Set the read pointer to the beginning of the event. - this->msg_frag_->rd_ptr (this->msg_frag_->base ()); - - // Allocate an event forwarding header and chain the data - // portion onto its continuation field. - forward_addr = new ACE_Message_Block (sizeof (Event_Key), - ACE_Message_Block::MB_PROTO, - this->msg_frag_, - 0, - 0, - Options::instance ()->locking_strategy ()); - if (forward_addr == 0) - { - this->msg_frag_ = this->msg_frag_->release (); - errno = ENOMEM; - return -1; - } - - Event_Key event_addr (this->connection_id (), - event->header_.type_); - // Copy the forwarding address from the Event_Key into - // forward_addr. - forward_addr->copy ((char *) &event_addr, sizeof (Event_Key)); - - // Reset the pointer to indicate we've got an entire event. - this->msg_frag_ = 0; - } - - this->total_bytes (data_received + header_received); - ACE_DEBUG ((LM_DEBUG, - "(%t) connection id = %d, cur len = %d, total bytes read = %d\n", - event->header_.connection_id_, - event->header_.len_, - data_received + header_received)); - if (Options::instance ()->enabled (Options::VERBOSE)) - ACE_DEBUG ((LM_DEBUG, - "data_ = %*s\n", - event->header_.len_ - 2, - event->data_)); - - // Encode before returning so that we can set things out in - // network byte order. - event->header_.encode (); - return data_received + header_received; - } -} - -// Receive various types of input (e.g., Peer event from the -// gatewayd, as well as stdio). - -int -Supplier_Handler::handle_input (ACE_HANDLE) -{ - ACE_Message_Block *forward_addr = 0; - - switch (this->recv (forward_addr)) - { - case 0: - // Note that a peer shouldn't initiate a shutdown by closing the - // connection. Therefore, the peer must have crashed, so we'll - // need to bail out here and let the higher layers reconnect. - this->state (Connection_Handler::FAILED); - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Peer has closed down unexpectedly for Input Connection_Handler %d\n", - this->connection_id ()), - -1); - /* NOTREACHED */ - case -1: - if (errno == EWOULDBLOCK) - // A short-read, we'll come back and finish it up later on! - return 0; - else // A weird problem occurred, shut down and start again. - { - this->state (Connection_Handler::FAILED); - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p for Input Connection_Handler %d\n", - "Peer has failed unexpectedly", - this->connection_id ()), - -1); - } - /* NOTREACHED */ - default: - // Route messages to Consumers. - return this->forward (forward_addr); - } -} - -// Forward an event to its appropriate Consumer(s). This delegates to -// the <Event_Channel> to do the actual forwarding. - -int -Supplier_Handler::forward (ACE_Message_Block *forward_addr) -{ - return this->event_channel_->put (forward_addr); -} - -Thr_Consumer_Handler::Thr_Consumer_Handler (const Connection_Config_Info &pci) - : Consumer_Handler (pci) -{ -} - -// This method should be called only when the Consumer shuts down -// unexpectedly. This method marks the Connection_Handler as having failed -// and deactivates the ACE_Message_Queue (to wake up the thread -// blocked on <dequeue_head> in svc()). -// Thr_Output_Handler::handle_close () will eventually try to -// reconnect... - -int -Thr_Consumer_Handler::handle_input (ACE_HANDLE h) -{ - // Call down to the <Consumer_Handler> to handle this first. - this->Consumer_Handler::handle_input (h); - - ACE_Reactor::instance ()->remove_handler - (h, ACE_Event_Handler::ALL_EVENTS_MASK | ACE_Event_Handler::DONT_CALL); - - // Deactivate the queue while we try to get reconnected. - this->msg_queue ()->deactivate (); - return 0; -} - -// Initialize the threaded Consumer_Handler object and spawn a new -// thread. - -int -Thr_Consumer_Handler::open (void *) -{ - // Turn off non-blocking I/O. - if (this->peer ().disable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enable"), -1); - - // Call back to the <Event_Channel> to complete our initialization. - else if (this->event_channel_->complete_connection_connection (this) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "complete_connection_connection"), -1); - - // Register ourselves to receive input events (which indicate that - // the Consumer has shut down unexpectedly). - else if (ACE_Reactor::instance ()->register_handler - (this, ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "register_handler"), -1); - - // Reactivate message queue. If it was active then this is the - // first time in and we need to spawn a thread, otherwise the queue - // was inactive due to some problem and we've already got a thread. - else if (this->msg_queue ()->activate () == ACE_Message_Queue<ACE_SYNCH>::WAS_ACTIVE) - { - ACE_DEBUG ((LM_DEBUG, "(%t) spawning new thread\n")); - // Become an active object by spawning a new thread to transmit - // events to Consumers. - return this->activate (THR_NEW_LWP | THR_DETACHED); - } - else - { - ACE_DEBUG ((LM_DEBUG, "(%t) reusing existing thread\n")); - return 0; - } -} - -// Queue up an event for transmission (must not block since -// Supplier_Handlers may be single-threaded). - -int -Thr_Consumer_Handler::put (ACE_Message_Block *mb, ACE_Time_Value *) -{ - // Perform non-blocking enqueue, i.e., if <msg_queue> is full - // *don't* block! - return this->msg_queue ()->enqueue_tail - (mb, (ACE_Time_Value *) &ACE_Time_Value::zero); -} - -// Transmit events to the peer. Note the simplification resulting -// from the use of threads, compared with the Reactive solution. - -int -Thr_Consumer_Handler::svc (void) -{ - - for (;;) - { - ACE_DEBUG ((LM_DEBUG, - "(%t) Thr_Consumer_Handler's handle = %d\n", - this->peer ().get_handle ())); - - // Since this method runs in its own thread it is OK to block on - // output. - - for (ACE_Message_Block *mb = 0; - this->msg_queue ()->dequeue_head (mb) != -1; - ) - if (this->send (mb) == -1) - ACE_ERROR ((LM_ERROR, - "(%t) %p\n", - "send failed")); - - ACE_ASSERT (errno == ESHUTDOWN); - - ACE_DEBUG ((LM_DEBUG, - "(%t) shutting down threaded Consumer_Handler %d on handle %d\n", - this->connection_id (), - this->get_handle ())); - - this->peer ().close (); - - // Re-establish the connection, using expoential backoff. - for (this->timeout (1); - // Default is to reconnect synchronously. - this->event_channel_->initiate_connection_connection (this) == -1; ) - { - ACE_Time_Value tv (this->timeout ()); - - ACE_ERROR ((LM_ERROR, - "(%t) reattempting connection, sec = %d\n", - tv.sec ())); - - ACE_OS::sleep (tv); - } - } - - /* NOTREACHED */ - return 0; -} - -Thr_Supplier_Handler::Thr_Supplier_Handler (const Connection_Config_Info &pci) - : Supplier_Handler (pci) -{ -} - -int -Thr_Supplier_Handler::open (void *) -{ - // Turn off non-blocking I/O. - if (this->peer ().disable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enable"), -1); - - // Call back to the <Event_Channel> to complete our initialization. - else if (this->event_channel_->complete_connection_connection (this) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "complete_connection_connection"), -1); - - // Reactivate message queue. If it was active then this is the - // first time in and we need to spawn a thread, otherwise the queue - // was inactive due to some problem and we've already got a thread. - else if (this->msg_queue ()->activate () == ACE_Message_Queue<ACE_SYNCH>::WAS_ACTIVE) - { - ACE_DEBUG ((LM_DEBUG, "(%t) spawning new thread\n")); - // Become an active object by spawning a new thread to transmit - // events to peers. - return this->activate (THR_NEW_LWP | THR_DETACHED); - } - else - { - ACE_DEBUG ((LM_DEBUG, "(%t) reusing existing thread\n")); - return 0; - } -} - -// Receive events from a Peer in a separate thread (note reuse of -// existing code!). - -int -Thr_Supplier_Handler::svc (void) -{ - for (;;) - { - ACE_DEBUG ((LM_DEBUG, - "(%t) Thr_Supplier_Handler's handle = %d\n", - this->peer ().get_handle ())); - - // Since this method runs in its own thread and processes events - // for one connection it is OK to call down to the - // <Supplier_Handler::handle_input> method, which blocks on - // input. - - while (this->Supplier_Handler::handle_input () != -1) - continue; - - ACE_DEBUG ((LM_DEBUG, - "(%t) shutting down threaded Supplier_Handler %d on handle %d\n", - this->connection_id (), - this->get_handle ())); - - this->peer ().close (); - - // Deactivate the queue while we try to get reconnected. - this->msg_queue ()->deactivate (); - - // Re-establish the connection, using expoential backoff. - for (this->timeout (1); - // Default is to reconnect synchronously. - this->event_channel_->initiate_connection_connection (this) == -1; ) - { - ACE_Time_Value tv (this->timeout ()); - ACE_ERROR ((LM_ERROR, - "(%t) reattempting connection, sec = %d\n", - tv.sec ())); - ACE_OS::sleep (tv); - } - } - ACE_NOTREACHED(return 0); -} diff --git a/apps/Gateway/Gateway/Concrete_Connection_Handlers.h b/apps/Gateway/Gateway/Concrete_Connection_Handlers.h deleted file mode 100644 index a14d97b9d3e..00000000000 --- a/apps/Gateway/Gateway/Concrete_Connection_Handlers.h +++ /dev/null @@ -1,126 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Concrete_Connection_Handlers.h -// -// = DESCRIPTION -// These are all the subclasses of Connection_Handler that define the -// appropriate threaded/reactive Consumer/Supplier behavior. -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (CONCRETE_CONNECTION_HANDLER) -#define CONCRETE_CONNECTION_HANDLER - -#include "Connection_Handler.h" - -class Supplier_Handler : public Connection_Handler -{ - // = TITLE - // Handles reception of Events from Suppliers. - // - // = DESCRIPTION - // Performs framing and error checking on Events. Intended to - // run reactively, i.e., in one thread of control using a - // Reactor for demuxing and dispatching. -public: - // = Initialization method. - Supplier_Handler (const Connection_Config_Info &); - -protected: - // = All the following methods are upcalls, so they can be protected. - - virtual int handle_input (ACE_HANDLE = ACE_INVALID_HANDLE); - // Receive and process peer events. - - virtual int recv (ACE_Message_Block *&); - // Receive an event from a Supplier. - - int forward (ACE_Message_Block *event); - // Forward the <event> to its appropriate Consumer. This delegates - // to the <Event_Channel> to do the actual forwarding. - - ACE_Message_Block *msg_frag_; - // Keep track of event fragment to handle non-blocking recv's from - // Suppliers. -}; - -class Consumer_Handler : public Connection_Handler -{ - // = TITLE - // Handles transmission of events to Consumers. - // - // = DESCRIPTION - // Performs queueing and error checking. Intended to run - // reactively, i.e., in one thread of control using a Reactor - // for demuxing and dispatching. Also uses a Reactor to handle - // flow controlled output connections. -public: - // = Initialization method. - Consumer_Handler (const Connection_Config_Info &); - - virtual int put (ACE_Message_Block *event, - ACE_Time_Value * = 0); - // Send an event to a Consumer (may be queued if necessary). - -protected: - virtual int handle_output (ACE_HANDLE); - // Finish sending event when flow control conditions abate. - - int nonblk_put (ACE_Message_Block *mb); - // Perform a non-blocking put(). - - virtual ssize_t send (ACE_Message_Block *); - // Send an event to a Consumer. - - virtual int handle_input (ACE_HANDLE); - // Receive and process shutdowns from a Consumer. -}; - -class Thr_Consumer_Handler : public Consumer_Handler -{ - // = TITLE - // Runs each <Consumer_Handler> in a separate thread. -public: - Thr_Consumer_Handler (const Connection_Config_Info &); - - virtual int open (void *); - // Initialize the threaded Consumer_Handler object and spawn a new - // thread. - - virtual int put (ACE_Message_Block *, ACE_Time_Value * = 0); - // Send a message to a peer. - -protected: - virtual int handle_input (ACE_HANDLE); - // Called when Peer shutdown unexpectedly. - - virtual int svc (void); - // Transmit peer messages. -}; - -class Thr_Supplier_Handler : public Supplier_Handler -{ - // = TITLE - // Runs each <Supplier_Handler> in a separate thread. -public: - Thr_Supplier_Handler (const Connection_Config_Info &pci); - - virtual int open (void *); - // Initialize the object and spawn a new thread. - -protected: - virtual int svc (void); - // Transmit peer messages. -}; - -#endif /* CONCRETE_CONNECTION_HANDLER */ diff --git a/apps/Gateway/Gateway/Concurrency_Strategies.h b/apps/Gateway/Gateway/Concurrency_Strategies.h deleted file mode 100644 index 28e59a4b2e6..00000000000 --- a/apps/Gateway/Gateway/Concurrency_Strategies.h +++ /dev/null @@ -1,74 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Concurrency_strategies.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_CONCURRENCY_STRATEGIES) -#define _CONCURRENCY_STRATEGIES - -#include "ace/Synch.h" - -// The following typedefs are used in order to parameterize the -// synchronization policies without changing the source code! - -// If we don't have threads then use the single-threaded synchronization. -#if !defined (ACE_HAS_THREADS) -#define SYNCH_STRATEGY ACE_NULL_SYNCH -typedef ACE_Null_Mutex MAP_MUTEX; -#else /* ACE_HAS_THREADS */ - -// Note that we only need to make the ACE_Task thread-safe if we are -// using the multi-threaded Thr_Consumer_Proxy... -#if defined (USE_OUTPUT_MT) -#define SYNCH_STRATEGY ACE_MT_SYNCH -#else -#define SYNCH_STRATEGY ACE_NULL_SYNCH -#endif /* USE_OUTPUT_MT || USE_INPUT_MT */ - -// Note that we only need to make the ACE_Map_Manager thread-safe if -// we are using the multi-threaded Thr_Supplier_Proxy. In this -// case, we use an RW_Mutex since we'll lookup Consumers far more -// often than we'll update them. -#if defined (USE_INPUT_MT) -typedef ACE_RW_Mutex MAP_MUTEX; -#else -typedef ACE_Null_Mutex MAP_MUTEX; -#endif /* USE_INPUT_MT */ -#endif /* ACE_HAS_THREADS */ - -// = Forward decls -class Thr_Consumer_Proxy; -class Thr_Supplier_Proxy; -class Consumer_Proxy; -class Supplier_Proxy; - -#if defined (ACE_HAS_THREADS) && (defined (USE_OUTPUT_MT) || defined (USE_INPUT_MT)) -#if defined (USE_OUTPUT_MT) -typedef Thr_Consumer_Proxy CONSUMER_PROXY; -#else -typedef Consumer_Proxy CONSUMER_PROXY; -#endif /* USE_OUTPUT_MT */ - -#if defined (USE_INPUT_MT) -typedef Thr_Supplier_Proxy SUPPLIER_PROXY; -#else -typedef Supplier_Proxy SUPPLIER_PROXY; -#endif /* USE_INPUT_MT */ -#else -// Instantiate a non-multi-threaded Gateway. -typedef Supplier_Proxy SUPPLIER_PROXY; -typedef Consumer_Proxy CONSUMER_PROXY; -#endif /* ACE_HAS_THREADS */ - -#endif /* _CONCURRENCY_STRATEGIES */ diff --git a/apps/Gateway/Gateway/Config_Files.cpp b/apps/Gateway/Gateway/Config_Files.cpp deleted file mode 100644 index 4f15843cead..00000000000 --- a/apps/Gateway/Gateway/Config_Files.cpp +++ /dev/null @@ -1,218 +0,0 @@ -// $Id$ - -#include "Config_Files.h" -#include "Options.h" - -// This fixes a nasty bug with cfront-based compilers (like -// Centerline). -typedef FP::Return_Type FP_RETURN_TYPE; - -FP_RETURN_TYPE -Consumer_Config_File_Parser::read_entry (Consumer_Config_Info &entry, - int &line_number) -{ - FP_RETURN_TYPE result; - - // Increment the line count. - line_number++; - - // Ignore comments, check for EOF and EOLINE if this succeeds, we - // have our connection id. - - while ((result = this->getint (entry.connection_id_)) != FP::SUCCESS) - if (result == FP::EOFILE) - return FP::EOFILE; - else if (result == FP::EOLINE - || result == FP::COMMENT) - line_number++; - - // Get the payload type. - result = this->getint (entry.type_); - if (result != FP::SUCCESS) - return result; - - // get all the consumers. - entry.total_consumers_ = 0; - - while ((result = this->getint - (entry.consumers_[entry.total_consumers_])) == FP::SUCCESS) - ++entry.total_consumers_; // do nothing (should check against max...) - - if (result == FP::EOLINE || result == FP::EOFILE) - return FP::SUCCESS; - else - return result; -} - -FP_RETURN_TYPE -Connection_Config_File_Parser::read_entry (Connection_Config_Info &entry, - int &line_number) -{ - char buf[BUFSIZ]; - FP_RETURN_TYPE result; - - // Increment the line count. - line_number++; - - // Ignore comments, check for EOF and EOLINE if this succeeds, we - // have our connection id - - while ((result = this->getint (entry.connection_id_)) != FP::SUCCESS) - if (result == FP::EOFILE) - return FP::EOFILE; - else if (result == FP::EOLINE - || result == FP::COMMENT) - line_number++; - - // Get the hostname. - result = this->getword (entry.host_); - if (result != FP::SUCCESS) - return result; - - ACE_INT32 port; - - // Get the port number. - result = this->getint (port); - if (result == FP::DEFAULT) - { - // Get the proxy role, i.e., 'C' (Consumer) or 'S' (Supplier). - result = this->getword (buf); - if (result != FP::SUCCESS) - return result; - else - entry.connection_role_ = buf[0]; - - if (entry.connection_role_ == 'C') - entry.remote_port_ = Options::instance ()->consumer_connector_port (); - else if (entry.connection_role_ == 'S') - entry.remote_port_ = Options::instance ()->supplier_connector_port (); - else - // Yikes, this is a *weird* error! - entry.remote_port_ = 0; - } - else if (result != FP::SUCCESS) - return result; - else - { - entry.remote_port_ = u_short (port); - - // Get the proxy role, i.e., 'C' (Consumer) or 'S' (Supplier). - result = this->getword (buf); - if (result != FP::SUCCESS) - return result; - else - entry.connection_role_ = buf[0]; - } - - // Get the max retry delay. - result = this->getint (entry.max_retry_timeout_); - if (result == FP::DEFAULT) - entry.max_retry_timeout_ = Options::instance ()->max_timeout (); - else if (result != FP::SUCCESS) - return result; - - // Get the local port number. - result = this->getint (port); - if (result == FP::DEFAULT) - entry.local_port_ = 0; // @@ Should make this an option. - else if (result != FP::SUCCESS) - return result; - else - entry.local_port_ = u_short (port); - - ACE_INT32 priority; - - // Get the priority. - result = this->getint (priority); - if (result != FP::SUCCESS) - return result; - else - entry.priority_ = priority; - - return FP::SUCCESS; -} - -#if defined (DEBUGGING) -int -main (int argc, char *argv[]) -{ - FP_RETURN_TYPE result; - int line_number = 0; - - { - Connection_Config_Info entry; - Connection_Config_File_Parser connection_config_file; - - connection_config_file.open (argc > 1 ? argv[1] : "connection_config"); - - int line_number = 0; - - ACE_DEBUG ((LM_DEBUG, - "ConnID\tHost\t\tRPort\tRole\tRetry\tLPort\tPriority\n")); - - // Read config file line at a time. - while ((result = connection_config_file.read_entry (entry, line_number)) != FP::EOFILE) - if (result == FP::PARSE_ERROR) - ACE_DEBUG ((LM_DEBUG, - "Error line %d.\n", - line_number)); - else - ACE_DEBUG ((LM_DEBUG, - "%d\t%s\t%d\t%c\t%d\t%d\t%d\n", - entry.connection_id_, - entry.host_, - entry.remote_port_, - entry.connection_role_, - entry.max_retry_timeout_, - entry.local_port_, - entry.priority_)); - - connection_config_file.close (); - } - - { - Consumer_Config_Info entry; - Consumer_Config_File_Parser consumer_config_file; - - consumer_config_file.open (argc > 2 ? argv[2] : "consumer_config"); - - line_number = 0; - - ACE_DEBUG ((LM_DEBUG, - "\nConnID\tLogic\tPayload\tDestinations\n")); - - // Read config file line at a time. - while ((result = consumer_config_file.read_entry (entry, line_number)) != FP::EOFILE) - if (result == FP::PARSE_ERROR) - ACE_DEBUG ((LM_DEBUG, - "Error line %d.\n", - line_number)); - else - { - ACE_DEBUG ((LM_DEBUG, - "%d\t%d\t", - entry.connection_id_, - entry.type_)); - - while (--entry.total_consumers_ >= 0) - ACE_DEBUG ((LM_DEBUG, - "%d,", - entry.consumers_[entry.total_consumers_])); - ACE_DEBUG ((LM_DEBUG, - "\n")); - } - - consumer_config_file.close (); - } - - return 0; -} -#endif /* DEBUGGING */ - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class File_Parser<Connection_Config_Info>; -template class File_Parser<Consumer_Config_Info>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate File_Parser<Connection_Config_Info> -#pragma instantiate File_Parser<Consumer_Config_Info> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/apps/Gateway/Gateway/Config_Files.h b/apps/Gateway/Gateway/Config_Files.h deleted file mode 100644 index 1199c615833..00000000000 --- a/apps/Gateway/Gateway/Config_Files.h +++ /dev/null @@ -1,103 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Config_Files.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_CONFIG_FILES) -#define _CONFIG_FILES - -#include "File_Parser.h" -#include "Event.h" - -// Forward declaration. -class Event_Channel; - -class Connection_Config_Info - // = TITLE - // Stores connection configuration information. -{ -public: - ACE_INT32 connection_id_; - // Connection id for this Connection_Handler. - - char host_[BUFSIZ]; - // Host to connect with. - - u_short remote_port_; - // Port to connect with. - - char connection_role_; - // 'S' (supplier) or 'C' (consumer). - - ACE_INT32 max_retry_timeout_; - // Maximum amount of time to wait for reconnecting. - - u_short local_port_; - // Our local port number. - - ACE_INT32 priority_; - // Priority by which different Consumers and Suppliers should be - // serviced. - - Event_Channel *event_channel_; - // We just need a place to store this until we can pass it along - // when creating a Connection_Handler. -}; - -class Connection_Config_File_Parser : public File_Parser<Connection_Config_Info> - // = TITLE - // Parser for the Connection_Handler Connection file. -{ -public: - virtual FP::Return_Type read_entry (Connection_Config_Info &entry, - int &line_number); - // Read in a <Connection_Config_Info> entry. - -}; - -class Consumer_Config_Info - // = TITLE - // Stores the information in a Consumer Map entry. -{ -public: - enum - { - MAX_CONSUMERS = 1000 - // Total number of multicast consumers. - }; - - ACE_INT32 connection_id_; - // Connection id for this proxy. - - ACE_INT32 type_; - // Message type. - - ACE_INT32 consumers_[MAX_CONSUMERS]; - // Connection ids for consumers that we're routing to. - - int total_consumers_; - // Total number of these consumers. -}; - -class Consumer_Config_File_Parser : public File_Parser<Consumer_Config_Info> - // = TITLE - // Parser for the Consumer Map file. -{ -public: - virtual FP::Return_Type read_entry (Consumer_Config_Info &entry, - int &line_number); - // Read in a <Consumer_Config_Info> entry. -}; - -#endif /* _CONFIG_FILES */ diff --git a/apps/Gateway/Gateway/Connection_Handler.cpp b/apps/Gateway/Gateway/Connection_Handler.cpp deleted file mode 100644 index 328f9d502c0..00000000000 --- a/apps/Gateway/Gateway/Connection_Handler.cpp +++ /dev/null @@ -1,262 +0,0 @@ -// $Id$ - -#define ACE_BUILD_SVC_DLL -#include "Event_Channel.h" -#include "Concrete_Connection_Handlers.h" - -void -Connection_Handler::connection_id (CONNECTION_ID id) -{ - this->connection_id_ = id; -} - -CONNECTION_ID -Connection_Handler::connection_id (void) -{ - return this->connection_id_; -} - -// The total number of bytes sent/received on this Proxy. - -size_t -Connection_Handler::total_bytes (void) -{ - return this->total_bytes_; -} - -void -Connection_Handler::total_bytes (size_t bytes) -{ - this->total_bytes_ += bytes; -} - -Connection_Handler::Connection_Handler (void) -{ -} - -Connection_Handler::Connection_Handler (const Connection_Config_Info &pci) - : remote_addr_ (pci.remote_port_, pci.host_), - local_addr_ (pci.local_port_), - connection_id_ (pci.connection_id_), - total_bytes_ (0), - state_ (Connection_Handler::IDLE), - timeout_ (1), - max_timeout_ (pci.max_retry_timeout_), - event_channel_ (pci.event_channel_) -{ - // Set the priority of the Proxy. - this->priority (int (pci.priority_)); -} - -// Set the connection_role. - -void -Connection_Handler::connection_role (char d) -{ - this->connection_role_ = d; -} - -// Get the connection_role. - -char -Connection_Handler::connection_role (void) -{ - return this->connection_role_; -} - -// Sets the timeout delay. - -void -Connection_Handler::timeout (int to) -{ - if (to > this->max_timeout_) - to = this->max_timeout_; - - this->timeout_ = to; -} - -// Re-calculate the current retry timeout delay using exponential -// backoff. Returns the original timeout (i.e., before the -// re-calculation). - -int -Connection_Handler::timeout (void) -{ - int old_timeout = this->timeout_; - this->timeout_ *= 2; - - if (this->timeout_ > this->max_timeout_) - this->timeout_ = this->max_timeout_; - - return old_timeout; -} - -// Sets the max timeout delay. - -void -Connection_Handler::max_timeout (int mto) -{ - this->max_timeout_ = mto; -} - -// Gets the max timeout delay. - -int -Connection_Handler::max_timeout (void) -{ - return this->max_timeout_; -} - -// Restart connection asynchronously when timeout occurs. - -int -Connection_Handler::handle_timeout (const ACE_Time_Value &, - const void *) -{ - ACE_DEBUG ((LM_DEBUG, - "(%t) attempting to reconnect Connection_Handler %d with timeout = %d\n", - this->connection_id (), - this->timeout_)); - - // Delegate the re-connection attempt to the Event Channel. - this->event_channel_->initiate_connection_connection (this); - - return 0; -} - -// Handle shutdown of the Connection_Handler object. - -int -Connection_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) -{ - ACE_DEBUG ((LM_DEBUG, - "(%t) shutting down %s Connection_Handler %d on handle %d\n", - this->connection_role () == 'C' ? "Consumer" : "Supplier", - this->connection_id (), - this->get_handle ())); - - // Restart the connection, if possible. - return this->event_channel_->reinitiate_connection_connection (this); -} - -// Set the state of the Proxy. - -void -Connection_Handler::state (Connection_Handler::State s) -{ - this->state_ = s; -} - -// Upcall from the <ACE_Acceptor> or <ACE_Connector> that delegates -// control to our Connection_Handler. - -int -Connection_Handler::open (void *) -{ - ACE_DEBUG ((LM_DEBUG, "(%t) %s Connection_Handler's handle = %d\n", - this->connection_role () == 'C' ? "Consumer" : "Supplier", - this->peer ().get_handle ())); - - // Call back to the <Event_Channel> to complete our initialization. - if (this->event_channel_->complete_connection_connection (this) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "complete_connection_connection"), -1); - - // Turn on non-blocking I/O. - else if (this->peer ().enable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enable"), -1); - - // Register ourselves to receive input events. - else if (ACE_Reactor::instance ()->register_handler - (this, ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "register_handler"), -1); - else - return 0; -} - -// Return the current state of the Proxy. - -Connection_Handler::State -Connection_Handler::state (void) -{ - return this->state_; -} - -const ACE_INET_Addr & -Connection_Handler::remote_addr (void) -{ - return this->remote_addr_; -} - -const ACE_INET_Addr & -Connection_Handler::local_addr (void) -{ - return this->local_addr_; -} - -// Make the appropriate type of <Connection_Handler> (i.e., -// <Consumer_Handler>, <Supplier_Handler>, <Thr_Consumer_Handler>, or -// <Thr_Supplier_Handler>). - -Connection_Handler * -Connection_Handler_Factory::make_connection_handler (const Connection_Config_Info &pci) -{ - Connection_Handler *connection_handler = 0; - - // The next few lines of code are dependent on whether we are making - // a threaded/reactive Supplier_Handler/Consumer_Handler. - - if (pci.connection_role_ == 'C') // Configure a Consumer_Handler. - { - // Create a threaded Consumer_Handler. - if (ACE_BIT_ENABLED (Options::instance ()->threading_strategy (), - Options::OUTPUT_MT)) - ACE_NEW_RETURN (connection_handler, - Thr_Consumer_Handler (pci), - 0); - - // Create a reactive Consumer_Handler. - else - ACE_NEW_RETURN (connection_handler, - Consumer_Handler (pci), - 0); - } - else // connection_role == 'S', so configure a Supplier_Handler. - { - // Create a threaded Supplier_Handler. - if (ACE_BIT_ENABLED (Options::instance ()->threading_strategy (), - Options::INPUT_MT)) - ACE_NEW_RETURN (connection_handler, - Thr_Supplier_Handler (pci), - 0); - - // Create a reactive Supplier_Handler. - else - ACE_NEW_RETURN (connection_handler, - Supplier_Handler (pci), - 0); - } - - return connection_handler; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Map_Entry<Event_Key, Consumer_Dispatch_Set *>; -template class ACE_Map_Iterator_Base<Event_Key, Consumer_Dispatch_Set *, MAP_MUTEX>; -template class ACE_Map_Iterator<Event_Key, Consumer_Dispatch_Set *, MAP_MUTEX>; -template class ACE_Map_Reverse_Iterator<Event_Key, Consumer_Dispatch_Set *, MAP_MUTEX>; -template class ACE_Map_Manager<Event_Key, Consumer_Dispatch_Set *, MAP_MUTEX>; -template class ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>; -#if defined (ACE_HAS_THREADS) -template class ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_MT_SYNCH>; -#endif /* ACE_HAS_THREADS */ -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Map_Entry<Event_Key, Consumer_Dispatch_Set *> -#pragma instantiate ACE_Map_Iterator<Event_Key, Consumer_Dispatch_Set *, MAP_MUTEX> -#pragma instantiate ACE_Map_Reverse_Iterator<Event_Key, Consumer_Dispatch_Set *, MAP_MUTEX> -#pragma instantiate ACE_Map_Iterator_Base<Event_Key, Consumer_Dispatch_Set *, MAP_MUTEX> -#pragma instantiate ACE_Map_Manager<Event_Key, Consumer_Dispatch_Set *, MAP_MUTEX> -#pragma instantiate ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> -#if defined (ACE_HAS_THREADS) -#pragma instantiate ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_MT_SYNCH> -#endif /* ACE_HAS_THREADS */ -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/apps/Gateway/Gateway/Connection_Handler.h b/apps/Gateway/Gateway/Connection_Handler.h deleted file mode 100644 index ea21af476b8..00000000000 --- a/apps/Gateway/Gateway/Connection_Handler.h +++ /dev/null @@ -1,145 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Connection_Handler.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_CONNECTION_HANDLER) -#define _CONNECTION_HANDLER - -#include "ace/Service_Config.h" -#include "ace/SOCK_Connector.h" -#include "ace/Svc_Handler.h" -#include "Config_Files.h" -#include "Options.h" -#include "Event.h" - -// Forward declaration. -class Event_Channel; - -class Connection_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_SYNCH> -{ - // = TITLE - // <Connection_Handler> contains info about connection state and - // addressing. - // - // = DESCRIPTION - // The <Connection_Handler> classes process events sent to the - // Event Channel from Suppliers and forward them to Consumers. -public: - Connection_Handler (void); - // Default constructor (needed to make <ACE_Connector> happy). - - Connection_Handler (const Connection_Config_Info &); - // Real constructor. - - virtual int open (void * = 0); - // Initialize and activate a single-threaded <Connection_Handler> - // (called by <ACE_Connector::handle_output>). - - const ACE_INET_Addr &remote_addr (void); - // Returns the peer's routing address. - - const ACE_INET_Addr &local_addr (void); - // Returns our local address. - - // = Set/get connection id. - CONNECTION_ID connection_id (void); - void connection_id (CONNECTION_ID); - - // = The current state of the Connection_Handler. - enum State - { - IDLE = 1, // Prior to initialization. - CONNECTING, // During connection establishment. - ESTABLISHED, // Connection_Handler is established and active. - DISCONNECTING, // Connection_Handler is in the process of connecting. - FAILED // Connection_Handler has failed. - }; - - // = Set/get the current state. - void state (State); - State state (void); - - // = Set/get the current retry timeout delay. - void timeout (int); - int timeout (void); - - // = Set/get the maximum retry timeout delay. - void max_timeout (int); - int max_timeout (void); - - // = Set/get proxy role (i.e., 'S' for Supplier and 'C' for Consumer - // (necessary for error checking). - void connection_role (char); - char connection_role (void); - - // = The total number of bytes sent/received on this proxy. - size_t total_bytes (void); - void total_bytes (size_t bytes); - // Increment count by <bytes>. - - virtual int handle_timeout (const ACE_Time_Value &, const void *arg); - // Perform timer-based Connection_Handler reconnection. - - virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE, - ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK); - // Perform Connection_Handler termination. - -protected: - ACE_INET_Addr remote_addr_; - // Address of peer. - - ACE_INET_Addr local_addr_; - // Address of us. - - CONNECTION_ID connection_id_; - // The assigned connection ID of this entry. - - size_t total_bytes_; - // The total number of bytes sent/received on this proxy. - - State state_; - // The current state of the proxy. - - int timeout_; - // Amount of time to wait between reconnection attempts. - - int max_timeout_; - // Maximum amount of time to wait between reconnection attempts. - - char connection_role_; - // Indicates which role the proxy plays ('S' == Supplier and 'C' == - // Consumer). - - Event_Channel *event_channel_; - // Reference to the <Event_Channel> that we use to forward all - // the events from Consumers and Suppliers. -}; - -class Connection_Handler_Factory -{ - // = TITLE - // Creates the appropriate type of <Connection_Handler>. - // - // = DESCRIPTION - // <Connection_Handler>s can include <Consumer_Handler>, - // <Supplier_Handler>, <Thr_Consumer_Handler>, or - // <Thr_Supplier_Handler>). -public: - Connection_Handler *make_connection_handler (const Connection_Config_Info &); - // Make the appropriate type of <Connection_Handler>, based on the - // <Connection_Config_Info> parameter. -}; - -#endif /* _CONNECTION_HANDLER */ diff --git a/apps/Gateway/Gateway/Connection_Handler_Acceptor.cpp b/apps/Gateway/Gateway/Connection_Handler_Acceptor.cpp deleted file mode 100644 index f38aa21a23a..00000000000 --- a/apps/Gateway/Gateway/Connection_Handler_Acceptor.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// $Id$ - -#include "Event_Channel.h" -#include "Connection_Handler_Acceptor.h" - -int -Connection_Handler_Acceptor::make_svc_handler (Connection_Handler *&ph) -{ - ACE_ALLOCATOR_RETURN (ph, - this->connection_handler_factory_.make_connection_handler (this->connection_config_info_), - -1); - return 0; -} - -Connection_Handler_Acceptor::Connection_Handler_Acceptor (Event_Channel &ec, - char connection_role) - : event_channel_ (ec) -{ - this->connection_config_info_.connection_id_ = 0; - this->connection_config_info_.host_[0] = '\0'; - this->connection_config_info_.remote_port_ = 0; - this->connection_config_info_.connection_role_ = connection_role; - this->connection_config_info_.max_retry_timeout_ = Options::instance ()->max_timeout (); - this->connection_config_info_.local_port_ = 0; - this->connection_config_info_.priority_ = 1; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Acceptor<Connection_Handler, ACE_SOCK_ACCEPTOR>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Acceptor<Connection_Handler, ACE_SOCK_ACCEPTOR> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ - diff --git a/apps/Gateway/Gateway/Connection_Handler_Acceptor.h b/apps/Gateway/Gateway/Connection_Handler_Acceptor.h deleted file mode 100644 index 31ca2f99c0c..00000000000 --- a/apps/Gateway/Gateway/Connection_Handler_Acceptor.h +++ /dev/null @@ -1,51 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Connection_Handler_acceptor.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_CONNECTION_HANDLER_ACCEPTOR) -#define _CONNECTION_HANDLER_ACCEPTOR - -#include "ace/Acceptor.h" -#include "ace/SOCK_Acceptor.h" -#include "Connection_Handler.h" - -// Forward declaration -class Event_Channel; - -class Connection_Handler_Acceptor : public ACE_Acceptor<Connection_Handler, ACE_SOCK_ACCEPTOR> -{ - // = TITLE - // A concrete factory class that setups connections to peerds - // and produces a new Connection_Handler object to do the dirty - // work... -public: - Connection_Handler_Acceptor (Event_Channel &, - char connection_role); - - virtual int make_svc_handler (Connection_Handler *&ph); - // Hook method for creating an appropriate <Connection_Handler>. - -protected: - Event_Channel &event_channel_; - // Reference to the event channel. - - Connection_Config_Info connection_config_info_; - // Keeps track of what type of proxy we need to create. - - Connection_Handler_Factory connection_handler_factory_; - // Make the appropriate type of <Connection_Handler>. -}; - -#endif /* _CONNECTION_HANDLER_ACCEPTOR */ diff --git a/apps/Gateway/Gateway/Connection_Handler_Connector.cpp b/apps/Gateway/Gateway/Connection_Handler_Connector.cpp deleted file mode 100644 index 6e82fa7618d..00000000000 --- a/apps/Gateway/Gateway/Connection_Handler_Connector.cpp +++ /dev/null @@ -1,75 +0,0 @@ -// $Id$ - -#include "Connection_Handler_Connector.h" - -Connection_Handler_Connector::Connection_Handler_Connector (void) -{ -} - -// Initiate (or reinitiate) a connection to the Connection_Handler. - -int -Connection_Handler_Connector::initiate_connection (Connection_Handler *connection_handler, - ACE_Synch_Options &synch_options) -{ - char addr_buf[MAXHOSTNAMELEN]; - - // Mark ourselves as idle so that the various iterators - // will ignore us until we are reconnected. - connection_handler->state (Connection_Handler::IDLE); - - // We check the remote addr second so that it remains in the addr_buf. - if (connection_handler->local_addr ().addr_to_string (addr_buf, sizeof addr_buf) == -1 - || connection_handler->remote_addr ().addr_to_string (addr_buf, sizeof addr_buf) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "can't obtain peer's address"), -1); - - // Try to connect to the Peer. - - if (this->connect (connection_handler, - connection_handler->remote_addr (), - synch_options, - connection_handler->local_addr ()) == -1) - { - if (errno != EWOULDBLOCK) - { - connection_handler->state (Connection_Handler::FAILED); - ACE_DEBUG ((LM_DEBUG, "(%t) %p on address %s\n", - "connect", addr_buf)); - - return -1; - } - else - { - connection_handler->state (Connection_Handler::CONNECTING); - ACE_DEBUG ((LM_DEBUG, - "(%t) in the process of connecting to %s\n", - addr_buf)); - } - } - else - { - connection_handler->state (Connection_Handler::ESTABLISHED); - ACE_DEBUG ((LM_DEBUG, "(%t) connected to %s on %d\n", - addr_buf, connection_handler->get_handle ())); - } - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Connector<Connection_Handler, ACE_SOCK_CONNECTOR>; -template class ACE_Svc_Tuple<Connection_Handler>; -template class ACE_Map_Manager<ACE_HANDLE, ACE_Svc_Tuple<Connection_Handler> *, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Iterator_Base<ACE_HANDLE, ACE_Svc_Tuple<Connection_Handler> *, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Iterator<ACE_HANDLE, ACE_Svc_Tuple<Connection_Handler> *, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Reverse_Iterator<ACE_HANDLE, ACE_Svc_Tuple<Connection_Handler> *, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Entry<ACE_HANDLE, ACE_Svc_Tuple<Connection_Handler> *>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Connector<Connection_Handler, ACE_SOCK_CONNECTOR> -#pragma instantiate ACE_Svc_Tuple<Connection_Handler> -#pragma instantiate ACE_Map_Manager<ACE_HANDLE, ACE_Svc_Tuple<Connection_Handler> *, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Iterator_Base<ACE_HANDLE, ACE_Svc_Tuple<Connection_Handler> *, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Iterator<ACE_HANDLE, ACE_Svc_Tuple<Connection_Handler> *, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Reverse_Iterator<ACE_HANDLE, ACE_Svc_Tuple<Connection_Handler> *, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Entry<ACE_HANDLE, ACE_Svc_Tuple<Connection_Handler> *> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/apps/Gateway/Gateway/Connection_Handler_Connector.h b/apps/Gateway/Gateway/Connection_Handler_Connector.h deleted file mode 100644 index e81d66d9694..00000000000 --- a/apps/Gateway/Gateway/Connection_Handler_Connector.h +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Connection_Handler_Connector.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_IO_HANDLER_CONNECTOR) -#define _IO_HANDLER_CONNECTOR - -#include "ace/Connector.h" -#include "ace/SOCK_Connector.h" -#include "Connection_Handler.h" - -class Connection_Handler_Connector : public ACE_Connector<Connection_Handler, ACE_SOCK_CONNECTOR> -{ - // = TITLE - // A concrete factory class that setups connections to peerds - // and produces a new Connection_Handler object to do the dirty - // work... -public: - Connection_Handler_Connector (void); - - // Initiate (or reinitiate) a connection on the Connection_Handler. - int initiate_connection (Connection_Handler *, - ACE_Synch_Options & = ACE_Synch_Options::synch); - -}; - -#endif /* _IO_HANDLER_CONNECTOR */ diff --git a/apps/Gateway/Gateway/Consumer_Dispatch_Set.h b/apps/Gateway/Gateway/Consumer_Dispatch_Set.h deleted file mode 100644 index 2f89143460d..00000000000 --- a/apps/Gateway/Gateway/Consumer_Dispatch_Set.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Consumer_Dispatch_Set.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (CONSUMER_DISPATCH_SET) -#define CONSUMER_DISPATCH_SET - -#include "ace/Containers.h" - -// Forward reference. -class Connection_Handler; - -typedef ACE_Unbounded_Set<Connection_Handler *> Consumer_Dispatch_Set; -typedef ACE_Unbounded_Set_Iterator<Connection_Handler *> Consumer_Dispatch_Set_Iterator; - -#endif /* CONSUMER_DISPATCH_SET */ diff --git a/apps/Gateway/Gateway/Consumer_Entry.cpp b/apps/Gateway/Gateway/Consumer_Entry.cpp deleted file mode 100644 index c3dcd96ebbf..00000000000 --- a/apps/Gateway/Gateway/Consumer_Entry.cpp +++ /dev/null @@ -1,31 +0,0 @@ -// Defines an entry in the Consumer Map. -// $Id$ - -#include "Consumer_Entry.h" - -Consumer_Entry::Consumer_Entry (void) -{ - ACE_NEW (this->destinations_, Consumer_Entry::ENTRY_SET); -} - -Consumer_Entry::~Consumer_Entry (void) -{ - delete this->destinations_; -} - -// Get the associated set of destinations. - -Consumer_Entry::ENTRY_SET * -Consumer_Entry::destinations (void) -{ - return this->destinations_; -} - -// Set the associated set of destinations. - -void -Consumer_Entry::destinations (Consumer_Entry::ENTRY_SET *s) -{ - this->destinations_ = s; -} - diff --git a/apps/Gateway/Gateway/Consumer_Entry.h b/apps/Gateway/Gateway/Consumer_Entry.h deleted file mode 100644 index fe502991514..00000000000 --- a/apps/Gateway/Gateway/Consumer_Entry.h +++ /dev/null @@ -1,45 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Consumer_Entry.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_ROUTING_ENTRY) -#define _ROUTING_ENTRY - -#include "ace/Set.h" - -// Forward reference. -class IO_Handler; - -class Consumer_Entry -{ - // = TITLE - // Defines an entry in the Consumer_Map. -public: - Consumer_Entry (void); - ~Consumer_Entry (void); - - typedef ACE_Unbounded_Set<IO_Handler *> ENTRY_SET; - typedef ACE_Unbounded_Set_Iterator<IO_Handler *> ENTRY_ITERATOR; - - // = Set/get the associated set of destinations. - ENTRY_SET *destinations (void); - void destinations (ENTRY_SET *); - -protected: - ENTRY_SET *destinations_; - // The set of destinations; -}; - -#endif /* _ROUTING_ENTRY */ diff --git a/apps/Gateway/Gateway/Consumer_Map.cpp b/apps/Gateway/Gateway/Consumer_Map.cpp deleted file mode 100644 index 6d16601f949..00000000000 --- a/apps/Gateway/Gateway/Consumer_Map.cpp +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -#if !defined (_CONSUMER_MAP_C) -#define _CONSUMER_MAP_C - -#include "Consumer_Map.h" - -// Bind the Event_Addr to the INT_ID. - -int -Consumer_Map::bind (Event_Addr event_addr, - Consumer_Entry *Consumer_Entry) -{ - return this->map_.bind (event_addr, Consumer_Entry); -} - -// Find the Consumer_Entry corresponding to the Event_Addr. - -int -Consumer_Map::find (Event_Addr event_addr, - Consumer_Entry *&Consumer_Entry) -{ - return this->map_.find (event_addr, Consumer_Entry); -} - -// Unbind (remove) the Event_Addr from the map. - -int -Consumer_Map::unbind (Event_Addr event_addr) -{ - return this->map_.unbind (event_addr); -} - -Consumer_Map_Iterator::Consumer_Map_Iterator (Consumer_Map &rt) - : map_iter_ (rt.map_) -{ -} - -int -Consumer_Map_Iterator::next (Consumer_Entry *&ss) -{ - // Loop in order to skip over inactive entries if necessary. - - for (ACE_Map_Entry<Event_Addr, Consumer_Entry *> *temp = 0; - this->map_iter_.next (temp) != 0; - this->advance ()) - { - // Otherwise, return the next item. - ss = temp->int_id_; - return 1; - } - return 0; -} - -int -Consumer_Map_Iterator::advance (void) -{ - return this->map_iter_.advance (); -} -#endif /* _CONSUMER_MAP_C */ diff --git a/apps/Gateway/Gateway/Consumer_Map.h b/apps/Gateway/Gateway/Consumer_Map.h deleted file mode 100644 index fd392afaf6e..00000000000 --- a/apps/Gateway/Gateway/Consumer_Map.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Consumer_Map.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_CONSUMER_MAP_H) -#define _CONSUMER_MAP_H - -#include "ace/Map_Manager.h" -#include "Concurrency_Strategies.h" -#include "Event.h" -#include "Consumer_Entry.h" - -class Consumer_Map -{ - // = TITLE - // Define a generic consumer map based on the ACE Map_Manager. - // - // = DESCRIPTION - // This class makes it easier to use the Map_Manager. -public: - int bind (Event_Addr event, Consumer_Entry *Consumer_Entry); - // Associate Event with the Consumer_Entry. - - int find (Event_Addr event, Consumer_Entry *&Consumer_Entry); - // Break any association of EXID. - - int unbind (Event_Addr event); - // Locate EXID and pass out parameter via INID. If found, - // return 0, else -1. - -public: - ACE_Map_Manager<Event_Addr, Consumer_Entry *, MAP_MUTEX> map_; - // Map that associates Event Addrs (external ids) with Consumer_Entry *'s - // <internal IDs>. -}; - -class Consumer_Map_Iterator -{ - // = TITLE - // Define an iterator for the Consumer Map. -public: - Consumer_Map_Iterator (Consumer_Map &mm); - int next (Consumer_Entry *&); - int advance (void); - -private: - ACE_Map_Iterator<Event_Addr, Consumer_Entry *, MAP_MUTEX> map_iter_; - // Map we are iterating over. -}; -#endif /* _CONSUMER_MAP_H */ diff --git a/apps/Gateway/Gateway/Dispatch_Set.h b/apps/Gateway/Gateway/Dispatch_Set.h deleted file mode 100644 index a867f1ca5ff..00000000000 --- a/apps/Gateway/Gateway/Dispatch_Set.h +++ /dev/null @@ -1,28 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Dispatch_Set.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_DISPATCH_SET) -#define _DISPATCH_SET - -#include "ace/Set.h" - -// Forward reference. -class Proxy_Handler; - -typedef ACE_Unbounded_Set<Proxy_Handler *> Dispatch_Set; -typedef ACE_Unbounded_Set_Iterator<Proxy_Handler *> Dispatch_Set_Iterator; - -#endif /* _DISPATCH_SET */ diff --git a/apps/Gateway/Gateway/Event.h b/apps/Gateway/Gateway/Event.h deleted file mode 100644 index 58ef1f0a97b..00000000000 --- a/apps/Gateway/Gateway/Event.h +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Event.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (EVENT) -#define EVENT - -#include "ace/OS.h" - -// = The following #defines should really be in a separate include -// file that is shared with the ../Peer/ directory. For now, we'll -// keep them here to simplify the sharing between the two directories. -// BTW, this is also the reason why all the methods are inlined... - -// Used by Peers to create Consumers in a Gateway. -#if !defined (DEFAULT_GATEWAY_CONSUMER_PORT) -#define DEFAULT_GATEWAY_CONSUMER_PORT 10009 -#endif /* DEFAULT_GATEWAY_CONSUMER_PORT */ - -// Used by Peers create Suppliers in a Gateway. -#if !defined (DEFAULT_GATEWAY_SUPPLIER_PORT) -#define DEFAULT_GATEWAY_SUPPLIER_PORT 10010 -#endif /* DEFAULT_GATEWAY_SUPPLIER_PORT */ - -// Used by a Gateway to create Consumers in a Peer. -#if !defined (DEFAULT_PEER_CONSUMER_PORT) -#define DEFAULT_PEER_CONSUMER_PORT 10011 -#endif /* DEFAULT_PEER_CONSUMER_PORT */ - -// Used by a Gateway to create Suppliers in a Peer. -#if !defined (DEFAULT_PEER_SUPPLIER_PORT) -#define DEFAULT_PEER_SUPPLIER_PORT 10012 -#endif /* DEFAULT_PEER_SUPPLIER_PORT */ - -// This is the unique supplier identifier that denotes a particular -// <Connection_Handler> in the Gateway. -typedef ACE_INT32 CONNECTION_ID; - -class Event_Key -{ - // = TITLE - // Address used to identify the source/destination of an event. - // - // = DESCRIPTION - // This is really a "virtual forwarding address" thatis used to - // decouple the filtering and forwarding logic of the Event - // Channel from the format of the data. -public: - Event_Key (CONNECTION_ID cid = -1, - u_char type = 0) - : connection_id_ (cid), - type_ (type) {} - - int operator== (const Event_Key &event_addr) const - { - return this->connection_id_ == event_addr.connection_id_ - && this->type_ == event_addr.type_; - } - - CONNECTION_ID connection_id_; - // Unique connection identifier that denotes a particular - // Connection_Handler. - - ACE_INT32 type_; - // Event type. -}; - -class Event_Header -{ - // = TITLE - // Fixed sized header. - // - // = DESCRIPTION - // This is designed to have a sizeof (16) to avoid alignment - // problems on most platforms. -public: - enum - { - INVALID_ID = -1 // No peer can validly use this number. - }; - - void decode (void) - { - this->len_ = ntohl (this->len_); - this->type_ = ntohl (this->type_); - this->priority_ = ntohl (this->priority_); - } - // Decode from network byte order to host byte order. - - void encode (void) - { - this->len_ = htonl (this->len_); - this->type_ = htonl (this->type_); - this->priority_ = htonl (this->priority_); - } - // Encode from host byte order to network byte order. - - size_t len_; - // Length of the data_ payload, in bytes. - - CONNECTION_ID connection_id_; - // Unique connection identifier that denotes a particular - // Connection_Handler. - - ACE_INT32 type_; - // Event type. - - ACE_INT32 priority_; - // Event priority. -}; - -class Event -{ - // = TITLE - // Variable-sized event (data_ may be variable-sized between - // 0 and MAX_PAYLOAD_SIZE). -public: - enum { MAX_PAYLOAD_SIZE = 1024 }; - // The maximum size of an Event. - - Event_Header header_; - // Event header. - - char data_[MAX_PAYLOAD_SIZE]; - // Event data. -}; - -#endif /* EVENT */ diff --git a/apps/Gateway/Gateway/Event_Channel.cpp b/apps/Gateway/Gateway/Event_Channel.cpp deleted file mode 100644 index 7d3477166ed..00000000000 --- a/apps/Gateway/Gateway/Event_Channel.cpp +++ /dev/null @@ -1,494 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -#define ACE_BUILD_SVC_DLL -#include "Connection_Handler_Connector.h" -#include "Event_Channel.h" - -Event_Channel::~Event_Channel (void) -{ -} - -Event_Channel::Event_Channel (void) - : supplier_acceptor_ (*this, 'S'), - consumer_acceptor_ (*this, 'C') -{ -} - -int -Event_Channel::compute_performance_statistics (void) -{ - ACE_DEBUG ((LM_DEBUG, "(%t) doing the performance timeout here...\n")); - CONNECTION_MAP_ITERATOR cmi (this->connection_map_); - - // If we've got a <ACE_Thread_Manager> then use it to suspend all - // the threads. This will enable us to get an accurate count. - - if (Options::instance ()->threading_strategy () - != Options::REACTIVE) - { - if (ACE_Thread_Manager::instance ()->suspend_all () == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "suspend_all"), -1); - ACE_DEBUG ((LM_DEBUG, "(%t) suspending all threads...")); - } - - size_t total_bytes_in = 0; - size_t total_bytes_out = 0; - - // Iterate through the connection map summing up the number of bytes - // sent/received. - - for (CONNECTION_MAP_ENTRY *me = 0; - cmi.next (me) != 0; - cmi.advance ()) - { - Connection_Handler *connection_handler = me->int_id_; - - if (connection_handler->connection_role () == 'C') - total_bytes_out += connection_handler->total_bytes (); - else // connection_handler->connection_role () == 'S' - total_bytes_in += connection_handler->total_bytes (); - } - - ACE_DEBUG ((LM_DEBUG, - "(%t) after %d seconds, \ntotal_bytes_in = %d\ntotal_bytes_out = %d\n", - Options::instance ()->performance_window (), - total_bytes_in, - total_bytes_out)); - - ACE_DEBUG ((LM_DEBUG, - "(%t) %f Mbits/sec received.\n", - (float) (total_bytes_in * 8 / - (float) (1024 * 1024 * Options::instance ()->performance_window ())))); - - ACE_DEBUG ((LM_DEBUG, - "(%t) %f Mbits/sec sent.\n", - (float) (total_bytes_out * 8 / - (float) (1024 * 1024 * Options::instance ()->performance_window ())))); - - // Resume all the threads again. - - if (Options::instance ()->threading_strategy () - != Options::REACTIVE) - { - if (ACE_Thread_Manager::instance ()->resume_all () == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "resume_all"), -1); - ACE_DEBUG ((LM_DEBUG, "(%t) resuming all threads...")); - } - - return 0; -} - -int -Event_Channel::handle_timeout (const ACE_Time_Value &, - const void *) -{ - // This is called periodically to compute performance statistics. - return this->compute_performance_statistics (); -} - -// This method forwards the <event> to Consumer that have registered -// to receive it. - -int -Event_Channel::put (ACE_Message_Block *event, - ACE_Time_Value *) -{ - // We got a valid event, so determine its virtual forwarding - // address, which is stored in the first of the two event blocks, - // which are chained together by <ACE::recv>. - - Event_Key *forwarding_addr = (Event_Key *) event->rd_ptr (); - - // Skip over the address portion and get the data. - ACE_Message_Block *data = event->cont (); - - // <dispatch_set> points to the set of Consumers associated with - // this forwarding address. - Consumer_Dispatch_Set *dispatch_set = 0; - - if (this->efd_.find (*forwarding_addr, dispatch_set) == -1) - // Failure. - ACE_ERROR ((LM_DEBUG, - "(%t) find failed on connection id = %d, type = %d\n", - forwarding_addr->connection_id_, - forwarding_addr->type_)); - else - { - // Check to see if there are any consumers. - if (dispatch_set->size () == 0) - ACE_DEBUG ((LM_WARNING, - "there are no active consumers for this event currently\n")); - - else // There are consumers, so forward the event. - { - Consumer_Dispatch_Set_Iterator dsi (*dispatch_set); - - // At this point, we should assign a thread-safe locking - // strategy to the Message_Block is we're running in a - // multi-threaded configuration. - data->locking_strategy (Options::instance ()->locking_strategy ()); - - for (Connection_Handler **connection_handler = 0; - dsi.next (connection_handler) != 0; - dsi.advance ()) - { - // Only process active connection_handlers. - if ((*connection_handler)->state () == Connection_Handler::ESTABLISHED) - { - // Duplicate the event portion via reference - // counting. - ACE_Message_Block *dup_msg = data->duplicate (); - - ACE_DEBUG ((LM_DEBUG, "(%t) forwarding to Consumer %d\n", - (*connection_handler)->connection_id ())); - - if ((*connection_handler)->put (dup_msg) == -1) - { - if (errno == EWOULDBLOCK) // The queue has filled up! - ACE_ERROR ((LM_ERROR, "(%t) %p\n", - "gateway is flow controlled, so we're dropping events")); - else - ACE_ERROR ((LM_ERROR, - "(%t) %p transmission error to peer %d\n", - "put", - (*connection_handler)->connection_id ())); - - // We are responsible for releasing an - // ACE_Message_Block if failures occur. - dup_msg->release (); - } - } - } - } - } - - // Release the memory in the message block. - event->release (); - return 0; -} - -int -Event_Channel::svc (void) -{ - return 0; -} - -int -Event_Channel::initiate_connection_connection (Connection_Handler *connection_handler) -{ - ACE_Synch_Options synch_options; - - if (Options::instance ()->blocking_semantics () == ACE_NONBLOCK) - synch_options = ACE_Synch_Options::asynch; - else - synch_options = ACE_Synch_Options::synch; - - return this->connector_.initiate_connection (connection_handler, - synch_options); -} - -int -Event_Channel::complete_connection_connection (Connection_Handler *connection_handler) -{ - int option = connection_handler->connection_role () == 'S' ? SO_RCVBUF : SO_SNDBUF; - int socket_queue_size = Options::instance ()->socket_queue_size (); - - if (socket_queue_size > 0) - if (connection_handler->peer ().set_option (SOL_SOCKET, - option, - &socket_queue_size, - sizeof (int)) == -1) - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "set_option")); - - connection_handler->thr_mgr (ACE_Thread_Manager::instance ()); - - // Our state is now "established." - connection_handler->state (Connection_Handler::ESTABLISHED); - - // Restart the timeout to 1. - connection_handler->timeout (1); - - ACE_INT32 id = htonl (connection_handler->connection_id ()); - - // Send the connection id to the peerd. - - ssize_t n = connection_handler->peer ().send ((const void *) &id, sizeof id); - - if (n != sizeof id) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - n == 0 ? "peer has closed down unexpectedly" : "send"), - -1); - return 0; -} - -// Restart connection (blocking_semantics dicates whether we restart -// synchronously or asynchronously). - -int -Event_Channel::reinitiate_connection_connection (Connection_Handler *connection_handler) -{ - // Skip over proxies with deactivated handles. - if (connection_handler->get_handle () != ACE_INVALID_HANDLE) - // Make sure to close down peer to reclaim descriptor. - connection_handler->peer ().close (); - - if (connection_handler->state () != Connection_Handler::DISCONNECTING) - { - ACE_DEBUG ((LM_DEBUG, - "(%t) scheduling reinitiation of Connection_Handler %d\n", - connection_handler->connection_id ())); - - // Reschedule ourselves to try and connect again. - if (ACE_Reactor::instance ()->schedule_timer - (connection_handler, 0, connection_handler->timeout ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "schedule_timer"), -1); - } - return 0; -} - -// Initiate active connections with the Consumer and Supplier Peers. - -void -Event_Channel::initiate_connector (void) -{ - if (Options::instance ()->enabled - (Options::CONSUMER_CONNECTOR | Options::SUPPLIER_CONNECTOR)) - { - CONNECTION_MAP_ITERATOR cmi (this->connection_map_); - - // Iterate through the Consumer Map connecting all the - // Connection_Handlers. - - for (CONNECTION_MAP_ENTRY *me = 0; - cmi.next (me) != 0; - cmi.advance ()) - { - Connection_Handler *connection_handler = me->int_id_; - - if (this->initiate_connection_connection (connection_handler) == -1) - continue; // Failures are handled elsewhere... - } - } -} - -// Initiate passive acceptor to wait for Consumer and Supplier Peers -// to accept. - -int -Event_Channel::initiate_acceptors (void) -{ - if (Options::instance ()->enabled (Options::CONSUMER_ACCEPTOR) - && this->consumer_acceptor_.open - (Options::instance ()->consumer_acceptor_port (), - ACE_Reactor::instance (), - Options::instance ()->blocking_semantics ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", - "cannot register acceptor"), - -1); - - if (Options::instance ()->enabled (Options::SUPPLIER_CONNECTOR) - && this->supplier_acceptor_.open - (Options::instance ()->supplier_acceptor_port (), - ACE_Reactor::instance (), - Options::instance ()->blocking_semantics ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", - "cannot register acceptor"), - -1); - - return 0; -} - -// This method gracefully shuts down all the Handlers in the -// Connection_Handler Connection Map. - -int -Event_Channel::close (u_long) -{ - if (Options::instance ()->threading_strategy () - != Options::REACTIVE) - { - if (ACE_Thread_Manager::instance ()->suspend_all () == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "suspend_all"), -1); - ACE_DEBUG ((LM_DEBUG, "(%t) suspending all threads\n")); - } - - // First tell everyone that the spaceship is here... - { - CONNECTION_MAP_ITERATOR cmi (this->connection_map_); - - // Iterate over all the handlers and shut them down. - - for (CONNECTION_MAP_ENTRY *me; - cmi.next (me) != 0; - cmi.advance ()) - { - Connection_Handler *connection_handler = me->int_id_; - - ACE_DEBUG ((LM_DEBUG, - "(%t) closing down connection %d\n", - connection_handler->connection_id ())); - - // Mark Connection_Handler as DISCONNECTING so we don't try to - // reconnect... - connection_handler->state (Connection_Handler::DISCONNECTING); - } - } - - // Close down the connector - this->connector_.close (); - - // Close down the supplier acceptor. - this->supplier_acceptor_.close (); - - // Close down the consumer acceptor. - this->consumer_acceptor_.close (); - - // Now tell everyone that it is now time to commit suicide. - { - CONNECTION_MAP_ITERATOR cmi (this->connection_map_); - - for (CONNECTION_MAP_ENTRY *me; - cmi.next (me) != 0; - cmi.advance ()) - { - Connection_Handler *connection_handler = me->int_id_; - - // Deallocate Connection_Handler resources. - connection_handler->destroy (); // Will trigger a delete. - } - } - - return 0; -} - -int -Event_Channel::find_proxy (ACE_INT32 connection_id, - Connection_Handler *&connection_handler) -{ - return this->connection_map_.find (connection_id, - connection_handler); -} - -int -Event_Channel::bind_proxy (Connection_Handler *connection_handler) -{ - int result = this->connection_map_.bind (connection_handler->connection_id (), - connection_handler); - - switch (result) - { - case -1: - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) bind failed for connection %d\n", - connection_handler->connection_id ()), - -1); - /* NOTREACHED */ - case 1: // Oops, found a duplicate! - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) duplicate connection %d, already bound\n", - connection_handler->connection_id ()), - -1); - /* NOTREACHED */ - case 0: - // Success. - return 0; - /* NOTREACHED */ - default: - ACE_ERROR_RETURN ((LM_DEBUG, - "(%t) invalid result %d\n", - result), - -1); - /* NOTREACHED */ - } - - return 0; -} - -int -Event_Channel::subscribe (const Event_Key &event_addr, - Consumer_Dispatch_Set *cds) -{ - int result = this->efd_.bind (event_addr, cds); - - // Bind with consumer map, keyed by peer address. - switch (result) - { - case -1: - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) bind failed for connection %d\n", - event_addr.connection_id_), - -1); - /* NOTREACHED */ - case 1: // Oops, found a duplicate! - ACE_ERROR_RETURN ((LM_DEBUG, - "(%t) duplicate consumer map entry %d, " - "already bound\n", - event_addr.connection_id_), - -1); - /* NOTREACHED */ - case 0: - // Success. - return 0; - default: - ACE_ERROR_RETURN ((LM_DEBUG, - "(%t) invalid result %d\n", - result), - -1); - /* NOTREACHED */ - } - - return 0; -} - -int -Event_Channel::open (void *) -{ - // Ignore <SIGPIPE> so each <Consumer_Handler> can handle it. - ACE_Sig_Action sig (ACE_SignalHandler (SIG_IGN), SIGPIPE); - ACE_UNUSED_ARG (sig); - - // Actively initiate Peer connections. - this->initiate_connector (); - - // Passively initiate Peer acceptor. - if (this->initiate_acceptors () == -1) - return -1; - - // If we're not running reactively, then we need to make sure that - // <ACE_Message_Block> reference counting operations are - // thread-safe. Therefore, we create an <ACE_Lock_Adapter> that is - // parameterized by <ACE_SYNCH_MUTEX> to prevent race conditions. - if (Options::instance ()->threading_strategy () - != Options::REACTIVE) - { - ACE_Lock_Adapter<ACE_SYNCH_MUTEX> *la; - - ACE_NEW_RETURN (la, - ACE_Lock_Adapter<ACE_SYNCH_MUTEX>, - -1); - - Options::instance ()->locking_strategy (la); - } - - return 0; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Lock_Adapter<ACE_SYNCH_MUTEX>; -template class ACE_Map_Entry<ACE_INT32, Connection_Handler *>; -template class ACE_Map_Iterator<ACE_INT32, Connection_Handler *, MAP_MUTEX>; -template class ACE_Map_Reverse_Iterator<ACE_INT32, Connection_Handler *, MAP_MUTEX>; -template class ACE_Map_Iterator_Base<ACE_INT32, Connection_Handler *, MAP_MUTEX>; -template class ACE_Map_Manager<ACE_INT32, Connection_Handler *, MAP_MUTEX>; -template class ACE_Unbounded_Set_Iterator<Connection_Handler *>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Lock_Adapter<ACE_SYNCH_MUTEX> -#pragma instantiate ACE_Map_Entry<ACE_INT32, Connection_Handler *> -#pragma instantiate ACE_Map_Iterator<ACE_INT32, Connection_Handler *, MAP_MUTEX> -#pragma instantiate ACE_Map_Reverse_Iterator<ACE_INT32, Connection_Handler *, MAP_MUTEX> -#pragma instantiate ACE_Map_Iterator_Base<ACE_INT32, Connection_Handler *, MAP_MUTEX> -#pragma instantiate ACE_Map_Manager<ACE_INT32, Connection_Handler *, MAP_MUTEX> -#pragma instantiate ACE_Unbounded_Set_Iterator<Connection_Handler *> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/apps/Gateway/Gateway/Event_Channel.h b/apps/Gateway/Gateway/Event_Channel.h deleted file mode 100644 index f90815be3af..00000000000 --- a/apps/Gateway/Gateway/Event_Channel.h +++ /dev/null @@ -1,123 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Event_Channel.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (ACE_EVENT_CHANNEL) -#define ACE_EVENT_CHANNEL - -#include "Connection_Handler_Connector.h" -#include "Connection_Handler_Acceptor.h" -#include "Consumer_Dispatch_Set.h" -#include "Event_Forwarding_Discriminator.h" - -typedef ACE_Null_Mutex MAP_MUTEX; - -class ACE_Svc_Export Event_Channel : public ACE_Event_Handler -{ - // = TITLE - // Define a generic Event_Channel. - // - // = DESCRIPTION - // The inspiration for this class is derived from the CORBA COS - // Event Channel, though the design is simplified. - // - // We inherit from <ACE_Event_Handler> so that we can be - // registered with an <ACE_Reactor> to handle timeouts. -public: - // = Initialization and termination methods. - Event_Channel (void); - ~Event_Channel (void); - - virtual int open (void * = 0); - // Open the channel. - - virtual int close (u_long = 0); - // Close down the Channel. - - // = Proxy management methods. - int initiate_connection_connection (Connection_Handler *); - // Initiate the connection of the <Connection_Handler> to its peer. - - int complete_connection_connection (Connection_Handler *); - // Complete the initialization of the <Connection_Handler> once it's - // connected to its Peer. - - int reinitiate_connection_connection (Connection_Handler *); - // Reinitiate a connection asynchronously when the Peer fails. - - int bind_proxy (Connection_Handler *); - // Bind the <Connection_Handler> to the <connection_map_>. - - int find_proxy (ACE_INT32 connection_id, - Connection_Handler *&); - // Locate the <Connection_Handler> with <connection_id>. - - int subscribe (const Event_Key &event_addr, - Consumer_Dispatch_Set *cds); - // Subscribe the <Consumer_Dispatch_Set> to receive events that - // match <Event_Key>. - - // = Event forwarding method. - virtual int put (ACE_Message_Block *mb, - ACE_Time_Value * = 0); - // Pass <mb> to the Event Channel so it can forward it to Consumers. - - void initiate_connector (void); - // Actively initiate connections to the Peers. - - int initiate_acceptors (void); - // Passively initiate the <Peer_Acceptor>s for Consumer and - // Suppliers. - -private: - virtual int svc (void); - // Run as an active object. - - int parse_args (int argc, char *argv[]); - // Parse the command-line arguments. - - int compute_performance_statistics (void); - // Perform timer-based performance profiling. - - virtual int handle_timeout (const ACE_Time_Value &, - const void *arg); - // Periodically callback to perform timer-based performance - // profiling. - - Connection_Handler_Connector connector_; - // Used to establish the connections actively. - - Connection_Handler_Acceptor supplier_acceptor_; - // Used to establish connections passively and create Suppliers. - - Connection_Handler_Acceptor consumer_acceptor_; - // Used to establish connections passively and create Consumers. - - // = Make life easier by defining typedefs. - typedef ACE_Map_Manager<CONNECTION_ID, Connection_Handler *, MAP_MUTEX> - CONNECTION_MAP; - typedef ACE_Map_Iterator<CONNECTION_ID, Connection_Handler *, MAP_MUTEX> - CONNECTION_MAP_ITERATOR; - typedef ACE_Map_Entry<CONNECTION_ID, Connection_Handler *> - CONNECTION_MAP_ENTRY; - - CONNECTION_MAP connection_map_; - // Table that maps <CONNECTION_ID>s to <Connection_Handler> *'s. - - Event_Forwarding_Discriminator efd_; - // Map that associates an event to a set of <Consumer_Handler> *'s. -}; - -#endif /* ACE_EVENT_CHANNEL */ diff --git a/apps/Gateway/Gateway/Event_Forwarding_Discriminator.cpp b/apps/Gateway/Gateway/Event_Forwarding_Discriminator.cpp deleted file mode 100644 index 8bda0e85a4d..00000000000 --- a/apps/Gateway/Gateway/Event_Forwarding_Discriminator.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -#if !defined (_CONSUMER_MAP_C) -#define _CONSUMER_MAP_C - -#include "Event_Forwarding_Discriminator.h" - -// Bind the Event_Key to the INT_ID. - -int -Event_Forwarding_Discriminator::bind (Event_Key event_addr, - Consumer_Dispatch_Set *cds) -{ - return this->map_.bind (event_addr, cds); -} - -// Find the Consumer_Dispatch_Set corresponding to the Event_Key. - -int -Event_Forwarding_Discriminator::find (Event_Key event_addr, - Consumer_Dispatch_Set *&cds) -{ - return this->map_.find (event_addr, cds); -} - -// Unbind (remove) the Event_Key from the map. - -int -Event_Forwarding_Discriminator::unbind (Event_Key event_addr) -{ - return this->map_.unbind (event_addr); -} - -Event_Forwarding_Discriminator_Iterator::Event_Forwarding_Discriminator_Iterator - (Event_Forwarding_Discriminator &rt) - : map_iter_ (rt.map_) -{ -} - -int -Event_Forwarding_Discriminator_Iterator::next (Consumer_Dispatch_Set *&cds) -{ - ACE_Map_Entry<Event_Key, Consumer_Dispatch_Set *> *temp; - - if (this->map_iter_.next (temp) == 0) - return 0; - else - { - cds = temp->int_id_; - return 1; - } -} - -int -Event_Forwarding_Discriminator_Iterator::advance (void) -{ - return this->map_iter_.advance (); -} -#endif /* _CONSUMER_MAP_C */ diff --git a/apps/Gateway/Gateway/Event_Forwarding_Discriminator.h b/apps/Gateway/Gateway/Event_Forwarding_Discriminator.h deleted file mode 100644 index 09b62d007d0..00000000000 --- a/apps/Gateway/Gateway/Event_Forwarding_Discriminator.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Event_Forwarding_Discriminator.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_CONSUMER_MAP_H) -#define _CONSUMER_MAP_H - -#include "ace/Map_Manager.h" -#include "ace/Synch.h" -#include "Event.h" -#include "Consumer_Dispatch_Set.h" - -class Event_Forwarding_Discriminator -{ - // = TITLE - // Map events to the set of Consumer_Proxies that have subscribed - // to receive the event. -public: - int bind (Event_Key event, Consumer_Dispatch_Set *cds); - // Associate Event with the Consumer_Dispatch_Set. - - int unbind (Event_Key event); - // Locate EXID and pass out parameter via INID. If found, - // return 0, else -1. - - int find (Event_Key event, Consumer_Dispatch_Set *&cds); - // Break any association of EXID. - -public: - ACE_Map_Manager<Event_Key, Consumer_Dispatch_Set *, ACE_Null_Mutex> map_; - // Map that associates <Event_Key>s (external ids) with - // <Consumer_Dispatch_Set> *'s <internal IDs>. -}; - -class Event_Forwarding_Discriminator_Iterator -{ - // = TITLE - // Define an iterator for the Consumer Map. -public: - Event_Forwarding_Discriminator_Iterator (Event_Forwarding_Discriminator &mm); - int next (Consumer_Dispatch_Set *&); - int advance (void); - -private: - ACE_Map_Iterator<Event_Key, Consumer_Dispatch_Set *, ACE_Null_Mutex> map_iter_; - // Map we are iterating over. -}; -#endif /* _CONSUMER_MAP_H */ diff --git a/apps/Gateway/Gateway/File_Parser.cpp b/apps/Gateway/Gateway/File_Parser.cpp deleted file mode 100644 index bfde7a6911e..00000000000 --- a/apps/Gateway/Gateway/File_Parser.cpp +++ /dev/null @@ -1,150 +0,0 @@ -#if !defined (FILE_PARSER_C) -// $Id$ - -#define FILE_PARSER_C - -#include "ace/OS.h" -#include "File_Parser.h" - -// This fixes a nasty bug with cfront-based compilers (like -// Centerline). -typedef FP::Return_Type FP_RETURN_TYPE; - -// File_Parser stuff. - -template <class ENTRY> int -File_Parser<ENTRY>::open (const char filename[]) -{ - this->infile_ = ACE_OS::fopen (filename, "r"); - if (this->infile_ == 0) - return -1; - else - return 0; -} - -template <class ENTRY> int -File_Parser<ENTRY>::close (void) -{ - return ACE_OS::fclose (this->infile_); -} - -template <class ENTRY> FP_RETURN_TYPE -File_Parser<ENTRY>::getword (char buf[]) -{ - return this->readword (buf); -} - -// Get the next string from the file via this->readword() -// Check make sure the string forms a valid number. - -template <class ENTRY> FP_RETURN_TYPE -File_Parser<ENTRY>::getint (ACE_INT32 &value) -{ - char buf[BUFSIZ]; - FP_RETURN_TYPE read_result = this->readword (buf); - - if (read_result == FP::SUCCESS) - { - // Check to see if this is the "use the default value" symbol? - if (buf[0] == '*') - return FP::DEFAULT; - else - { - // ptr is used for error checking with ACE_OS::strtol. - char *ptr; - - // try to convert the buf to a decimal number - value = ACE_OS::strtol (buf, &ptr, 10); - - // check if the buf is a decimal or not - if (value == 0 && ptr == buf) - return FP::PARSE_ERROR; - else - return FP::SUCCESS; - } - } - else - return read_result; -} - - -template <class ENTRY> FP_RETURN_TYPE -File_Parser<ENTRY>::readword (char buf[]) -{ - int wordlength = 0; - int c; - - // Skip over leading delimiters and get word. - - while ((c = getc (this->infile_)) != EOF && c != '\n') - if (this->delimiter (c)) - { - // We've reached the end of a "word". - if (wordlength > 0) - break; - } - else - buf[wordlength++] = c; - - buf[wordlength] = '\0'; - - if (c == EOF) { - // If EOF is just a delimiter, don't return EOF so that the word - // gets processed. - if (wordlength > 0) - { - ungetc (c, this->infile_); - return FP::SUCCESS; - } - else - // else return EOF so that read loops stop - return FP::EOFILE; - } - else if (c == '\n') - { - // if the EOLINE is just a delimiter, don't return EOLINE - // so that the word gets processed - if (wordlength > 0) - ungetc (c, this->infile_); - else - return FP::EOLINE; - } - - // Skip comments. - if (this->comments (buf[0])) - { - if (this->skipline () == EOF) - return FP::EOFILE; - else - return FP::COMMENT; - } - else - return FP::SUCCESS; -} - -template <class ENTRY> int -File_Parser<ENTRY>::delimiter (char ch) -{ - return ch == ' ' || ch == ',' || ch == '\t'; -} - -template <class ENTRY> int -File_Parser<ENTRY>::comments (char ch) -{ - return ch == '#'; -} - -template <class ENTRY> int -File_Parser<ENTRY>::skipline (void) -{ - // Skip the remainder of the line. - - int c; - - while ((c = getc (this->infile_)) != '\n' && c != EOF) - continue; - - return c; -} - -#endif /* _FILE_PARSER_C */ diff --git a/apps/Gateway/Gateway/File_Parser.h b/apps/Gateway/Gateway/File_Parser.h deleted file mode 100644 index e32d0948621..00000000000 --- a/apps/Gateway/Gateway/File_Parser.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// File_Parser.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_FILE_PARSER) -#define _FILE_PARSER - -#include "ace/OS.h" - -class FP -{ - // = TITLE - // This class serves as a namespace for the <Return_Type>. -public: - enum Return_Type - { - EOLINE, - EOFILE, - SUCCESS, - COMMENT, - DEFAULT, - PARSE_ERROR - }; -}; - -template <class ENTRY> -class File_Parser -{ - // = TITLE - // Class used to parse the configuration file for the - // <Consumer_Map>. -public: - // = Open and Close the file specified - int open (const char filename[]); - int close (void); - - virtual FP::Return_Type read_entry (ENTRY &entry, - int &line_number) = 0; - // Pure virtual hook that subclasses override and use the protected - // methods to fill in the <entry>. - -protected: - FP::Return_Type getword (char buf[]); - // Read the next ASCII word. - - FP::Return_Type getint (ACE_INT32 &value); - // Read the next integer. - - FP::Return_Type readword (char buf[]); - // Read the next "word," which is demarcated by <delimiter>s. - // - // @@ This function is inherently flawed since it doesn't take a - // count of the size of <buf>... - - int delimiter (char ch); - // Returns true if <ch> is a delimiter, i.e., ' ', ',', or '\t'. - - int comments (char ch); - // Returns true if <ch> is the comment character, i.e., '#'. - - int skipline (void); - // Skips to the remainder of a line, e.g., when we find a comment - // character. - - FILE *infile_; - // Pointer to the file we're reading. -}; - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "File_Parser.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("File_Parser.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#endif /* _FILE_PARSER */ diff --git a/apps/Gateway/Gateway/Gateway.cpp b/apps/Gateway/Gateway/Gateway.cpp deleted file mode 100644 index 383e9705acb..00000000000 --- a/apps/Gateway/Gateway/Gateway.cpp +++ /dev/null @@ -1,306 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -#define ACE_BUILD_SVC_DLL -#include "Config_Files.h" -#include "ace/Service_Config.h" -#include "Event_Channel.h" -#include "Gateway.h" - -class ACE_Svc_Export Gateway : public ACE_Service_Object - // = TITLE - // Integrates the whole Gateway application. - // - // = DESCRIPTION - // This implementation uses the <Event_Channel> as the basis - // for the <Gateway> routing. -{ -protected: - // = Service configurator hooks. - virtual int init (int argc, char *argv[]); - // Perform initialization. - - virtual int fini (void); - // Perform termination when unlinked dynamically. - - virtual int info (char **, size_t) const; - // Return info about this service. - - // = Configuration methods. - int parse_connection_config_file (void); - // Parse the proxy configuration file. - - int parse_consumer_config_file (void); - // Parse the consumer configuration file. - - // = Lifecycle management methods. - int handle_input (ACE_HANDLE); - // Shut down the Gateway when input comes in from the controlling - // console. - - int handle_signal (int signum, siginfo_t * = 0, ucontext_t * = 0); - // Shut down the Gateway when a signal arrives. - - Event_Channel event_channel_; - // The Event Channel routes events from Supplier(s) to Consumer(s) - // using <Supplier_Handler> and <Consumer_Handler> objects. - - Connection_Handler_Factory connection_handler_factory_; - // Creates the appropriate type of <Connection_Handlers>. -}; - -int -Gateway::handle_signal (int signum, siginfo_t *, ucontext_t *) -{ - if (signum > 0) - ACE_DEBUG ((LM_DEBUG, "(%t) %S\n", signum)); - - // Shut down the main event loop. - ACE_Reactor::end_event_loop(); - return 0; -} - -int -Gateway::handle_input (ACE_HANDLE h) -{ - char buf[BUFSIZ]; - // Consume the input... - ACE_OS::read (h, buf, sizeof (buf)); - - // Shut us down. - return this->handle_signal ((int) h); -} - -int -Gateway::init (int argc, char *argv[]) -{ - // Parse the "command-line" arguments. - Options::instance ()->parse_args (argc, argv); - - ACE_Sig_Set sig_set; - sig_set.sig_add (SIGINT); - sig_set.sig_add (SIGQUIT); - - // Register ourselves to receive signals so we can shut down - // gracefully. - - if (ACE_Reactor::instance ()->register_handler (sig_set, - this) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) %p\n", - "register_handler"), - -1); - - // Register this handler to receive events on stdin. We use this to - // shutdown the Gateway gracefully. - if (ACE::register_stdin_handler (this, - ACE_Reactor::instance (), - ACE_Thread_Manager::instance ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) %p\n", - "register_stdin_handler"), - -1); - - // If this->performance_window_ > 0 start a timer. - - if (Options::instance ()->performance_window () > 0) - { - if (ACE_Reactor::instance ()->schedule_timer - (&this->event_channel_, 0, - Options::instance ()->performance_window ()) == -1) - ACE_ERROR ((LM_ERROR, - "(%t) %p\n", - "schedule_timer")); - else - ACE_DEBUG ((LM_DEBUG, - "starting timer for %d seconds...\n", - Options::instance ()->performance_window ())); - } - - // Are we running as a connector? - if (Options::instance ()->enabled - (Options::CONSUMER_CONNECTOR | Options::SUPPLIER_CONNECTOR)) - { - // Parse the proxy configuration file. - this->parse_connection_config_file (); - - // Parse the consumer config file and build the event forwarding - // discriminator. - this->parse_consumer_config_file (); - } - - // Initialize the Event_Channel. - return this->event_channel_.open (); -} - -// This method is automatically called when the Gateway is shutdown. - -int -Gateway::fini (void) -{ - // Remove the handler that receive events on stdin. Otherwise, we - // will crash on shutdown. - ACE::remove_stdin_handler (ACE_Reactor::instance (), - ACE_Thread_Manager::instance ()); - - // Close down the event channel. - this->event_channel_.close (); - - // Need to make sure we cleanup this Singleton. - delete Options::instance (); - return 0; -} - -// Returns information on the currently active service. - -int -Gateway::info (char **strp, size_t length) const -{ - char buf[BUFSIZ]; - - ACE_OS::sprintf (buf, "%s\t %s", "Gateway daemon", - "# Application-level gateway\n"); - - if (*strp == 0 && (*strp = ACE_OS::strdup (buf)) == 0) - return -1; - else - ACE_OS::strncpy (*strp, buf, length); - return ACE_OS::strlen (buf); -} - -// Parse and build the proxy table. - -int -Gateway::parse_connection_config_file (void) -{ - // File that contains the proxy configuration information. - Connection_Config_File_Parser connection_file; - int file_empty = 1; - int line_number = 0; - - if (connection_file.open (Options::instance ()->connection_config_file ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) %p\n", - Options::instance ()->connection_config_file ()), - -1); - - // Read config file one line at a time. - for (Connection_Config_Info pci; - connection_file.read_entry (pci, line_number) != FP::EOFILE; - ) - { - file_empty = 0; - - if (Options::instance ()->enabled (Options::DEBUG)) - ACE_DEBUG ((LM_DEBUG, - "(%t) conn id = %d, host = %s, remote port = %d, proxy role = %c, " - "max retry timeout = %d, local port = %d, priority = %d\n", - pci.connection_id_, - pci.host_, - pci.remote_port_, - pci.connection_role_, - pci.max_retry_timeout_, - pci.local_port_, - pci.priority_)); - - pci.event_channel_ = &this->event_channel_; - - // Create the appropriate type of Proxy. - Connection_Handler *connection_handler; - - ACE_ALLOCATOR_RETURN (connection_handler, - this->connection_handler_factory_.make_connection_handler (pci), - -1); - - // Bind the new Connection_Handler to the connection ID. - this->event_channel_.bind_proxy (connection_handler); - } - - if (file_empty) - ACE_ERROR ((LM_WARNING, - "warning: connection connection_handler configuration file was empty\n")); - return 0; -} - -int -Gateway::parse_consumer_config_file (void) -{ - // File that contains the consumer event forwarding information. - Consumer_Config_File_Parser consumer_file; - int file_empty = 1; - int line_number = 0; - - if (consumer_file.open (Options::instance ()->consumer_config_file ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) %p\n", - Options::instance ()->consumer_config_file ()), - -1); - - // Read config file line at a time. - for (Consumer_Config_Info cci_entry; - consumer_file.read_entry (cci_entry, line_number) != FP::EOFILE; - ) - { - file_empty = 0; - - if (Options::instance ()->enabled (Options::DEBUG)) - { - ACE_DEBUG ((LM_DEBUG, - "(%t) connection id = %d, payload = %d, " - "number of consumers = %d\n", - cci_entry.connection_id_, - cci_entry.type_, - cci_entry.total_consumers_)); - - for (int i = 0; i < cci_entry.total_consumers_; i++) - ACE_DEBUG ((LM_DEBUG, - "(%t) destination[%d] = %d\n", - i, - cci_entry.consumers_[i])); - } - - Consumer_Dispatch_Set *dispatch_set; - ACE_NEW_RETURN (dispatch_set, Consumer_Dispatch_Set, -1); - - Event_Key event_addr (cci_entry.connection_id_, - cci_entry.type_); - - // Add the Consumers to the Dispatch_Set. - for (int i = 0; i < cci_entry.total_consumers_; i++) - { - Connection_Handler *connection_handler = 0; - - // Lookup destination and add to Consumer_Dispatch_Set set - // if found. - if (this->event_channel_.find_proxy (cci_entry.consumers_[i], - connection_handler) != -1) - dispatch_set->insert (connection_handler); - else - ACE_ERROR ((LM_ERROR, - "(%t) not found: destination[%d] = %d\n", - i, - cci_entry.consumers_[i])); - } - - this->event_channel_.subscribe (event_addr, dispatch_set); - } - - if (file_empty) - ACE_ERROR ((LM_WARNING, - "warning: consumer map configuration file was empty\n")); - return 0; -} - -// The following is a "Factory" used by the ACE_Service_Config and -// svc.conf file to dynamically initialize the state of the Gateway. - -ACE_SVC_FACTORY_DEFINE (Gateway) - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Node<Connection_Handler *>; -template class ACE_Unbounded_Set<Connection_Handler *>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Node<Connection_Handler *> -#pragma instantiate ACE_Unbounded_Set<Connection_Handler *> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ - diff --git a/apps/Gateway/Gateway/Gateway.dsp b/apps/Gateway/Gateway/Gateway.dsp deleted file mode 100644 index 8eae1040a63..00000000000 --- a/apps/Gateway/Gateway/Gateway.dsp +++ /dev/null @@ -1,92 +0,0 @@ -# Microsoft Developer Studio Project File - Name="Gateway" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=Gateway - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "Gateway.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "Gateway.mak" CFG="Gateway - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "Gateway - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-# 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 Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\\" /D "_WINDOWS" /D "WIN32" /D "_DEBUG" /YX /FD /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-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:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace"
-# Begin Target
-
-# Name "Gateway - Win32 Debug"
-# Begin Source File
-
-SOURCE=.\Concrete_Connection_Handlers.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Config_Files.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Connection_Handler.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Connection_Handler_Acceptor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Connection_Handler_Connector.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Event_Channel.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Event_Forwarding_Discriminator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Gateway.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Options.cpp
-# End Source File
-# End Target
-# End Project
diff --git a/apps/Gateway/Gateway/Gateway.dsw b/apps/Gateway/Gateway/Gateway.dsw deleted file mode 100644 index a54d8e89983..00000000000 --- a/apps/Gateway/Gateway/Gateway.dsw +++ /dev/null @@ -1,44 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "Gateway"=.\Gateway.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "gatewayd"=.\gatewayd.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name Gateway
- End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/apps/Gateway/Gateway/Gateway.h b/apps/Gateway/Gateway/Gateway.h deleted file mode 100644 index 5c85f6e696c..00000000000 --- a/apps/Gateway/Gateway/Gateway.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Gateway.h -// -// = DESCRIPTION -// Since the Gateway is an <ACE_Service_Object>, this file defines -// the entry point into the Service Configurator framework. -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (ACE_GATEWAY) -#define ACE_GATEWAY - -#include "ace/OS.h" - -ACE_SVC_FACTORY_DECLARE (Gateway) - -#endif /* ACE_GATEWAY */ - diff --git a/apps/Gateway/Gateway/Gateway.mak b/apps/Gateway/Gateway/Gateway.mak deleted file mode 100644 index 9815edd9bb1..00000000000 --- a/apps/Gateway/Gateway/Gateway.mak +++ /dev/null @@ -1,1550 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-!IF "$(CFG)" == ""
-CFG=Gateway - Win32 Debug
-!MESSAGE No configuration specified. Defaulting to Gateway - Win32 Debug.
-!ENDIF
-
-!IF "$(CFG)" != "gatewayd - Win32 Debug" && "$(CFG)" != "Gateway - 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 "Gateway.mak" CFG="Gateway - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "gatewayd - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "Gateway - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-!ERROR An invalid configuration is specified.
-!ENDIF
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE
-NULL=nul
-!ENDIF
-################################################################################
-# Begin Project
-# PROP Target_Last_Scanned "Gateway - Win32 Debug"
-
-!IF "$(CFG)" == "gatewayd - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "gatewayd\Debug"
-# PROP BASE Intermediate_Dir "gatewayd\Debug"
-# PROP BASE Target_Dir "gatewayd"
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "."
-# PROP Intermediate_Dir "gatewayd_Debug"
-# PROP Target_Dir "gatewayd"
-OUTDIR=.\.
-INTDIR=.\gatewayd_Debug
-
-ALL : "Gateway - Win32 Debug" "$(OUTDIR)\gatewayd.exe"
-
-CLEAN :
- -@erase "$(INTDIR)\gatewayd.obj"
- -@erase "$(INTDIR)\vc40.idb"
- -@erase "$(INTDIR)\vc40.pdb"
- -@erase "$(OUTDIR)\gatewayd.exe"
- -@erase "$(OUTDIR)\gatewayd.ilk"
- -@erase "$(OUTDIR)\gatewayd.pdb"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
- if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-# 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)/gatewayd.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
-CPP_OBJS=.\gatewayd_Debug/
-CPP_SBRS=.\.
-
-.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) $<
-
-RSC=rc.exe
-# 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)/gatewayd.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 Gateway.lib aced.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=Gateway.lib aced.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)/gatewayd.pdb" /debug /machine:I386\
- /out:"$(OUTDIR)/gatewayd.exe"
-LINK32_OBJS= \
- "$(INTDIR)\gatewayd.obj" \
- "$(OUTDIR)\Gateway.lib"
-
-"$(OUTDIR)\gatewayd.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "Gateway - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Gateway\Debug"
-# PROP BASE Intermediate_Dir "Gateway\Debug"
-# PROP BASE Target_Dir "Gateway"
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "."
-# PROP Intermediate_Dir "Gateway_Debug"
-# PROP Target_Dir "Gateway"
-OUTDIR=.\.
-INTDIR=.\Gateway_Debug
-
-ALL : "$(OUTDIR)\Gateway.dll"
-
-CLEAN :
- -@erase "$(INTDIR)\Concrete_Proxy_Handlers.obj"
- -@erase "$(INTDIR)\Config_Files.obj"
- -@erase "$(INTDIR)\Event_Channel.obj"
- -@erase "$(INTDIR)\Event_Forwarding_Discriminator.obj"
- -@erase "$(INTDIR)\Gateway.obj"
- -@erase "$(INTDIR)\Proxy_Handler.obj"
- -@erase "$(INTDIR)\Proxy_Handler_Acceptor.obj"
- -@erase "$(INTDIR)\Proxy_Handler_Connector.obj"
- -@erase "$(INTDIR)\vc40.idb"
- -@erase "$(INTDIR)\vc40.pdb"
- -@erase "$(OUTDIR)\Gateway.dll"
- -@erase "$(OUTDIR)\Gateway.exp"
- -@erase "$(OUTDIR)\Gateway.ilk"
- -@erase "$(OUTDIR)\Gateway.lib"
- -@erase "$(OUTDIR)\Gateway.pdb"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
- if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\
- /Fp"$(INTDIR)/Gateway.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
-CPP_OBJS=.\Gateway_Debug/
-CPP_SBRS=.\.
-
-.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) $<
-
-MTL=mktyplib.exe
-# ADD BASE MTL /nologo /D "_DEBUG" /win32
-# ADD MTL /nologo /D "_DEBUG" /win32
-MTL_PROJ=/nologo /D "_DEBUG" /win32
-RSC=rc.exe
-# 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)/Gateway.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:windows /dll /debug /machine:I386
-# ADD LINK32 aced.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:windows /dll /debug /machine:I386
-LINK32_FLAGS=aced.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:windows /dll /incremental:yes\
- /pdb:"$(OUTDIR)/Gateway.pdb" /debug /machine:I386 /out:"$(OUTDIR)/Gateway.dll"\
- /implib:"$(OUTDIR)/Gateway.lib"
-LINK32_OBJS= \
- "$(INTDIR)\Concrete_Proxy_Handlers.obj" \
- "$(INTDIR)\Config_Files.obj" \
- "$(INTDIR)\Event_Channel.obj" \
- "$(INTDIR)\Event_Forwarding_Discriminator.obj" \
- "$(INTDIR)\Gateway.obj" \
- "$(INTDIR)\Proxy_Handler.obj" \
- "$(INTDIR)\Proxy_Handler_Acceptor.obj" \
- "$(INTDIR)\Proxy_Handler_Connector.obj"
-
-"$(OUTDIR)\Gateway.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
-
-################################################################################
-# Begin Target
-
-# Name "gatewayd - Win32 Debug"
-################################################################################
-# Begin Project Dependency
-
-# Project_Dep_Name "Gateway"
-
-!IF "$(CFG)" == "gatewayd - Win32 Debug"
-
-"Gateway - Win32 Debug" :
- $(MAKE) /$(MAKEFLAGS) /F ".\Gateway.mak" CFG="Gateway - Win32 Debug"
-
-!ENDIF
-
-# End Project Dependency
-################################################################################
-# Begin Source File
-
-SOURCE=.\gatewayd.cpp
-DEP_CPP_GATEW=\
- "..\..\..\ace\config-win32.h"\
- ".\Gateway.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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_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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\gatewayd.obj" : $(SOURCE) $(DEP_CPP_GATEW) "$(INTDIR)"
-
-
-# End Source File
-# End Target
-################################################################################
-# Begin Target
-
-# Name "Gateway - Win32 Debug"
-################################################################################
-# Begin Source File
-
-SOURCE=.\Proxy_Handler_Connector.cpp
-DEP_CPP_PROXY=\
- "..\..\..\ace\config-win32.h"\
- ".\Config_Files.h"\
- ".\Event.h"\
- ".\File_Parser.cpp"\
- ".\File_Parser.h"\
- ".\Proxy_Handler.h"\
- ".\Proxy_Handler_Connector.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.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\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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\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)\Proxy_Handler_Connector.obj" : $(SOURCE) $(DEP_CPP_PROXY)\
- "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\Config_Files.cpp
-DEP_CPP_CONFI=\
- "..\..\..\ace\config-win32.h"\
- ".\Config_Files.h"\
- ".\File_Parser.cpp"\
- ".\File_Parser.h"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Log_Msg.h"\
- {$(INCLUDE)}"\ace\Log_Priority.h"\
- {$(INCLUDE)}"\ace\Log_Record.h"\
- {$(INCLUDE)}"\ace\Log_Record.i"\
- {$(INCLUDE)}"\ace\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\SString.h"\
- {$(INCLUDE)}"\ace\SString.i"\
- {$(INCLUDE)}"\ace\stdcpp.h"\
- {$(INCLUDE)}"\ace\Trace.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\Config_Files.obj" : $(SOURCE) $(DEP_CPP_CONFI) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\Event_Channel.cpp
-DEP_CPP_EVENT=\
- "..\..\..\ace\config-win32.h"\
- ".\Config_Files.h"\
- ".\Consumer_Dispatch_Set.h"\
- ".\Event.h"\
- ".\Event_Channel.h"\
- ".\Event_Forwarding_Discriminator.h"\
- ".\File_Parser.cpp"\
- ".\File_Parser.h"\
- ".\Proxy_Handler.h"\
- ".\Proxy_Handler_Acceptor.h"\
- ".\Proxy_Handler_Connector.h"\
- {$(INCLUDE)}"\ace\Acceptor.cpp"\
- {$(INCLUDE)}"\ace\Acceptor.h"\
- {$(INCLUDE)}"\ace\Acceptor.i"\
- {$(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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.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\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\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)\Event_Channel.obj" : $(SOURCE) $(DEP_CPP_EVENT) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\Event_Forwarding_Discriminator.cpp
-DEP_CPP_EVENT_=\
- "..\..\..\ace\config-win32.h"\
- ".\Consumer_Dispatch_Set.h"\
- ".\Event.h"\
- ".\Event_Forwarding_Discriminator.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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_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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\Event_Forwarding_Discriminator.obj" : $(SOURCE) $(DEP_CPP_EVENT_)\
- "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\Gateway.cpp
-DEP_CPP_GATEWA=\
- "..\..\..\ace\config-win32.h"\
- ".\Config_Files.h"\
- ".\Consumer_Dispatch_Set.h"\
- ".\Event.h"\
- ".\Event_Channel.h"\
- ".\Event_Forwarding_Discriminator.h"\
- ".\File_Parser.cpp"\
- ".\File_Parser.h"\
- ".\Gateway.h"\
- ".\Proxy_Handler.h"\
- ".\Proxy_Handler_Acceptor.h"\
- ".\Proxy_Handler_Connector.h"\
- {$(INCLUDE)}"\ace\Acceptor.cpp"\
- {$(INCLUDE)}"\ace\Acceptor.h"\
- {$(INCLUDE)}"\ace\Acceptor.i"\
- {$(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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.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\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Get_Opt.h"\
- {$(INCLUDE)}"\ace\Get_Opt.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\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)\Gateway.obj" : $(SOURCE) $(DEP_CPP_GATEWA) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\Proxy_Handler.cpp
-DEP_CPP_PROXY_=\
- "..\..\..\ace\config-win32.h"\
- ".\Concrete_Proxy_Handlers.h"\
- ".\Config_Files.h"\
- ".\Consumer_Dispatch_Set.h"\
- ".\Event.h"\
- ".\Event_Channel.h"\
- ".\Event_Forwarding_Discriminator.h"\
- ".\File_Parser.cpp"\
- ".\File_Parser.h"\
- ".\Proxy_Handler.h"\
- ".\Proxy_Handler_Acceptor.h"\
- ".\Proxy_Handler_Connector.h"\
- {$(INCLUDE)}"\ace\Acceptor.cpp"\
- {$(INCLUDE)}"\ace\Acceptor.h"\
- {$(INCLUDE)}"\ace\Acceptor.i"\
- {$(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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.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\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\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)\Proxy_Handler.obj" : $(SOURCE) $(DEP_CPP_PROXY_) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\Proxy_Handler_Acceptor.cpp
-DEP_CPP_PROXY_H=\
- "..\..\..\ace\config-win32.h"\
- ".\Config_Files.h"\
- ".\Consumer_Dispatch_Set.h"\
- ".\Event.h"\
- ".\Event_Channel.h"\
- ".\Event_Forwarding_Discriminator.h"\
- ".\File_Parser.cpp"\
- ".\File_Parser.h"\
- ".\Proxy_Handler.h"\
- ".\Proxy_Handler_Acceptor.h"\
- ".\Proxy_Handler_Connector.h"\
- {$(INCLUDE)}"\ace\Acceptor.cpp"\
- {$(INCLUDE)}"\ace\Acceptor.h"\
- {$(INCLUDE)}"\ace\Acceptor.i"\
- {$(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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.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\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\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)\Proxy_Handler_Acceptor.obj" : $(SOURCE) $(DEP_CPP_PROXY_H)\
- "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\Concrete_Proxy_Handlers.cpp
-DEP_CPP_CONCR=\
- "..\..\..\ace\config-win32.h"\
- ".\Concrete_Proxy_Handlers.h"\
- ".\Config_Files.h"\
- ".\Consumer_Dispatch_Set.h"\
- ".\Event.h"\
- ".\Event_Channel.h"\
- ".\Event_Forwarding_Discriminator.h"\
- ".\File_Parser.cpp"\
- ".\File_Parser.h"\
- ".\Proxy_Handler.h"\
- ".\Proxy_Handler_Acceptor.h"\
- ".\Proxy_Handler_Connector.h"\
- {$(INCLUDE)}"\ace\Acceptor.cpp"\
- {$(INCLUDE)}"\ace\Acceptor.h"\
- {$(INCLUDE)}"\ace\Acceptor.i"\
- {$(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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.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\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\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)\Concrete_Proxy_Handlers.obj" : $(SOURCE) $(DEP_CPP_CONCR)\
- "$(INTDIR)"
-
-
-# End Source File
-# End Target
-# End Project
-################################################################################
diff --git a/apps/Gateway/Gateway/Gateway.mdp b/apps/Gateway/Gateway/Gateway.mdp Binary files differdeleted file mode 100644 index 7fdd195166a..00000000000 --- a/apps/Gateway/Gateway/Gateway.mdp +++ /dev/null diff --git a/apps/Gateway/Gateway/IO_Handler.cpp b/apps/Gateway/Gateway/IO_Handler.cpp deleted file mode 100644 index ba1b355b3ba..00000000000 --- a/apps/Gateway/Gateway/IO_Handler.cpp +++ /dev/null @@ -1,710 +0,0 @@ -// $Id$ - -#include "Consumer_Entry.h" -#include "IO_Handler_Connector.h" - -// Convenient short-hands. -#define CO CONDITION -#define MU MAP_MUTEX - -// The total number of bytes sent/received on this channel. - -size_t -IO_Handler::total_bytes (void) -{ - return this->total_bytes_; -} - -void -IO_Handler::total_bytes (size_t bytes) -{ - this->total_bytes_ += bytes; -} - -IO_Handler::IO_Handler (Consumer_Map *consumer_map, - IO_Handler_Connector *ioc, - ACE_Thread_Manager *thr_mgr, - int socket_queue_size) - : ACE_Svc_Handler<ACE_SOCK_STREAM, SYNCH_STRATEGY> (thr_mgr), - consumer_map_ (consumer_map), - id_ (-1), - total_bytes_ (0), - state_ (IO_Handler::IDLE), - connector_ (ioc), - timeout_ (1), - max_timeout_ (IO_Handler::MAX_RETRY_TIMEOUT), - socket_queue_size_ (socket_queue_size) -{ -} - -// Set the associated channel. - -void -IO_Handler::active (int a) -{ - this->state (a == 0 ? IO_Handler::IDLE : IO_Handler::ESTABLISHED); -} - -// Get the associated channel. - -int -IO_Handler::active (void) -{ - return this->state () == IO_Handler::ESTABLISHED; -} - -// Set the direction. - -void -IO_Handler::direction (char d) -{ - this->direction_ = d; -} - -// Get the direction. - -char -IO_Handler::direction (void) -{ - return this->direction_; -} - -// Sets the timeout delay. - -void -IO_Handler::timeout (int to) -{ - if (to > this->max_timeout_) - to = this->max_timeout_; - - this->timeout_ = to; -} - -// Recalculate the current retry timeout delay using exponential -// backoff. Returns the original timeout (i.e., before the -// recalculation). - -int -IO_Handler::timeout (void) -{ - int old_timeout = this->timeout_; - this->timeout_ *= 2; - - if (this->timeout_ > this->max_timeout_) - this->timeout_ = this->max_timeout_; - - return old_timeout; -} - -// Sets the max timeout delay. - -void -IO_Handler::max_timeout (int mto) -{ - this->max_timeout_ = mto; -} - -// Gets the max timeout delay. - -int -IO_Handler::max_timeout (void) -{ - return this->max_timeout_; -} - -// Restart connection asynchronously when timeout occurs. - -int -IO_Handler::handle_timeout (const ACE_Time_Value &, const void *) -{ - ACE_DEBUG ((LM_DEBUG, - "(%t) attempting to reconnect IO_Handler %d with timeout = %d\n", - this->id (), this->timeout_)); - return this->connector_->initiate_connection (this, ACE_Synch_Options::asynch); -} - -// Restart connection (blocking_semantics dicates whether we -// restart synchronously or asynchronously). - -int -IO_Handler::reinitiate_connection (void) -{ - // Skip over deactivated descriptors. - if (this->get_handle () != -1) - { - // Make sure to close down peer to reclaim descriptor. - this->peer ().close (); - -#if 0 -// if (this->state () == FAILED) -// { - // Reinitiate timeout to improve reconnection time. -// this->timeout (1); -#endif - - ACE_DEBUG ((LM_DEBUG, - "(%t) scheduling reinitiation of IO_Handler %d\n", - this->id ())); - - // Reschedule ourselves to try and connect again. - if (ACE_Service_Config::reactor ()->schedule_timer - (this, 0, this->timeout ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "schedule_timer"), -1); - } - return 0; -} - -// Handle shutdown of the IO_Handler object. - -int -IO_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) -{ - ACE_DEBUG ((LM_DEBUG, - "(%t) shutting down IO_Handler %d on handle %d\n", - this->id (), this->get_handle ())); - - return this->reinitiate_connection (); -} - -// Set the state of the channel. - -void -IO_Handler::state (IO_Handler::State s) -{ - this->state_ = s; -} - -// Perform the first-time initiation of a connection to the peer. - -int -IO_Handler::initialize_connection (void) -{ - this->state_ = IO_Handler::ESTABLISHED; - - // Restart the timeout to 1. - this->timeout (1); - -#if defined (ASSIGN_SUPPLIER_ID) - // Action that sends the route id to the peerd. - - CONN_ID id = htons (this->id ()); - - ssize_t n = this->peer ().send ((const void *) &id, sizeof id); - - if (n != sizeof id) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - n == 0 ? "gatewayd has closed down unexpectedly" : "send"), - -1); -#endif /* ASSIGN_SUPPLIER_ID */ - return 0; -} - -// Set the size of the socket queue. - -void -IO_Handler::socket_queue_size (void) -{ - if (this->socket_queue_size_ > 0) - { - int option = this->direction_ == 'S' ? SO_RCVBUF : SO_SNDBUF; - - if (this->peer ().set_option (SOL_SOCKET, option, - &this->socket_queue_size_, sizeof (int)) == -1) - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "set_option")); - } -} - -// Upcall from the ACE_Acceptor::handle_input() that -// delegates control to our application-specific IO_Handler. - -int -IO_Handler::open (void *a) -{ - ACE_DEBUG ((LM_DEBUG, "(%t) IO_Handler's fd = %d\n", - this->peer ().get_handle ())); - - // Set the size of the socket queue. - this->socket_queue_size (); - - // Turn on non-blocking I/O. - if (this->peer ().enable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enable"), -1); - - // Call down to the base class to activate and register this handler. - if (this->ACE_Svc_Handler<ACE_SOCK_STREAM, SYNCH_STRATEGY>::open (a) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "activate"), -1); - - return this->initialize_connection (); -} - -// Return the current state of the channel. - -IO_Handler::State -IO_Handler::state (void) -{ - return this->state_; -} - -void -IO_Handler::id (CONN_ID id) -{ - this->id_ = id; -} - -CONN_ID -IO_Handler::id (void) -{ - return this->id_; -} - -// Set the peer's address information. -int -IO_Handler::bind (const ACE_INET_Addr &remote_addr, - const ACE_INET_Addr &local_addr, - CONN_ID id) -{ - this->remote_addr_ = remote_addr; - this->local_addr_ = local_addr; - this->id_ = id; - return 0; -} - -ACE_INET_Addr & -IO_Handler::remote_addr (void) -{ - return this->remote_addr_; -} - -ACE_INET_Addr & -IO_Handler::local_addr (void) -{ - return this->local_addr_; -} - -// Constructor sets the consumer map pointer. - -Consumer_Handler::Consumer_Handler (Consumer_Map *consumer_map, - IO_Handler_Connector *ioc, - ACE_Thread_Manager *thr_mgr, - int socket_queue_size) - : IO_Handler (consumer_map, ioc, thr_mgr, socket_queue_size) -{ - this->direction_ = 'C'; - this->msg_queue ()->high_water_mark (Consumer_Handler::QUEUE_SIZE); -} - -// This method should be called only when the peer shuts down -// unexpectedly. This method simply marks the IO_Handler as -// having failed so that handle_close () can reconnect. - -int -Consumer_Handler::handle_input (ACE_HANDLE) -{ - char buf[1]; - - this->state (IO_Handler::FAILED); - - switch (this->peer ().recv (buf, sizeof buf)) - { - case -1: - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Peer has failed unexpectedly for Output IO_Handler %d\n", - this->id ()), -1); - /* NOTREACHED */ - case 0: - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Peer has shutdown unexpectedly for Output IO_Handler %d\n", - this->id ()), -1); - /* NOTREACHED */ - default: - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Peer is sending input on Output IO_Handler %d\n", - this->id ()), -1); - /* NOTREACHED */ - } -} - -// Perform a non-blocking put() of event MB. If we are unable to -// send the entire event the remainder is re-queued at the *front* of -// the Event_List. - -int -Consumer_Handler::nonblk_put (ACE_Message_Block *mb) -{ - // Try to send the event. If we don't send it all (e.g., due to - // flow control), then re-queue the remainder at the head of the - // Event_List and ask the ACE_Reactor to inform us (via - // handle_output()) when it is possible to try again. - - ssize_t n = this->send (mb); - - if (n == -1) - { - // Things have gone wrong, let's try to close down and set up a new reconnection. - this->state (IO_Handler::FAILED); - this->handle_close (); - return -1; - } - else if (errno == EWOULDBLOCK) // Didn't manage to send everything. - { - ACE_DEBUG ((LM_DEBUG, "(%t) queueing activated on handle %d to routing id %d\n", - this->get_handle (), this->id ())); - - // ACE_Queue in *front* of the list to preserve order. - if (this->msg_queue ()->enqueue_head - (mb, (ACE_Time_Value *) &ACE_Time_Value::zero) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enqueue_head"), -1); - - // Tell ACE_Reactor to call us back when we can send again. - else if (ACE_Service_Config::reactor ()-> - schedule_wakeup (this, ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "schedule_wakeup"), -1); - return 0; - } - else - return n; -} - -ssize_t -Consumer_Handler::send (ACE_Message_Block *mb) -{ - ssize_t len = mb->length (); - ssize_t n = this->peer ().send (mb->rd_ptr (), len); - - if (n <= 0) - return errno == EWOULDBLOCK ? 0 : n; - else if (n < len) - // Re-adjust pointer to skip over the part we did send. - mb->rd_ptr (n); - else /* if (n == length) */ - { - // The whole event is sent, we can now safely deallocate the - // buffer. Note that this should decrement a reference count... - delete mb; - errno = 0; - } - this->total_bytes (n); - return n; -} - -// Finish sending an event when flow control conditions abate. -// This method is automatically called by the ACE_Reactor. - -int -Consumer_Handler::handle_output (ACE_HANDLE) -{ - ACE_Message_Block *mb = 0; - - ACE_DEBUG ((LM_DEBUG, - "(%t) in handle_output on handle %d\n", - this->get_handle ())); - // The list had better not be empty, otherwise there's a bug! - - if (this->msg_queue ()->dequeue_head - (mb, (ACE_Time_Value *) &ACE_Time_Value::zero) != -1) - { - switch (this->nonblk_put (mb)) - { - case 0: // Partial send. - ACE_ASSERT (errno == EWOULDBLOCK); - // Didn't write everything this time, come back later... - break; - - case -1: - // Caller is responsible for freeing a ACE_Message_Block if failures occur. - delete mb; - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "transmission failure")); - - /* FALLTHROUGH */ - default: // Sent the whole thing. - - // If we succeed in writing the entire event (or we did not - // fail due to EWOULDBLOCK) then check if there are more - // events on the Event_List. If there aren't, tell the - // ACE_Reactor not to notify us anymore (at least until - // there are new events queued up). - - if (this->msg_queue ()->is_empty ()) - { - ACE_DEBUG ((LM_DEBUG, - "(%t) queueing deactivated on handle %d to routing id %d\n", - this->get_handle (), this->id ())); - - - if (ACE_Service_Config::reactor ()-> - cancel_wakeup (this, ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "cancel_wakeup")); - } - } - } - else - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "dequeue_head")); - return 0; -} - -// Send an event to a peer (may queue if necessary). - -int -Consumer_Handler::put (ACE_Message_Block *mb, ACE_Time_Value *) -{ - if (this->msg_queue ()->is_empty ()) - // Try to send the event *without* blocking! - return this->nonblk_put (mb); - else - // If we have queued up events due to flow control then just - // enqueue and return. - return this->msg_queue ()->enqueue_tail - (mb, (ACE_Time_Value *) &ACE_Time_Value::zero); -} - -// Constructor sets the consumer map pointer and the connector -// pointer. - -Supplier_Handler::Supplier_Handler (Consumer_Map *consumer_map, - IO_Handler_Connector *ioc, - ACE_Thread_Manager *thr_mgr, - int socket_queue_size) - : msg_frag_ (0), - IO_Handler (consumer_map, ioc, thr_mgr, socket_queue_size) -{ - this->direction_ = 'S'; - this->msg_queue ()->high_water_mark (0); -} - -// Receive a Peer event from peerd. Handles fragmentation. -// -// The routing event returned from recv consists of two parts: -// 1. The Address part, contains the virtual routing id. -// 2. The Data part, which contains the actual data to be routed. -// -// The reason for having two parts is to shield the higher layers -// of software from knowledge of the event structure. - -int -Supplier_Handler::recv (ACE_Message_Block *&forward_addr) -{ - Event *event; - ssize_t len; - ssize_t n = 0; - size_t offset = 0; - - if (this->msg_frag_ == 0) - // No existing fragment... - ACE_NEW_RETURN (this->msg_frag_, - ACE_Message_Block (sizeof (Event)), - -1); - - event = (Event *) this->msg_frag_->rd_ptr (); - - const ssize_t HEADER_SIZE = sizeof (Event_Header); - ssize_t header_bytes_left_to_read = HEADER_SIZE - this->msg_frag_->length (); - - if (header_bytes_left_to_read > 0) - { - n = this->peer ().recv (this->msg_frag_->wr_ptr (), - header_bytes_left_to_read); - - if (n == -1 /* error */ - || n == 0 /* EOF */) - { - ACE_ERROR ((LM_ERROR, "%p\n", - "Recv error during header read ")); - ACE_DEBUG ((LM_DEBUG, - "attempted to read %d\n", - header_bytes_left_to_read)); - delete this->msg_frag_; - this->msg_frag_ = 0; - return n; - } - - // Bump the write pointer by the amount read. - this->msg_frag_->wr_ptr (n); - - // At this point we may or may not have the ENTIRE header. - if (this->msg_frag_->length () < HEADER_SIZE) - { - ACE_DEBUG ((LM_DEBUG, - "Partial header received: only %d bytes\n", - this->msg_frag_->length ())); - // Notify the caller that we didn't get an entire event. - errno = EWOULDBLOCK; - return -1; - } - } - - // At this point there is a complete, valid header in msg_frag_ - len = sizeof event->buf_ + HEADER_SIZE - this->msg_frag_->length (); - - ssize_t m = this->peer ().recv (event->buf_ + offset, len); - - // Try to receive the remainder of the event - - switch (m) - { - case -1: - if (errno == EWOULDBLOCK) - { - // This shouldn't happen since the ACE_Reactor - // just triggered us to handle pending I/O! - ACE_DEBUG ((LM_DEBUG, "(%t) unexpected recv failure\n")); - errno = EWOULDBLOCK; - return -1; - } - else - /* FALLTHROUGH */; - - case 0: // Premature EOF. - delete this->msg_frag_; - this->msg_frag_ = 0; - return 0; - - default: - if (m != len) - // Re-adjust pointer to skip over the part we've read. - { - this->msg_frag_->wr_ptr (m); - errno = EWOULDBLOCK; - return -1; // Inform caller that we didn't get the whole event. - } - else - { - // Set the write pointer at 1 past the end of the event. - this->msg_frag_->wr_ptr (m); - - // Set the read pointer to the beginning of the event. - this->msg_frag_->rd_ptr (this->msg_frag_->base ()); - - // Allocate an event forwarding header and chain the data - // portion onto its continuation field. - ACE_NEW_RETURN (forward_addr, - ACE_Message_Block (sizeof (Event_Addr), - ACE_Message_Block::MB_PROTO, - this->msg_frag_), - -1); - - Event_Addr event_addr (this->id (), event->header_.routing_id_, 0); - // Copy the forwarding address from the Event_Addr into - // forward_addr. - forward_addr->copy ((char *) &event_addr, sizeof (Event)); - - // Reset the pointer to indicate we've got an entire event. - this->msg_frag_ = 0; - } - this->total_bytes (m + n); -#if defined (VERBOSE) - ACE_DEBUG ((LM_DEBUG, "(%t) channel id = %d, route id = %d, len = %d, payload = %*s", - event_addr.conn_id_, event->header_.routing_id_, event->header_.len_, - event->header_.len_, event->buf_)); -#else - ACE_DEBUG ((LM_DEBUG, "(%t) route id = %d, cur len = %d, total bytes read = %d\n", - event->header_.routing_id_, event->header_.len_, this->total_bytes ())); -#endif - return m + n; - } -} - -// Receive various types of input (e.g., Peer event from the -// gatewayd, as well as stdio). - -int -Supplier_Handler::handle_input (ACE_HANDLE) -{ - ACE_Message_Block *forward_addr = 0; - - switch (this->recv (forward_addr)) - { - case 0: - // Note that a peer should never initiate a shutdown. - this->state (IO_Handler::FAILED); - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) Peer has closed down unexpectedly for Input IO_Handler %d\n", - this->id ()), -1); - /* NOTREACHED */ - case -1: - if (errno == EWOULDBLOCK) - // A short-read, we'll come back and finish it up later on! - return 0; - else // A weird problem occurred, shut down and start again. - { - this->state (IO_Handler::FAILED); - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p for Input IO_Handler %d\n", - "Peer has failed unexpectedly", - this->id ()), -1); - } - /* NOTREACHED */ - default: - return this->forward (forward_addr); - } -} - -// Route an event to its appropriate destination. - -int -Supplier_Handler::forward (ACE_Message_Block *forward_addr) -{ - // We got a valid event, so determine its virtual routing id, - // which is stored in the first of the two event blocks chained - // together. - - Event_Addr *forwarding_key = (Event_Addr *) forward_addr->rd_ptr (); - - // Skip over the address portion. - const ACE_Message_Block *const data = forward_addr->cont (); - - // RE points to the routing entry located for this routing id. - Consumer_Entry *re = 0; - - if (this->consumer_map_->find (*forwarding_key, re) != -1) - { - // Check to see if there are any destinations. - if (re->destinations ()->size () == 0) - ACE_DEBUG ((LM_WARNING, - "there are no active destinations for this event currently\n")); - - else // There are destinations, so forward the event. - { - Consumer_Entry::ENTRY_SET *esp = re->destinations (); - Consumer_Entry::ENTRY_ITERATOR si (*esp); - - for (IO_Handler **channel = 0; si.next (channel) != 0; si.advance ()) - { - // Only process active channels. - if ((*channel)->active ()) - { - // Clone the event portion (should be doing reference counting here...) - ACE_Message_Block *newmsg = data->clone (); - - ACE_DEBUG ((LM_DEBUG, "(%t) sending to peer %d\n", (*channel)->id ())); - - if ((*channel)->put (newmsg) == -1) - { - if (errno == EWOULDBLOCK) // The queue has filled up! - ACE_ERROR ((LM_ERROR, "(%t) %p\n", - "gateway is flow controlled, so we're dropping events")); - else - ACE_ERROR ((LM_ERROR, "(%t) %p transmission error to route %d\n", - "put", (*channel)->id ())); - - // Caller is responsible for freeing a ACE_Message_Block if failures occur. - delete newmsg; - } - } - } - // Will become superfluous once we have reference counting... - delete forward_addr; - return 0; - } - } - delete forward_addr; - // Failure return. - ACE_ERROR ((LM_DEBUG, "(%t) find failed on conn id = %d, logical id = %d, payload = %d\n", - forwarding_key->conn_id_, forwarding_key->logical_id_, forwarding_key->payload_)); - return 0; -} - -#if defined (ACE_TEMPLATES_REQUIRE_SPECIALIZATION) -template class ACE_Map_Manager<Event_Addr, Consumer_Entry *, MAP_MUTEX>; -template class ACE_Map_Iterator<Event_Addr, Consumer_Entry *, MAP_MUTEX>; -template class ACE_Map_Entry<Event_Addr, Consumer_Entry *>; -#endif /* ACE_TEMPLATES_REQUIRE_SPECIALIZATION */ diff --git a/apps/Gateway/Gateway/IO_Handler.h b/apps/Gateway/Gateway/IO_Handler.h deleted file mode 100644 index 7bda073f09b..00000000000 --- a/apps/Gateway/Gateway/IO_Handler.h +++ /dev/null @@ -1,224 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// IO_Handler.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_IO_HANDLER) -#define _IO_HANDLER - -#include "ace/Service_Config.h" -#include "ace/SOCK_Connector.h" -#include "ace/Svc_Handler.h" -#include "Consumer_Map.h" -#include "Consumer_Entry.h" -#include "Event.h" - -// Forward declaration. -class IO_Handler_Connector; - -class IO_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, SYNCH_STRATEGY> - // = TITLE - // IO_Handler contains info about connection state and addressing. - // - // = DESCRIPTION - // The IO_Handler classes process events sent from the peers to the - // gateway. These classes works as follows: - // - // 1. IO_Handler_Connector creates a number of connections with the set of - // peers specified in a configuration file. - // - // 2. For each peer that connects successfully, IO_Handler_Connector - // creates an IO_Handler object. Each object assigns a unique routing - // id to its associated peer. The Handlers are used by gatewayd - // that to receive, route, and forward events from source peer(s) - // to destination peer(s). -{ -public: - IO_Handler (Consumer_Map *, - IO_Handler_Connector *, - ACE_Thread_Manager * = 0, - int socket_queue_size = 0); - - virtual int open (void * = 0); - // Initialize and activate a single-threaded IO_Handler (called by - // ACE_Connector::handle_output()). - - int bind (const ACE_INET_Addr &remote_addr, - const ACE_INET_Addr &local_addr, - CONN_ID); - // Set the peer's addressing and routing information. - - ACE_INET_Addr &remote_addr (void); - // Returns the peer's routing address. - - ACE_INET_Addr &local_addr (void); - // Returns our local address. - - // = Set/get routing id. - CONN_ID id (void); - void id (CONN_ID); - - // = Set/get the current state of the IO_Handler. - enum State - { - IDLE = 1, // Prior to initialization. - CONNECTING, // During connection establishment. - ESTABLISHED, // IO_Handler is established and active. - DISCONNECTING, // IO_Handler is in the process of connecting. - FAILED // IO_Handler has failed. - }; - - // = Set/get the current state. - State state (void); - void state (State); - - // = Set/get the current retry timeout delay. - int timeout (void); - void timeout (int); - - // = Set/get the maximum retry timeout delay. - int max_timeout (void); - void max_timeout (int); - - // = Set/get IO_Handler activity status. - int active (void); - void active (int); - - // = Set/get direction (necessary for error checking). - char direction (void); - void direction (char); - - // = The total number of bytes sent/received on this channel. - size_t total_bytes (void); - void total_bytes (size_t bytes); - // Increment count by <bytes>. - - virtual int handle_timeout (const ACE_Time_Value &, const void *arg); - // Perform timer-based IO_Handler reconnection. - -protected: - enum - { - MAX_RETRY_TIMEOUT = 300 // 5 minutes is the maximum timeout. - }; - - int initialize_connection (void); - // Perform the first-time initiation of a connection to the peer. - - int reinitiate_connection (void); - // Reinitiate a connection asynchronously when peers fail. - - void socket_queue_size (void); - // Set the socket queue size. - - virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE, - ACE_Reactor_Mask = ACE_Event_Handler::RWE_MASK); - // Perform IO_Handler termination. - - Consumer_Map *consumer_map_; - // Pointer to table that maps an event - // to a Set of IO_Handler *'s for output. - - ACE_INET_Addr remote_addr_; - // Address of peer. - - ACE_INET_Addr local_addr_; - // Address of us. - - CONN_ID id_; - // The assigned routing ID of this entry. - - size_t total_bytes_; - // The total number of bytes sent/received on this channel. - - State state_; - // The current state of the channel. - - IO_Handler_Connector *connector_; - // Back pointer to IO_Handler_Connector to reestablish broken - // connections. - - int timeout_; - // Amount of time to wait between reconnection attempts. - - int max_timeout_; - // Maximum amount of time to wait between reconnection attempts. - - char direction_; - // Indicates which direction data flows through the channel ('O' == - // output and 'I' == input). - - int socket_queue_size_; - // Size of the socket queue (0 means "use default"). -}; - -class Supplier_Handler : public IO_Handler - // = TITLE - // Handle reception of Peer events arriving as events. -{ -public: - Supplier_Handler (Consumer_Map *, - IO_Handler_Connector *, - ACE_Thread_Manager * = 0, - int socket_queue_size = 0); - // Constructor sets the consumer map pointer. - - virtual int handle_input (ACE_HANDLE = ACE_INVALID_HANDLE); - // Receive and process peer events. - -protected: - virtual int recv (ACE_Message_Block *&); - // Receive an event from a Supplier. - - int forward (ACE_Message_Block *event); - // Forward the Event to a Consumer. - - ACE_Message_Block *msg_frag_; - // Keep track of event fragment to handle non-blocking recv's from - // Suppliers. -}; - -class Consumer_Handler : public IO_Handler - // = TITLE - // Handle transmission of events to other Peers using a - // single-threaded approach. -{ -public: - Consumer_Handler (Consumer_Map *, - IO_Handler_Connector *, - ACE_Thread_Manager * = 0, - int socket_queue_size = 0); - - virtual int put (ACE_Message_Block *, ACE_Time_Value * = 0); - // Send an event to a Consumer (may be queued if necessary). - -protected: - // = We'll allow up to 16 megabytes to be queued per-output - // channel. - enum {QUEUE_SIZE = 1024 * 1024 * 16}; - - virtual int handle_input (ACE_HANDLE); - // Receive and process shutdowns from a Consumer. - - virtual int handle_output (ACE_HANDLE); - // Finish sending event when flow control conditions abate. - - int nonblk_put (ACE_Message_Block *mb); - // Perform a non-blocking put(). - - virtual ssize_t send (ACE_Message_Block *); - // Send an event to a Consumer. -}; - -#endif /* _IO_HANDLER */ diff --git a/apps/Gateway/Gateway/IO_Handler_Connector.cpp b/apps/Gateway/Gateway/IO_Handler_Connector.cpp deleted file mode 100644 index 712b348951d..00000000000 --- a/apps/Gateway/Gateway/IO_Handler_Connector.cpp +++ /dev/null @@ -1,92 +0,0 @@ -#include "IO_Handler_Connector.h" -// $Id$ - - -IO_Handler_Connector::IO_Handler_Connector (void) -{ -} - -// Override the connection-failure method to add timer support. -// Note that these timers perform "expoential backoff" to -// avoid rapidly trying to reestablish connections when a link -// goes down. - -int -IO_Handler_Connector::handle_close (ACE_HANDLE sd, ACE_Reactor_Mask) -{ - ACE_Connector<IO_Handler, ACE_SOCK_CONNECTOR>::AST *stp = 0; - - // Locate the ACE_Svc_Handler corresponding to the socket descriptor. - if (this->handler_map_.find (sd, stp) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) can't locate channel %d in map, %p\n", - sd, "find"), -1); - - IO_Handler *channel = stp->svc_handler (); - - // Schedule a reconnection request at some point in the future - // (note that channel uses an exponential backoff scheme). - if (ACE_Service_Config::reactor ()->schedule_timer (channel, 0, - channel->timeout ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "schedule_timer"), -1); - return 0; -} - -// Initiate (or reinitiate) a connection to the IO_Handler. - -int -IO_Handler_Connector::initiate_connection (IO_Handler *channel, - ACE_Synch_Options &synch_options) -{ - char buf[MAXHOSTNAMELEN]; - - // Mark ourselves as idle so that the various iterators - // will ignore us until we are reconnected. - channel->state (IO_Handler::IDLE); - - if (channel->remote_addr ().addr_to_string (buf, sizeof buf) == -1 - || channel->local_addr ().addr_to_string (buf, sizeof buf) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "can't obtain peer's address"), -1); - - // Try to connect to the Peer. - - if (this->connect (channel, channel->remote_addr (), - synch_options, channel->local_addr ()) == -1) - { - if (errno != EWOULDBLOCK) - { - channel->state (IO_Handler::FAILED); - ACE_DEBUG ((LM_DEBUG, "(%t) %p on address %s\n", - "connect", buf)); - - // Reschedule ourselves to try and connect again. - if (synch_options[ACE_Synch_Options::USE_REACTOR]) - { - if (ACE_Service_Config::reactor ()->schedule_timer - (channel, 0, channel->timeout ()) == 0) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "schedule_timer"), -1); - } - else - // Failures on synchronous connects are reported as errors - // so that the caller can decide how to proceed. - return -1; - } - else - { - channel->state (IO_Handler::CONNECTING); - ACE_DEBUG ((LM_DEBUG, - "(%t) in the process of connecting %s to %s\n", - synch_options[ACE_Synch_Options::USE_REACTOR] - ? "asynchronously" : "synchronously", buf)); - } - } - else - { - channel->state (IO_Handler::ESTABLISHED); - ACE_DEBUG ((LM_DEBUG, "(%t) connected to %s on %d\n", - buf, channel->get_handle ())); - } - return 0; -} diff --git a/apps/Gateway/Gateway/IO_Handler_Connector.h b/apps/Gateway/Gateway/IO_Handler_Connector.h deleted file mode 100644 index 585428c88ee..00000000000 --- a/apps/Gateway/Gateway/IO_Handler_Connector.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// IO_Handler_Connector.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_IO_HANDLER_CONNECTOR) -#define _IO_HANDLER_CONNECTOR - -#include "ace/Connector.h" -#include "Thr_IO_Handler.h" - -class IO_Handler_Connector : public ACE_Connector<IO_Handler, ACE_SOCK_CONNECTOR> - // = TITLE - // A concrete factory class that setups connections to peerds - // and produces a new IO_Handler object to do the dirty work... -{ -public: - IO_Handler_Connector (void); - - // Initiate (or reinitiate) a connection on the IO_Handler. - int initiate_connection (IO_Handler *, - ACE_Synch_Options & = ACE_Synch_Options::synch); - -protected: - // Override the connection-failure method to add timer support. - virtual int handle_close (ACE_HANDLE sd, ACE_Reactor_Mask); -}; - -#endif /* _IO_HANDLER_CONNECTOR */ diff --git a/apps/Gateway/Gateway/Makefile b/apps/Gateway/Gateway/Makefile deleted file mode 100644 index e7a91ce972b..00000000000 --- a/apps/Gateway/Gateway/Makefile +++ /dev/null @@ -1,824 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the Gateway. -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = gatewayd -LIB = libGateway.a -SHLIB = libGateway.$(SOEXT) - -FILES = Concrete_Connection_Handlers \ - Config_Files \ - File_Parser \ - Gateway \ - Event_Channel \ - Event_Forwarding_Discriminator \ - Options \ - Connection_Handler \ - Connection_Handler_Acceptor \ - Connection_Handler_Connector - -LSRC = $(addsuffix .cpp,$(FILES)) -LDLIBS = -lGateway -VLDLIBS = $(LDLIBS:%=%$(VAR)) - -BUILD = $(VLIB) $(VSHLIB) $(SHLIBA) $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_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/Concrete_Connection_Handlers.o .shobj/Concrete_Connection_Handlers.so: Concrete_Connection_Handlers.cpp \ - Event_Channel.h Connection_Handler_Connector.h \ - $(ACE_ROOT)/ace/Connector.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Svc_Handler.i \ - $(ACE_ROOT)/ace/Connector.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - Connection_Handler.h Config_Files.h File_Parser.h Event.h Options.h \ - Connection_Handler_Acceptor.h \ - $(ACE_ROOT)/ace/Acceptor.h \ - $(ACE_ROOT)/ace/Acceptor.i \ - $(ACE_ROOT)/ace/SOCK_Acceptor.h \ - $(ACE_ROOT)/ace/SOCK_Acceptor.i \ - Consumer_Dispatch_Set.h Event_Forwarding_Discriminator.h \ - Concrete_Connection_Handlers.h -.obj/Config_Files.o .shobj/Config_Files.so: Config_Files.cpp Config_Files.h File_Parser.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - Event.h Options.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i -.obj/File_Parser.o .shobj/File_Parser.so: File_Parser.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - File_Parser.h -.obj/Gateway.o .shobj/Gateway.so: Gateway.cpp Config_Files.h File_Parser.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - Event.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - Event_Channel.h Connection_Handler_Connector.h \ - $(ACE_ROOT)/ace/Connector.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Svc_Handler.i \ - $(ACE_ROOT)/ace/Connector.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - Connection_Handler.h Options.h Connection_Handler_Acceptor.h \ - $(ACE_ROOT)/ace/Acceptor.h \ - $(ACE_ROOT)/ace/Acceptor.i \ - $(ACE_ROOT)/ace/SOCK_Acceptor.h \ - $(ACE_ROOT)/ace/SOCK_Acceptor.i \ - Consumer_Dispatch_Set.h Event_Forwarding_Discriminator.h Gateway.h -.obj/Event_Channel.o .shobj/Event_Channel.so: Event_Channel.cpp Connection_Handler_Connector.h \ - $(ACE_ROOT)/ace/Connector.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Svc_Handler.i \ - $(ACE_ROOT)/ace/Connector.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - Connection_Handler.h Config_Files.h File_Parser.h Event.h Options.h \ - Event_Channel.h Connection_Handler_Acceptor.h \ - $(ACE_ROOT)/ace/Acceptor.h \ - $(ACE_ROOT)/ace/Acceptor.i \ - $(ACE_ROOT)/ace/SOCK_Acceptor.h \ - $(ACE_ROOT)/ace/SOCK_Acceptor.i \ - Consumer_Dispatch_Set.h Event_Forwarding_Discriminator.h -.obj/Event_Forwarding_Discriminator.o .shobj/Event_Forwarding_Discriminator.so: Event_Forwarding_Discriminator.cpp \ - Event_Forwarding_Discriminator.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i Event.h \ - Consumer_Dispatch_Set.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i -.obj/Options.o .shobj/Options.so: Options.cpp \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Get_Opt.i Event.h \ - Options.h $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i -.obj/Connection_Handler.o .shobj/Connection_Handler.so: Connection_Handler.cpp Event_Channel.h \ - Connection_Handler_Connector.h \ - $(ACE_ROOT)/ace/Connector.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Svc_Handler.i \ - $(ACE_ROOT)/ace/Connector.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - Connection_Handler.h Config_Files.h File_Parser.h Event.h Options.h \ - Connection_Handler_Acceptor.h \ - $(ACE_ROOT)/ace/Acceptor.h \ - $(ACE_ROOT)/ace/Acceptor.i \ - $(ACE_ROOT)/ace/SOCK_Acceptor.h \ - $(ACE_ROOT)/ace/SOCK_Acceptor.i \ - Consumer_Dispatch_Set.h Event_Forwarding_Discriminator.h \ - Concrete_Connection_Handlers.h -.obj/Connection_Handler_Acceptor.o .shobj/Connection_Handler_Acceptor.so: Connection_Handler_Acceptor.cpp \ - Event_Channel.h Connection_Handler_Connector.h \ - $(ACE_ROOT)/ace/Connector.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Svc_Handler.i \ - $(ACE_ROOT)/ace/Connector.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - Connection_Handler.h Config_Files.h File_Parser.h Event.h Options.h \ - Connection_Handler_Acceptor.h \ - $(ACE_ROOT)/ace/Acceptor.h \ - $(ACE_ROOT)/ace/Acceptor.i \ - $(ACE_ROOT)/ace/SOCK_Acceptor.h \ - $(ACE_ROOT)/ace/SOCK_Acceptor.i \ - Consumer_Dispatch_Set.h Event_Forwarding_Discriminator.h -.obj/Connection_Handler_Connector.o .shobj/Connection_Handler_Connector.so: Connection_Handler_Connector.cpp \ - Connection_Handler_Connector.h \ - $(ACE_ROOT)/ace/Connector.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Svc_Handler.i \ - $(ACE_ROOT)/ace/Connector.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - Connection_Handler.h Config_Files.h File_Parser.h Event.h Options.h - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/apps/Gateway/Gateway/Options.cpp b/apps/Gateway/Gateway/Options.cpp deleted file mode 100644 index 49abfae174d..00000000000 --- a/apps/Gateway/Gateway/Options.cpp +++ /dev/null @@ -1,249 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -#include "ace/Get_Opt.h" -#include "Event.h" -#include "Options.h" - -// Static initialization. -Options *Options::instance_ = 0; - -Options * -Options::instance (void) -{ - if (Options::instance_ == 0) - ACE_NEW_RETURN (Options::instance_, Options, 0); - - return Options::instance_; -} - -Options::Options (void) - : locking_strategy_ (0), - performance_window_ (0), - blocking_semantics_ (ACE_NONBLOCK), - socket_queue_size_ (0), - threading_strategy_ (REACTIVE), - options_ (0), - supplier_acceptor_port_ (DEFAULT_GATEWAY_SUPPLIER_PORT), - consumer_acceptor_port_ (DEFAULT_GATEWAY_CONSUMER_PORT), - supplier_connector_port_ (DEFAULT_PEER_SUPPLIER_PORT), - consumer_connector_port_ (DEFAULT_PEER_CONSUMER_PORT), - max_timeout_ (MAX_TIMEOUT), - max_queue_size_ (MAX_QUEUE_SIZE) -{ - ACE_OS::strcpy (this->connection_config_file_, "connection_config"); - ACE_OS::strcpy (this->consumer_config_file_, "consumer_config"); -} - -int -Options::enabled (int option) const -{ - return ACE_BIT_ENABLED (this->options_, option); -} - -Options::~Options (void) -{ - delete this->locking_strategy_; -} - -ACE_Lock_Adapter<ACE_SYNCH_MUTEX> * -Options::locking_strategy (void) const -{ - return this->locking_strategy_; -} - -void -Options::locking_strategy (ACE_Lock_Adapter<ACE_SYNCH_MUTEX> *ls) -{ - this->locking_strategy_ = ls; -} - -int -Options::performance_window (void) const -{ - return this->performance_window_; -} - -long -Options::max_timeout (void) const -{ - return this->max_timeout_; -} - -int -Options::blocking_semantics (void) const -{ - return this->blocking_semantics_; -} - -int -Options::socket_queue_size (void) const -{ - return this->socket_queue_size_; -} - -u_long -Options::threading_strategy (void) const -{ - return this->threading_strategy_; -} - -const char * -Options::connection_config_file (void) const -{ - return this->connection_config_file_; -} - -const char * -Options::consumer_config_file (void) const -{ - return this->consumer_config_file_; -} - -u_short -Options::consumer_acceptor_port (void) const -{ - return this->consumer_acceptor_port_; -} - -u_short -Options::supplier_acceptor_port (void) const -{ - return this->supplier_acceptor_port_; -} - -u_short -Options::consumer_connector_port (void) const -{ - return this->consumer_connector_port_; -} - -long -Options::max_queue_size (void) const -{ - return this->max_queue_size_; -} - -u_short -Options::supplier_connector_port (void) const -{ - return this->supplier_connector_port_; -} - -// Parse the "command-line" arguments and set the corresponding flags. - -int -Options::parse_args (int argc, char *argv[]) -{ - // Assign defaults. - ACE_Get_Opt get_opt (argc, - argv, - "a:bC:c:dm:P:p:q:r:t:vw:", - 0); - - for (int c; (c = get_opt ()) != EOF; ) - { - switch (c) - { - case 'a': - { - // Become an Acceptor. - - for (char *flag = ACE_OS::strtok (get_opt.optarg, "|"); - flag != 0; - flag = ACE_OS::strtok (0, "|")) - if (ACE_OS::strncasecmp (flag, "C", 1) == 0) - { - ACE_SET_BITS (this->options_, - Options::CONSUMER_ACCEPTOR); - if (ACE_OS::strlen (flag) > 1) - // Set the Consumer Acceptor port number. - this->consumer_acceptor_port_ = ACE_OS::atoi (flag + 2); - } - else if (ACE_OS::strncasecmp (flag, "S", 1) == 0) - { - ACE_SET_BITS (this->options_, - Options::SUPPLIER_ACCEPTOR); - if (ACE_OS::strlen (flag) > 1) - // Set the Supplier Acceptor port number. - this->supplier_acceptor_port_ = ACE_OS::atoi (flag + 2); - } - } - break; - /* NOTREACHED */ - case 'b': // Use blocking connection establishment. - this->blocking_semantics_ = 1; - break; - case 'C': // Use a different proxy config filename. - ACE_OS::strncpy (this->consumer_config_file_, - get_opt.optarg, - sizeof this->consumer_config_file_); - break; - case 'c': - { - // Become a Connector. - - for (char *flag = ACE_OS::strtok (get_opt.optarg, "|"); - flag != 0; - flag = ACE_OS::strtok (0, "|")) - if (ACE_OS::strncasecmp (flag, "C", 1) == 0) - { - ACE_SET_BITS (this->options_, - Options::CONSUMER_CONNECTOR); - if (ACE_OS::strlen (flag) > 1) - // Set the Consumer Connector port number. - this->consumer_connector_port_ = ACE_OS::atoi (flag + 2); - } - else if (ACE_OS::strncasecmp (flag, "S", 1) == 0) - { - ACE_SET_BITS (this->options_, - Options::SUPPLIER_CONNECTOR); - if (ACE_OS::strlen (flag) > 1) - // Set the Supplier Connector port number. - this->supplier_connector_port_ = ACE_OS::atoi (flag + 2); - } - } - break; - /* NOTREACHED */ - case 'd': // We are debugging. - ACE_SET_BITS (this->options_, - Options::DEBUG); - break; - case 'P': // Use a different consumer config filename. - ACE_OS::strncpy (this->connection_config_file_, - get_opt.optarg, - sizeof this->connection_config_file_); - break; - case 'q': // Use a different socket queue size. - this->socket_queue_size_ = ACE_OS::atoi (get_opt.optarg); - break; - case 't': // Use a different threading strategy. - { - for (char *flag = ACE_OS::strtok (get_opt.optarg, "|"); - flag != 0; - flag = ACE_OS::strtok (0, "|")) - if (ACE_OS::strcmp (flag, "OUTPUT_MT") == 0) - ACE_SET_BITS (this->threading_strategy_, - Options::OUTPUT_MT); - else if (ACE_OS::strcmp (flag, "INPUT_MT") == 0) - ACE_SET_BITS (this->threading_strategy_, - Options::INPUT_MT); - break; - } - case 'v': // Verbose mode. - ACE_SET_BITS (this->options_, - Options::VERBOSE); - break; - case 'w': // Time performance for a designated amount of time. - this->performance_window_ = ACE_OS::atoi (get_opt.optarg); - // Use blocking connection semantics so that we get accurate - // timings (since all connections start at once). - this->blocking_semantics_ = 0; - break; - default: - break; - } - } - - return 0; -} diff --git a/apps/Gateway/Gateway/Options.h b/apps/Gateway/Gateway/Options.h deleted file mode 100644 index d32ace5f770..00000000000 --- a/apps/Gateway/Gateway/Options.h +++ /dev/null @@ -1,183 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Options.h -// -// = AUTHOR -// Douglas C. Schmidt -// -// ============================================================================ - -#if !defined (OPTIONS_H) -#define OPTIONS_H - -#include "ace/Synch.h" - -class Options -{ - // = TITLE - // Singleton that consolidates all Options for a gatewayd. -public: - // = Options that can be enabled/disabled. - enum - { - // = The types of threading strategies. - REACTIVE = 0, - OUTPUT_MT = 1, - INPUT_MT = 2, - - VERBOSE = 01, - DEBUG = 02, - - SUPPLIER_ACCEPTOR = 04, - CONSUMER_ACCEPTOR = 010, - SUPPLIER_CONNECTOR = 020, - CONSUMER_CONNECTOR = 040 - }; - - static Options *instance (void); - // Return Singleton. - - ~Options (void); - // Termination. - - int parse_args (int argc, char *argv[]); - // Parse the arguments and set the options. - - // = Accessor methods. - int enabled (int option) const; - // Determine if an option is enabled. - - ACE_Lock_Adapter<ACE_SYNCH_MUTEX> *locking_strategy (void) const; - // Gets the locking strategy used for serializing access to the - // reference count in <ACE_Message_Block>. If it's 0, then there's - // no locking strategy and we're using a REACTIVE concurrency - // strategy. - - void locking_strategy (ACE_Lock_Adapter<ACE_SYNCH_MUTEX> *); - // Set the locking strategy used for serializing access to the - // reference count in <ACE_Message_Block>. - - int performance_window (void) const; - // Number of seconds after connection establishment to report - // throughput. - - int blocking_semantics (void) const; - // 0 == blocking connects, ACE_NONBLOCK == non-blocking connects. - - int socket_queue_size (void) const; - // Size of the socket queue (0 means "use default"). - - u_long threading_strategy (void) const; - // i.e., REACTIVE, OUTPUT_MT, and/or INPUT_MT. - - u_short supplier_acceptor_port (void) const; - // Our acceptor port number, i.e., the one that we passively listen - // on for connections to arrive from a gatewayd and create a - // Supplier. - - u_short consumer_acceptor_port (void) const; - // Our acceptor port number, i.e., the one that we passively listen - // on for connections to arrive from a gatewayd and create a - // Consumer. - - u_short supplier_connector_port (void) const; - // The connector port number, i.e., the one that we use to actively - // establish connections with a gatewayd and create a Supplier. - - u_short consumer_connector_port (void) const; - // The connector port number, i.e., the one that we use to actively - // establish connections with a gatewayd and create a Consumer. - - const char *connector_host (void) const; - // Our connector port host, i.e., the host running the gatewayd - // process. - - const char *connection_config_file (void) const; - // Name of the connection configuration file. - - const char *consumer_config_file (void) const; - // Name of the consumer map configuration file. - - long max_timeout (void) const; - // The maximum retry timeout delay. - - long max_queue_size (void) const; - // The maximum size of the queue. - -private: - enum - { - MAX_QUEUE_SIZE = 1024 * 1024 * 16, - // We'll allow up to 16 megabytes to be queued per-output proxy. - - MAX_TIMEOUT = 32 - // The maximum timeout for trying to re-establish connections. - }; - - Options (void); - // Initialization. - - static Options *instance_; - // Options Singleton instance. - - ACE_Lock_Adapter<ACE_SYNCH_MUTEX> *locking_strategy_; - // Points to the locking strategy used for serializing access to the - // reference count in <ACE_Message_Block>. If it's 0, then there's - // no locking strategy and we're using a REACTIVE concurrency - // strategy. - - int performance_window_; - // Number of seconds after connection establishment to report - // throughput. - - int blocking_semantics_; - // 0 == blocking connects, ACE_NONBLOCK == non-blocking connects. - - int socket_queue_size_; - // Size of the socket queue (0 means "use default"). - - u_long threading_strategy_; - // i.e., REACTIVE, OUTPUT_MT, and/or INPUT_MT. - - u_long options_; - // Flag to indicate if we want verbose diagnostics. - - u_short supplier_acceptor_port_; - // The acceptor port number, i.e., the one that we passively listen - // on for connections to arrive from a gatewayd and create a - // Supplier. - - u_short consumer_acceptor_port_; - // The acceptor port number, i.e., the one that we passively listen - // on for connections to arrive from a gatewayd and create a - // Consumer. - - u_short supplier_connector_port_; - // The connector port number, i.e., the one that we use to actively - // establish connections with a gatewayd and create a Supplier. - - u_short consumer_connector_port_; - // The connector port number, i.e., the one that we use to actively - // establish connections with a gatewayd and create a Consumer. - - long max_timeout_; - // The maximum retry timeout delay. - - long max_queue_size_; - // The maximum size of the queue. - - char connection_config_file_[MAXPATHLEN + 1]; - // Name of the connection configuration file. - - char consumer_config_file_[MAXPATHLEN + 1]; - // Name of the consumer map configuration file. -}; - -#endif /* OPTIONS_H */ diff --git a/apps/Gateway/Gateway/Peer_Message.h b/apps/Gateway/Gateway/Peer_Message.h deleted file mode 100644 index d9e65650095..00000000000 --- a/apps/Gateway/Gateway/Peer_Message.h +++ /dev/null @@ -1,89 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Peer_Message.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (PEER_MESSAGE) -#define PEER_MESSAGE - -// This is the unique connection identifier that denotes a particular -// Channel in the Gateway. -typedef short CONN_ID; - -class Peer_Addr - // = TITLE - // Peer address is used to identify the source/destination of a - // routing message. -{ -public: - Peer_Addr (CONN_ID cid = -1, u_char lid = 0, u_char pay = 0) - : conn_id_ (cid), logical_id_ (lid), payload_ (pay) {} - - int operator== (const Peer_Addr &pa) const - { - return this->conn_id_ == pa.conn_id_ - && this->logical_id_ == pa.logical_id_ - && this->payload_ == pa.payload_; - } - - CONN_ID conn_id_; - // Unique connection identifier that denotes a particular Channel. - - u_char logical_id_; - // Logical ID. - - u_char payload_; - // Payload type. -}; - - -class Peer_Header - // = TITLE - // Fixed sized header. -{ -public: - typedef u_short ROUTING_ID; - // Type used to route messages from gatewayd. - - enum - { - INVALID_ID = -1 // No peer can validly use this number. - }; - - ROUTING_ID routing_id_; - // Source ID. - - size_t len_; - // Length of the message in bytes. -}; - -class Peer_Message - // = TITLE - // Variable-sized message (buf_ may be variable-sized between - // 0 and MAX_PAYLOAD_SIZE). -{ -public: - enum { MAX_PAYLOAD_SIZE = 1024 }; - // The maximum size of an Peer message (see Peer protocol specs for - // exact #). - - Peer_Header header_; - // Message header. - - char buf_[MAX_PAYLOAD_SIZE]; - // Message payload. -}; - -#endif /* PEER_MESSAGE */ diff --git a/apps/Gateway/Gateway/Routing_Entry.cpp b/apps/Gateway/Gateway/Routing_Entry.cpp deleted file mode 100644 index cc270cfac3a..00000000000 --- a/apps/Gateway/Gateway/Routing_Entry.cpp +++ /dev/null @@ -1,47 +0,0 @@ -// Defines an entry in the Routing Table. -// $Id$ - -#include "Routing_Entry.h" - -Routing_Entry::Routing_Entry (int validity_interval) - : validity_interval_ (validity_interval) -{ - ACE_NEW (this->destinations_, Routing_Entry::ENTRY_SET); -} - -Routing_Entry::~Routing_Entry (void) -{ - delete this->destinations_; -} - -// Get the associated set of destinations. - -Routing_Entry::ENTRY_SET * -Routing_Entry::destinations (void) -{ - return this->destinations_; -} - -// Set the associated set of destinations. - -void -Routing_Entry::destinations (Routing_Entry::ENTRY_SET *s) -{ - this->destinations_ = s; -} - -// Get the current validity interval for this route. - -int -Routing_Entry::validity_interval (void) -{ - return this->validity_interval_; -} - -// Set the current validity interval for this route. - -void -Routing_Entry::validity_interval (int vi) -{ - this->validity_interval_ = vi; -} diff --git a/apps/Gateway/Gateway/Routing_Entry.h b/apps/Gateway/Gateway/Routing_Entry.h deleted file mode 100644 index ab8e0eee53d..00000000000 --- a/apps/Gateway/Gateway/Routing_Entry.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Routing_Entry.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_ROUTING_ENTRY) -#define _ROUTING_ENTRY - -#include "ace/Set.h" - -// Forward reference. -class Channel; - -class Routing_Entry -{ - // = TITLE - // Defines an entry in the Routing_Table. -public: - Routing_Entry (int validity_interval = 0); - ~Routing_Entry (void); - - typedef ACE_Unbounded_Set<Channel *> ENTRY_SET; - typedef ACE_Unbounded_Set_Iterator<Channel *> ENTRY_ITERATOR; - - // = Set/get the associated set of destinations. - ENTRY_SET *destinations (void); - void destinations (ENTRY_SET *); - - // = Set/get current validity interval for this routing entry. - int validity_interval (void); - void validity_interval (int); - -protected: - ENTRY_SET *destinations_; - // The set of destinations; - - int validity_interval_; - // The current validity interval of this link. -}; - -#endif /* _ROUTING_ENTRY */ diff --git a/apps/Gateway/Gateway/Routing_Table.cpp b/apps/Gateway/Gateway/Routing_Table.cpp deleted file mode 100644 index 3ef2f21bc1f..00000000000 --- a/apps/Gateway/Gateway/Routing_Table.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -#if !defined (_ROUTING_TABLE_C) -#define _ROUTING_TABLE_C - - -#include "Routing_Table.h" - -/* Bind the EXT_ID to the INT_ID. */ - -template <class EXT_ID, class INT_ID, class LOCK> int -Routing_Table<EXT_ID, INT_ID, LOCK>::bind (EXT_ID ext_id, INT_ID *int_id) -{ - return this->map_.bind (ext_id, int_id); -} - -/* Find the INT_ID corresponding to the EXT_ID. */ - -template <class EXT_ID, class INT_ID, class LOCK> int -Routing_Table<EXT_ID, INT_ID, LOCK>::find (EXT_ID ext_id, INT_ID *&int_id) -{ - return this->map_.find (ext_id, int_id); -} - -/* Unbind (remove) the EXT_ID from the map. */ - -template <class EXT_ID, class INT_ID, class LOCK> int -Routing_Table<EXT_ID, INT_ID, LOCK>::unbind (EXT_ID ext_id) -{ - return this->map_.unbind (ext_id); -} - -template <class EXT_ID, class INT_ID, class LOCK> -Routing_Iterator<EXT_ID, INT_ID, LOCK>::Routing_Iterator (Routing_Table<EXT_ID, - INT_ID, LOCK> &rt, - int ignore_inactive) - : map_iter_ (rt.map_), - ignore_inactive_ (ignore_inactive) -{ -} - -template <class EXT_ID, class INT_ID, class LOCK> int -Routing_Iterator<EXT_ID, INT_ID, LOCK>::next (INT_ID *&ss) -{ - // Loop in order to skip over inactive entries if necessary. - - for (ACE_Map_Entry<EXT_ID, INT_ID *> *temp = 0; - this->map_iter_.next (temp) != 0; - this->advance ()) - { - // Skip over inactive entries if necessary. - if (temp->int_id_->active () == 0 && this->ignore_inactive_) - continue; - - // Otherwise, return the next item. - ss = temp->int_id_; - return 1; - } - return 0; -} - -template <class EXT_ID, class INT_ID, class LOCK> int -Routing_Iterator<EXT_ID, INT_ID, LOCK>::advance (void) -{ - return this->map_iter_.advance (); -} -#endif /* _ROUTING_TABLE_C */ diff --git a/apps/Gateway/Gateway/Routing_Table.h b/apps/Gateway/Gateway/Routing_Table.h deleted file mode 100644 index 84194f13e49..00000000000 --- a/apps/Gateway/Gateway/Routing_Table.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Routing_Table.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_ROUTING_TABLE_H) -#define _ROUTING_TABLE_H - -#include "ace/Map_Manager.h" - -template <class EXT_ID, class INT_ID, class LOCK> -class Routing_Table -{ - // = TITLE - // Define a generic routing table based on the ACE Map_Manager. - // - // = DESCRIPTION - // We need to have this table, rather than just using the Map_Manager - // directly in order to ignore "inactive" routing entries... -public: - int bind (EXT_ID ext_id, INT_ID *int_id); - // Associate EXT_ID with the INT_ID. - - int find (EXT_ID ext_id, INT_ID *&int_id); - // Break any association of EXID. - - int unbind (EXT_ID ext_id); - // Locate EXID and pass out parameter via INID. If found, - // return 0, else -1. - -public: - ACE_Map_Manager<EXT_ID, INT_ID *, LOCK> map_; - // Map external IDs to internal IDs. -}; - -template <class EXT_ID, class INT_ID, class LOCK> -class Routing_Iterator -{ - // = TITLE - // Define an iterator for the Routing Table. -public: - Routing_Iterator (Routing_Table<EXT_ID, INT_ID, LOCK> &mm, - int ignore_inactive = 1); - int next (INT_ID *&); - int advance (void); - -private: - ACE_Map_Iterator<EXT_ID, INT_ID *, LOCK> map_iter_; - int ignore_inactive_; -}; - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "Routing_Table.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ -#endif /* _ROUTING_TABLE_H */ diff --git a/apps/Gateway/Gateway/Thr_Channel.cpp b/apps/Gateway/Gateway/Thr_Channel.cpp deleted file mode 100644 index 26e385e2727..00000000000 --- a/apps/Gateway/Gateway/Thr_Channel.cpp +++ /dev/null @@ -1,204 +0,0 @@ -#include "Thr_Channel.h" -// $Id$ - -#include "Channel_Connector.h" - -#if defined (ACE_HAS_THREADS) -Thr_Output_Channel::Thr_Output_Channel (ROUTING_TABLE *rt, - Channel_Connector *cc, - ACE_Thread_Manager *thr_mgr, - int socket_queue_size) - : Output_Channel (rt, cc, thr_mgr, socket_queue_size) -{ -} - -// This method should be called only when the peer shuts down -// unexpectedly. This method marks the Channel as having failed and -// deactivates the ACE_Message_Queue (to wake up the thread blocked on -// <dequeue_head> in svc()). Thr_Output_Handler::handle_close () will -// eventually try to reconnect... - -int -Thr_Output_Channel::handle_input (ACE_HANDLE h) -{ - this->Output_Channel::handle_input (h); - ACE_Service_Config::reactor ()->remove_handler (h, - ACE_Event_Handler::RWE_MASK - | ACE_Event_Handler::DONT_CALL); - // Deactivate the queue while we try to get reconnected. - this->msg_queue ()->deactivate (); - return 0; -} - -// Initialize the threaded Output_Channel object and spawn a new -// thread. - -int -Thr_Output_Channel::open (void *) -{ - // Set the size of the socket queue. - this->socket_queue_size (); - - // Turn off non-blocking I/O. - if (this->peer ().disable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enable"), -1); - - // Register ourselves to receive input events (which indicate that - // the Peer has shut down unexpectedly). - if (ACE_Service_Config::reactor ()->register_handler (this, - ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "register_handler"), -1); - - if (this->initialize_connection ()) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "initialize_connection"), -1); - - // Reactivate message queue. If it was active then this is the - // first time in and we need to spawn a thread, otherwise the queue - // was inactive due to some problem and we've already got a thread. - if (this->msg_queue ()->activate () == ACE_Message_Queue<SYNCH>::WAS_ACTIVE) - { - ACE_DEBUG ((LM_DEBUG, "(%t) spawning new thread\n")); - // Become an active object by spawning a new thread to transmit - // messages to peers. - return this->activate (THR_NEW_LWP | THR_DETACHED); - } - else - { - ACE_DEBUG ((LM_DEBUG, "(%t) reusing existing thread\n")); - return 0; - } -} - -// ACE_Queue up a message for transmission (must not block since all -// Input_Channels are single-threaded). - -int -Thr_Output_Channel::put (ACE_Message_Block *mb, ACE_Time_Value *) -{ - // Perform non-blocking enqueue. - return this->msg_queue ()->enqueue_tail (mb, (ACE_Time_Value *) &ACE_Time_Value::zero); -} - -// Transmit messages to the peer (note simplification resulting from -// threads...) - -int -Thr_Output_Channel::svc (void) -{ - for (;;) - { - ACE_DEBUG ((LM_DEBUG, "(%t) connected! Thr_Output_Channel's fd = %d\n", - this->peer ().get_handle ())); - - // Since this method runs in its own thread it is OK to block on - // output. - - for (ACE_Message_Block *mb = 0; - this->msg_queue ()->dequeue_head (mb) != -1; ) - if (this->send_peer (mb) == -1) - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "send failed")); - - ACE_ASSERT (errno == ESHUTDOWN); - - ACE_DEBUG ((LM_DEBUG, "(%t) shutting down threaded Output_Channel %d on handle %d\n", - this->id (), this->get_handle ())); - - this->peer ().close (); - - for (this->timeout (1); - // Default is to reconnect synchronously. - this->connector_->initiate_connection (this) == -1; ) - { - ACE_Time_Value tv (this->timeout ()); - ACE_ERROR ((LM_ERROR, - "(%t) reattempting connection, sec = %d\n", - tv.sec ())); - ACE_OS::sleep (tv); - } - } - - return 0; -} - -Thr_Input_Channel::Thr_Input_Channel (ROUTING_TABLE *rt, - Channel_Connector *cc, - ACE_Thread_Manager *thr_mgr, - int socket_queue_size) - : Input_Channel (rt, cc, thr_mgr, socket_queue_size) -{ -} - -int -Thr_Input_Channel::open (void *) -{ - // Set the size of the socket queue. - this->socket_queue_size (); - - // Turn off non-blocking I/O. - if (this->peer ().disable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enable"), -1); - - if (this->initialize_connection ()) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "initialize_connection"), -1); - - // Reactivate message queue. If it was active then this is the - // first time in and we need to spawn a thread, otherwise the queue - // was inactive due to some problem and we've already got a thread. - if (this->msg_queue ()->activate () == ACE_Message_Queue<SYNCH>::WAS_ACTIVE) - { - ACE_DEBUG ((LM_DEBUG, "(%t) spawning new thread\n")); - // Become an active object by spawning a new thread to transmit - // messages to peers. - return this->activate (THR_NEW_LWP | THR_DETACHED); - } - else - { - ACE_DEBUG ((LM_DEBUG, "(%t) reusing existing thread\n")); - return 0; - } -} - -// Receive messages from a Peer in a separate thread (note reuse of -// existing code!). - -int -Thr_Input_Channel::svc (void) -{ - for (;;) - { - ACE_DEBUG ((LM_DEBUG, "(%t) connected! Thr_Input_Channel's fd = %d\n", - this->peer ().get_handle ())); - - // Since this method runs in its own thread and processes - // messages for one connection it is OK to block on input and - // output. - - while (this->handle_input () != -1) - continue; - - ACE_DEBUG ((LM_DEBUG, - "(%t) shutting down threaded Input_Channel %d on handle %d\n", - this->id (), - this->get_handle ())); - - this->peer ().close (); - - // Deactivate the queue while we try to get reconnected. - this->msg_queue ()->deactivate (); - - for (this->timeout (1); - // Default is to reconnect synchronously. - this->connector_->initiate_connection (this) == -1; ) - { - ACE_Time_Value tv (this->timeout ()); - ACE_ERROR ((LM_ERROR, - "(%t) reattempting connection, sec = %d\n", tv.sec ())); - ACE_OS::sleep (tv); - } - } - return 0; -} - -#endif /* ACE_HAS_THREADS */ diff --git a/apps/Gateway/Gateway/Thr_Channel.h b/apps/Gateway/Gateway/Thr_Channel.h deleted file mode 100644 index a1dc91b1619..00000000000 --- a/apps/Gateway/Gateway/Thr_Channel.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Thr_Channel.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_THR_CHANNEL) -#define _THR_CHANNEL - -#include "Channel.h" - -#if defined (ACE_HAS_THREADS) -class Thr_Output_Channel : public Output_Channel - // = TITLE - // Runs each Output Channel in a separate thread. -{ -public: - Thr_Output_Channel (ROUTING_TABLE *, - Channel_Connector *, - ACE_Thread_Manager *, - int socket_queue_size); - - virtual int open (void *); - // Initialize the threaded Output_Channel object and spawn a new - // thread. - - virtual int handle_input (ACE_HANDLE); - // Called when Peer shutdown unexpectedly. - - virtual int put (ACE_Message_Block *, ACE_Time_Value * = 0); - // Send a message to a peer. - - virtual int svc (void); - // Transmit peer messages. -}; - -class Thr_Input_Channel : public Input_Channel - // = TITLE - // Runs each Input Channel in a separate thread. -{ -public: - Thr_Input_Channel (ROUTING_TABLE *, - Channel_Connector *, - ACE_Thread_Manager *, - int socket_queue_size); - - virtual int open (void *); - // Initialize the object and spawn a new thread. - - virtual int svc (void); - // Transmit peer messages. -}; -#endif /* ACE_HAS_THREADS */ -#endif /* _THR_CHANNEL */ diff --git a/apps/Gateway/Gateway/Thr_IO_Handler.cpp b/apps/Gateway/Gateway/Thr_IO_Handler.cpp deleted file mode 100644 index 109cfad9c3f..00000000000 --- a/apps/Gateway/Gateway/Thr_IO_Handler.cpp +++ /dev/null @@ -1,204 +0,0 @@ -#include "Thr_IO_Handler.h" -// $Id$ - -#include "IO_Handler_Connector.h" - -#if defined (ACE_HAS_THREADS) -Thr_Consumer_Handler::Thr_Consumer_Handler (Consumer_Map *consumer_map, - IO_Handler_Connector *ioc, - ACE_Thread_Manager *thr_mgr, - int socket_queue_size) - : Consumer_Handler (consumer_map, ioc, thr_mgr, socket_queue_size) -{ -} - -// This method should be called only when the peer shuts down -// unexpectedly. This method marks the IO_Handler as having failed and -// deactivates the ACE_Message_Queue (to wake up the thread blocked on -// <dequeue_head> in svc()). Thr_Output_Handler::handle_close () will -// eventually try to reconnect... - -int -Thr_Consumer_Handler::handle_input (ACE_HANDLE h) -{ - this->Consumer_Handler::handle_input (h); - ACE_Service_Config::reactor ()->remove_handler (h, - ACE_Event_Handler::RWE_MASK - | ACE_Event_Handler::DONT_CALL); - // Deactivate the queue while we try to get reconnected. - this->msg_queue ()->deactivate (); - return 0; -} - -// Initialize the threaded Consumer_Handler object and spawn a new -// thread. - -int -Thr_Consumer_Handler::open (void *) -{ - // Set the size of the socket queue. - this->socket_queue_size (); - - // Turn off non-blocking I/O. - if (this->peer ().disable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enable"), -1); - - // Register ourselves to receive input events (which indicate that - // the Peer has shut down unexpectedly). - if (ACE_Service_Config::reactor ()->register_handler (this, - ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "register_handler"), -1); - - if (this->initialize_connection ()) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "initialize_connection"), -1); - - // Reactivate message queue. If it was active then this is the - // first time in and we need to spawn a thread, otherwise the queue - // was inactive due to some problem and we've already got a thread. - if (this->msg_queue ()->activate () == ACE_Message_Queue<SYNCH_STRATEGY>::WAS_ACTIVE) - { - ACE_DEBUG ((LM_DEBUG, "(%t) spawning new thread\n")); - // Become an active object by spawning a new thread to transmit - // messages to peers. - return this->activate (THR_NEW_LWP | THR_DETACHED); - } - else - { - ACE_DEBUG ((LM_DEBUG, "(%t) reusing existing thread\n")); - return 0; - } -} - -// ACE_Queue up a message for transmission (must not block since all -// Supplier_Handlers are single-threaded). - -int -Thr_Consumer_Handler::put (ACE_Message_Block *mb, ACE_Time_Value *) -{ - // Perform non-blocking enqueue. - return this->msg_queue ()->enqueue_tail (mb, (ACE_Time_Value *) &ACE_Time_Value::zero); -} - -// Transmit messages to the peer (note simplification resulting from -// threads...) - -int -Thr_Consumer_Handler::svc (void) -{ - for (;;) - { - ACE_DEBUG ((LM_DEBUG, "(%t) connected! Thr_Consumer_Handler's fd = %d\n", - this->peer ().get_handle ())); - - // Since this method runs in its own thread it is OK to block on - // output. - - for (ACE_Message_Block *mb = 0; - this->msg_queue ()->dequeue_head (mb) != -1; ) - if (this->send (mb) == -1) - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "send failed")); - - ACE_ASSERT (errno == ESHUTDOWN); - - ACE_DEBUG ((LM_DEBUG, "(%t) shutting down threaded Consumer_Handler %d on handle %d\n", - this->id (), this->get_handle ())); - - this->peer ().close (); - - for (this->timeout (1); - // Default is to reconnect synchronously. - this->connector_->initiate_connection (this) == -1; ) - { - ACE_Time_Value tv (this->timeout ()); - ACE_ERROR ((LM_ERROR, - "(%t) reattempting connection, sec = %d\n", - tv.sec ())); - ACE_OS::sleep (tv); - } - } - - return 0; -} - -Thr_Supplier_Handler::Thr_Supplier_Handler (Consumer_Map *consumer_map, - IO_Handler_Connector *ioc, - ACE_Thread_Manager *thr_mgr, - int socket_queue_size) - : Supplier_Handler (consumer_map, ioc, thr_mgr, socket_queue_size) -{ -} - -int -Thr_Supplier_Handler::open (void *) -{ - // Set the size of the socket queue. - this->socket_queue_size (); - - // Turn off non-blocking I/O. - if (this->peer ().disable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enable"), -1); - - if (this->initialize_connection ()) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", - "initialize_connection"), -1); - - // Reactivate message queue. If it was active then this is the - // first time in and we need to spawn a thread, otherwise the queue - // was inactive due to some problem and we've already got a thread. - if (this->msg_queue ()->activate () == ACE_Message_Queue<SYNCH_STRATEGY>::WAS_ACTIVE) - { - ACE_DEBUG ((LM_DEBUG, "(%t) spawning new thread\n")); - // Become an active object by spawning a new thread to transmit - // messages to peers. - return this->activate (THR_NEW_LWP | THR_DETACHED); - } - else - { - ACE_DEBUG ((LM_DEBUG, "(%t) reusing existing thread\n")); - return 0; - } -} - -// Receive messages from a Peer in a separate thread (note reuse of -// existing code!). - -int -Thr_Supplier_Handler::svc (void) -{ - for (;;) - { - ACE_DEBUG ((LM_DEBUG, "(%t) connected! Thr_Supplier_Handler's fd = %d\n", - this->peer ().get_handle ())); - - // Since this method runs in its own thread and processes - // messages for one connection it is OK to block on input and - // output. - - while (this->handle_input () != -1) - continue; - - ACE_DEBUG ((LM_DEBUG, - "(%t) shutting down threaded Supplier_Handler %d on handle %d\n", - this->id (), - this->get_handle ())); - - this->peer ().close (); - - // Deactivate the queue while we try to get reconnected. - this->msg_queue ()->deactivate (); - - for (this->timeout (1); - // Default is to reconnect synchronously. - this->connector_->initiate_connection (this) == -1; ) - { - ACE_Time_Value tv (this->timeout ()); - ACE_ERROR ((LM_ERROR, - "(%t) reattempting connection, sec = %d\n", tv.sec ())); - ACE_OS::sleep (tv); - } - } - return 0; -} - -#endif /* ACE_HAS_THREADS */ diff --git a/apps/Gateway/Gateway/Thr_IO_Handler.h b/apps/Gateway/Gateway/Thr_IO_Handler.h deleted file mode 100644 index ee056b35361..00000000000 --- a/apps/Gateway/Gateway/Thr_IO_Handler.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Thr_IO_Handler.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_THR_IO_HANDLER) -#define _THR_IO_HANDLER - -#include "IO_Handler.h" - -#if defined (ACE_HAS_THREADS) -class Thr_Consumer_Handler : public Consumer_Handler - // = TITLE - // Runs each Output IO_Handler in a separate thread. -{ -public: - Thr_Consumer_Handler (Consumer_Map *, - IO_Handler_Connector *, - ACE_Thread_Manager *, - int socket_queue_size); - - virtual int open (void *); - // Initialize the threaded Consumer_Handler object and spawn a new - // thread. - - virtual int handle_input (ACE_HANDLE); - // Called when Peer shutdown unexpectedly. - - virtual int put (ACE_Message_Block *, ACE_Time_Value * = 0); - // Send a message to a peer. - - virtual int svc (void); - // Transmit peer messages. -}; - -class Thr_Supplier_Handler : public Supplier_Handler - // = TITLE - // Runs each Input IO_Handler in a separate thread. -{ -public: - Thr_Supplier_Handler (Consumer_Map *, - IO_Handler_Connector *, - ACE_Thread_Manager *, - int socket_queue_size); - - virtual int open (void *); - // Initialize the object and spawn a new thread. - - virtual int svc (void); - // Transmit peer messages. -}; -#endif /* ACE_HAS_THREADS */ -#endif /* _THR_IO_HANDLER */ diff --git a/apps/Gateway/Gateway/Thr_Proxy_Handler.cpp b/apps/Gateway/Gateway/Thr_Proxy_Handler.cpp deleted file mode 100644 index f316e4e82bf..00000000000 --- a/apps/Gateway/Gateway/Thr_Proxy_Handler.cpp +++ /dev/null @@ -1,211 +0,0 @@ -// $Id$ - -#include "Event_Channel.h" -#include "Thr_Proxy_Handler.h" - -#if defined (ACE_HAS_THREADS) -Thr_Consumer_Proxy::Thr_Consumer_Proxy (ACE_Event_Channel &ec, - const ACE_INET_Addr &remote_addr, - const ACE_INET_Addr &local_addr, - ACE_INT32 conn_id) - : Consumer_Proxy (ec, remote_addr, local_addr, conn_id) -{ -} - -// This method should be called only when the Consumer shuts down -// unexpectedly. This method marks the Proxy_Handler as having failed -// and deactivates the ACE_Message_Queue (to wake up the thread -// blocked on <dequeue_head> in svc()). -// Thr_Output_Handler::handle_close () will eventually try to -// reconnect... - -int -Thr_Consumer_Proxy::handle_input (ACE_HANDLE h) -{ - // Call down to the <Consumer_Proxy> to handle this first. - this->Consumer_Proxy::handle_input (h); - - ACE_Service_Config::reactor ()->remove_handler - (h, ACE_Event_Handler::ALL_EVENTS_MASK | ACE_Event_Handler::DONT_CALL); - - // Deactivate the queue while we try to get reconnected. - this->msg_queue ()->deactivate (); - return 0; -} - -// Initialize the threaded Consumer_Proxy object and spawn a new -// thread. - -int -Thr_Consumer_Proxy::open (void *) -{ - // Turn off non-blocking I/O. - if (this->peer ().disable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enable"), -1); - - // Call back to the <Event_Channel> to complete our initialization. - else if (this->event_channel_.complete_proxy_connection (this) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "complete_proxy_connection"), -1); - - // Register ourselves to receive input events (which indicate that - // the Consumer has shut down unexpectedly). - else if (ACE_Service_Config::reactor ()->register_handler - (this, ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "register_handler"), -1); - - // Reactivate message queue. If it was active then this is the - // first time in and we need to spawn a thread, otherwise the queue - // was inactive due to some problem and we've already got a thread. - else if (this->msg_queue ()->activate () == ACE_Message_Queue<SYNCH_STRATEGY>::WAS_ACTIVE) - { - ACE_DEBUG ((LM_DEBUG, "(%t) spawning new thread\n")); - // Become an active object by spawning a new thread to transmit - // events to Consumers. - return this->activate (THR_NEW_LWP | THR_DETACHED); - } - else - { - ACE_DEBUG ((LM_DEBUG, "(%t) reusing existing thread\n")); - return 0; - } -} - -// Queue up an event for transmission (must not block since -// Supplier_Proxys may be single-threaded). - -int -Thr_Consumer_Proxy::put (ACE_Message_Block *mb, ACE_Time_Value *) -{ - // Perform non-blocking enqueue. - return this->msg_queue ()->enqueue_tail - (mb, (ACE_Time_Value *) &ACE_Time_Value::zero); -} - -// Transmit events to the peer (note simplification resulting from -// threads...) - -int -Thr_Consumer_Proxy::svc (void) -{ - - for (;;) - { - ACE_DEBUG ((LM_DEBUG, - "(%t) connected! Thr_Consumer_Proxy's handle = %d\n", - this->peer ().get_handle ())); - - // Since this method runs in its own thread it is OK to block on - // output. - - for (ACE_Message_Block *mb = 0; - this->msg_queue ()->dequeue_head (mb) != -1; - ) - { - if (this->send (mb) == -1) - ACE_ERROR ((LM_ERROR, "(%t) %p\n", "send failed")); - } - - ACE_ASSERT (errno == ESHUTDOWN); - - ACE_DEBUG ((LM_DEBUG, - "(%t) shutting down threaded Consumer_Proxy %d on handle %d\n", - this->id (), this->get_handle ())); - - this->peer ().close (); - - for (this->timeout (1); - // Default is to reconnect synchronously. - this->event_channel_.initiate_proxy_connection (this) == -1; ) - { - ACE_Time_Value tv (this->timeout ()); - - ACE_ERROR ((LM_ERROR, - "(%t) reattempting connection, sec = %d\n", - tv.sec ())); - - ACE_OS::sleep (tv); - } - } - - return 0; -} - -Thr_Supplier_Proxy::Thr_Supplier_Proxy (ACE_Event_Channel &ec, - const ACE_INET_Addr &remote_addr, - const ACE_INET_Addr &local_addr, - ACE_INT32 conn_id) - : Supplier_Proxy (ec, remote_addr, local_addr, conn_id) -{ -} - -int -Thr_Supplier_Proxy::open (void *) -{ - // Turn off non-blocking I/O. - if (this->peer ().disable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "enable"), -1); - - // Call back to the <Event_Channel> to complete our initialization. - else if (this->event_channel_.complete_proxy_connection (this) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "complete_proxy_connection"), -1); - - // Reactivate message queue. If it was active then this is the - // first time in and we need to spawn a thread, otherwise the queue - // was inactive due to some problem and we've already got a thread. - else if (this->msg_queue ()->activate () == ACE_Message_Queue<SYNCH_STRATEGY>::WAS_ACTIVE) - { - ACE_DEBUG ((LM_DEBUG, "(%t) spawning new thread\n")); - // Become an active object by spawning a new thread to transmit - // events to peers. - return this->activate (THR_NEW_LWP | THR_DETACHED); - } - else - { - ACE_DEBUG ((LM_DEBUG, "(%t) reusing existing thread\n")); - return 0; - } -} - -// Receive events from a Peer in a separate thread (note reuse of -// existing code!). - -int -Thr_Supplier_Proxy::svc (void) -{ - for (;;) - { - ACE_DEBUG ((LM_DEBUG, - "(%t) connected! Thr_Supplier_Proxy's handle = %d\n", - this->peer ().get_handle ())); - - // Since this method runs in its own thread and processes events - // for one connection it is OK to call down to the - // <Supplier_Proxy::handle_input> method, which blocks on input. - - while (this->handle_input () != -1) - continue; - - ACE_DEBUG ((LM_DEBUG, - "(%t) shutting down threaded Supplier_Proxy %d on handle %d\n", - this->id (), this->get_handle ())); - - this->peer ().close (); - - // Deactivate the queue while we try to get reconnected. - this->msg_queue ()->deactivate (); - - for (this->timeout (1); - // Default is to reconnect synchronously. - this->event_channel_.initiate_proxy_connection (this) == -1; ) - { - ACE_Time_Value tv (this->timeout ()); - ACE_ERROR ((LM_ERROR, - "(%t) reattempting connection, sec = %d\n", - tv.sec ())); - ACE_OS::sleep (tv); - } - } - return 0; -} - -#endif /* ACE_HAS_THREADS */ diff --git a/apps/Gateway/Gateway/Thr_Proxy_Handler.h b/apps/Gateway/Gateway/Thr_Proxy_Handler.h deleted file mode 100644 index 275bc87b320..00000000000 --- a/apps/Gateway/Gateway/Thr_Proxy_Handler.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Thr_Proxy_Handler.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (_THR_IO_HANDLER) -#define _THR_IO_HANDLER - -#include "Proxy_Handler.h" - -#if defined (ACE_HAS_THREADS) -class Thr_Consumer_Proxy : public Consumer_Proxy - // = TITLE - // Runs each Output Proxy_Handler in a separate thread. -{ -public: - Thr_Consumer_Proxy (ACE_Event_Channel &, - const ACE_INET_Addr &remote_addr, - const ACE_INET_Addr &local_addr, - ACE_INT32 conn_id); - - virtual int open (void *); - // Initialize the threaded Consumer_Proxy object and spawn a new - // thread. - - virtual int put (ACE_Message_Block *, ACE_Time_Value * = 0); - // Send a message to a peer. - -protected: - virtual int handle_input (ACE_HANDLE); - // Called when Peer shutdown unexpectedly. - - virtual int svc (void); - // Transmit peer messages. -}; - -class Thr_Supplier_Proxy : public Supplier_Proxy - // = TITLE - // Runs each Input Proxy_Handler in a separate thread. -{ -public: - Thr_Supplier_Proxy (ACE_Event_Channel &, - const ACE_INET_Addr &remote_addr, - const ACE_INET_Addr &local_addr, - ACE_INT32 conn_id); - - virtual int open (void *); - // Initialize the object and spawn a new thread. - -protected: - virtual int svc (void); - // Transmit peer messages. -}; -#endif /* ACE_HAS_THREADS */ -#endif /* _THR_IO_HANDLER */ diff --git a/apps/Gateway/Gateway/cc_config b/apps/Gateway/Gateway/cc_config deleted file mode 100644 index 96f9ebdedd7..00000000000 --- a/apps/Gateway/Gateway/cc_config +++ /dev/null @@ -1,10 +0,0 @@ -# Conn ID Hostname Remote Port Direction Max Retry Delay Local Port -# ------- -------- ---- --------- --------------- ---------- - 1 tango.cs 10004 I 32 20000 -# 2 tango.cs 10004 O 32 - 3 merengue.cs 10004 O 32 20001 -# 4 mambo.cs 10004 O 32 20000 -# 5 lambada.cs 10004 O 32 20000 -# 6 tango.cs 10004 O 32 20000 -# 7 tango.cs 5001 I 32 -# 8 tango.cs 5002 O 32 diff --git a/apps/Gateway/Gateway/connection_config b/apps/Gateway/Gateway/connection_config deleted file mode 100644 index 205b43d5bc3..00000000000 --- a/apps/Gateway/Gateway/connection_config +++ /dev/null @@ -1,52 +0,0 @@ -# Configuration file that the gatewayd process uses to determine -# connection information about proxies. -# -# The following provides an explanation for the fields in this file, -# and how they relate to fields in the corresponding "consumer_config" -# file. -# -# 1. Connection ID -- Each Connection Handler is given a unique ID -# that is used in the "consumer_config" file to specify to which -# Consumers the Event Channel will forward incoming events from -# Suppliers using that connection. The Connection ID field is the -# "key" that is used to match up connections in this file with the -# Consumer subscription requests in the "consumer_config" file. -# -# 2. Host -- The host name where the Supplier/Consumer peerd -# process is running. -# -# 3. Remote Port -- The port number where the remote -# Supplier/Consumer peerd process is listening on. -# If this is a '*' character it is an indication to the -# Gateway to use the "default value," e.g., which can be provided -# on the command-line, etc. -# -# 4. Handler Role -- i.e., Consumer ('C') or Supplier ('S') -# -# 5. Max Retry Timeout -- The maximum amount of time that we'll -# wait between retry attempts (these start at 1 second and -# double until they reach the Max Retry Timeout). -# If this is a '*' character it is an indication to the -# Gateway to use the "default value," e.g., which can be provided -# on the command-line, etc. -# -# 6. Local Port -- The port number that we want to use for -# our local Proxy connection. If this is the value 0 or the '*' -# character, then we'll let the socket implementation pick this -# value for us. -# -# 7. Priority -- Each Consumer/Supplier can be given a priority -# that will determine its importance relative to other -# Consumers/Suppliers (this feature isn't implemented yet). -# -# Connection Host Remote Handler Max Retry Local Priority -# ID Port Role Timeout Port -# ---------- -------- ------ ------ ---------- ----- -------- - 1 lindy * S * * 1 - 2 polka * C * * 1 -# 3 mambo.cs * C * * 1 -# 4 lambada.cs * C * * 1 -# 5 lambada.cs * C * * 1 -# 6 tango.cs * C * * 1 -# 7 tango.cs * S * * 1 -# 8 tango.cs * C * * 1 diff --git a/apps/Gateway/Gateway/consumer_config b/apps/Gateway/Gateway/consumer_config deleted file mode 100644 index 1aaa3fc4028..00000000000 --- a/apps/Gateway/Gateway/consumer_config +++ /dev/null @@ -1,35 +0,0 @@ -# Configuration file that the gatewayd process uses to determine which -# Consumers will receive events from which Suppliers. For now, the -# Gateway only allows Consumers to "subscribe" to receive events from -# particular Suppliers. A more flexible implementation will allow -# Consumers to subscribe to particular types of events, as well. -# -# The following provides an explanation for the fields in this file, -# and how they relate to fields in the corresponding "connection_config" -# file. -# -# 1. Connection ID -- Each Connection Handler is given a unique ID -# that is used in the "consumer_config" file to specify to which -# Consumers the Event Channel will forward incoming events from -# Suppliers. The Connection ID field is the "key" that is used to -# match up Consumer subscription requests in this file with -# connections in the "connection_config" file. -# -# 2. Event Type -- Indicates the type of the event. Consumers -# can use this to only subscribe to certain types of events. -# This feature is currently not implemented. -# -# 3. Consumers -- Indicates which Consumers will receive events sent -# from this Proxy/Supplier ID, i.e., Consumers can subscribe to -# receive events from particular Suppliers. Note that more than -# one Consumer can subscribe to the same Supplier event, i.e., -# we support logical "multicast" (which is currently implemented -# using multi-point unicast via TCP/IP). -# -# Connection Event Consumers -# ID Type -# ---------- ---- --------- - 1 0 2 -# 2 0 3,4 -# 3 0 4 -# 4 0 5 diff --git a/apps/Gateway/Gateway/gatewayd.cpp b/apps/Gateway/Gateway/gatewayd.cpp deleted file mode 100644 index 98552b905c8..00000000000 --- a/apps/Gateway/Gateway/gatewayd.cpp +++ /dev/null @@ -1,61 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// peerd.h -// -// = DESCRIPTION -// Driver for the gateway daemon (gatewayd). Note that this is -// completely generic code due to the Service Configurator -// framework! -// -// = AUTHOR -// Douglas C. Schmidt -// -// ============================================================================ - -#include "ace/Service_Config.h" -#include "Gateway.h" - -int -main (int argc, char *argv[]) -{ - if (ACE_Service_Config::open (argc, argv) == -1) - { - if (errno != ENOENT) - ACE_ERROR ((LM_ERROR, - "%p\n%a", - "open", - 1)); - else // Use static linking. - { - ACE_Service_Object_Ptr sp = ACE_SVC_INVOKE (Gateway); - - if (sp->init (argc - 1, argv + 1) == -1) - ACE_ERROR ((LM_ERROR, - "%p\n%a", - "init", - 1)); - - // Run forever, performing the configured services until we - // are shut down by a SIGINT/SIGQUIT signal. - - ACE_Reactor::run_event_loop (); - - // Destructor of <ACE_Service_Object_Ptr> automagically call - // <fini>. - } - } - else // Use dynamic linking. - - // Run forever, performing the configured services until we are - // shut down by a signal (e.g., SIGINT or SIGQUIT). - - ACE_Reactor::run_event_loop (); - - return 0; -} diff --git a/apps/Gateway/Gateway/gatewayd.dsp b/apps/Gateway/Gateway/gatewayd.dsp deleted file mode 100644 index 609c1901758..00000000000 --- a/apps/Gateway/Gateway/gatewayd.dsp +++ /dev/null @@ -1,57 +0,0 @@ -# Microsoft Developer Studio Project File - Name="gatewayd" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=gatewayd - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "gatewayd.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "gatewayd.mak" CFG="gatewayd - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "gatewayd - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-# 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 Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\\" /D "_CONSOLE" /D "_MBCS" /D "WIN32" /D "_DEBUG" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-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 /pdbtype:sept
-# ADD LINK32 Gateway.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace"
-# Begin Target
-
-# Name "gatewayd - Win32 Debug"
-# Begin Source File
-
-SOURCE=.\gatewayd.cpp
-# End Source File
-# End Target
-# End Project
diff --git a/apps/Gateway/Gateway/rt_config b/apps/Gateway/Gateway/rt_config deleted file mode 100644 index e951a0f09be..00000000000 --- a/apps/Gateway/Gateway/rt_config +++ /dev/null @@ -1,7 +0,0 @@ -# Conn ID Logical ID Payload Destinations -# ------- ---------- ------- ------------ -# 1 1 0 3,4,5 - 1 1 0 3 - 3 1 0 3 -# 4 1 0 4 -# 5 1 0 5 diff --git a/apps/Gateway/Gateway/svc.conf b/apps/Gateway/Gateway/svc.conf deleted file mode 100644 index 8eff73af0dc..00000000000 --- a/apps/Gateway/Gateway/svc.conf +++ /dev/null @@ -1,3 +0,0 @@ -#static Svc_Manager "-d -p 2913" -dynamic Gateway Service_Object * ./Gateway:_make_Gateway() active "-b -d -c C|S -P connection_config -C consumer_config" - diff --git a/apps/Gateway/Makefile b/apps/Gateway/Makefile deleted file mode 100644 index 03277e1fdd0..00000000000 --- a/apps/Gateway/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the Gateway application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -INFO = README - -DIRS = Gateway \ - Peer - - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU - diff --git a/apps/Gateway/Peer/Event.h b/apps/Gateway/Peer/Event.h deleted file mode 100644 index 5e288edf910..00000000000 --- a/apps/Gateway/Peer/Event.h +++ /dev/null @@ -1,125 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// Event.h -// -// = AUTHOR -// Doug Schmidt -// -// ============================================================================ - -#if !defined (EVENT) -#define EVENT - -#include "ace/OS.h" - -// This is the unique connection identifier that denotes a particular -// Proxy_Handler in the Gateway. -typedef ACE_INT32 ACE_INT32; - -class Event_Key - // = TITLE - // Address used to identify the source/destination of an event. - // - // = DESCRIPTION - // This is really a "virtual forwarding address" thatis used to - // decouple the filtering and forwarding logic of the Event - // Channel from the format of the data. -{ -public: - Event_Key (ACE_INT32 cid = -1, - u_char sid = 0, - u_char type = 0) - : conn_id_ (cid), - supplier_id_ (sid), - type_ (type) {} - - int operator== (const Event_Key &event_addr) const - { - return this->conn_id_ == event_addr.conn_id_ - && this->supplier_id_ == event_addr.supplier_id_ - && this->type_ == event_addr.type_; - } - - ACE_INT32 conn_id_; - // Unique connection identifier that denotes a particular - // Proxy_Handler. - - ACE_INT32 supplier_id_; - // Logical ID. - - ACE_INT32 type_; - // Event type. -}; - -class Event_Header - // = TITLE - // Fixed sized header. - // - // = DESCRIPTION - // This is designed to have a sizeof (16) to avoid alignment - // problems on most platforms. -{ -public: - typedef ACE_INT32 SUPPLIER_ID; - // Type used to forward events from gatewayd. - - enum - { - INVALID_ID = -1 // No peer can validly use this number. - }; - - void decode (void) - { - this->len_ = ntohl (this->len_); - this->supplier_id_ = ntohl (this->supplier_id_); - this->type_ = ntohl (this->type_); - this->priority_ = ntohl (this->priority_); - } - // Decode from network byte order to host byte order. - - void encode (void) - { - this->len_ = htonl (this->len_); - this->supplier_id_ = htonl (this->supplier_id_); - this->type_ = htonl (this->type_); - this->priority_ = htonl (this->priority_); - } - // Encode from host byte order to network byte order. - - size_t len_; - // Length of the data_ payload, in bytes. - - SUPPLIER_ID supplier_id_; - // Source ID. - - ACE_INT32 type_; - // Event type. - - ACE_INT32 priority_; - // Event priority. -}; - -class Event - // = TITLE - // Variable-sized event (data_ may be variable-sized between - // 0 and MAX_PAYLOAD_SIZE). -{ -public: - enum { MAX_PAYLOAD_SIZE = 1024 }; - // The maximum size of an Event. - - Event_Header header_; - // Event header. - - char data_[MAX_PAYLOAD_SIZE]; - // Event data. -}; - -#endif /* EVENT */ diff --git a/apps/Gateway/Peer/Gateway_Handler.cpp b/apps/Gateway/Peer/Gateway_Handler.cpp deleted file mode 100644 index cfc9a7dad6f..00000000000 --- a/apps/Gateway/Peer/Gateway_Handler.cpp +++ /dev/null @@ -1,652 +0,0 @@ -#include "ace/Get_Opt.h" -// $Id$ - - -#include "Gateway_Handler.h" - -Gateway_Handler::Gateway_Handler (ACE_Thread_Manager *) - : routing_id_ (0), - msg_frag_ (0), - total_bytes_ (0) -{ - this->msg_queue ()->high_water_mark (Gateway_Handler::QUEUE_SIZE); -} - -int -Gateway_Handler::handle_signal (int signum, siginfo_t *, ucontext_t *) -{ - ACE_DEBUG ((LM_DEBUG, "(%t) %S\n", signum)); - - // Shut down the main event loop. - ACE_Service_Config::end_reactor_event_loop (); - return 0; -} - -// Cache a binding to the HANDLER_MAP. - -void -Gateway_Handler::map (HANDLER_MAP *m) -{ - this->map_ = m; -} - -// Upcall from the ACE_Acceptor::handle_input() that turns control -// over to our application-specific Gateway handler. - -int -Gateway_Handler::open (void *a) -{ - ACE_DEBUG ((LM_DEBUG, "Gateway handler's fd = %d\n", - this->peer ().get_handle ())); - - // Call down to the base class to activate and register this - // handler. - if (this->inherited::open (a) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "open"), -1); - - if (this->peer ().enable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "enable"), -1); - - Gateway_Handler *this_ = this; - - // Add ourselves to the map so we can be removed later on. - if (this->map_->bind (this->get_handle (), this_) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "bind"), -1); - - char *to = ACE_OS::getenv ("TIMEOUT"); - int timeout = to == 0 ? 100000 : ACE_OS::atoi (to); - - // Schedule the time between disconnects. This should really be a - // "tunable" parameter. - if (ACE_Service_Config::reactor ()->schedule_timer (this, 0, timeout) == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "schedule_timer")); - - // If there are messages left in the queue, make sure we - // enable the ACE_Reactor appropriately to get them sent out. - if (this->msg_queue ()->is_empty () == 0 - && ACE_Service_Config::reactor ()->schedule_wakeup (this, - ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "schedule_wakeup"), -1); - - // First action is to wait to be notified of our routing id. - this->do_action_ = &Gateway_Handler::await_route_id; - return 0; -} - -// Read messages from stdin and send them to the gatewayd. - -int -Gateway_Handler::xmit_stdin (void) -{ - if (this->routing_id_ != -1) - { - ssize_t n; - ACE_Message_Block *mb; - - ACE_NEW_RETURN (mb, - ACE_Message_Block (sizeof (Event)), - -1); - - Event *peer_msg = (Event *) mb->rd_ptr (); - peer_msg->header_.routing_id_ = this->routing_id_; - - n = ACE_OS::read (ACE_STDIN, peer_msg->buf_, sizeof peer_msg->buf_); - - switch (n) - { - case 0: - ACE_DEBUG ((LM_DEBUG, "stdin closing down\n")); - - // Take stdin out of the ACE_Reactor so we stop trying to - // send messages. - if (ACE_Service_Config::reactor ()->remove_handler - (0, ACE_Event_Handler::DONT_CALL | ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "remove_handler")); - delete mb; - break; - case -1: - delete mb; - ACE_ERROR ((LM_ERROR, "%p\n", "read")); - break; - default: - peer_msg->header_.len_ = htonl (n); - mb->wr_ptr (sizeof (Peer_Header) + n); - - if (this->put (mb) == -1) - { - if (errno == EWOULDBLOCK) // The queue has filled up! - ACE_ERROR ((LM_ERROR, "%p\n", - "gateway is flow controlled, so we're dropping messages")); - else - ACE_ERROR ((LM_ERROR, "%p\n", "transmission failure in xmit_stdin")); - - // Caller is responsible for freeing a ACE_Message_Block - // if failures occur. - delete mb; - } - } - } - return 0; -} - -// Perform a non-blocking put() of message MB. If we are unable to -// send the entire message the remainder is re-Taskd at the *front* of -// the Message_List. - -int -Gateway_Handler::nonblk_put (ACE_Message_Block *mb) -{ - // Try to send the message. If we don't send it all (e.g., due to - // flow control), then re-ACE_Task the remainder at the head of the - // Message_List and ask the ACE_Reactor to inform us (via - // handle_output()) when it is possible to try again. - - ssize_t n; - - if ((n = this->send_peer (mb)) == -1) - return -1; - else if (errno == EWOULDBLOCK) // Didn't manage to send everything. - { - ACE_DEBUG ((LM_DEBUG, - "queueing activated on handle %d to routing id %d\n", - this->get_handle (), this->routing_id_)); - - // ACE_Queue in *front* of the list to preserve order. - if (this->msg_queue ()->enqueue_head - (mb, (ACE_Time_Value *) &ACE_Time_Value::zero) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "enqueue_head"), -1); - - // Tell ACE_Reactor to call us back when we can send again. - if (ACE_Service_Config::reactor ()->schedule_wakeup - (this, ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "schedule_wakeup"), -1); - return 0; - } - else - return n; -} - -// Finish sending a message when flow control conditions abate. This -// method is automatically called by the ACE_Reactor. - -int -Gateway_Handler::handle_output (ACE_HANDLE) -{ - ACE_Message_Block *mb = 0; - - ACE_DEBUG ((LM_DEBUG, "in handle_output\n")); - // The list had better not be empty, otherwise there's a bug! - - if (this->msg_queue ()->dequeue_head - (mb, (ACE_Time_Value *) &ACE_Time_Value::zero) != -1) - { - switch (this->nonblk_put (mb)) - { - case 0: // Partial send. - ACE_ASSERT (errno == EWOULDBLOCK); - // Didn't write everything this time, come back later... - break; - - case -1: - // Caller is responsible for freeing a ACE_Message_Block if - // failures occur. - delete mb; - ACE_ERROR ((LM_ERROR, "%p\n", - "transmission failure in handle_output")); - - /* FALLTHROUGH */ - default: // Sent the whole thing. - - // If we succeed in writing the entire message (or we did - // not fail due to EWOULDBLOCK) then check if there are more - // messages on the Message_List. If there aren't, tell the - // ACE_Reactor not to notify us anymore (at least until - // there are new messages queued up). - - if (this->msg_queue ()->is_empty ()) - { - ACE_DEBUG ((LM_DEBUG, - "queue now empty on handle %d to routing id %d\n", - this->get_handle (), - this->routing_id_)); - - if (ACE_Service_Config::reactor ()->cancel_wakeup - (this, ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "cancel_wakeup")); - } - } - } - else - ACE_ERROR ((LM_ERROR, "%p\n", "dequeue_head")); - return 0; -} - -// Send a message to a peer (may ACE_Task if necessary). - -int -Gateway_Handler::put (ACE_Message_Block *mb, ACE_Time_Value *) -{ - if (this->msg_queue ()->is_empty ()) - // Try to send the message *without* blocking! - return this->nonblk_put (mb); - else - // If we have queued up messages due to flow control then just - // enqueue and return. - return this->msg_queue ()->enqueue_tail - (mb, (ACE_Time_Value *) &ACE_Time_Value::zero); -} - -// Send an Peer message to gatewayd. - -int -Gateway_Handler::send_peer (ACE_Message_Block *mb) -{ - ssize_t n; - size_t len = mb->length (); - - if ((n = this->peer ().send (mb->rd_ptr (), len)) <= 0) - return errno == EWOULDBLOCK ? 0 : n; - else if (n < (ssize_t) len) - { - // Re-adjust pointer to skip over the part we did send. - mb->rd_ptr (n); - this->total_bytes_ += n; - } - else /* if (n == length) */ - { - // The whole message is sent, we can now safely deallocate the - // buffer. Note that this should decrement a reference count... - this->total_bytes_ += n; - delete mb; - errno = 0; - } - ACE_DEBUG ((LM_DEBUG, "sent %d bytes, total bytes sent = %d\n", - n, this->total_bytes_)); - return n; -} - -// Receive an Peer message from gatewayd. Handles fragmentation. - -int -Gateway_Handler::recv_peer (ACE_Message_Block *&mb) -{ - Event *peer_msg; - size_t len; - ssize_t n; - size_t offset = 0; - - if (this->msg_frag_ == 0) - { - ACE_NEW_RETURN (this->msg_frag_, - ACE_Message_Block (sizeof (Event)), - -1); - - // No existing fragment... - if (this->msg_frag_ == 0) - ACE_ERROR_RETURN ((LM_ERROR, "out of memory\n"), -1); - - peer_msg = (Event *) this->msg_frag_->rd_ptr (); - - switch (n = this->peer ().recv (peer_msg, sizeof (Peer_Header))) - { - case sizeof (Peer_Header): - len = ntohl (peer_msg->header_.len_); - if (len <= sizeof peer_msg->buf_) - { - this->msg_frag_->wr_ptr (sizeof (Peer_Header)); - break; // The message is within the maximum size range. - } - else - ACE_ERROR ((LM_ERROR, "message too long = %d\n", len)); - /* FALLTHROUGH */ - default: - ACE_ERROR ((LM_ERROR, "invalid length = %d\n", n)); - n = -1; - /* FALLTHROUGH */ - case -1: - /* FALLTHROUGH */ - case 0: - // Make sure to free up memory on error returns. - delete this->msg_frag_; - this->msg_frag_ = 0; - return n; - } - } - else - { - offset = this->msg_frag_->length () - sizeof (Peer_Header); - len = peer_msg->header_.len_ - offset; - } - - switch (n = this->peer ().recv (peer_msg->buf_ + offset, len)) - { - case -1: - if (errno == EWOULDBLOCK) - { - // This shouldn't happen since the ACE_Reactor - // just triggered us to handle pending I/O! - ACE_DEBUG ((LM_DEBUG, "unexpected recv failure\n")); - // Since ACE_DEBUG might change errno, we need to reset it - // here. - errno = EWOULDBLOCK; - return -1; - } - else - /* FALLTHROUGH */; - - case 0: // EOF. - delete this->msg_frag_; - this->msg_frag_ = 0; - return n; - - default: - if (n != (ssize_t) len) - // Re-adjust pointer to skip over the part we've read. - { - this->msg_frag_->wr_ptr (n); - errno = EWOULDBLOCK; - // Inform caller that we didn't get the whole message. - return -1; - } - else - { - // Set the write pointer at 1 past the end of the message. - this->msg_frag_->wr_ptr (n); - - // Set the read pointer to the beginning of the message. - this->msg_frag_->rd_ptr (this->msg_frag_->base ()); - - mb = this->msg_frag_; - - // Reset the pointer to indicate we've got an entire - // message. - this->msg_frag_ = 0; - } - return n; - } -} - -// Receive various types of input (e.g., Peer message from the -// gatewayd, as well as stdio). - -int -Gateway_Handler::handle_input (ACE_HANDLE sd) -{ - ACE_DEBUG ((LM_DEBUG, "in handle_input, sd = %d\n", sd)); - if (sd == ACE_STDIN) // Handle message from stdin. - return this->xmit_stdin (); - else - // Perform the appropriate action depending on the state we are - // in. - return (this->*do_action_) (); -} - -// Action that receives the route id. - -int -Gateway_Handler::await_route_id (void) -{ - ssize_t n = this->peer ().recv (&this->routing_id_, - sizeof this->routing_id_); - - if (n != sizeof this->routing_id_) - { - if (n == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "gatewayd has closed down unexpectedly\n"), -1); - else - ACE_ERROR_RETURN ((LM_ERROR, - "%p, bytes received on handle %d = %d\n", - "recv", this->get_handle (), n), -1); - } - else - ACE_DEBUG ((LM_DEBUG, "assigned routing id %d\n", - this->routing_id_)); - - // Transition to the action that waits for Peer messages. - this->do_action_ = &Gateway_Handler::await_messages; - - // Reset standard input. - ACE_OS::rewind (stdin); - - // Register this handler to receive test messages on stdin. - if (ACE_Service_Config::reactor ()->register_handler - (ACE_STDIN, this, ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "register_handler"), -1); - return 0; -} - -// Action that receives messages. - -int -Gateway_Handler::await_messages (void) -{ - ACE_Message_Block *mb = 0; - ssize_t n = this->recv_peer (mb); - - switch (n) - { - case 0: - ACE_ERROR_RETURN ((LM_ERROR, "gatewayd has closed down\n"), -1); - /* NOTREACHED */ - case -1: - if (errno == EWOULDBLOCK) - // A short-read, we'll come back and finish it up later on! - return 0; - else - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "recv_peer"), -1); - /* NOTREACHED */ - default: - { - // We got a valid message, so let's process it now! At the - // moment, we just print out the message contents... - - Event *peer_msg = (Event *) mb->rd_ptr (); - this->total_bytes_ += mb->length (); - -#if defined (VERBOSE) - ACE_DEBUG ((LM_DEBUG, - "route id = %d, len = %d, payload = %*s", - peer_msg->header_.routing_id_, peer_msg->header_.len_, - peer_msg->header_.len_, peer_msg->buf_)); -#else - ACE_DEBUG ((LM_DEBUG, - "route id = %d, cur len = %d, total len = %d\n", - peer_msg->header_.routing_id_, - peer_msg->header_.len_, - this->total_bytes_)); -#endif - delete mb; - return 0; - } - } -} - -// Periodically send messages via ACE_Reactor timer mechanism. - -int -Gateway_Handler::handle_timeout (const ACE_Time_Value &, const void *) -{ - // Skip over deactivated descriptors. - if (this->get_handle () != -1) - { - // Unbind ourselves from the map. - if (this->map_->unbind (this->get_handle ()) == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "unbind")); - - // Shut down the handler. - this->handle_close (); - } - return 0; -} - -// Handle shutdown of the Gateway_Handler object. - -int -Gateway_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) -{ - if (this->get_handle () != ACE_INVALID_HANDLE) - { - ACE_DEBUG ((LM_DEBUG, "shutting down Gateway_Handler on handle %d\n", - this->get_handle ())); - - // Explicitly remove ourselves for handle 0 (the ACE_Reactor - // removes this->handle (), note that - // ACE_Event_Handler::DONT_CALL instructs the ACE_Reactor *not* - // to call this->handle_close(), which would otherwise lead to - // recursion!). - if (ACE_Service_Config::reactor ()->remove_handler - (0, ACE_Event_Handler::DONT_CALL | ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR ((LM_ERROR, "handle = %d: %p\n", - 0, "remove_handler")); - - // Deregister this handler with the ACE_Reactor. - if (ACE_Service_Config::reactor ()->remove_handler - (this, ACE_Event_Handler::DONT_CALL | ACE_Event_Handler::RWE_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "handle = %d: %p\n", - this->get_handle (), "remove_handler"), -1); - - // Close down the peer. - this->peer ().close (); - } - return 0; -} - -Gateway_Acceptor::Gateway_Acceptor (Gateway_Handler *handler) - : gateway_handler_ (handler) -{ - this->gateway_handler_->map (&this->map_); -} - -// Note how this method just passes back the pre-allocated -// Gateway_Handler instead of having the ACE_Acceptor allocate a new -// one each time! - -Gateway_Handler * -Gateway_Acceptor::make_svc_handler (void) -{ - return this->gateway_handler_; -} - -int -Gateway_Acceptor::handle_signal (int signum, siginfo_t *, ucontext_t *) -{ - ACE_DEBUG ((LM_DEBUG, "signal %S occurred\n", signum)); - return 0; -} - -/* Returns information on the currently active service. */ - -int -Gateway_Acceptor::info (char **strp, size_t length) const -{ - char buf[BUFSIZ]; - char addr_str[BUFSIZ]; - - ACE_INET_Addr addr; - - if (this->acceptor ().get_local_addr (addr) == -1) - return -1; - else if (addr.addr_to_string (addr_str, sizeof addr) == -1) - return -1; - - ACE_OS::sprintf (buf, "%s\t %s/%s %s", - "Gateway peer daemon", addr_str, "tcp", - "# IRIDIUM SRP traffic generator and data sink\n"); - - if (*strp == 0 && (*strp = ACE_OS::strdup (buf)) == 0) - return -1; - else - ACE_OS::strncpy (*strp, buf, length); - return ACE_OS::strlen (buf); -} - -// Hook called by the explicit dynamic linking facility to terminate -// the peer. - -int -Gateway_Acceptor::fini (void) -{ - HANDLER_ITERATOR mi (this->map_); - - for (MAP_ENTRY *me = 0; - mi.next (me) != 0; - mi.advance ()) - { - if (me->int_id_->get_handle () != -1) - { - ACE_DEBUG ((LM_DEBUG, "closing down handle %d\n", - me->int_id_->get_handle ())); - me->int_id_->handle_close (); - } - else - ACE_DEBUG ((LM_DEBUG, "already closed %d\n")); - me->int_id_->destroy (); // Will trigger a delete. - } - - this->gateway_handler_->destroy (); // Will trigger a delete. - return inherited::fini (); -} - -// Hook called by the explicit dynamic linking facility to initialize -// the peer. - -int -Gateway_Acceptor::init (int argc, char *argv[]) -{ - ACE_Get_Opt get_opt (argc, argv, "dp:", 0); - ACE_INET_Addr addr; - - for (int c; (c = get_opt ()) != -1; ) - { - switch (c) - { - case 'p': - addr.set (ACE_OS::atoi (get_opt.optarg)); - break; - case 'd': - break; - default: - break; - } - } - - if (ACE_Service_Config::reactor ()->register_handler (SIGPIPE, this) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "register_handler"), -1); - - if (this->open (addr) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "open"), -1); - else if (ACE_Service_Config::reactor ()->register_handler - (this, ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "registering service with ACE_Reactor\n"), -1); - - ACE_Sig_Set sig_set; - sig_set.sig_add (SIGINT); - sig_set.sig_add (SIGQUIT); - - // Register ourselves to receive SIGINT and SIGQUIT so we can shut - // down gracefully via signals. - - if (ACE_Service_Config::reactor ()->register_handler (sig_set, - this) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "register_handler"), -1); - return 0; -} - -// Dynamically linked factory function that dynamically allocates a -// new Gateway_Acceptor object. - -ACE_Service_Object * -_alloc_peerd (void) -{ - // This function illustrates how we can associate a ACE_Svc_Handler - // with the ACE_Acceptor at initialization time. - Gateway_Handler *handler; - - ACE_NEW_RETURN (handler, Gateway_Handler, 0); - ACE_Service_Object *temp; - - ACE_NEW_RETURN (temp, Gateway_Acceptor (handler), 0); - return temp; -} diff --git a/apps/Gateway/Peer/Gateway_Handler.h b/apps/Gateway/Peer/Gateway_Handler.h deleted file mode 100644 index 6dc4539e6b7..00000000000 --- a/apps/Gateway/Peer/Gateway_Handler.h +++ /dev/null @@ -1,154 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -/* These Gateway handler classes process Peer messages sent from the - communication gateway daemon (gatewayd) to its various peers, e.g., - CF and ETS, (represented collectively in this prototype as peerd). - . These classes works as follows: - - 1. Gateway_Acceptor creates a listener endpoint and waits passively - for gatewayd to connect with it. - - 2. When gatewayd connects, Gateway_Acceptor creates an - Gateway_Handler object that sends/receives messages from - gatewayd. - - 3. Gateway_Handler waits for gatewayd to inform it of its routing - ID, which is prepended to all outgoing messages send from peerd. - - 4. Once the routing ID is set, peerd periodically sends messages to - gatewayd. Peerd also receives and "processes" messages - forwarded to it from gatewayd. In this program, peerd - "processes" messages by writing them to stdout. */ - -#if !defined (GATEWAY_HANDLER) -#define GATEWAY_HANDLER - -#include "ace/Service_Config.h" -#include "ace/Svc_Handler.h" -#include "ace/Acceptor.h" -#include "ace/SOCK_Stream.h" -#include "ace/SOCK_Acceptor.h" -#include "ace/INET_Addr.h" -#include "ace/Map_Manager.h" -#include "Peer_Message.h" - -// Forward declaration. -class Gateway_Handler; - -// Maps a ACE_HANDLE onto a Gateway_Handler *. -typedef ACE_Map_Manager <ACE_HANDLE, Gateway_Handler *, ACE_Null_Mutex> HANDLER_MAP; -typedef ACE_Map_Iterator<ACE_HANDLE, Gateway_Handler *, ACE_Null_Mutex> HANDLER_ITERATOR; -typedef ACE_Map_Entry <ACE_HANDLE, Gateway_Handler *> MAP_ENTRY; - -// Handle Peer messages arriving as events. - -class Gateway_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> -{ -public: - Gateway_Handler (ACE_Thread_Manager * = 0); - - virtual int open (void * = 0); - // Initialize the handler (called by ACE_Acceptor::handle_input()) - - virtual int handle_input (ACE_HANDLE); - // Receive and process peer messages. - - virtual int put (ACE_Message_Block *, ACE_Time_Value *tv = 0); - // Send a message to a gateway (may be queued if necessary). - - virtual int handle_output (ACE_HANDLE); - // Finish sending a message when flow control conditions abate. - - virtual int handle_timeout (const ACE_Time_Value &, - const void *arg); - // Periodically send messages via ACE_Reactor timer mechanism. - - virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE, - ACE_Reactor_Mask = ACE_Event_Handler::RWE_MASK); - // Perform object termination. - - void map (HANDLER_MAP *); - // Cache a binding to the HANDLER_MAP. - -protected: - typedef ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> inherited; - - // We'll allow up to 16 megabytes to be queued per-output - // channel!!!! This is clearly a policy in search of refinement... - enum { QUEUE_SIZE = 1024 * 1024 * 16 }; - - int handle_signal (int signum, siginfo_t *, ucontext_t *); - - Peer_Header::ROUTING_ID routing_id_; - // Routing ID of the peer (obtained from gatewayd). - - virtual int nonblk_put (ACE_Message_Block *mb); - // Perform a non-blocking put(). - - virtual int recv_peer (ACE_Message_Block *&); - // Receive an Peer message from gatewayd. - - virtual int send_peer (ACE_Message_Block *); - // Send an Peer message to gatewayd. - - int xmit_stdin (void); - // Receive a message from stdin and send it to the gateway. - - int (Gateway_Handler::*do_action_) (void); - // Pointer-to-member-function for the current action to run in this state. - - int await_route_id (void); - // Action that receives the route id. - - int await_messages (void); - // Action that receives messages. - - ACE_Message_Block *msg_frag_; - // Keep track of message fragment to handle non-blocking recv's from gateway. - - size_t total_bytes_; - // The total number of bytes sent/received to the gateway. - - HANDLER_MAP *map_; - // Maps the ACE_HANDLE onto the Gateway_Handler *. -}; - -// A factory class that accept connections from gatewayd and -// dynamically creates a new Gateway_Handler object to do the dirty work. - -class Gateway_Acceptor : public ACE_Acceptor<Gateway_Handler, ACE_SOCK_ACCEPTOR> -{ -public: - // = Initialization methods, called when dynamically linked. - Gateway_Acceptor (Gateway_Handler *handler); - virtual int init (int argc, char *argv[]); - // Initialize the acceptor. - - virtual int info (char **, size_t) const; - // Return info about this service. - - virtual int fini (void); - // Perform termination. - - virtual Gateway_Handler *make_svc_handler (void); - // Factory method that creates the Gateway_Handler once. - - virtual int handle_signal (int signum, siginfo_t *, ucontext_t *); - // Handle various signals (e.g., SIGPIPE) - - HANDLER_MAP map_; - // Maps the ACE_HANDLE onto the Gateway_Handler *. - - Gateway_Handler *gateway_handler_; - // Pointer to memory allocated exactly once. - - typedef ACE_Acceptor<Gateway_Handler, ACE_SOCK_ACCEPTOR> inherited; -}; - -// Factory function that allocates a new Peer daemon. -extern "C" ACE_Service_Object *_alloc_peerd (void); - -#endif /* GATEWAY_HANDLER */ - diff --git a/apps/Gateway/Peer/Makefile b/apps/Gateway/Peer/Makefile deleted file mode 100644 index 301305c3cae..00000000000 --- a/apps/Gateway/Peer/Makefile +++ /dev/null @@ -1,177 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the Peer test driver portion of the Gateway application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = peerd -LIB = libPeer.a -SHLIB = libPeer.$(SOEXT) - -FILES = Options \ - Peer - -LSRC = $(addsuffix .cpp,$(FILES)) -LDLIBS = -lPeer -VLDLIBS = $(LDLIBS:%=%$(VAR)) - -BUILD = $(VLIB) $(VSHLIB) $(SHLIBA) $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -INCLDIRS += -I../Gateway - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/Options.o .shobj/Options.so: Options.cpp \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Get_Opt.i Options.h \ - ../Gateway/Event.h -.obj/Peer.o .shobj/Peer.so: Peer.cpp Peer.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/inc_user_config.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Acceptor.h \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Svc_Handler.i \ - $(ACE_ROOT)/ace/Acceptor.i \ - $(ACE_ROOT)/ace/Connector.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Connector.i \ - $(ACE_ROOT)/ace/SOCK_Acceptor.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Acceptor.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - Options.h ../Gateway/Event.h - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/apps/Gateway/Peer/Options.cpp b/apps/Gateway/Peer/Options.cpp deleted file mode 100644 index 5dfcda772f6..00000000000 --- a/apps/Gateway/Peer/Options.cpp +++ /dev/null @@ -1,175 +0,0 @@ -#include "ace/Get_Opt.h" -#include "Options.h" - -// Static initialization. -Options *Options::instance_ = 0; - -void -Options::print_usage_and_die (void) -{ - ACE_DEBUG ((LM_DEBUG, "%n [-a {C|S}:acceptor-port] [-c {C|S}:connector-port] [-h gateway-host] [-q max-queue-size] [-t timeout] [-v]\n")); -} - -Options::Options (void) - : options_ (0), - supplier_acceptor_port_ (DEFAULT_PEER_SUPPLIER_PORT), - consumer_acceptor_port_ (DEFAULT_PEER_CONSUMER_PORT), - supplier_connector_port_ (DEFAULT_GATEWAY_SUPPLIER_PORT), - consumer_connector_port_ (DEFAULT_GATEWAY_CONSUMER_PORT), - connector_host_ (ACE_DEFAULT_SERVER_HOST), - timeout_ (0), - max_queue_size_ (MAX_QUEUE_SIZE) -{ - char *timeout = ACE_OS::getenv ("TIMEOUT"); - - if (timeout == 0) - this->timeout_ = Options::DEFAULT_TIMEOUT; - else - this->timeout_ = ACE_OS::atoi (timeout); -} - -Options * -Options::instance (void) -{ - if (Options::instance_ == 0) - ACE_NEW_RETURN (Options::instance_, Options, 0); - - return Options::instance_; -} - -long -Options::timeout (void) const -{ - return this->timeout_; -} - -long -Options::max_queue_size (void) const -{ - return this->max_queue_size_; -} - -u_short -Options::consumer_acceptor_port (void) const -{ - return this->consumer_acceptor_port_; -} - -u_short -Options::supplier_acceptor_port (void) const -{ - return this->supplier_acceptor_port_; -} - -u_short -Options::consumer_connector_port (void) const -{ - return this->consumer_connector_port_; -} - -u_short -Options::supplier_connector_port (void) const -{ - return this->supplier_connector_port_; -} - -const char * -Options::connector_host (void) const -{ - return this->connector_host_; -} - -int -Options::enabled (int option) const -{ - return ACE_BIT_ENABLED (this->options_, option); -} - -void -Options::parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opt (argc, argv, "a:c:h:m:t:v", 0); - - for (int c; (c = get_opt ()) != -1; ) - { - switch (c) - { - case 'a': - { - // Become an Acceptor. - - for (char *flag = ACE_OS::strtok (get_opt.optarg, "|"); - flag != 0; - flag = ACE_OS::strtok (0, "|")) - if (ACE_OS::strncasecmp (flag, "C", 1) == 0) - { - ACE_SET_BITS (this->options_, - Options::CONSUMER_ACCEPTOR); - if (ACE_OS::strlen (flag) > 1) - // Set the Consumer Acceptor port number. - this->consumer_acceptor_port_ = ACE_OS::atoi (flag + 2); - } - else if (ACE_OS::strncasecmp (flag, "S", 1) == 0) - { - ACE_SET_BITS (this->options_, - Options::SUPPLIER_ACCEPTOR); - if (ACE_OS::strlen (flag) > 1) - // Set the Supplier Acceptor port number. - this->supplier_acceptor_port_ = ACE_OS::atoi (flag + 2); - } - } - break; - /* NOTREACHED */ - case 'c': - { - // Become a Connector. - - for (char *flag = ACE_OS::strtok (get_opt.optarg, "|"); - flag != 0; - flag = ACE_OS::strtok (0, "|")) - if (ACE_OS::strncasecmp (flag, "C", 1) == 0) - { - ACE_SET_BITS (this->options_, - Options::CONSUMER_CONNECTOR); - if (ACE_OS::strlen (flag) > 1) - // Set the Consumer Connector port number. - this->consumer_connector_port_ = ACE_OS::atoi (flag + 2); - } - else if (ACE_OS::strncasecmp (flag, "S", 1) == 0) - { - ACE_SET_BITS (this->options_, - Options::SUPPLIER_CONNECTOR); - if (ACE_OS::strlen (flag) > 1) - // Set the Supplier Connector port number. - this->supplier_connector_port_ = ACE_OS::atoi (flag + 2); - } - } - break; - /* NOTREACHED */ - case 'h': - // connector host - this->connector_host_ = get_opt.optarg; - break; - /* NOTREACHED */ - case 'm': - // max queue size. - this->max_queue_size_ = ACE_OS::atoi (get_opt.optarg); - break; - /* NOTREACHED */ - case 't': - // Timeout - this->timeout_ = ACE_OS::atoi (get_opt.optarg); - break; - /* NOTREACHED */ - case 'v': - // Verbose mode. - ACE_SET_BITS (this->options_, Options::VERBOSE); - break; - /* NOTREACHED */ - default: - this->print_usage_and_die (); - /* NOTREACHED */ - } - } -} - diff --git a/apps/Gateway/Peer/Options.h b/apps/Gateway/Peer/Options.h deleted file mode 100644 index 55872a43d0b..00000000000 --- a/apps/Gateway/Peer/Options.h +++ /dev/null @@ -1,127 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Options.h -// -// = AUTHOR -// Douglas C. Schmidt -// -// ============================================================================ - -#if !defined (OPTIONS_H) -#define OPTIONS_H - -#include "Event.h" - -class ACE_Svc_Export Options - // = TITLE - // Singleton that consolidates all Options for a peerd. -{ -public: - // = Options that can be enabled/disabled. - enum - { - VERBOSE = 01, - SUPPLIER_ACCEPTOR = 02, - CONSUMER_ACCEPTOR = 04, - SUPPLIER_CONNECTOR = 010, - CONSUMER_CONNECTOR = 020 - }; - - static Options *instance (void); - // Return Singleton. - - void parse_args (int argc, char *argv[]); - // Parse the arguments and set the options. - - // = Accessor methods. - int enabled (int option) const; - // Determine if an option is enabled. - - u_short supplier_acceptor_port (void) const; - // Our acceptor port number, i.e., the one that we passively listen - // on for connections to arrive from a gatewayd and create a - // Supplier. - - u_short consumer_acceptor_port (void) const; - // Our acceptor port number, i.e., the one that we passively listen - // on for connections to arrive from a gatewayd and create a - // Consumer. - - u_short supplier_connector_port (void) const; - // The connector port number, i.e., the one that we use to actively - // establish connections with a gatewayd and create a Supplier. - - u_short consumer_connector_port (void) const; - // The connector port number, i.e., the one that we use to actively - // establish connections with a gatewayd and create a Consumer. - - const char *connector_host (void) const; - // Our connector port host, i.e., the host running the gatewayd - // process. - - long timeout (void) const; - // Duration between disconnects. - - long max_queue_size (void) const; - // The maximum size of the queue. - -private: - enum - { - MAX_QUEUE_SIZE = 1024 * 1024 * 16, - // We'll allow up to 16 megabytes to be queued per-output - // channel!!!! This is clearly a policy in search of - // refinement... - - DEFAULT_TIMEOUT = 60 - // By default, disconnect the peer every minute. - }; - - Options (void); - // Ensure Singleton. - - void print_usage_and_die (void); - // Explain usage and exit. - - static Options *instance_; - // Singleton. - - u_long options_; - // Flag to indicate if we want verbose diagnostics. - - u_short supplier_acceptor_port_; - // The acceptor port number, i.e., the one that we passively listen - // on for connections to arrive from a gatewayd and create a - // Supplier. - - u_short consumer_acceptor_port_; - // The acceptor port number, i.e., the one that we passively listen - // on for connections to arrive from a gatewayd and create a - // Consumer. - - u_short supplier_connector_port_; - // The connector port number, i.e., the one that we use to actively - // establish connections with a gatewayd and create a Supplier. - - u_short consumer_connector_port_; - // The connector port number, i.e., the one that we use to actively - // establish connections with a gatewayd and create a Consumer. - - char *connector_host_; - // Our connector host, i.e., where the gatewayd process is running. - - long timeout_; - // The amount of time to wait before disconnecting from the Peerd. - - long max_queue_size_; - // The maximum size that the queue can grow to. -}; - -#endif /* OPTIONS_H */ diff --git a/apps/Gateway/Peer/Peer.cpp b/apps/Gateway/Peer/Peer.cpp deleted file mode 100644 index d1125d5d1c1..00000000000 --- a/apps/Gateway/Peer/Peer.cpp +++ /dev/null @@ -1,808 +0,0 @@ -// $Id$ - -#define ACE_BUILD_SVC_DLL - -#include "Peer.h" - -Peer_Handler::Peer_Handler (void) - : connection_id_ (0), - msg_frag_ (0), - total_bytes_ (0) -{ - // Set the high water mark of the <ACE_Message_Queue>. This is used - // to exert flow control. - this->msg_queue ()->high_water_mark (Options::instance ()->max_queue_size ()); -} - -// Upcall from the <ACE_Acceptor::handle_input> that turns control -// over to our application-specific Gateway handler. - -int -Peer_Handler::open (void *a) -{ - ACE_DEBUG ((LM_DEBUG, - "handle = %d\n", - this->peer ().get_handle ())); - - // Call down to the base class to activate and register this handler - // with an <ACE_Reactor>. - if (this->inherited::open (a) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "open"), -1); - - if (this->peer ().enable (ACE_NONBLOCK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "enable"), -1); - - ACE_Time_Value timeout (Options::instance ()->timeout ()); - - // Schedule the time between disconnects. This should really be a - // "tunable" parameter. - if (ACE_Reactor::instance ()->schedule_timer - (this, 0, timeout) == -1) - ACE_ERROR ((LM_ERROR, - "%p\n", - "schedule_timer")); - - // If there are events left in the queue, make sure we enable the - // <ACE_Reactor> appropriately to get them sent out. - if (this->msg_queue ()->is_empty () == 0 - && ACE_Reactor::instance ()->schedule_wakeup - (this, ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "schedule_wakeup"), - -1); - - // First action is to wait to be notified of our connection id. - this->do_action_ = &Peer_Handler::await_connection_id; - return 0; -} - -// Read events from stdin and send them to the gatewayd. - -int -Peer_Handler::xmit_stdin (void) -{ - if (this->connection_id_ != -1) - { - ACE_Message_Block *mb; - - ACE_NEW_RETURN (mb, - ACE_Message_Block (sizeof (Event)), - -1); - - // Cast the message block payload into an <Event> pointer. - Event *event = (Event *) mb->rd_ptr (); - - ssize_t n = ACE_OS::read (ACE_STDIN, - event->data_, - sizeof event->data_); - switch (n) - { - case 0: - ACE_DEBUG ((LM_DEBUG, "stdin closing down\n")); - - // Take stdin out of the ACE_Reactor so we stop trying to - // send events. - ACE_Reactor::instance ()->remove_handler - (ACE_STDIN, - ACE_Event_Handler::DONT_CALL | ACE_Event_Handler::READ_MASK); - mb->release (); - break; - case -1: - mb->release (); - ACE_ERROR ((LM_ERROR, "%p\n", "read")); - break; - default: - event->header_.connection_id_ = this->connection_id_; - event->header_.len_ = n; - event->header_.priority_ = 0; - event->header_.type_ = 0; - - // Convert all the fields into network byte order. - event->header_.encode (); - - // Move the write pointer to the end of the event. - mb->wr_ptr (sizeof (Event_Header) + n); - - if (this->put (mb) == -1) - { - if (errno == EWOULDBLOCK) // The queue has filled up! - ACE_ERROR ((LM_ERROR, - "%p\n", - "gateway is flow controlled, so we're dropping events")); - else - ACE_ERROR ((LM_ERROR, - "%p\n", - "transmission failure in xmit_stdin")); - // Caller is responsible for freeing a ACE_Message_Block - // if failures occur. - mb->release (); - } - } - } - - return 0; -} - -// Perform a non-blocking <put> of event MB. If we are unable to send -// the entire event the remainder is re-queue'd at the *front* of the -// Message_Queue. - -int -Peer_Handler::nonblk_put (ACE_Message_Block *mb) -{ - // Try to send the event. If we don't send it all (e.g., due to - // flow control), then re-queue the remainder at the head of the - // <ACE_Message_Queue> and ask the <ACE_Reactor> to inform us (via - // <handle_output>) when it is possible to try again. - - ssize_t n = this->send (mb); - - if (n == -1) - return -1; - else if (errno == EWOULDBLOCK) - { - // We didn't manage to send everything, so requeue. - ACE_DEBUG ((LM_DEBUG, - "queueing activated on handle %d to supplier id %d\n", - this->get_handle (), - this->connection_id_)); - - // Re-queue in *front* of the list to preserve order. - if (this->msg_queue ()->enqueue_head - (mb, - (ACE_Time_Value *) &ACE_Time_Value::zero) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "enqueue_head"), - -1); - // Tell ACE_Reactor to call us back when we can send again. - if (ACE_Reactor::instance ()->schedule_wakeup - (this, ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "schedule_wakeup"), - -1); - return 0; - } - else - return n; -} - -// Finish sending a event when flow control conditions abate. This -// method is automatically called by the ACE_Reactor. - -int -Peer_Handler::handle_output (ACE_HANDLE) -{ - ACE_Message_Block *mb = 0; - - ACE_DEBUG ((LM_DEBUG, "in handle_output\n")); - - if (this->msg_queue ()->dequeue_head - (mb, (ACE_Time_Value *) &ACE_Time_Value::zero) != -1) - { - switch (this->nonblk_put (mb)) - { - case 0: // Partial send. - ACE_ASSERT (errno == EWOULDBLOCK); - // Didn't write everything this time, come back later... - break; - /* NOTREACHED */ - case -1: - // Caller is responsible for freeing a ACE_Message_Block if - // failures occur. - mb->release (); - ACE_ERROR ((LM_ERROR, - "%p\n", - "transmission failure in handle_output")); - /* FALLTHROUGH */ - default: // Sent the whole thing. - // If we succeed in writing the entire event (or we did not - // fail due to EWOULDBLOCK) then check if there are more - // events on the <ACE_Message_Queue>. If there aren't, tell - // the <ACE_Reactor> not to notify us anymore (at least - // until there are new events queued up). - - if (this->msg_queue ()->is_empty ()) - { - ACE_DEBUG ((LM_DEBUG, - "queue now empty on handle %d to supplier id %d\n", - this->get_handle (), - this->connection_id_)); - - if (ACE_Reactor::instance ()->cancel_wakeup - (this, ACE_Event_Handler::WRITE_MASK) == -1) - ACE_ERROR ((LM_ERROR, - "%p\n", - "cancel_wakeup")); - } - } - return 0; - } - else - // If the list is empty there's a bug! - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "dequeue_head"), - 0); -} - -// Send an event to a peer (may block if necessary). - -int -Peer_Handler::put (ACE_Message_Block *mb, ACE_Time_Value *) -{ - if (this->msg_queue ()->is_empty ()) - // Try to send the event *without* blocking! - return this->nonblk_put (mb); - else - // If we have queued up events due to flow control then just - // enqueue and return. - return this->msg_queue ()->enqueue_tail - (mb, (ACE_Time_Value *) &ACE_Time_Value::zero); -} - -// Send an Peer event to gatewayd. - -int -Peer_Handler::send (ACE_Message_Block *mb) -{ - size_t len = mb->length (); - - ssize_t n = this->peer ().send (mb->rd_ptr (), len); - - if (n <= 0) - return errno == EWOULDBLOCK ? 0 : n; - else if (n < (ssize_t) len) - { - // Re-adjust pointer to skip over the part we did send. - mb->rd_ptr (n); - this->total_bytes_ += n; - } - else // if (n == length). - { - // The whole event is sent, we can now safely deallocate the - // buffer. Note that this should decrement a reference count... - this->total_bytes_ += n; - mb->release (); - errno = 0; - } - - ACE_DEBUG ((LM_DEBUG, "sent %d bytes, total bytes sent = %d\n", - n, this->total_bytes_)); - return n; -} - -// Receive an Event from gatewayd. Handles fragmentation. - -int -Peer_Handler::recv (ACE_Message_Block *&mb) -{ - if (this->msg_frag_ == 0) - // No existing fragment... - ACE_NEW_RETURN (this->msg_frag_, - ACE_Message_Block (sizeof (Event)), - -1); - - Event *event = (Event *) this->msg_frag_->rd_ptr (); - ssize_t header_received = 0; - - const ssize_t HEADER_SIZE = sizeof (Event_Header); - ssize_t header_bytes_left_to_read = - HEADER_SIZE - this->msg_frag_->length (); - - if (header_bytes_left_to_read > 0) - { - header_received = this->peer ().recv - (this->msg_frag_->wr_ptr (), - header_bytes_left_to_read); - - if (header_received == -1 /* error */ - || header_received == 0 /* EOF */) - { - ACE_ERROR ((LM_ERROR, - "%p\n", - "Recv error during header read")); - ACE_DEBUG ((LM_DEBUG, - "attempted to read %d bytes\n", - header_bytes_left_to_read)); - this->msg_frag_ = this->msg_frag_->release (); - return header_received; - } - - // Bump the write pointer by the amount read. - this->msg_frag_->wr_ptr (header_received); - - // At this point we may or may not have the ENTIRE header. - if (this->msg_frag_->length () < HEADER_SIZE) - { - ACE_DEBUG ((LM_DEBUG, - "Partial header received: only %d bytes\n", - this->msg_frag_->length ())); - // Notify the caller that we didn't get an entire event. - errno = EWOULDBLOCK; - return -1; - } - - // Convert the header into host byte order so that we can access - // it directly without having to repeatedly muck with it... - event->header_.decode (); - - if (event->header_.len_ > sizeof event->data_) - { - // This data_ payload is too big! - errno = EINVAL; - ACE_DEBUG ((LM_DEBUG, - "Data payload is too big (%d bytes)\n", - event->header_.len_)); - return -1; - } - } - - // At this point there is a complete, valid header in Event. Now we - // need to get the event payload. Due to incomplete reads this may - // not be the first time we've read in a fragment for this message. - // We account for this here. Note that the first time in here - // <msg_frag_->wr_ptr> will point to <event->data_>. Every time we - // do a successful fragment read, we advance <wr_ptr>. Therefore, - // by subtracting how much we've already read from the - // <event->header_.len_> we complete the - // <data_bytes_left_to_read>... - - ssize_t data_bytes_left_to_read = - ssize_t (event->header_.len_ - (msg_frag_->wr_ptr () - event->data_)); - - ssize_t data_received = - this->peer ().recv (this->msg_frag_->wr_ptr (), - data_bytes_left_to_read); - - // Try to receive the remainder of the event. - - switch (data_received) - { - case -1: - if (errno == EWOULDBLOCK) - // This might happen if only the header came through. - return -1; - else - /* FALLTHROUGH */; - - case 0: // Premature EOF. - this->msg_frag_ = this->msg_frag_->release (); - return 0; - - default: - // Set the write pointer at 1 past the end of the event. - this->msg_frag_->wr_ptr (data_received); - - if (data_received != data_bytes_left_to_read) - { - errno = EWOULDBLOCK; - // Inform caller that we didn't get the whole event. - return -1; - } - else - { - // Set the read pointer to the beginning of the event. - this->msg_frag_->rd_ptr (this->msg_frag_->base ()); - - mb = this->msg_frag_; - - // Reset the pointer to indicate we've got an entire event. - this->msg_frag_ = 0; - } - - ACE_DEBUG ((LM_DEBUG, - "(%t) supplier id = %d, cur len = %d, total bytes read = %d\n", - event->header_.connection_id_, - event->header_.len_, - data_received + header_received)); - if (Options::instance ()->enabled (Options::VERBOSE)) - ACE_DEBUG ((LM_DEBUG, - "data_ = %*s\n", - event->header_.len_ - 2, - event->data_)); - return data_received + header_received; - } -} - -// Receive various types of input (e.g., Peer event from the gatewayd, -// as well as stdio). - -int -Peer_Handler::handle_input (ACE_HANDLE sd) -{ - ACE_DEBUG ((LM_DEBUG, "in handle_input, sd = %d\n", sd)); - if (sd == ACE_STDIN) // Handle event from stdin. - return this->xmit_stdin (); - else - // Perform the appropriate action depending on the state we are - // in. - return (this->*do_action_) (); -} - -// Action that receives our supplier id from the Gateway. - -int -Peer_Handler::await_connection_id (void) -{ - ssize_t n = this->peer ().recv (&this->connection_id_, - sizeof this->connection_id_); - - if (n != sizeof this->connection_id_) - { - if (n == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "gatewayd has closed down unexpectedly\n"), - -1); - else - ACE_ERROR_RETURN ((LM_ERROR, - "%p, bytes received on handle %d = %d\n", - "recv", - this->get_handle (), - n), - -1); - } - else - { - this->connection_id_ = ntohl (this->connection_id_); - ACE_DEBUG ((LM_DEBUG, - "assigned connection id %d\n", - this->connection_id_)); - } - - // Transition to the action that waits for Peer events. - this->do_action_ = &Peer_Handler::await_events; - - // Reset standard input. - ACE_OS::rewind (stdin); - - // Register this handler to receive test events on stdin. - if (ACE::register_stdin_handler (this, - ACE_Reactor::instance (), - ACE_Thread_Manager::instance ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "(%t) %p\n", "register_stdin_handler"), -1); - - return 0; -} - -// Action that receives events. - -int -Peer_Handler::await_events (void) -{ - ACE_Message_Block *mb = 0; - - ssize_t n = this->recv (mb); - - switch (n) - { - case 0: - ACE_ERROR_RETURN ((LM_ERROR, - "gatewayd has closed down\n"), - -1); - /* NOTREACHED */ - case -1: - if (errno == EWOULDBLOCK) - // A short-read, we'll come back and finish it up later on! - return 0; - else - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "recv"), - -1); - /* NOTREACHED */ - default: - { - // We got a valid event, so let's process it now! At the - // moment, we just print out the event contents... - - Event *event = (Event *) mb->rd_ptr (); - this->total_bytes_ += mb->length (); - - ACE_DEBUG ((LM_DEBUG, - "route id = %d, cur len = %d, total len = %d\n", - event->header_.connection_id_, - event->header_.len_, - this->total_bytes_)); - if (Options::instance ()->enabled (Options::VERBOSE)) - ACE_DEBUG ((LM_DEBUG, - "data_ = %s\n", - event->data_)); - mb->release (); - return 0; - } - } -} - -// Periodically send events via ACE_Reactor timer mechanism. - -int -Peer_Handler::handle_timeout (const ACE_Time_Value &, - const void *) -{ - // Shut down the handler. - return this->handle_close (); -} - -Peer_Handler::~Peer_Handler (void) -{ - // Shut down the handler. - this->handle_close (); -} - -// Handle shutdown of the Peer object. - -int -Peer_Handler::handle_close (ACE_HANDLE, - ACE_Reactor_Mask) -{ - if (this->get_handle () != ACE_INVALID_HANDLE) - { - ACE_DEBUG ((LM_DEBUG, "shutting down Peer on handle %d\n", - this->get_handle ())); - - ACE_Reactor_Mask mask = ACE_Event_Handler::DONT_CALL | ACE_Event_Handler::READ_MASK; - - // Explicitly remove ourselves for ACE_STDIN (the <ACE_Reactor> - // removes the HANDLE. Note that <ACE_Event_Handler::DONT_CALL> - // instructs the ACE_Reactor *not* to call <handle_close>, which - // would otherwise lead to infinite recursion!). - ACE_Reactor::instance ()->remove_handler - (ACE_STDIN, mask); - - // Deregister this handler with the ACE_Reactor. - if (ACE_Reactor::instance ()->remove_handler - (this, mask) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "handle = %d: %p\n", - this->get_handle (), - "remove_handler"), - -1); - // Close down the peer. - this->peer ().close (); - } - return 0; -} - -int -Peer_Acceptor::open (u_short port) -{ - // This object only gets allocated once and is just recycled - // forever. - ACE_NEW_RETURN (peer_handler_, Peer_Handler, -1); - - this->addr_.set (port); - - ACE_DEBUG ((LM_DEBUG, - "opening acceptor at port %d\n", - port)); - - // Call down to the <Acceptor::open> method. - if (this->inherited::open (this->addr_) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "open"), - -1); - else if (this->acceptor ().get_local_addr (this->addr_) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "get_local_addr"), - -1); - else - ACE_DEBUG ((LM_DEBUG, - "accepting at port %d\n", - this->addr_.get_port_number ())); - return 0; -} - -Peer_Acceptor::Peer_Acceptor (void) - : peer_handler_ (0) -{ -} - -int -Peer_Acceptor::close (void) -{ - // Will trigger a delete. - if (this->peer_handler_ != 0) - this->peer_handler_->destroy (); - - // Close down the base class. - return this->inherited::close (); -} - -// Note how this method just passes back the pre-allocated -// <Peer_Handler> instead of having the <ACE_Acceptor> allocate a new -// one each time! - -int -Peer_Acceptor::make_svc_handler (Peer_Handler *&sh) -{ - sh = this->peer_handler_; - return 0; -} - -int -Peer_Connector::open_connector (Peer_Handler *&peer_handler, - u_short port) -{ - // This object only gets allocated once and is just recycled - // forever. - ACE_NEW_RETURN (peer_handler, - Peer_Handler, - -1); - - ACE_INET_Addr addr (port, - Options::instance ()->connector_host ()); - - ACE_DEBUG ((LM_DEBUG, - "connecting to %s:%d\n", - addr.get_host_name (), - addr.get_port_number ())); - - if (this->connect (peer_handler, addr) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "connect"), - -1); - else - ACE_DEBUG ((LM_DEBUG, - "connected to %s:%d\n", - addr.get_host_name (), - addr.get_port_number ())); - return 0; -} - -int -Peer_Connector::open (void) -{ - this->supplier_peer_handler_ = 0; - this->consumer_peer_handler_ = 0; - - if (Options::instance ()->enabled (Options::SUPPLIER_CONNECTOR) - && this->open_connector (this->supplier_peer_handler_, - Options::instance ()->supplier_connector_port ()) == -1) - return -1; - - if (Options::instance ()->enabled (Options::CONSUMER_CONNECTOR) - && this->open_connector (this->consumer_peer_handler_, - Options::instance ()->consumer_connector_port ()) == -1) - return -1; - - return 0; -} - -int -Peer_Factory::handle_signal (int signum, siginfo_t *, ucontext_t *) -{ - ACE_DEBUG ((LM_DEBUG, - "signal %S occurred\n", - signum)); - - if (signum != SIGPIPE) - // Shut down the main event loop. - ACE_Reactor::end_event_loop(); - - return 0; -} - -// Returns information on the currently active service. - -int -Peer_Factory::info (char **strp, size_t length) const -{ - char buf[BUFSIZ]; - char consumer_addr_str[BUFSIZ]; - char supplier_addr_str[BUFSIZ]; - - ACE_INET_Addr addr; - - if (this->consumer_acceptor_.acceptor ().get_local_addr (addr) == -1) - return -1; - else if (addr.addr_to_string (consumer_addr_str, - sizeof addr) == -1) - return -1; - else if (this->supplier_acceptor_.acceptor ().get_local_addr (addr) == -1) - return -1; - else if (addr.addr_to_string (supplier_addr_str, - sizeof addr) == -1) - return -1; - - ACE_OS::sprintf (buf, - "%s\t C:%s|S:%s/%s %s", - "peerd", - consumer_addr_str, - supplier_addr_str, - "tcp", - "# Gateway traffic generator and data sink\n"); - - if (*strp == 0 && (*strp = ACE_OS::strdup (buf)) == 0) - return -1; - else - ACE_OS::strncpy (*strp, buf, length); - return ACE_OS::strlen (buf); -} - -// Hook called by the explicit dynamic linking facility to terminate -// the peer. - -int -Peer_Factory::fini (void) -{ - this->consumer_acceptor_.close (); - this->supplier_acceptor_.close (); - return 0; -} - -// Hook called by the explicit dynamic linking facility to initialize -// the peer. - -int -Peer_Factory::init (int argc, char *argv[]) -{ - Options::instance ()->parse_args (argc, argv); - - ACE_Sig_Set sig_set; - - sig_set.sig_add (SIGINT); - sig_set.sig_add (SIGQUIT); - sig_set.sig_add (SIGPIPE); - - // Register ourselves to receive signals so we can shut down - // gracefully. - - if (ACE_Reactor::instance ()->register_handler (sig_set, - this) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "register_handler"), -1); - - if (Options::instance ()->enabled (Options::SUPPLIER_ACCEPTOR) - && this->consumer_acceptor_.open - (Options::instance ()->supplier_acceptor_port ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "Acceptor::open"), - -1); - else if (Options::instance ()->enabled (Options::CONSUMER_ACCEPTOR) - && this->supplier_acceptor_.open - (Options::instance ()->consumer_acceptor_port ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "Acceptor::open"), - -1); - else if (this->connector_.open () == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "Connector::open"), - -1); - return 0; -} - -// The following is a "Factory" used by the <ACE_Service_Config> and -// svc.conf file to dynamically initialize the <Peer_Acceptor> and -// <Peer_Connector>. - -ACE_SVC_FACTORY_DEFINE (Peer_Factory) - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Acceptor<Peer_Handler, ACE_SOCK_ACCEPTOR>; -template class ACE_Connector<Peer_Handler, ACE_SOCK_CONNECTOR>; -template class ACE_Map_Manager<ACE_HANDLE, ACE_Svc_Tuple<Peer_Handler> *, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Iterator<ACE_HANDLE, ACE_Svc_Tuple<Peer_Handler> *, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Reverse_Iterator<ACE_HANDLE, ACE_Svc_Tuple<Peer_Handler> *, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Iterator_Base<ACE_HANDLE, ACE_Svc_Tuple<Peer_Handler> *, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Entry<ACE_HANDLE, ACE_Svc_Tuple<Peer_Handler> *>; -template class ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>; -template class ACE_Svc_Tuple<Peer_Handler>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Acceptor<Peer_Handler, ACE_SOCK_ACCEPTOR> -#pragma instantiate ACE_Connector<Peer_Handler, ACE_SOCK_CONNECTOR> -#pragma instantiate ACE_Map_Manager<ACE_HANDLE, ACE_Svc_Tuple<Peer_Handler> *, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Iterator_Base<ACE_HANDLE, ACE_Svc_Tuple<Peer_Handler> *, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Iterator<ACE_HANDLE, ACE_Svc_Tuple<Peer_Handler> *, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Reverse_Iterator<ACE_HANDLE, ACE_Svc_Tuple<Peer_Handler> *, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Entry<ACE_HANDLE, ACE_Svc_Tuple<Peer_Handler> *> -#pragma instantiate ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> -#pragma instantiate ACE_Svc_Tuple<Peer_Handler> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/apps/Gateway/Peer/Peer.dsp b/apps/Gateway/Peer/Peer.dsp deleted file mode 100644 index 9e162c4f1a8..00000000000 --- a/apps/Gateway/Peer/Peer.dsp +++ /dev/null @@ -1,64 +0,0 @@ -# Microsoft Developer Studio Project File - Name="Peer" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=Peer - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "Peer.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "Peer.mak" CFG="Peer - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "Peer - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-# 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 Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\\" /I "..\Gateway" /D "_WINDOWS" /D "WIN32" /D "_DEBUG" /YX /FD /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-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:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 aced.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace"
-# Begin Target
-
-# Name "Peer - Win32 Debug"
-# Begin Source File
-
-SOURCE=.\Options.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Peer.cpp
-# End Source File
-# End Target
-# End Project
diff --git a/apps/Gateway/Peer/Peer.dsw b/apps/Gateway/Peer/Peer.dsw deleted file mode 100644 index 0cb1de9dcd2..00000000000 --- a/apps/Gateway/Peer/Peer.dsw +++ /dev/null @@ -1,44 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "Peer"=.\Peer.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "peerd"=.\peerd.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name Peer
- End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/apps/Gateway/Peer/Peer.h b/apps/Gateway/Peer/Peer.h deleted file mode 100644 index d2fa6b17e40..00000000000 --- a/apps/Gateway/Peer/Peer.h +++ /dev/null @@ -1,222 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Peer.h -// -// = DESCRIPTION -// These classes process Supplier/Consumer events sent from the -// gateway (gatewayd) to its various peers (peerd). The general -// collaboration works as follows: -// -// 1. <Peer_Acceptor> creates a listener endpoint and waits -// passively for gatewayd to connect with it. -// -// 2. When a gatewayd connects, <Peer_Acceptor> creates an -// <Peer_Handler> object that sends/receives events from -// gatewayd on that connection. -// -// 3. The <Peer_Handler> waits for gatewayd to inform it of its -// connection ID, which is prepended to all subsequent outgoing -// events sent from peerd. -// -// 4. Once the connection ID is set, peerd periodically sends events -// to gatewayd. Peerd also receives and "processes" events -// forwarded to it from gatewayd. In this program, peerd -// "processes" the events sent to it by writing them to stdout. -// -// Note that in the current peerd implementation, one Peer process -// cannot serve as both a Consumer and Supplier of Events. This is -// because the gatewayd establishes a separate connection for -// Suppliers and Consumers and the peerd only maintains a single -// <Peer_Handler> object to handle this one connection. Enhancing -// this implementation to be both a Consumer and Supplier -// simultaneously is straightforward, however. In addition, -// multiple peerd processes can already work together to play these -// different roles. -// -// = AUTHOR -// Douglas C. Schmidt -// -// ============================================================================ - -#if !defined (PEER_H) -#define PEER_H - -#include "ace/Service_Config.h" -#include "ace/Acceptor.h" -#include "ace/Connector.h" -#include "ace/SOCK_Acceptor.h" -#include "ace/SOCK_Connector.h" -#include "Options.h" - -ACE_SVC_FACTORY_DECLARE (Peer_Factory) - -class ACE_Svc_Export Peer_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> -{ - // = TITLE - // Handle Peer events arriving from a Gateway. -public: - // = Initialization and termination methods. - Peer_Handler (void); - // Initialize the peer. - - ~Peer_Handler (void); - // Shutdown the Peer. - - virtual int open (void * = 0); - // Initialize the handler when called by - // <ACE_Acceptor::handle_input>. - - virtual int handle_input (ACE_HANDLE); - // Receive and process peer events. - - virtual int put (ACE_Message_Block *, ACE_Time_Value *tv = 0); - // Send a event to a gateway (may be queued if necessary due to flow - // control). - - virtual int handle_output (ACE_HANDLE); - // Finish sending a event when flow control conditions abate. - - virtual int handle_timeout (const ACE_Time_Value &, - const void *arg); - // Periodically send events via <ACE_Reactor> timer mechanism. - - virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE, - ACE_Reactor_Mask = ACE_Event_Handler::ALL_EVENTS_MASK); - // Perform object termination. - -protected: - typedef ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> inherited; - - virtual int recv (ACE_Message_Block *&); - // Receive an Peer event from gatewayd. - - virtual int send (ACE_Message_Block *); - // Send an Peer event to gatewayd, using <nonblk_put>. - - virtual int nonblk_put (ACE_Message_Block *mb); - // Perform a non-blocking <put>, which tries to send an event to the - // gatewayd, but only if it isn't flow controlled. - - // = Event/state/action handlers. - int xmit_stdin (void); - // Receive a event from stdin and send it to the gateway. - - int await_connection_id (void); - // Action that receives the route id. - - int await_events (void); - // Action that receives events. - - int (Peer_Handler::*do_action_)(void); - // Pointer-to-member-function for the current action to run in this - // state. This points to one of the preceding 3 methods. - - CONNECTION_ID connection_id_; - // Connection ID of the peer, which is obtained from the gatewayd. - - ACE_Message_Block *msg_frag_; - // Keep track of event fragments that arrive in non-blocking recv's - // from the gatewayd. - - size_t total_bytes_; - // The total number of bytes sent/received to the gatewayd thus far. -}; - -class ACE_Svc_Export Peer_Acceptor : public ACE_Acceptor<Peer_Handler, ACE_SOCK_ACCEPTOR> -{ - // = TITLE - // Passively accept connections from gatewayd and dynamically - // create a new <Peer_Handler> object to communicate with the - // gatewayd. -public: - // = Initialization and termination methods. - Peer_Acceptor (void); - // Default initialization. - - int open (u_short); - // the <Peer_Acceptor>. - - int close (void); - // Terminate the <Peer_Acceptor>. - - virtual int make_svc_handler (Peer_Handler *&); - // Factory method that creates a <Peer_Handler> just once. - -private: - int open_acceptor (u_short port); - // Factor out common code for initializing the <Peer_Acceptor>. - - Peer_Handler *peer_handler_; - // Pointer to <Peer_Handler> allocated just once. - - ACE_INET_Addr addr_; - // Our acceptor addr. - - typedef ACE_Acceptor<Peer_Handler, ACE_SOCK_ACCEPTOR> inherited; -}; - -class ACE_Svc_Export Peer_Connector : public ACE_Connector<Peer_Handler, ACE_SOCK_CONNECTOR> -{ - // = TITLE - // Actively establish connections with gatewayd and dynamically - // create a new <Peer_Handler> object to communicate with the - // gatewayd. -public: - // = Initialization method. - int open (void); - // Initialize the <Peer_Connector>. - -private: - int open_connector (Peer_Handler *&ph, u_short port); - // Factor out common code for initializing the <Peer_Connector>. - - Peer_Handler *consumer_peer_handler_; - // Consumer <Peer_Handler> that is connected to a gatewayd. - - Peer_Handler *supplier_peer_handler_; - // Supplier <Peer_Handler> that is connected to a gatewayd. -}; - -class ACE_Svc_Export Peer_Factory : public ACE_Service_Object -{ - // = TITLE - // A factory class that actively and/or passively establishes - // connections with the gatewayd. -public: - // = Dynamic initialization and termination hooks from <ACE_Service_Object>. - - virtual int init (int argc, char *argv[]); - // Initialize the acceptor and connector. - - virtual int fini (void); - // Perform termination activities. - - virtual int info (char **, size_t) const; - // Return info about this service. - - virtual int handle_signal (int signum, siginfo_t *, ucontext_t *); - // Handle various signals (e.g., SIGPIPE, SIGINT, and SIGQUIT). - -private: - Peer_Acceptor consumer_acceptor_; - // Pointer to an instance of our <Peer_Acceptor> that's used to - // accept connections and create Consumers. - - Peer_Acceptor supplier_acceptor_; - // Pointer to an instance of our <Peer_Acceptor> that's used to - // accept connections and create Suppliers. - - Peer_Connector connector_; - // An instance of our <Peer_Connector>. Note that one - // <Peer_Connector> is used to establish <Peer_Handler>s for both - // Consumers and Suppliers. -}; - -#endif /* PEER_H */ diff --git a/apps/Gateway/Peer/Peer.mak b/apps/Gateway/Peer/Peer.mak deleted file mode 100644 index add920af4b4..00000000000 --- a/apps/Gateway/Peer/Peer.mak +++ /dev/null @@ -1,537 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-!IF "$(CFG)" == ""
-CFG=Peer - Win32 Debug
-!MESSAGE No configuration specified. Defaulting to Peer - Win32 Debug.
-!ENDIF
-
-!IF "$(CFG)" != "peerd - Win32 Debug" && "$(CFG)" != "Peer - 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 "Peer.mak" CFG="Peer - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "peerd - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "Peer - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-!ERROR An invalid configuration is specified.
-!ENDIF
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE
-NULL=nul
-!ENDIF
-################################################################################
-# Begin Project
-# PROP Target_Last_Scanned "Peer - Win32 Debug"
-
-!IF "$(CFG)" == "peerd - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "peerd\Debug"
-# PROP BASE Intermediate_Dir "peerd\Debug"
-# PROP BASE Target_Dir "peerd"
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "."
-# PROP Intermediate_Dir "peerd_Debug"
-# PROP Target_Dir "peerd"
-OUTDIR=.\.
-INTDIR=.\peerd_Debug
-
-ALL : "Peer - Win32 Debug" "$(OUTDIR)\peerd.exe"
-
-CLEAN :
- -@erase "$(INTDIR)\peerd.obj"
- -@erase "$(INTDIR)\vc40.idb"
- -@erase "$(INTDIR)\vc40.pdb"
- -@erase "$(OUTDIR)\peerd.exe"
- -@erase "$(OUTDIR)\peerd.ilk"
- -@erase "$(OUTDIR)\peerd.pdb"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
- if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-# 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)/peerd.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
-CPP_OBJS=.\peerd_Debug/
-CPP_SBRS=.\.
-
-.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) $<
-
-RSC=rc.exe
-# 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)/peerd.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 Peer.lib aced.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=Peer.lib aced.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)/peerd.pdb" /debug /machine:I386 /out:"$(OUTDIR)/peerd.exe"
-LINK32_OBJS= \
- "$(INTDIR)\peerd.obj" \
- "$(OUTDIR)\Peer.lib"
-
-"$(OUTDIR)\peerd.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "Peer - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Peer\Debug"
-# PROP BASE Intermediate_Dir "Peer\Debug"
-# PROP BASE Target_Dir "Peer"
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "."
-# PROP Intermediate_Dir "Peer_Debug"
-# PROP Target_Dir "Peer"
-OUTDIR=.\.
-INTDIR=.\Peer_Debug
-
-ALL : "$(OUTDIR)\Peer.dll"
-
-CLEAN :
- -@erase "$(INTDIR)\Peer.obj"
- -@erase "$(INTDIR)\vc40.idb"
- -@erase "$(INTDIR)\vc40.pdb"
- -@erase "$(OUTDIR)\Peer.dll"
- -@erase "$(OUTDIR)\Peer.exp"
- -@erase "$(OUTDIR)\Peer.ilk"
- -@erase "$(OUTDIR)\Peer.lib"
- -@erase "$(OUTDIR)\Peer.pdb"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
- if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\Gateway" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\Gateway" /D "WIN32" /D\
- "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)/Peer.pch" /YX /Fo"$(INTDIR)/"\
- /Fd"$(INTDIR)/" /c
-CPP_OBJS=.\Peer_Debug/
-CPP_SBRS=.\.
-
-.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) $<
-
-MTL=mktyplib.exe
-# ADD BASE MTL /nologo /D "_DEBUG" /win32
-# ADD MTL /nologo /D "_DEBUG" /win32
-MTL_PROJ=/nologo /D "_DEBUG" /win32
-RSC=rc.exe
-# 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)/Peer.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:windows /dll /debug /machine:I386
-# ADD LINK32 aced.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:windows /dll /debug /machine:I386
-LINK32_FLAGS=aced.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:windows /dll /incremental:yes\
- /pdb:"$(OUTDIR)/Peer.pdb" /debug /machine:I386 /out:"$(OUTDIR)/Peer.dll"\
- /implib:"$(OUTDIR)/Peer.lib"
-LINK32_OBJS= \
- "$(INTDIR)\Peer.obj"
-
-"$(OUTDIR)\Peer.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
-
-################################################################################
-# Begin Target
-
-# Name "peerd - Win32 Debug"
-################################################################################
-# Begin Project Dependency
-
-# Project_Dep_Name "Peer"
-
-!IF "$(CFG)" == "peerd - Win32 Debug"
-
-"Peer - Win32 Debug" :
- $(MAKE) /$(MAKEFLAGS) /F ".\Peer.mak" CFG="Peer - Win32 Debug"
-
-!ENDIF
-
-# End Project Dependency
-################################################################################
-# Begin Source File
-
-SOURCE=.\peerd.cpp
-DEP_CPP_PEERD=\
- "..\..\..\ace\config-win32.h"\
- ".\Peer.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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_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\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)\peerd.obj" : $(SOURCE) $(DEP_CPP_PEERD) "$(INTDIR)"
-
-
-# End Source File
-# End Target
-################################################################################
-# Begin Target
-
-# Name "Peer - Win32 Debug"
-################################################################################
-# Begin Source File
-
-SOURCE=.\Peer.cpp
-DEP_CPP_PEER_=\
- "..\..\..\ace\config-win32.h"\
- "..\Gateway\Event.h"\
- ".\Peer.h"\
- {$(INCLUDE)}"\ace\Acceptor.cpp"\
- {$(INCLUDE)}"\ace\Acceptor.h"\
- {$(INCLUDE)}"\ace\Acceptor.i"\
- {$(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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Get_Opt.h"\
- {$(INCLUDE)}"\ace\Get_Opt.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\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)\Peer.obj" : $(SOURCE) $(DEP_CPP_PEER_) "$(INTDIR)"
-
-
-# End Source File
-# End Target
-# End Project
-################################################################################
diff --git a/apps/Gateway/Peer/Peer.mdp b/apps/Gateway/Peer/Peer.mdp Binary files differdeleted file mode 100644 index 4bed2ce3775..00000000000 --- a/apps/Gateway/Peer/Peer.mdp +++ /dev/null diff --git a/apps/Gateway/Peer/Peer_Message.h b/apps/Gateway/Peer/Peer_Message.h deleted file mode 100644 index 67f57f148cb..00000000000 --- a/apps/Gateway/Peer/Peer_Message.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// Define the Peer message schema (this may change). - -#if !defined (PEER_MESSAGE) -#define PEER_MESSAGE - -// Fixed sized header. - -class Peer_Header -{ -public: -// Type used to route messages from gatewayd. - typedef short ROUTING_ID; - - enum - { - INVALID_ID = -1 // No peer may use this number. - }; - - // Source ID. - ROUTING_ID routing_id_; - - // Length of the message in bytes. - size_t len_; -}; - -// Variable-sized message (buf_ may be variable-sized between -// 0 and MAX_PAYLOAD_SIZE). - -class Peer_Message -{ -public: - // The maximum size of an Peer message (see Peer protocol specs for exact #). - enum { MAX_PAYLOAD_SIZE = 1024 }; - - Peer_Header header_; - - // Message payload - char buf_[MAX_PAYLOAD_SIZE]; -}; - -#endif /* PEER_MESSAGE */ diff --git a/apps/Gateway/Peer/peerd.cpp b/apps/Gateway/Peer/peerd.cpp deleted file mode 100644 index 33444e4a78e..00000000000 --- a/apps/Gateway/Peer/peerd.cpp +++ /dev/null @@ -1,60 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// peerd.h -// -// = DESCRIPTION -// Driver for the peer daemon (peerd). Note that this is -// completely generic code due to the Service Configurator -// framework! -// -// = AUTHOR -// Douglas C. Schmidt -// -// ============================================================================ - -#include "Peer.h" - -int -main (int argc, char *argv[]) -{ - if (ACE_Service_Config::open (argc, argv) == -1) - { - if (errno != ENOENT) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "open"), - 1); - else // Use static linking. - { - ACE_Service_Object_Ptr sp = ACE_SVC_INVOKE (Peer_Factory); - - if (sp->init (argc - 1, argv + 1) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "init"), - 1); - - // Run forever, performing the configured services until we - // are shut down by a SIGINT/SIGQUIT signal. - - ACE_Reactor::run_event_loop (); - - // Destructor of <ACE_Service_Object_Ptr> automagically call - // <fini>. - } - } - else // Use dynamic linking. - - // Run forever, performing the configured services until we are - // shut down by a signal (e.g., SIGINT or SIGQUIT). - - ACE_Reactor::run_event_loop (); - - return 0; -} diff --git a/apps/Gateway/Peer/peerd.dsp b/apps/Gateway/Peer/peerd.dsp deleted file mode 100644 index ff9a027ba2b..00000000000 --- a/apps/Gateway/Peer/peerd.dsp +++ /dev/null @@ -1,57 +0,0 @@ -# Microsoft Developer Studio Project File - Name="peerd" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=peerd - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "peerd.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "peerd.mak" CFG="peerd - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "peerd - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-# 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 Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\..\\" /D "_CONSOLE" /D "_MBCS" /D "WIN32" /D "_DEBUG" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-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 /pdbtype:sept
-# ADD LINK32 Peer.lib aced.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\ace"
-# Begin Target
-
-# Name "peerd - Win32 Debug"
-# Begin Source File
-
-SOURCE=.\peerd.cpp
-# End Source File
-# End Target
-# End Project
diff --git a/apps/Gateway/Peer/svc.conf b/apps/Gateway/Peer/svc.conf deleted file mode 100644 index c27eb06cec8..00000000000 --- a/apps/Gateway/Peer/svc.conf +++ /dev/null @@ -1,2 +0,0 @@ -#static Svc_Manager "-d -p 291" -dynamic Peer1 Service_Object * ./Peer:_make_Peer_Factory() active "-a C|S" diff --git a/apps/Gateway/README b/apps/Gateway/README deleted file mode 100644 index 23d0336d77b..00000000000 --- a/apps/Gateway/README +++ /dev/null @@ -1,140 +0,0 @@ -OVERVIEW - -This directory contains source code for an application-level -Communication Gateway implemented with ACE. This prototype was -developed in my cs422 OS class at Washington University in 1994. The -Gateway has recently been updated to illustrate the use of Event -Channels, which forward events from Suppliers to Consumers in a -distributed system. - -You can get a paper that explains the patterns used in this -implementation at the following WWW URL: - -http://www.cs.wustl.edu/~schmidt/TAPOS-95.ps.gz - ----------------------------------------- - -DIRECTORY STRUCTURE - -There are 2 directories: - -1. Gateway - - This directory contains the source code for the - application-level Gateway process, gatewayd. The gatewayd - routes event messages between Peers. By default, the gatewayd - plays the Connector role and initializes itself by reading the - proxy_config and consumer_config files: - - 1. The proxy_config file establishes the "physical - configuration" of the Consumer and Supplier proxies. This - file tells the Gateway what connections to establish with - particular hosts using particular ports. - - 2. The consumer_config file establishes the "logical - configuration." This file tells the Gateway how to forward - data coming from Suppliers to the appropriate Consumers. - - The application Gateway generally should be started after all - the Peers described below, though the process should work - correctly even if it starts first. - -2. Peer - - This directory contains the source code for the Peer process, - peerd. There are typically many Peers, which act as suppliers - and consumers of event messages that are routed through the - gatewayd. - - To do anything interesting you'll need at least two Peers: one - to supply events and one to consume events. In the - configuration files, these two types of Peers are designated - as follows: - - 1. Supplier Peers (designated by an 'S' in the Gateway's - proxy_config configuration file). These Peers are - "suppliers" of events to the Gateway. - - 2. Consumer Peers (designated by an 'C' in the Gateway's - proxy_config file). These Peers are "consumers" of events - forwarded by the Gateway. Forwarding is based on the - settings in the consumer_config configuration file. - ----------------------------------------- - -HOW TO RUN THE TESTS - -To run the tests do the following: - -1. Compile everything (i.e., first compile the ACE libraries, then - compile the Gateway and Peer directories). - -2. Edit the consumer_config and proxy_config files as discussed - above to indicate the desired physical and logical mappings - for Consumers and Suppliers. - -3. Start up the Peers (peerd). You can start up as many as you - like, as per the proxy_config file, but you'll need at least two - (i.e., one Supplier and Consumer). I typically start up each Peer - in a different window on a different machine, but you can run them - on the same machine as long as you pick different port numbers. - The Peers will print out some diagnostic info and then block - awaiting connections from the Gateway. - - If you want to set the port numbers of the Peers from - the command-line do the following: - - a. Change the svc.conf file in the ./Peer/ directory to - another name (e.g., foo.conf). This will keep the - program from starting up with the svc.conf file - (which dynamically links in the Peers and uses the -a option to - set the port). - - b. Then run the peers in different windows as - - # Window 1 (Supplier) - % peerd -a S:10003 - - # Window 2 (Consumer) - % peerd -a C:10004 - - etc. Naturally, you can also edit the svc.conf file, but that - may be more of a pain if you've got a network filesystem and - all your hosts share the same svc.conf file. - -4. Start up the Gateway (gatewayd). This will print out a bunch of - messages as it reads the config files and connects to all the Peers. - By default, the Gateway is purely reactive, i.e., it handles - Consumers and Suppliers in the same thread of control. However, - if you give the '-t OUTPUT_MT' option the Gateway will handle all - Consumers in separate threads. If you give the '-t INPUT_MT' option - the Gateway will handle all Suppliers in separate threads. If you - give the '-t INPUT_MT|OUTPUT_MT' option both Consumers and Suppliers - will be handled in the separate threads. - - Assuming everything works, then all the Peers will be connected. - If some of the Peers aren't set up correctly, or if they aren't - started first, then the Gateway will use an exponential backoff - algorithm to attempt to reestablish those connections. - -5. Once the Gateway has connected with all the Peers you can send - events from Supplier Peers by typing commands in the Peer window. - This Supplier will be sent to the Gateway, which will forward the - event to all Consumer Peers that have "subscribed" to receive these - events. - - Note that if you type ^C in a Peer window the Peer will shutdown - its handlers and exit. The Gateway will detect this and will start - trying to reestablish the connection using the same exponential - backoff algorithm it used for the initial connection establishment. - -7. When you want to terminate a Gateway, just type ^C or type any - characters in the ./gatewayd window and the process will shut down - gracefully. - -Please let me know if there are any problems, questions, or -suggestions for improvement. - - Doug - - schmidt@cs.wustl.edu diff --git a/apps/JAWS/ChangeLog b/apps/JAWS/ChangeLog deleted file mode 100644 index a2834f11332..00000000000 --- a/apps/JAWS/ChangeLog +++ /dev/null @@ -1,598 +0,0 @@ -Fri Jan 2 16:28:00 1998 Nanbor Wang <nw1@cs.wustl.edu> - - * clients/Caching/http_handler.cpp: - * clients/Blobby/Blob.cpp: Added missing explicit template - instantiations. - -Mon Dec 29 20:20:36 1997 James C Hu <jxh@cs.wustl.edu> - - * clients/Caching/http_handler.cpp: Idem to previous change. - -Mon Dec 29 18:50:02 1997 James C Hu <jxh@cs.wustl.edu> - - * server/IO.cpp: Idem to previous change, but fixes to improve - compatibility and portability to Windows NT. - -Thu Dec 18 15:37:36 1997 James C Hu <jxh@cs.wustl.edu> - - * server/IO.cpp: Modified to account for changes in ACE_Filecache - to not map file on NT. - -Tue Dec 16 09:29:11 1997 David L. Levine <levine@cs.wustl.edu> - - * server/Makefile: expanded rules.bin.GNU, but without - $(VOBJS), to avoid make warnings. - - * client/WebSTONE/src/nsapi-includes/base/systems.h: - #ifdef linux, not LINUX. - -Fri Dec 12 03:06:16 1997 James C Hu <jxh@cs.wustl.edu> - - * server/Parse_Headers.cpp: Many things have been touched, but - only a few things have significantly changed. I originally - attempted to change the implementation entirely to use - Hash_Map_Manager instead, but it was getting more complicated - than I wanted, so I went back to debugging. - - - Trailing whitespace has been removed. - - A couple of debug messages have been added the - Headers::parse_header_line (). - - Method declarations had to be changed to account for the - fact that the Map_Item class (which had previously - been declared inside of Headers_Map) is now in global - scope and has been renamed to Headers_Map_Item. - - The no_value_ data member and the char* cast operator of - Map_Item have been removed. - - The assignment operator for Map_Item has been made a bit - tidier in its memory management (say no to memory - leaks!). - - Debugged the Headers_Map data structure. This involved - the following: - . Re-implementation of strcasecmp (red-herring). - . Re-implementation of Headers::compare (). This is - needed because empty table entries need to compare as - infinity against real strings, so that real strings get - inserted correctly. - . Debugging the Headers_Map::find () method by - implementing first a linear search, and then my own binary - search. It turns out the C library ::bsearch() does work, - but I will leave in my implementation for now, since - ::bsearch () is not in ACE_OS yet. - . Re-implementation of Headers::place (). The old one - was badly written. The new one is more efficient, and - less error prone. This method turned out to be the main - problem. It was the reason that binary search was - previously failing (but linear search worked). The - reason? It was corrupting memory, believe it or not. - No longer! - - In addition, Headers::place () had a serious bug in which a call - to ACE_OS::free () was added, but included the ++ operator on - the pointer from the previous line. Ug. - - * server/Parse_Headers.h: See comments for HTTP_Request.cpp. - - * server/HTTP_Request.cpp: Removed extraneous whitespace. It's - not what you think Doug! Just trailing whitespace at the end of - lines that somehow get added on when people use LoseNT editors. - Also, changes were made to Parse_Headers which made it necessary - to explicitly use the value () accessor method when examining - parsed headers. There use to be a operator char* () method. - - * server/HTTP_Response.cpp: See comments for HTTP_Request.cpp. - - * server/HTTP_Helpers.cpp: Added a comment to - HTTP_Helper::fixyear (). - -Tue Dec 9 01:19:09 1997 James C Hu <jxh@cs.wustl.edu> - - * stress_testing/util.cpp: Off by one errors when parsing a URL. - Did I write this code? I don't think so. Thanks to Valik - Solorzano Barboza <valik@geodan.nl> for pointing this out. - -Thu Nov 20 00:36:34 1997 James C Hu <jxh@cs.wustl.edu> - - * server/Pipeline.h: Added methods and members so that the - pipeline can be both push and pull driven. - - * server/Pipeline.cpp: Made the pipeline a doubly linked list of - components, so that it can be operated as push-driven or - pull-driven pipelines. - -Wed Nov 19 05:10:38 1997 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - - * server/HTTP_Handler.h: Added the keyword "virtual" on the open() - method which is inherited from ACE_Sevice_Handler. Perhaps this - will fix a bug with BORLANDC reported by Valik Solorzano Barboza - <valik@xs4all.nl>. - -Mon Nov 17 07:34:09 1997 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - - * server/Parse_Headers.cpp (end_of_line): Replaced a const char * - with a char * to work with the new ACE_OS::strchr() signature. - Thanks to James for finding this. - -Tue Nov 11 19:52:38 1997 James C Hu <jxh@cs.wustl.edu> - - * server/Pipeline.{h,cpp}: The beginning of a new Pipeline - framework has been added. - -Sun Oct 12 16:21:32 1997 Carlos O'Ryan <coryan@macarena.cs.wustl.edu> - - * clients/Caching/Makefile: - * stress_testing/Makefile: - There is no need to set LDLIBS to add local object files - anymore, using FILES is enough. - -Fri Oct 10 18:41:47 1997 Carlos O'Ryan <coryan@macarena.cs.wustl.edu> - - * clients/Blobby/Makefile: - Fixed problem that made compilation fail. - -Thu Sep 11 10:40:38 1997 Carlos O'Ryan <coryan@polka.cs.wustl.edu> - - * server/HTTP_Request.cpp: - I checked the use of MAXNAMELEN vs. MAXPATHLEN; all buffers - intended to keep full filenames should have at least - MAXPATHLEN+1 chars. - Only buffers that will keep basenames (without any directories) - should have MAXNAMELEN+1 bytes. - I also added a new macro ACE_MAX_FULLY_QUALIFIED_NAME_LEN which - is the maximum number of characters for a fully qualified - internet hostname. - There remain one obscure usage of these macros in ace/Malloc.h - and Local_Naming_Space_T.{h,cpp}, but a quick fix broke - something, I will try again soon. - -Tue Sep 9 22:08:36 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * server/HTTP_Server.{cpp,h}: Changes which answer questions - brought up in design review. Mostly additional comments. Also - changes to have a task spawn a number of threads rather than - iterating through calls to the activate method. - -Fri Aug 29 11:07:43 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * server/*.{cpp,h}: Changes to make JAWS comply with ACE - coding standards. In particular, broke up CGI method in - HTTP_Request, remove dependency on static object in - HTTP_Config, and answered all questions from Doug. - -Tue Aug 26 21:34:11 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu> - - * clients/Caching/ID_Generator.h: Made some minor changes to - the programming style. - -Sun Aug 10 13:44:14 1997 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - - * server/HTTP_Helpers.cpp (HTTP_date): We can't use - ACE_Thread_Mutex directly in the code since that breaks - platforms that lack threads. - -Wed Aug 6 16:45:48 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * server/main.cpp: Added another signal handler so I can kill JAWS - when purifying. - -Mon Aug 4 00:07:24 1997 Nanbor Wang <nw1@cumbia.cs.wustl.edu> - - * server/main.cpp (main): Service configurator now doesn't return - -1 when errors occur. Therefore, we check for not success - instread of fail when opening the service contifurator. - -Mon Jul 28 04:54:01 1997 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - - * server/Parse_Headers.cpp (place): Reformatted the same - stuff again... - -Mon Jul 28 01:48:40 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * server/README: Updated the README file to reflect new features - and server flags. - - * server/Parse_Headers.cpp (place): Fixed a compile error found by - David Levine. I don't know why this was compiling for me. - -Sun Jul 27 21:56:12 1997 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> - - * server/Parse_Headers.cpp (place): Reformatted a few things - to make them easier to read. - -Fri Jul 25 02:05:20 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * server/HTTP_Server.cpp: Changes to allow the thread creation - flags to be specified from the command line. Removed some code - that was used to track down memory leaks. - - * server/HTTP_Helpers.{h,cpp}: Added another method - HTTP_date (char *), so that a buffer to which the date will be - written to can be passed into the HTTP_date routine. - - * server/HTTP_Response.cpp: Changed some code so that the baseline - implementation can be created at compile time. - - * server/IO.cpp: Changed some code so that the baseline - implementation can be created at compile time. - - * server/main.cpp: Changed the signal handler to wait for threads - to die. However, this code will remain dormant for now, until - we design a nice way to shut down a thread pool. - - * server/svc.conf: Changes to add some other entries people can - try. - - * server/Makefile: Changes to allow JAWS to be built with static - linking only, to ease the process of using Purify and Quantify. - Dynamic linking will be re-configured in the future when we have - all the memory leaks worked out. - -Mon Jul 22 16:55:00 1997 Chris Cleeland <cleeland@cs.wustl.edu> - - * Changed references to WRAPPER_ROOT to ACE_ROOT in every - place except ChangeLog entries. - -Mon Jul 21 15:09:03 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * server/HTTP_Server.{h,cpp}: Got rid of Solaris specific - debugging code (thr_create, thr_join). - -Fri Jul 11 02:15:12 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * server/HTTP_Response.cpp: Changes so that the HEADER is not - rebuilt all the time. - - * server/IO.cpp (JAWS_Synch_IO::transmit_file): Changed to use - writev () instead of multiple send ()s. - -Thu Jul 10 01:53:48 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * server/HTTP_Helpers.{h,cpp}: Changed so that creating the date - header is less expensive. - - * server/HTTP_Response.cpp: Changes to match above. - - * clients/Caching/README: Added to the repository. - - * clients/Caching/http_handler.{h,cpp}: Added some comments to the - code. Also, moved the code to check to see if the file is in - cache already into the connector, so that a connect is not - done if the file is cached. This required a filename () - accessor method to be added to the handler. - -Wed Jul 9 13:08:00 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * clients/Caching/http_handler.cpp (svc): Added code to check to - see if the file is already cached before trying to cache it. - - * clients/Caching/http_client.cpp (main): Added a comment block at - the top of the file. - - * server/HTTP_Handler.cpp and IO.cpp: Changes that were needed - since JAWS_File is now integrated into ACE (as ACE_Filecache). - - * server/HTTP_Server.*: Attempting to track down memory leak. - This code may be in a state a flux for the next week or so. - -Mon Jul 7 23:40:13 1997 Nanbor Wang <nw1@cumbia.cs.wustl.edu> - - * clients/WebSTONE/src/webclient.c: Removed a bunch of THREAD - storage class decorators from function makeload() because auto - variables can't be declared as TSS. Also #ifdef random number - generation code so it uses rand_r on Solaris() and rand() on NT. - - * clients/WebSTONE/src/rexec.c: Modified prototypes for - PassOutputThread() and PassErrorThread() to avoid warnings from - MSVC. Still need more refinement on this one. ;( - - * clients/WebSTONE/src/webmaster.c: Added prototype for - HostEntCpy() and a null statement to avoid warning from MSVC. - - * clients/WebSTONE/src/gendata/genrand.mak: - * clients/WebSTONE/src/master/webmaster.mak: - * clients/WebSTONE/src/client/webclient.mak: Updated file paths - and dependencies. - -Sat Jul 5 14:19:20 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu> - - * Renamed the client directory "clients" to reflect the fact that - we've got multiple client tests now. Also, moved the original - contents of the client directory into a new clients/Blobby - directory and added Caching and WebSTONE. - - * Moved the ChangeLog from the ./server directory into the ./JAWS - directory since we want to apply ChangeLog entries to all - aspects of JAWS, not just the server. - - * HTTP_Server.cpp (open): Added THR_DETACHED as a flag to - activate(). This should prevent a memory leak that was - occurring since no thread was ever "joining" the threads that - were spawned. - -Thu Jul 3 23:33:47 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * HTTP_Response.cpp (~HTTP_Response): changed delete to delete [], - removing a major memory leak from JAWS. Still to find is a - memory lead associated with thread per request. Nanbor's fix is - about what I did to EMPTY_HEADER too. - - * JAWS_File.cpp: David points out I need to add specializations - for the GNU C++ compiler. - -Thu Jul 3 22:38:04 1997 Nanbor Wang <nw1@cumbia.cs.wustl.edu> - - * HTTP_Response.cpp (build_headers): Added explicit cast for - EMPTY_HEADER from (const char *) to (char *) in order to make - MSVC happy. This is probably very badly styled. But - HTTP_HEADER is only used in places that require (const char *), - so I think it's safe to do so. - -Thu Jul 3 15:34:30 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * HTTP_Response.cpp (HTTP_Response): Moved a call to delete out of - constructor into the destructor where it belongs. - -Thu Jul 3 12:28:44 1997 Sumedh Mungee <sumedh@lindy.cs.wustl.edu> - - * Parse_Headers.cpp: Line 137, Changed pt to ptr (it was a typo) - -Wed Jul 2 22:33:52 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * JAWS_File.{h,cpp}: Fixed deadlock bug, since RW_MUTEX's are not - recursive (drat!). - -Wed Jul 2 21:03:12 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu> - - * Made a major pass through all the code and made the style - consistent with that found in ACE. - -Wed Jul 2 14:33:27 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * JAWS_File.cpp: Added double check locking pattern to the fetch - routine of the virtual filesystem. This slows things down - considerably for files which change frequently and for cache - misses in general, but it should be correct. - -Wed Jul 2 14:59:29 1997 Nanbor Wang <nw1@cumbia.cs.wustl.edu> - - * HTTP_Helpers.cpp (HTTP_decode_string): Added cast from strtol to - char explicitly to prevent NT from complaining. - -Wed Jul 2 14:33:27 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * JAWS_File.{h.cpp}: Modifications to support RW_MUTEX for both - the virtual filesystem and the low level ACE_File. Next major - change will be to re-implement the virtual filesystem to use a - hash table ala ACE_Hash_Map_Manager. - -Wed Jul 2 00:23:22 1997 James C Hu <jxh@polka.cs.wustl.edu> - - * HTTP_Server.{h,cpp}: Changed parsing of options to use - mnemonic names rather than numbers. Added a new thread - strategy, THROTTLE. This is thread-per-request until some - maximum number. Unfortunately, it does not become thread-pool - at this point... yet :-). Added a new option to pass in a - backlog value. - - * svc.conf: adjusted to account for the changed options. - - * README: changed to explain new svc.conf options. - - * JAWS_File.cpp: Changed it so that when the file is added to the - cache, it is also acquired. When it is removed from the cache, - it is released. This is so that the reference count is at least - one while the file is in the cache. Also, fixed the virtual - filesystem by giving it a simple replacement strategy if the - table is full. For now, it will replace the largest file in the - cache with the request for the current file. - -Tue Jul 1 19:13:44 1997 Nanbor Wang <nw1@cumbia.cs.wustl.edu> - - * JAWS_File.cpp (JAWS_File): Changes the creation method of a - cached copy from using plain file copy to using mmap and memcpy. - This avoid the extra complexity caused by FILE_FLAG_OVERLAPPED. - -Sat Jun 28 11:55:38 1997 James C Hu <jxh@tango.cs.wustl.edu> - - * HTTP_Handler.cpp (open): fixed a typo - - * HTTP_Handler.cpp (cgi): fixed a bug, strdup fails on NULL - -Sat Jun 28 16:14:38 1997 Sumedh Mungee <sumedh@cumbia.cs.wustl.edu> - - * HTTP_Handler.cpp (open): Changed socket send-buffer to 64k - -Wed Jun 25 01:11:50 1997 Nanbor Wang <nw1@dingo.wolfpack.cs.wustl.edu> - - * JAWS_File.cpp: Removed initialization of vfs_ (see below) and - changed all references of vfs_ to - JAWS_Virtual_Filesystem::instance (). Thanks to Detlef Becker - <detlef.becker@med.siemens.de> for pointing this out. - (init): Added initialization of reference_count_ to 0. - - * JAWS_File.h: Removed private member JAWS_Virtual_Filesystem vfs_ - since JAWS_Virtual_Filesystem is a singleton already. Caching - it doesn't seem to win much and depends on the order of static - variables initialization, which is non-portable. - -Fri Jun 13 02:42:39 1997 Nanbor Wang <nw1@dingo.wolfpack.cs.wustl.edu> - - * jaws.{mdp,mak}: Updated to incoporate latest changes. - -Thu Jun 5 14:13:22 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * HTTP_Server.cpp: Added more informative comments to the - asynch_thread_pool() method due to comments posed by Mehul - (MehulM@spa-marketing.com). - -Wed Jun 4 23:00:47 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * JAWS_File.cpp (JAWS_File): Fixed a bug where JAWS_File wanted - the file to have write permissions before openning it. This is - now only true if the file is to be written to. - -Wed Jun 4 22:30:41 1997 Nanbor Wang <nw1@dingo.wolfpack.cs.wustl.edu> - - * main.cpp (main): Changed SIGCLD to SIGCHLD for better - portability. - - * IO.cpp (transmit_file): The third argument passed - ACE_Asynch_Transmit_File::Header_And_Trailer() should be an - address (&). - -Mon Jun 2 16:35:18 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * HTTP_Helpers.cpp: Serious bug in base64 decoder routine - squashed. Didn't initialize an array with 0's. The original - source had them declared static. Also, changed sizeof alphabet_ - to strlen (alphabet_), because original code had alphabet_ as an - array, but my translation has alphabet_ as a pointer. - - * HTTP_Response.cpp: Added some code to check to see if the - decoder returns 0. If it does, flag this as a failed - authorization attempt. - - * HTTP_Handler.cpp: Added a "\r\n" to the confirmation message in - receive_file_complete () method. - - * HTTP_Request.cpp: In parse_request_line (), created conditional - expressions in the debugging print statement so that a null - string will not cause the server to crash. - - * HTTP_Response.cpp: - (1) cgi_resposnse () no longer has to wait for the process to - die. The fix to ACE_Process of closing down child handles was - enough to get the connection to die on its own. - (2) Mike (mrm@cisco.com) pointed out that the output for CGI - responses was not create. The fix was to output a small header - before execing the CGI program. - - * test.cgi: a sample cgi program to use when testing the JAWS - server. - -Sat May 31 13:34:14 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * *.h, *.cpp: Changed include lines from "apps/JAWS/server/..." to - "..." to avoid dependencies on the WRAPPER_ROOT tree. - - * jaws.auth: This file is added to be a sample authorization - file. This is the file which JAWS is currently hardcoded to use - to verify authenticated PUT requests. - - * HTTP_Response.cpp: Added code to normal_response () and to - error_response () to better handle authentication. Now, all PUT - methods are required to be authenticated. The strategy now is - very simple, there is only one authorization file and only one - realm of authorization. This will be easy to bring up to spec - later, though. - - * HTTP_Helpers.h: Added alphabet_ data member for the - decode/encode base64 methods. - - * HTTP_Helpers.cpp: Added HTTP_decode_base64 and - HTTP_encode_base64 methods. HTTP_encode_base64 is currently not - used, but HTTP_decode_base64 is being used for Basic - authentication. - - * *.h, *.cpp: Changed include lines from "JAWS/server/..." to - "apps/JAWS/server/..." to fix an error reported by Rob Payne - <repayne@jeeves.net>. This was really due to a bug in the - platform_macros.GNU file not adding INCLDIRS to the CCFLAGS - during compilation, but in the case other platforms have the - same problem, changing the source is a better fix. - -Fri May 30 23:19:03 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * README: updated to better reflect the status of JAWS. - - * main.cpp (handler): Added a signal handler for SIGINT, and also - set SIG_IGN for SIGCLD. The first handler calls exit (0) if - SIGINT is received, so that static destructors are called. The - second is so that zombies are not formed. - - * HTTP_Response.cpp (cgi_response): Debugging. (1) The CGI - program spewed output on the server side instead of the client. - (2) The CGI program had environment variable being set even - though there was no associated value. (3) The client connection - was not being closed after the CGI program executed. Problem - (1) was fixed by using set_handles () in cgi_options. Problem - (2) was fixed by testing to see if the header had an associated - value before assigning it to the environment. Problem (3) was - fixed by sending an empty confirmation message after waiting for - the CGI process to exit. - - * HTTP_Request.cpp (cgi): Debugging. It was not looking for a - ".cgi" extension during the stage of determining if a URI is a - CGI script. This will later be fixed when a full mime-type - facility is implemented. - -Fri May 23 00:45:24 1997 James C Hu <jxh@lambada.cs.wustl.edu> - - * JAWS/server: Debugged HTTP/0.9 GET requests, and HTTP/1.0 PUT - requests. Both work now, with minor problems: e.g. the - Content-type header doesn't really work (always sends text/html - as the content type). What it should do is see if the request - included a content type header, and use it, otherwise, resort to - some file suffix and mimetype matching algorithm. - - * Parse_Headers.h (complete_header_line): Added comments - explaining the new return values of -1, 0 and 1 (see comments - for Parse_Headers.cpp below). - - * Parse_Headers.cpp (complete_header_line): modified so that it - returns three values instead of two. -1 means that an end of - line was encountered, but nothing after it yet to verify if it - is really a complete header line. 0 means the read cut off in - the middle of a line (no end of line character found). 1 means - the line is verified to be a complete header line. - - * HTTP_Request.cpp (parse_request): Changed the test so that an - HTTP/0.9 request would be sent immediately after being issued. - This involved changes to Parse_Headers. - - * JAWS_File.cpp (acquire): Changes involved adding some debugging - statements to understand why PUT was not working. Discovered a - bug in how ACE_Mem_Map was being used. - - * HTTP_Request.cpp (content_length): Changed to extract value from - the headers, if available. - -Thu May 22 16:22:03 1997 James C. Hu <jxh@pride.cs.wustl.edu> - - * HTTP_Request.cpp (cgi_env): Added a cast so that a warning - generated by SGI C++ compiler goes away. - - * Makefile: Reordered the way the files are compiled/linked so - that useless warnings about object files not resolving any - symbols go away. - -Wed May 21 15:33:33 1997 James C Hu <jxh@polka.cs.wustl.edu> - - * JAWS_File.{h,cpp}: Added some comments. Will add a copy () - method soon, after I move my workspace over to lambada. - - * JAWS_Tilde.{h,cpp}: This class is being implemented but has not - been added to the repository yet, since JAWS as yet does not use - it, and it is still being developed. This will be a cache of - the expansions from ~foo to the home directory of foo. - -Tue May 20 22:49:24 1997 James C Hu <jxh@polka.cs.wustl.edu> - - * JAWS_File.{h,cpp}: New class created to replace the old kludgy - VFS thingy. This new cached virtual filesystem is way cool: a - file which is being retrieved can be simultaneously replaced - without causing either reader or writer to wait. Reference - counts are maintained now, which was missing in VFS. Also, - there is no longer a dependency on the JXH_List template now, - which is a plus. - - * IO.cpp: Changes to adapt to the new virtual filesystem. The - changes all involved simplifications to the programming - interface. - - * HTTP_Handler.cpp: Changes required to deal with the more - generic error responses returned from the JAWS_File/JAWS_IO - interface. This generality will make it easier to adapt - JAWS_File and JAWS_IO into ACE. - - * test_JAWS_File.cpp: A test program written to see if the new - virtual filesystem works the way I expect it to. diff --git a/apps/JAWS/Makefile b/apps/JAWS/Makefile deleted file mode 100644 index 3911c274277..00000000000 --- a/apps/JAWS/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for JAWS -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -INFO = README - -DIRS = server \ - clients - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU - diff --git a/apps/JAWS/README b/apps/JAWS/README deleted file mode 100644 index e67da72afd1..00000000000 --- a/apps/JAWS/README +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains the source code and test examples for JAWS, -which is a high-performance HTTP Web server written with ACE. For -more information on JAWS, please see - -http://www.cs.wustl.edu/~jxh/research/ - -The subdirectories in this directory contain the following components - - . clients -- 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. diff --git a/apps/JAWS/clients/Blobby/Blob.cpp b/apps/JAWS/clients/Blobby/Blob.cpp deleted file mode 100644 index 5dd7228932e..00000000000 --- a/apps/JAWS/clients/Blobby/Blob.cpp +++ /dev/null @@ -1,92 +0,0 @@ -// $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_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -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_Base<ACE_HANDLE, ACE_Svc_Tuple <ACE_Blob_Handler> *, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Iterator<ACE_HANDLE, ACE_Svc_Tuple <ACE_Blob_Handler> *, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Reverse_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>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Connector<ACE_Blob_Handler, ACE_SOCK_CONNECTOR> -#pragma instantiate ACE_Svc_Tuple <ACE_Blob_Handler> -#pragma instantiate ACE_Map_Entry<ACE_HANDLE, ACE_Svc_Tuple <ACE_Blob_Handler> *> -#pragma instantiate ACE_Map_Iterator_Base<ACE_HANDLE, ACE_Svc_Tuple <ACE_Blob_Handler> *, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Iterator<ACE_HANDLE, ACE_Svc_Tuple <ACE_Blob_Handler> *, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Reverse_Iterator<ACE_HANDLE, ACE_Svc_Tuple <ACE_Blob_Handler> *, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Manager<ACE_HANDLE, ACE_Svc_Tuple <ACE_Blob_Handler> *, ACE_SYNCH_RW_MUTEX> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/apps/JAWS/clients/Blobby/Blob.h b/apps/JAWS/clients/Blobby/Blob.h deleted file mode 100644 index 7f7c79076ec..00000000000 --- a/apps/JAWS/clients/Blobby/Blob.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -*- 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 deleted file mode 100644 index 65951f54d5a..00000000000 --- a/apps/JAWS/clients/Blobby/Blob_Handler.cpp +++ /dev/null @@ -1,341 +0,0 @@ -// $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")) != 0) - buf_ptr += 4; - else if ((buf_ptr = ACE_OS::strstr (buf, "\n\n")) != 0) - 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 == 0) || (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 (0, " \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 (0, "\n\r", &lasts); - ACE_ERROR_RETURN((LM_ERROR, "%p\n", description), -1); - } - ACE_NOTREACHED(return 0); -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Svc_Handler <ACE_SOCK_STREAM, ACE_NULL_SYNCH>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Svc_Handler <ACE_SOCK_STREAM, ACE_NULL_SYNCH> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ - diff --git a/apps/JAWS/clients/Blobby/Blob_Handler.h b/apps/JAWS/clients/Blobby/Blob_Handler.h deleted file mode 100644 index d58202afe5a..00000000000 --- a/apps/JAWS/clients/Blobby/Blob_Handler.h +++ /dev/null @@ -1,110 +0,0 @@ -/* -*- 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/SOCK_Stream.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 deleted file mode 100644 index 337c0b3accd..00000000000 --- a/apps/JAWS/clients/Blobby/Makefile +++ /dev/null @@ -1,342 +0,0 @@ -#---------------------------------------------------------------------------- -# %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)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_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 \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/iosfwd.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Connector.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Svc_Handler.i \ - $(ACE_ROOT)/ace/Connector.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - Blob_Handler.h -.obj/Blob_Handler.o .shobj/Blob_Handler.so: Blob_Handler.cpp Blob_Handler.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/iosfwd.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Svc_Handler.i -.obj/Options.o .shobj/Options.so: Options.cpp Blob.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/iosfwd.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Connector.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Svc_Handler.i \ - $(ACE_ROOT)/ace/Connector.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - Blob_Handler.h \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/Get_Opt.i \ - $(ACE_ROOT)/ace/ARGV.h \ - $(ACE_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 deleted file mode 100644 index 0f2fa8a145e..00000000000 --- a/apps/JAWS/clients/Blobby/Options.cpp +++ /dev/null @@ -1,79 +0,0 @@ -// $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_ == 0 || this->filename_ == 0) - { - 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_ (0), - port_ (ACE_DEFAULT_HTTP_SERVER_PORT), - filename_ (0), - length_ (0), - offset_ (0), - operation_ ('r'), - debug_ (0) -{ -} diff --git a/apps/JAWS/clients/Blobby/Options.h b/apps/JAWS/clients/Blobby/Options.h deleted file mode 100644 index 086fa003a37..00000000000 --- a/apps/JAWS/clients/Blobby/Options.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- 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 deleted file mode 100644 index 1a1cadf91ca..00000000000 --- a/apps/JAWS/clients/Blobby/README +++ /dev/null @@ -1,33 +0,0 @@ -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 deleted file mode 100644 index 20a2e1b8e98..00000000000 --- a/apps/JAWS/clients/Blobby/blobby.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- 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 deleted file mode 100644 index 471c428c2d5..00000000000 --- a/apps/JAWS/clients/Blobby/blobby.mak +++ /dev/null @@ -1,958 +0,0 @@ -# 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 /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-CPP_PROJ=/nologo /MD /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 aced.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=aced.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=\
- "..\..\..\..\ace\config-win32.h"\
- ".\Blob.h"\
- ".\Blob_Handler.h"\
- ".\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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.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\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Get_Opt.h"\
- {$(INCLUDE)}"\ace\Get_Opt.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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\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_=\
- "..\..\..\..\ace\config-win32.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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_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\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_Handler.obj" : $(SOURCE) $(DEP_CPP_BLOB_) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "blobby - Win32 Debug"
-
-DEP_CPP_BLOB_=\
- "..\..\..\..\ace\config-win32.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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_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\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_Handler.obj" : $(SOURCE) $(DEP_CPP_BLOB_) "$(INTDIR)"
-
-
-!ENDIF
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\Blob.cpp
-DEP_CPP_BLOB_C=\
- "..\..\..\..\ace\config-win32.h"\
- ".\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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.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\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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\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=\
- ".\ace\Set.cpp"\
- ".\ace\Set.h"\
- ".\ace\Set.i"\
- ".\ace\Stack.cpp"\
- ".\ace\Stack.h"\
- ".\ace\Stack.i"\
- ".\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\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\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 differdeleted file mode 100644 index 3c538fcbc15..00000000000 --- a/apps/JAWS/clients/Blobby/blobby.mdp +++ /dev/null diff --git a/apps/JAWS/clients/Caching/Caching.mak b/apps/JAWS/clients/Caching/Caching.mak deleted file mode 100644 index 460dfab5a3d..00000000000 --- a/apps/JAWS/clients/Caching/Caching.mak +++ /dev/null @@ -1,824 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-!IF "$(CFG)" == ""
-CFG=testing - Win32 Debug
-!MESSAGE No configuration specified. Defaulting to testing - Win32 Debug.
-!ENDIF
-
-!IF "$(CFG)" != "http_client - Win32 Release" && "$(CFG)" !=\
- "http_client - Win32 Debug" && "$(CFG)" != "testing - 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 "Caching.mak" CFG="testing - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "http_client - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "http_client - Win32 Debug" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "testing - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-!ERROR An invalid configuration is specified.
-!ENDIF
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE
-NULL=nul
-!ENDIF
-################################################################################
-# Begin Project
-# PROP Target_Last_Scanned "testing - Win32 Debug"
-
-!IF "$(CFG)" == "http_client - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "http_client\Release"
-# PROP BASE Intermediate_Dir "http_client\Release"
-# PROP BASE Target_Dir "http_client"
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "."
-# PROP Intermediate_Dir ".\Release"
-# PROP Target_Dir "http_client"
-OUTDIR=.\.
-INTDIR=.\Release
-
-ALL : "$(OUTDIR)\http_client.exe"
-
-CLEAN :
- -@erase "$(INTDIR)\http_client.obj"
- -@erase "$(INTDIR)\http_handler.obj"
- -@erase "$(OUTDIR)\http_client.exe"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
- if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
- /Fp"$(INTDIR)/http_client.pch" /YX /Fo"$(INTDIR)/" /c
-CPP_OBJS=.\.\Release/
-CPP_SBRS=.\.
-
-.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) $<
-
-RSC=rc.exe
-# 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)/http_client.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)/http_client.pdb" /machine:I386 /out:"$(OUTDIR)/http_client.exe"\
-
-LINK32_OBJS= \
- "$(INTDIR)\http_client.obj" \
- "$(INTDIR)\http_handler.obj"
-
-"$(OUTDIR)\http_client.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "http_client - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "http_client\Debug"
-# PROP BASE Intermediate_Dir "http_client\Debug"
-# PROP BASE Target_Dir "http_client"
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "."
-# PROP Intermediate_Dir ".\Debug"
-# PROP Target_Dir "http_client"
-OUTDIR=.\.
-INTDIR=.\Debug
-
-ALL : "$(OUTDIR)\http_client.exe"
-
-CLEAN :
- -@erase "$(INTDIR)\http_client.obj"
- -@erase "$(INTDIR)\http_handler.obj"
- -@erase "$(INTDIR)\vc40.idb"
- -@erase "$(INTDIR)\vc40.pdb"
- -@erase "$(OUTDIR)\http_client.exe"
- -@erase "$(OUTDIR)\http_client.ilk"
- -@erase "$(OUTDIR)\http_client.pdb"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
- if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-# 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)/http_client.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
-CPP_OBJS=.\.\Debug/
-CPP_SBRS=.\.
-
-.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) $<
-
-RSC=rc.exe
-# 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)/http_client.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 aced.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=aced.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)/http_client.pdb" /debug /machine:I386\
- /out:"$(OUTDIR)/http_client.exe"
-LINK32_OBJS= \
- "$(INTDIR)\http_client.obj" \
- "$(INTDIR)\http_handler.obj"
-
-"$(OUTDIR)\http_client.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "testing - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "testing\Debug"
-# PROP BASE Intermediate_Dir "testing\Debug"
-# PROP BASE Target_Dir "testing"
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "."
-# PROP Intermediate_Dir ".\Debug"
-# PROP Target_Dir "testing"
-OUTDIR=.\.
-INTDIR=.\Debug
-
-ALL : "$(OUTDIR)\testing.dll"
-
-CLEAN :
- -@erase "$(INTDIR)\ID_Generator.obj"
- -@erase "$(INTDIR)\Local_Locator.obj"
- -@erase "$(INTDIR)\URL_Locator.obj"
- -@erase "$(INTDIR)\URL_Properties.obj"
- -@erase "$(INTDIR)\vc40.idb"
- -@erase "$(INTDIR)\vc40.pdb"
- -@erase "$(OUTDIR)\testing.dll"
- -@erase "$(OUTDIR)\testing.exp"
- -@erase "$(OUTDIR)\testing.ilk"
- -@erase "$(OUTDIR)\testing.lib"
- -@erase "$(OUTDIR)\testing.pdb"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-"$(INTDIR)" :
- if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-
-CPP=cl.exe
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\
- /Fp"$(INTDIR)/testing.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
-CPP_OBJS=.\.\Debug/
-CPP_SBRS=.\.
-
-.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) $<
-
-MTL=mktyplib.exe
-# ADD BASE MTL /nologo /D "_DEBUG" /win32
-# ADD MTL /nologo /D "_DEBUG" /win32
-MTL_PROJ=/nologo /D "_DEBUG" /win32
-RSC=rc.exe
-# 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)/testing.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:windows /dll /debug /machine:I386
-# ADD LINK32 aced.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:windows /dll /debug /machine:I386
-LINK32_FLAGS=aced.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:windows /dll /incremental:yes\
- /pdb:"$(OUTDIR)/testing.pdb" /debug /machine:I386 /out:"$(OUTDIR)/testing.dll"\
- /implib:"$(OUTDIR)/testing.lib"
-LINK32_OBJS= \
- "$(INTDIR)\ID_Generator.obj" \
- "$(INTDIR)\Local_Locator.obj" \
- "$(INTDIR)\URL_Locator.obj" \
- "$(INTDIR)\URL_Properties.obj"
-
-"$(OUTDIR)\testing.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
-
-################################################################################
-# Begin Target
-
-# Name "http_client - Win32 Release"
-# Name "http_client - Win32 Debug"
-
-!IF "$(CFG)" == "http_client - Win32 Release"
-
-!ELSEIF "$(CFG)" == "http_client - Win32 Debug"
-
-!ENDIF
-
-################################################################################
-# Begin Source File
-
-SOURCE=.\http_handler.cpp
-DEP_CPP_HTTP_=\
- "..\..\..\..\ace\config-win32.h"\
- ".\http_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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.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\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Filecache.h"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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\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)\http_handler.obj" : $(SOURCE) $(DEP_CPP_HTTP_) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\http_client.cpp
-DEP_CPP_HTTP_C=\
- "..\..\..\..\ace\config-win32.h"\
- ".\http_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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.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\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\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\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)\http_client.obj" : $(SOURCE) $(DEP_CPP_HTTP_C) "$(INTDIR)"
-
-
-# End Source File
-# End Target
-################################################################################
-# Begin Target
-
-# Name "testing - Win32 Debug"
-################################################################################
-# Begin Source File
-
-SOURCE=.\URL_Properties.cpp
-DEP_CPP_URL_P=\
- "..\..\..\..\ace\config-win32.h"\
- ".\URL_Array_Helper.cpp"\
- ".\URL_Array_Helper.h"\
- ".\URL_Properties.h"\
- ".\URL_Properties.i"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Array.cpp"\
- {$(INCLUDE)}"\ace\Array.h"\
- {$(INCLUDE)}"\ace\Array.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Log_Msg.h"\
- {$(INCLUDE)}"\ace\Log_Priority.h"\
- {$(INCLUDE)}"\ace\Log_Record.h"\
- {$(INCLUDE)}"\ace\Log_Record.i"\
- {$(INCLUDE)}"\ace\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\SString.h"\
- {$(INCLUDE)}"\ace\SString.i"\
- {$(INCLUDE)}"\ace\stdcpp.h"\
- {$(INCLUDE)}"\ace\Trace.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\URL_Properties.obj" : $(SOURCE) $(DEP_CPP_URL_P) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\Local_Locator.cpp
-DEP_CPP_LOCAL=\
- "..\..\..\..\ace\config-win32.h"\
- ".\ID_Generator.h"\
- ".\Local_Locator.h"\
- ".\Local_Locator.i"\
- ".\URL_Locator.h"\
- ".\URL_Locator.i"\
- ".\URL_Properties.h"\
- ".\URL_Properties.i"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Array.cpp"\
- {$(INCLUDE)}"\ace\Array.h"\
- {$(INCLUDE)}"\ace\Array.i"\
- {$(INCLUDE)}"\ace\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.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\Mem_Map.h"\
- {$(INCLUDE)}"\ace\Mem_Map.i"\
- {$(INCLUDE)}"\ace\Memory_Pool.h"\
- {$(INCLUDE)}"\ace\Memory_Pool.i"\
- {$(INCLUDE)}"\ace\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\Signal.h"\
- {$(INCLUDE)}"\ace\Signal.i"\
- {$(INCLUDE)}"\ace\SString.h"\
- {$(INCLUDE)}"\ace\SString.i"\
- {$(INCLUDE)}"\ace\stdcpp.h"\
- {$(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\Synch.h"\
- {$(INCLUDE)}"\ace\Synch.i"\
- {$(INCLUDE)}"\ace\Synch_T.cpp"\
- {$(INCLUDE)}"\ace\Synch_T.h"\
- {$(INCLUDE)}"\ace\Synch_T.i"\
- {$(INCLUDE)}"\ace\Thread.h"\
- {$(INCLUDE)}"\ace\Thread.i"\
- {$(INCLUDE)}"\ace\Trace.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\Local_Locator.obj" : $(SOURCE) $(DEP_CPP_LOCAL) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\URL_Locator.cpp
-DEP_CPP_URL_L=\
- "..\..\..\..\ace\config-win32.h"\
- ".\URL_Locator.h"\
- ".\URL_Locator.i"\
- ".\URL_Properties.h"\
- ".\URL_Properties.i"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Array.cpp"\
- {$(INCLUDE)}"\ace\Array.h"\
- {$(INCLUDE)}"\ace\Array.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Log_Msg.h"\
- {$(INCLUDE)}"\ace\Log_Priority.h"\
- {$(INCLUDE)}"\ace\Log_Record.h"\
- {$(INCLUDE)}"\ace\Log_Record.i"\
- {$(INCLUDE)}"\ace\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\SString.h"\
- {$(INCLUDE)}"\ace\SString.i"\
- {$(INCLUDE)}"\ace\stdcpp.h"\
- {$(INCLUDE)}"\ace\Trace.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\URL_Locator.obj" : $(SOURCE) $(DEP_CPP_URL_L) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\ID_Generator.cpp
-DEP_CPP_ID_GE=\
- "..\..\..\..\ace\config-win32.h"\
- ".\ID_Generator.h"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Log_Msg.h"\
- {$(INCLUDE)}"\ace\Log_Priority.h"\
- {$(INCLUDE)}"\ace\Log_Record.h"\
- {$(INCLUDE)}"\ace\Log_Record.i"\
- {$(INCLUDE)}"\ace\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\SString.h"\
- {$(INCLUDE)}"\ace\SString.i"\
- {$(INCLUDE)}"\ace\stdcpp.h"\
- {$(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\Synch.h"\
- {$(INCLUDE)}"\ace\Synch.i"\
- {$(INCLUDE)}"\ace\Synch_T.cpp"\
- {$(INCLUDE)}"\ace\Synch_T.h"\
- {$(INCLUDE)}"\ace\Synch_T.i"\
- {$(INCLUDE)}"\ace\Thread.h"\
- {$(INCLUDE)}"\ace\Thread.i"\
- {$(INCLUDE)}"\ace\Trace.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\ID_Generator.obj" : $(SOURCE) $(DEP_CPP_ID_GE) "$(INTDIR)"
-
-
-# End Source File
-# End Target
-# End Project
-################################################################################
diff --git a/apps/JAWS/clients/Caching/Caching.mdp b/apps/JAWS/clients/Caching/Caching.mdp Binary files differdeleted file mode 100644 index 979b459d95b..00000000000 --- a/apps/JAWS/clients/Caching/Caching.mdp +++ /dev/null diff --git a/apps/JAWS/clients/Caching/ID_Generator.cpp b/apps/JAWS/clients/Caching/ID_Generator.cpp deleted file mode 100644 index fa3e1cbe4be..00000000000 --- a/apps/JAWS/clients/Caching/ID_Generator.cpp +++ /dev/null @@ -1,59 +0,0 @@ -// $Id$ - -#if !defined (ACE_ID_GENERATOR_C) -#define ACE_ID_GENERATOR_C - -#define ACE_BUILD_DLL -#include "ID_Generator.h" - -time_t ACE_ID_Generator::last_time_ = 0; - -size_t ACE_ID_Generator::last_number_ = 0; - -ACE_SYNCH_MUTEX *ACE_ID_Generator::lock_ = 0; - -char * -ACE_ID_Generator::get_new_id (char *id) -{ - time_t t; - size_t sn; - - ACE_ID_Generator::get_serial_id (t, sn); - ACE_NEW_RETURN (id, char [ACE_OFFER_ID_LENGTH], 0); - - ACE_OS::sprintf (id, "%014d%06d", t, sn); - return id; -} - -void -ACE_ID_Generator::get_serial_id (time_t &t, size_t &s) -{ - ACE_MT (ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, *ACE_ID_Generator::get_lock ())); - ACE_OS::time (&t); - - if (t != ACE_ID_Generator::last_time_) - { - ACE_ID_Generator::last_time_ = t; - s = ACE_ID_Generator::last_number_ = 0; - } - else - s = ACE_ID_Generator::last_number_++; -} - -ACE_SYNCH_MUTEX * -ACE_ID_Generator::get_lock (void) -{ -#if defined (ACE_HAS_THREADS) - if (ACE_ID_Generator::lock_ == 0) - { - ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon, *ACE_Static_Object_Lock::instance (), 0)); - - // Double-checked Locking Optimization. - if (ACE_ID_Generator::lock_ == 0) - ACE_NEW_RETURN (ACE_ID_Generator::lock_, ACE_SYNCH_MUTEX, 0); - } -#endif /* ACE_HAS_THREADS */ - return ACE_ID_Generator::lock_; -} - -#endif /* ACE_ID_GENERATOR_C */ diff --git a/apps/JAWS/clients/Caching/ID_Generator.h b/apps/JAWS/clients/Caching/ID_Generator.h deleted file mode 100644 index 556ce8dbfde..00000000000 --- a/apps/JAWS/clients/Caching/ID_Generator.h +++ /dev/null @@ -1,55 +0,0 @@ -/* -*- C++ -*- */ - -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// none -// -// = FILENAME -// ID_Generator.h -// -// = AUTHOR -// Nanbor Wang -// -// ============================================================================ - -#if !defined (ACE_ID_GENERATOR_H) -#define ACE_ID_GENERATOR_h - -#include "ace/Synch.h" - -#define ACE_OFFER_ID_LENGTH 21 - -class ACE_Export ACE_ID_Generator -// Nanbor, please make sure you use the official ACE "= TITLE" syntax -// here. Also, what is "beckry's algorithm?" Do you mean "Berkeley's -// algorithm?" -// Generate an offer ID according to current time and -// avoid duplicate ID. Using a similar method like -// beckry's algorithm. -{ -public: - static char *get_new_id (char *id); - // allocate a new ID string and point <id> to it. - -private: - static void get_serial_id (time_t &t, size_t &s); - // Atomically get info required to generate an offer ID. - - static ACE_SYNCH_MUTEX *get_lock (void); - // Get the lock instance. - - static time_t last_time_; - // Record the time last offer ID generated. - - static size_t last_number_; - // Record serial number of last offer ID with same - // generation time. - - static ACE_SYNCH_MUTEX *lock_; - // mutex to access private member. -}; - -#endif /* ACE_ID_GENERATOR_H */ diff --git a/apps/JAWS/clients/Caching/Local_Locator.cpp b/apps/JAWS/clients/Caching/Local_Locator.cpp deleted file mode 100644 index 9799a4f21b3..00000000000 --- a/apps/JAWS/clients/Caching/Local_Locator.cpp +++ /dev/null @@ -1,150 +0,0 @@ -// $Id$ - -#if !defined (ACE_LOCAL_LOCATOR_C) -#define ACE_LOCAL_LOCATOR_C - -#define ACE_BUILD_DLL -#include "Local_Locator.h" - -#if !defined (__ACE_INLINE__) -#include "Local_Locator.i" -#endif /* __ACE_INLINE__ */ - -int -ACE_URL_Local_Locator::url_query (const ACE_URL_Locator::ACE_Selection_Criteria how, - const ACE_URL_Property_Seq *pseq, - const size_t how_many, - size_t &num_query, - ACE_URL_Offer_Seq *offer) -{ - ACE_URL_Record *item = 0; - - ACE_NEW_RETURN (offer, ACE_URL_Offer_Seq (how_many), -1); - - for (ACE_Unbounded_Set_Iterator<ACE_URL_Record> iter (this->repository_); - iter.next (item) != 0; - iter.advance ()) - { - switch (how) - { - case ACE_URL_Locator::NONE: - // Offers must not have any properties in <pseq> - errno = ACE_URL_Locator::UNIMPLEMENTED; - return -1; - break; - case ACE_URL_Locator::SOME: - // Offers must have at least one property in <pseq> - errno = ACE_URL_Locator::UNIMPLEMENTED; - return -1; - break; - case ACE_URL_Locator::ALL: - // Offers must have all the properties in <pseq> - errno = ACE_URL_Locator::UNIMPLEMENTED; - return -1; - break; - default: - delete [] offer ; - offer = 0; - errno = ACE_URL_Locator::INVALID_ARGUMENT; - return -1; - } - if (how_many == 0) - break; - } - - return 0; -} - -int -ACE_URL_Local_Locator::export_offer (ACE_URL_Offer *offer, - ACE_WString &offer_id) -{ - ACE_URL_Record *item = 0; - - // First check if we have registered this URL already. - for (ACE_Unbounded_Set_Iterator<ACE_URL_Record> iter (this->repository_); - iter.next (item) != 0; - iter.advance ()) - if (*item->offer_->url () == *offer->url ()) - { - errno = ACE_URL_Locator::OFFER_EXIST; - return -1; - } - - ACE_URL_Record *new_offer; - - // Offer is not in repository, we can add new one in safely. - ACE_NEW_RETURN (new_offer, ACE_URL_Record (offer), - ACE_URL_Locator::NOMEM); - - this->repository_.push (*new_offer); - - offer_id = *new_offer->id_; - return 0; -} - -int -ACE_URL_Local_Locator::withdraw_offer (const ACE_WString &offer_id) -{ - ACE_URL_Record *item = 0; - - // Iterate thru repository and remove offer with <offer_id>. - for (ACE_Unbounded_Set_Iterator<ACE_URL_Record> iter (this->repository_); - iter.next (item) != 0; - iter.advance ()) - if (offer_id == *item->id_) - { - if (this->repository_.remove (*item) == 0) - return 0 - else - { - errno = ACE_URL_Locator::UNKNOWN; - return -1; - } - } - - errno = ACE_URL_Locator::NO_SUCH_OFFER; - return 0; -} - -int -ACE_URL_Local_Locator::describe_offer (const ACE_WString &offer_id, - ACE_URL_Offer *offer) -{ - ACE_URL_Record *item = 0; - - // Iterate thru the repository and produce a copy of offer's - // description. - for (ACE_Unbounded_Set_Iterator<ACE_URL_Record> iter (this->repository_); - iter.next (item) != 0; - iter.advance ()) - if (offer_id == *item->id_) - { - ACE_NEW_RETURN (offer, ACE_URL_Offer (*item->offer_), -1); - return 0; - } - - errno = ACE_URL_Locator::NO_SUCH_OFFER; - return -1; -} - -int -ACE_URL_Local_Locator::modify_offer (const ACE_WString &offer_id, - const char *url, - const ACE_URL_Property_Seq *del, - const ACE_URL_Property_Seq *modify) -{ - errno = ACE_URL_Locator::UNIMPLEMENTED; - return -1; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Unbounded_Set<ACE_URL_Record>; -template class ACE_Unbounded_Set_Iterator<ACE_URL_Record>; -template class ACE_Node<ACE_URL_Record>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Unbounded_Set<ACE_URL_Record> -#pragma instantiate ACE_Unbounded_Set_Iterator<ACE_URL_Record> -#pragma instantiate ACE_Node<ACE_URL_Record> -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ -#endif /* ACE_LOCAL_LOCATOR_C */ diff --git a/apps/JAWS/clients/Caching/Local_Locator.h b/apps/JAWS/clients/Caching/Local_Locator.h deleted file mode 100644 index bcc82cef566..00000000000 --- a/apps/JAWS/clients/Caching/Local_Locator.h +++ /dev/null @@ -1,113 +0,0 @@ -/* -*- C++ -*- */ - -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// none -// -// = FILENAME -// Local_Locator.h -// -// = AUTHOR -// Nanbor Wang -// -// ============================================================================ - -#if !defined (ACE_LOCAL_LOCATOR_H) -#define ACE_LOCAL_LOCATOR_H - -#include "URL_Locator.h" -#include "ace/Containers.h" -#include "ID_Generator.h" - -class ACE_URL_Record - // = TITLE - // A URL Record. - // - // = DESCRIPTION - // A record placed in URL repository. Notice that - // both member pointers are own by URL_Record. - // They will get deallocated when the object goes - // out of scope. -{ - friend class ACE_URL_Local_Locator; - friend class ACE_Node<ACE_URL_Record>; - // We are making ACE_Node as friend class because we don't want - // others to access default constructor and pushing in an invalid - // record. However, container classes need to use default constructor - // for its head record. -public: - ACE_URL_Record (ACE_URL_Offer *offer); - // ctor. - - ~ACE_URL_Record (void); - // dtor. - - int operator== (const ACE_URL_Record &rhs) const; - // Two records are equal if they have the same offer id. - - int operator!= (const ACE_URL_Record &rhs) const; - // Unequal, complement of equal. - -private: - ACE_URL_Record (void); - // Default ctor. This is put here to prevent users from - // pushing in an invalid record. - - ACE_WString *id_; - // Offer ID in the repository. - - ACE_URL_Offer *offer_; - // Offer (and its properties). -}; - -class ACE_Export ACE_URL_Local_Locator - // = TITLE - // A simple URL repository to store URL offer locally. - // - // = DESCRIPTION - // This class manage a collection of URL offers - // for local query and registration. But we should - // really use it within a server. -{ - virtual ~ACE_URL_Local_Locator (void); - // Default destructor. - - virtual int url_query (const ACE_URL_Locator::ACE_Selection_Criteria how, - const ACE_URL_Property_Seq *pseq, - const size_t how_many, - size_t &num_query, - ACE_URL_Offer_Seq *offer); - // Query the locator for HTTP with designate properties (none, some, - // or all). The locator being queried will return a sequence of - // offers with <how_many> offers in it. This interface allocates - // <offer> so users must deallocate it after use. - - virtual int export_offer (ACE_URL_Offer *offer, - ACE_WString &offer_id); - // Export an offer to the locator. - - virtual int withdraw_offer (const ACE_WString &offer_id); - // Withdraw an offer. return 0 if succeed, -1 otherwise. - - virtual int describe_offer (const ACE_WString &offer_id, - ACE_URL_Offer *offer); - // Query a specific offer. - - virtual int modify_offer (const ACE_WString &offer_id, - const char *url = 0, - const ACE_URL_Property_Seq *del = 0, - const ACE_URL_Property_Seq *modify = 0); - // Modify a previously registered offer. - -protected: - ACE_Unbounded_Set<ACE_URL_Record> repository_; -}; - -#if defined (__ACE_INLINE__) -#include "Local_Locator.i" -#endif /* __ACE_INLINE__ */ - -#endif /* ACE_LOCAL_LOCATOR_H */ diff --git a/apps/JAWS/clients/Caching/Local_Locator.i b/apps/JAWS/clients/Caching/Local_Locator.i deleted file mode 100644 index 1d693472eb8..00000000000 --- a/apps/JAWS/clients/Caching/Local_Locator.i +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- C++ -*- */ - -// $Id$ - -ACE_INLINE -ACE_URL_Record::ACE_URL_Record (void) - : id_ (0), - offer_ (0) -{ -} - -ACE_INLINE -ACE_URL_Record::ACE_URL_Record (ACE_URL_Offer *offer) - : offer_ (offer) -{ - char buf[ACE_OFFER_ID_LENGTH]; - - ACE_NEW (this->id_, ACE_WString (ACE_ID_Generator::get_new_id (buf))); -} - -ACE_INLINE -ACE_URL_Record::~ACE_URL_Record (void) -{ - delete this->id_; - delete this->offer_; -} - -ACE_INLINE int -ACE_URL_Record::operator== (const ACE_URL_Record &rhs) const -{ - return this == &rhs || *this->id_ == *rhs.id_; -} - -ACE_INLINE int -ACE_URL_Record::operator!= (const ACE_URL_Record &rhs) const -{ - return !(*this == rhs); -} - -ACE_INLINE -ACE_URL_Local_Locator::~ACE_URL_Local_Locator (void) -{ -} - diff --git a/apps/JAWS/clients/Caching/Locator_Request_Reply.cpp b/apps/JAWS/clients/Caching/Locator_Request_Reply.cpp deleted file mode 100644 index 0582c3e702c..00000000000 --- a/apps/JAWS/clients/Caching/Locator_Request_Reply.cpp +++ /dev/null @@ -1,379 +0,0 @@ -/* -*- C++ -*- */ - -// $Id$ - -#if !defined (ACE_LOCATOR_REQUEST_REPLY_C) -#define ACE_LOCATOR_REQUEST_REPLY_C - -#define ACE_BUILD_DLL -#include "Locator_Request_Reply.h" - -#if !defined (__ACE_INLINE__) -#include "Locator_Request_Reply.i" -#endif - -#include "URL_Properties.h" -#include "URL_Array_Helper.h" -#include "URL_Locator.h" - -int -ACE_URL_Locator_Request::url_query (const int how, - const ACE_URL_Property_Seq &pseq, - const int how_many) -{ - ACE_TRACE ("ACE_URL_Locator_Request::url_query"); - - if (how >= ACE_URL_Locator::INVALID_SELECTION) - return -1; - ACE_NEW_RETURN (this->seq1_, ACE_URL_Property_Seq (pseq), -1); - this->how_ = how; - this->how_many_ = how_many; - this->code_ = ACE_URL_Locator::QUERY; - return 0; -} - -int -ACE_URL_Locator_Request::export_offer (const ACE_URL_Offer &offer) -{ - ACE_TRACE ("ACE_URL_Locator_Request::export_offer"); - - ACE_NEW_RETURN (this->offer_, ACE_URL_Offer (offer), -1); - this->code_ = ACE_URL_Locator::EXPORT; - return 0; -} - -int -ACE_URL_Locator_Request::withdraw_offer (const ACE_WString &offer_id) -{ - ACE_TRACE ("ACE_URL_Locator_Request::withdraw_offer"); - - this->id_ = offer_id; - this->code_ = ACE_URL_Locator::WITHDRAW; - return 0; -} - -int -ACE_URL_Locator_Request::describe_offer (const ACE_WString &offer_id) -{ - ACE_TRACE ("ACE_URL_Locator_Request::describe_offer"); - - this->id_ = offer_id; - this->code_ = ACE_URL_Locator::DESCRIBE; - return 0; -} - -int -ACE_URL_Locator_Request::modify_offer (const ACE_WString &offer_id, - const ACE_WString *url, - const ACE_URL_Property_Seq &del, - const ACE_URL_Property_Seq &modify) -{ - ACE_TRACE ("ACE_URL_Locator_Request::modify_offer"); - - ACE_NEW_RETURN (this->seq1_, ACE_URL_Property_Seq (del), -1); - ACE_NEW_RETURN (this->seq2_, ACE_URL_Property_Seq (modify), -1); - - if (url != 0) - this->url_ = *url; - - this->id_ = offer_id; - this->code_ = ACE_URL_Locator::MODIFY; - return 0; -} - -#define ENCODE_UINT32(ADDR,LEN,V) \ - * (ACE_UINT32 *) (ADDR+LEN) = htonl (V); \ - LEN += sizeof (ACE_UINT32); - -#define DECODE_UINT32(ADDR,LEN,V) \ - V = ntohl (* (ACE_UINT32 *) (ADDR+LEN)); \ - LEN += sizeof (ACE_UINT32); - -size_t -ACE_URL_Locator_Request::encode (void) -{ - ACE_TRACE ("ACE_URL_Locator_Request::encode"); - - size_t buf_size = this->bsize (); - size_t total_length = 0; - - ACE_NEW_RETURN (this->buffer_, char [buf_size], 0); - - ENCODE_UINT32 (this->buffer_, total_length, buf_size); - // Encode buffer size. - - ENCODE_UINT32 (this->buffer_, total_length, this->code_); - // Encode Op code. - - ENCODE_UINT32 (this->buffer_, total_length, this->how_); - // Encode selection criteria. - - ENCODE_UINT32 (this->buffer_, total_length, this->how_many_); - // Encode number of offers interested. - - ENCODE_UINT32 (this->buffer_, total_length, this->valid_ptr_); - // Encode valide pointer flag. - - if (this->seq1_ != 0) - total_length += ace_array_encode (this->buffer_ + total_length, *this->seq1_); - if (this->seq2_ != 0) - total_length += ace_array_encode (this->buffer_ + total_length, *this->seq2_); - if (this->offer_ != 0) - total_length += this->offer_->encode (this->buffer_ + total_length); - - total_length += ACE_WString_Helper::encode (this->buffer_ + total_length, - &this->id_); - total_length += ACE_WString_Helper::encode (this->buffer_ + total_length, - &this->url_); - - ACE_ASSERT (total_length == buf_size); - return total_length; -} - -size_t -ACE_URL_Locator_Request::decode (void *buffer) -{ - ACE_TRACE ("ACE_URL_Locator_Request::decode"); - - if (buffer == 0) - return 0; - // Check if we have a buffer available. - delete [] this->buffer_; - this->buffer_ = (char*) buffer; - - size_t buf_size = 0; - size_t total_length = 0; - - DECODE_UINT32 (this->buffer_, total_length, buf_size); - // Decode length of buffer size first. - - DECODE_UINT32 (this->buffer_, total_length, this->code_); - // Get the operation code. - - DECODE_UINT32 (this->buffer_, total_length, this->how_); - // Decode selection criteria. - - DECODE_UINT32 (this->buffer_, total_length, this->how_many_); - // Decode number of offers interested. - - DECODE_UINT32 (this->buffer_, total_length, this->valid_ptr_); - // Decode valide pointer flag. - - if (this->valid_ptr_ | VALID_SEQ1 != 0) - { - ACE_NEW_RETURN (this->seq1_, ACE_URL_Property_Seq (1), 0); - total_length += ace_array_decode (this->buffer_ + total_length, *this->seq1_); - } - if (this->valid_ptr_ | VALID_SEQ2 != 0) - { - ACE_NEW_RETURN (this->seq2_, ACE_URL_Property_Seq (1), 0); - total_length += ace_array_decode (this->buffer_ + total_length, *this->seq2_); - } - if (this->valid_ptr_ | VALID_OFFER != 0) - { - ACE_NEW_RETURN (this->offer_, ACE_URL_Offer, 0); - total_length += this->offer_->decode (this->buffer_ + total_length); - } - - total_length += ACE_WString_Helper::decode (this->buffer_ + total_length); - this->id_ = ACE_WString ((ACE_USHORT16 *) (this->buffer_ + total_length)); - total_length += ACE_WString_Helper::decode (this->buffer_ + total_length); - this->url_ = ACE_WString ((ACE_USHORT16 *) (this->buffer_ + total_length)); - - ACE_ASSERT (total_length == buf_size); - return total_length; -} - - -size_t -ACE_URL_Locator_Request::bsize (void) -{ - ACE_TRACE ("ACE_URL_Locator_Request::bsize"); - - size_t total_length = 5 * sizeof (ACE_UINT32); - // There are 5 UINT32 variables at the beginning - // of the buffer. <buffer size>, <code>, <how>, - // <how_many>, <valid_ptr>. - - this->valid_ptr_ = 0; - // Check valid pointers and mark corresponding flag in <valid_prt>. - - if (this->seq1_ != 0) - { - this->valid_ptr_ |= VALID_SEQ1; - total_length += ace_array_bsize (*this->seq1_); - } - if (this->seq2_ != 0) - { - this->valid_ptr_ |= VALID_SEQ2; - total_length += ace_array_bsize (*this->seq2_); - } - if (this->offer_ != 0) - { - this->valid_ptr_ |= VALID_OFFER; - total_length += this->offer_->bsize (); - } - - total_length += ACE_WString_Helper::bsize (&this->id_); - total_length += ACE_WString_Helper::bsize (&this->url_); - - return total_length; -} - -void -ACE_URL_Locator_Request::dump (void) const -{ - //ACE_TRACE ("ACE_URL_Locator_Request::dump"); - - ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this)); - - size_t i; - - switch (this->code_) - { - case ACE_URL_Locator::QUERY: - ACE_DEBUG ((LM_DEBUG, "Query Request:\nSelection: ")); - switch (this->how_) - { - case ACE_URL_Locator::NONE: - ACE_DEBUG ((LM_DEBUG, "NONE.\n")); - break; - case ACE_URL_Locator::SOME: - ACE_DEBUG ((LM_DEBUG, "SOME.\n")); - break; - case ACE_URL_Locator::ALL: - ACE_DEBUG ((LM_DEBUG, "ALL.\n")); - break; - default: - ACE_DEBUG ((LM_DEBUG, "Invalid Selection??\n")); - break; - } - ACE_DEBUG ((LM_DEBUG, "At most %d reply.\n", this->how_many_)); - for (i = 0; i < this->seq1_->size (); i++) - (*this->seq1_)[i].dump (); - break; - case ACE_URL_Locator::EXPORT: - ACE_DEBUG ((LM_DEBUG, "Export Request:\n")); - break; - case ACE_URL_Locator::WITHDRAW: - ACE_DEBUG ((LM_DEBUG, "Withdraw Request:\n")); - break; - case ACE_URL_Locator::DESCRIBE: - ACE_DEBUG ((LM_DEBUG, "Describe Request:\n")); - break; - case ACE_URL_Locator::MODIFY: - ACE_DEBUG ((LM_DEBUG, "Modify Request:\n")); - break; - default: - // Invalid data encountered. Stop encoding now. - ACE_DEBUG ((LM_DEBUG, "Invalid Request.\n")); - break; - } - - ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP)); -} - -int -ACE_URL_Locator_Reply::status_reply (u_int op, int result) -{ - ACE_TRACE ("ACE_URL_Locator_Reply::status_reply"); - - this->code_ = op; - this->status_ = result; - return 0; -} - -int -ACE_URL_Locator_Reply::query_reply (int result, size_t num, - const ACE_URL_Offer_Seq &offers) -{ - ACE_TRACE ("ACE_URL_Locator_Reply::query_reply"); - - this->code_ = ACE_URL_Locator::QUERY; - this->status_ = result; - ACE_NEW_RETURN (this->offers_, ACE_URL_Offer_Seq (offers), -1); - return 0; -} - -int -ACE_URL_Locator_Reply::describe_reply (int result, - const ACE_URL_Offer &offer) -{ - ACE_TRACE ("ACE_URL_Locator_Reply::describe_reply"); - - this->code_ = ACE_URL_Locator::DESCRIBE; - this->status_ = result; - ACE_NEW_RETURN (this->offer_, ACE_URL_Offer (offer), -1); - return 0; -} - -size_t -ACE_URL_Locator_Reply::encode (void) -{ - ACE_TRACE ("ACE_URL_Locator_Reply::encode"); - - size_t buf_size = this->bsize (); - size_t total_length = 0; - - ACE_NEW_RETURN (this->buffer_, char [buf_size], 0); - - ENCODE_UINT32 (this->buffer_, total_length, buf_size); - // Encode buffer size. - - ENCODE_UINT32 (this->buffer_, total_length, this->code_); - // Encode Op code. - - ENCODE_UINT32 (this->buffer_, total_length, this->status_); - // Encode Op result status. - - ENCODE_UINT32 (this->buffer_, total_length, this->num_offers_); - // Encode number of offers in this->offers_. - - ENCODE_UINT32 (this->buffer_, total_length, this->valid_ptr_); - // Encode valid pointers mask. - - // Encode request for network communication. If succeed, - // returns the size of the buffer, otherwise, return 0. - return 0; -} - -size_t -ACE_URL_Locator_Reply::decode (void *buffer) -{ - ACE_TRACE ("ACE_URL_Locator_Reply::decode"); - - // Restore from network data. Returns size of the buffer - // if succeed, 0 otherwise. - return 0; -} - -size_t -ACE_URL_Locator_Reply::bsize (void) -{ - ACE_TRACE ("ACE_URL_Locator_Reply:bsize"); - - size_t total_length = 5 * sizeof (ACE_UINT32); - // size for 5 ACE_UINT32 objects: <buffer size>, <code_>, - // <status_>, <num_offers_>, and <valid_ptr_>. - - this->valid_ptr_ = 0; - if (this->offer_ != 0) - { - this->valid_ptr_ |= VALID_OFFER; - total_length += this->offer_->bsize (); - } - if (this->offers_ != 0) - { - this->valid_ptr_ |= VALID_OFFERS; - total_length += ace_array_bsize (this->offers_); - } - return total_length; -} - -void -ACE_URL_Locator_Reply::dump (void) const -{ - //ACE_TRACE ("ACE_URL_Locator_Reply::dump"); - -} -#endif /* ACE_LOCATOR_REQUEST_REPLY_C */ diff --git a/apps/JAWS/clients/Caching/Locator_Request_Reply.h b/apps/JAWS/clients/Caching/Locator_Request_Reply.h deleted file mode 100644 index 31f32c78a85..00000000000 --- a/apps/JAWS/clients/Caching/Locator_Request_Reply.h +++ /dev/null @@ -1,215 +0,0 @@ -/* -*- C++ -*- */ - -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// none -// -// = FILENAME -// Locator_Request_Response.h -// -// = AUTHOR -// Nanbor Wang -// -// ============================================================================ - -#if !defined (ACE_LOCATOR_REQUEST_REPLY_H) -#define ACE_LOCATOR_REQUEST_REPLY_H - -#include "URL_Properties.h" - -class ACE_Export ACE_URL_Locator_Request - // = TITLE - // A URL request message formater/wrapper. - // - // = DESCRIPTION - // This class defines a URL request data. It is used - // to transform requests to an object so that we can - // ship them across network. -{ -public: - ACE_URL_Locator_Request (void); - // Default ctor. - - ~ACE_URL_Locator_Request (void); - // Default dtor. - - int url_query (const int how, - const ACE_URL_Property_Seq &pseq, - const int how_many); - // Query the locator for HTTP with designate properties (none, some, - // or all). The locator being queried will return a sequence of - // offers with <how_many> offers in it. This interface allocates - // <offer> so users must deallocate it after use. - - int export_offer (const ACE_URL_Offer &offer); - // Export an offer to the locator. - - int withdraw_offer (const ACE_WString &offer_id); - // Withdraw an offer. return 0 if succeed, -1 otherwise. - - int describe_offer (const ACE_WString &offer_id); - // Query a specific offer. - - int modify_offer (const ACE_WString &offer_id, - const char *url = 0, - const ACE_URL_Property_Seq &del = 0, - const ACE_URL_Property_Seq &modify = 0); - // Modify a previously registered offer. - - int modify_offer (const ACE_WString &offer_id, - const ACE_WString *url = 0, - const ACE_URL_Property_Seq &del = 0, - const ACE_URL_Property_Seq &modify = 0); - // Modify a previously registered offer. - - size_t encode (void); - // Encode request for network communication. If succeed, - // returns the size of the buffer, otherwise, return 0. - - size_t decode (void *buffer); - // Restore from network data. Returns size of the buffer - // if succeed, 0 otherwise. - - const int how (void) const; - const int how_many (void) const; - const u_int opcode (void) const; - const ACE_URL_Property_Seq *seq (void) const; - const ACE_URL_Property_Seq *del (void) const; - const ACE_URL_Property_Seq *modify (void) const; - const ACE_URL_Offer *offer (void) const; - const ACE_WString &id (void) const; - const ACE_WString &url (void) const; - const char *buffer (void) const; - // A bunch of methods to access internal data. - - void dump (void) const; - // Print out this object. - -protected: - size_t bsize (void); - // Return the size of the buffer required to encode - // this request. - - enum { - VALID_SEQ1 = 0x1, - VALID_SEQ2 = 0X2, - VALID_OFFER = 0X4 - }; - // These constants used to indicate which pointers are valid. - - u_int code_; - // Request type code. - - int how_; - // Query method (if code_ == QUERY.) - - int how_many_; - // How many offers are we interested in in this query. - - int valid_ptr_; - // Bit flag to mark valid pointers within this object. - - ACE_URL_Property_Seq *seq1_; - // For query or del in modify_offer. - - ACE_URL_Property_Seq *seq2_; - // For modify seq. in modify_offer. - - ACE_URL_Offer *offer_; - // Offer to export. - - ACE_WString id_; - // Offer ID. - - ACE_WString url_; - // URL of this offer. - - char *buffer_; - // Buffer to store encoded data. -}; - -class ACE_Export ACE_URL_Locator_Reply - // = TITLE - // A URL reply message formater/wrapper. - // - // = DESCRIPTION - // This class defines a URL reply data. It is used - // to transform reply messages to an object so that we can - // ship them across network. -{ - ACE_URL_Locator_Reply (void); - // Default ctor. - - ~ACE_URL_Locator_Reply (void); - // Default dtor. - - int status_reply (u_int op, int result); - // Setup a reply message for EXPORT, WITHDRAW, or MODIFY operations. - - int query_reply (int result, size_t num, - const ACE_URL_Offer_Seq &offers); - // Setup a reply for QUERY operation. - - int describe_reply (int result, - const ACE_URL_Offer &offer); - // Construct a reply for DESCRIBE operation. - - size_t encode (void); - // Encode request for network communication. If succeed, - // returns the size of the buffer, otherwise, return 0. - - size_t decode (void *buffer); - // Restore from network data. Returns size of the buffer - // if succeed, 0 otherwise. - - // Accessor function. - const size_t num_offers (void) const; - const ACE_URL_Offer *offer (void) const; - const ACE_URL_Offer_Seq *offers (void) const; - const u_int opcode (void) const; - const u_int status (void) const; - const char *buffer (void) const ; - - void dump (void) const ; - // Print out this object. - -protected: - size_t bsize (void); - // Return the size of the buffer required to encode - // this request. - - enum { - VALID_OFFER = 0x1, - VALID_OFFERS = 0x2 - }; - // Valid pointer masks. - - u_int code_; - // Holds the original op code. - - int status_; - // Holds the result of an operation from the Location Server. - - size_t num_offers_; - // Holds the number of valid offers in the offers_ sequence. - - int valid_ptr_; - // Flag that marks valid internal pointers. - - ACE_URL_Offer *offer_; - // Holds a single offer. Used in query offer property. - - ACE_URL_Offer_Seq *offers_; - // Holds the replying offer sequence from a Locator. - - char *buffer_; - // Buffer to store encoded data. -}; -#if defined (__ACE_INLINE__) -#include "Locator_Request_Reply.i" -#endif /* __ACE_INLINE__ */ - -#endif /* ACE_LOCATOR_REQUEST_REPLY_H */ diff --git a/apps/JAWS/clients/Caching/Locator_Request_Reply.i b/apps/JAWS/clients/Caching/Locator_Request_Reply.i deleted file mode 100644 index 9dd2f851ceb..00000000000 --- a/apps/JAWS/clients/Caching/Locator_Request_Reply.i +++ /dev/null @@ -1,138 +0,0 @@ -/* -*- C++ -*- */ - -// $Id$ - -#include "URL_Locator.h" - -ACE_INLINE -ACE_URL_Locator_Request::ACE_URL_Locator_Request (void) - : code_(ACE_URL_Locator::INVALID_OPERATION), - seq1_ (0), - seq2_ (0), - offer_ (0), - buffer_ (0) -{ -} - -ACE_INLINE -ACE_URL_Locator_Request::~ACE_URL_Locator_Request (void) -{ - delete this->seq1_; - delete this->seq2_; - delete this->offer_; - delete [] this->buffer_; -} - -ACE_INLINE const int -ACE_URL_Locator_Request::how (void) const -{ - return this-> how_; -} - -ACE_INLINE const int -ACE_URL_Locator_Request::how_many (void) const -{ - return this->how_many_; -} - -ACE_INLINE const u_int -ACE_URL_Locator_Request::opcode (void) const -{ - return this->code_; -} - -ACE_INLINE const ACE_URL_Property_Seq * -ACE_URL_Locator_Request::seq (void) const -{ - return this->seq1_; -} - -ACE_INLINE const ACE_URL_Property_Seq * -ACE_URL_Locator_Request::del (void) const -{ - return this->seq1_; -} - -ACE_INLINE const ACE_URL_Property_Seq * -ACE_URL_Locator_Request::modify (void) const -{ - return this->seq2_; -} - -ACE_INLINE const ACE_URL_Offer * -ACE_URL_Locator_Request::offer (void) const -{ - return this->offer_; -} - -ACE_INLINE const ACE_WString & -ACE_URL_Locator_Request::id (void) const -{ - return this->id_; -} - -ACE_INLINE const ACE_WString & -ACE_URL_Locator_Request::url (void) const -{ - return this->url_; -} - -ACE_INLINE const char * -ACE_URL_Locator_Request::buffer (void) const -{ - return this->buffer_; -} - -ACE_INLINE -ACE_URL_Locator_Reply::ACE_URL_Locator_Reply (void) - : code_ (ACE_URL_Locator::INVALID_OPERATION), - offer_ (0), - offers_ (0), - buffer_ (0) -{ -} - -ACE_INLINE -ACE_URL_Locator_Reply::~ACE_URL_Locator_Reply (void) -{ - delete this->offer_; - delete this->offers_; - delete [] this->buffer_; -} - -ACE_INLINE const size_t -ACE_URL_Locator_Reply::num_offers (void) const -{ - return this->num_offers_; -} - - -ACE_INLINE const ACE_URL_Offer * -ACE_URL_Locator_Reply::offer (void) const -{ - return this->offer_; -} - -ACE_INLINE const ACE_URL_Offer_Seq * -ACE_URL_Locator_Reply::offers (void) const -{ - return this->offers_; -} - -ACE_INLINE const u_int -ACE_URL_Locator_Reply::opcode (void) const -{ - return this->code_; -} - -ACE_INLINE const u_int -ACE_URL_Locator_Reply::status (void) const -{ - return this->status_; -} - -ACE_INLINE const char * -ACE_URL_Locator_Reply::buffer (void) const -{ - return this->buffer_; -} diff --git a/apps/JAWS/clients/Caching/Makefile b/apps/JAWS/clients/Caching/Makefile deleted file mode 100644 index 0887ead8c7d..00000000000 --- a/apps/JAWS/clients/Caching/Makefile +++ /dev/null @@ -1,148 +0,0 @@ -#---------------------------------------------------------------------------- -# %W% %G% -# -# Makefile for the ACE Adapter Web Server (JAWS) client -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = http_client - -FILES = http_handler - -LSRC = $(addsuffix .cpp,$(FILES)) -LOBJ = $(addsuffix .o,$(FILES)) -SHOBJ = $(addsuffix .so,$(FILES)) - -VLDLIBS = $(LDLIBS:%=%$(VAR)) - -BUILD = $(LDLIBS) $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_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/http_handler.o .shobj/http_handler.so: http_handler.cpp http_handler.h \ - $(ACE_ROOT)/ace/Connector.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/iosfwd.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Svc_Handler.i \ - $(ACE_ROOT)/ace/Connector.i \ - $(ACE_ROOT)/ace/SOCK_Connector.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Connector.i \ - $(ACE_ROOT)/ace/Filecache.h \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/apps/JAWS/clients/Caching/README b/apps/JAWS/clients/Caching/README deleted file mode 100644 index 3dcfcd32815..00000000000 --- a/apps/JAWS/clients/Caching/README +++ /dev/null @@ -1,83 +0,0 @@ -# -*- text -*- -# Hey, Emacs! This is a TEXT file. - ----------------------------------- -README for the caching http_client ----------------------------------- - -This is the README file for the simple caching http_client. - ------------- -1. Compiling ------------- - -1a. Compiling on UNIX. - - On UNIX, with a properly configured ACE distribution, just -type make (using GNU make, of course). - -1b. Compiling on NT. - - Thus far, this code has only been tested under UNIX. A -Windows NT version will be out soon. - ------------- -2. Executing ------------- - -2a. Command line parameters. - - The program does not support any command line parameters. - -2b. General information. - - When the program runs, the client offers a ``*'' as a prompt. -At the prompt, you may enter a URL. The client will check to see if -the filename portion of the URL has already been cached. If so, a -message appears saying so. If not, the client will fetch the file -from the HTTP server and then cache it. - - Furthermore, the client supports the ``!'' shell escape -command. The content after the ``!'' will be executed by a shell. - - To exit the session, send the end-of-file character -(typically, ^D in UNIX). - - unix$ ./http_client - * http://www.cs.wustl.edu/cs/Art/brookings.gif - [1] sending request -- - GET /cs/Art/brookings.gif HTTP/1.0 - Accept: HTTP/1.0 - - ``brookings.gif'' is now cached. - * http://www.cs.wustl.edu/cs/Art/brookings.gif - ``brookings.gif'' is already cached. - * !ls - Makefile http_client http_handler.cpp zJAWSAAAa000Yg - brookings.gif http_client.cpp http_handler.h - * ^D - Bye! - unix$ ls - Makefile http_client http_handler.cpp - brookings.gif http_client.cpp http_handler.h - unix$ - --------------- -3. Limitations --------------- - - The caching mechanism as currently implemented requires a -``Content-length:'' to appear in the response header of the HTTP -response. This is because the caching utilizes mmap () to allocate -space for the file to be cached before the file is received. Unitl -the caching mecahnism is extended, you are limited to using servers -which will report the size of the file being transmitted. - - Currently, the cache creates temporary files (see the above -sample execution). - - The cache is not persistent between executions. - - Suggestions and other correspondence should be sent to me: - -James Hu <jxh@cs.wustl.edu> diff --git a/apps/JAWS/clients/Caching/URL_Array_Helper.cpp b/apps/JAWS/clients/Caching/URL_Array_Helper.cpp deleted file mode 100644 index a2027d2b09b..00000000000 --- a/apps/JAWS/clients/Caching/URL_Array_Helper.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// URL_Array_Helper.cpp -// $Id$ - -#if !defined (ACE_URL_ARRAY_HELPER_C) -#define ACE_URL_ARRAY_HELPER_C - -#define ACE_BUILD_DLL -#include "URL_Array_Helper.h" - -// Some helper functions for encoding/decoding - -template <class T> -size_t ace_array_bsize (const T &x) -{ - size_t sum = sizeof (ACE_UINT32); - for (size_t i = 0; i < x.size (); i++) - sum += x[i].bsize (); - return sum; -} - -template <class T> -size_t ace_array_encode (void *buf, const T &x) -{ - size_t len = 0; - for (size_t i = 0; i < x.size (); i++) - len+= x[i].encode ((void *) ((char *) buf + len)); - return len ; -} - -template <class T> -size_t ace_array_decode (void *buf, T &x) -{ - size_t len = 0; - for (size_t i = 0; i < x.size (); i++) - len += x[i].decode ((void *) ((char *) buf + len)); - return len; -} - - - -#endif /* ACE_URL_ARRAY_HELPER_C */ diff --git a/apps/JAWS/clients/Caching/URL_Array_Helper.h b/apps/JAWS/clients/Caching/URL_Array_Helper.h deleted file mode 100644 index c59627c5721..00000000000 --- a/apps/JAWS/clients/Caching/URL_Array_Helper.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// none -// -// = FILENAME -// URL_Array_Helper.h -// -// = AUTHOR -// Nanbor Wang -// -// ============================================================================ - -#if !defined (ACE_URL_ARRAY_HELPER_H) -#define ACE_URL_ARRAY_HELPER_H - -// ### These template functions are probably named improperly. -// You should find some way to avoid name space polution. - -template <class T> -size_t ace_array_bsize (const T &x); - -template <class T> -size_t ace_array_encode (void *buf, const T &x); - -template <class T> -size_t ace_array_decode (void *buf, T &x); - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "URL_Array_Helper.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("URL_Array_Helper.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#endif /* ACE_URL_ARRAY_HELPER_H */ diff --git a/apps/JAWS/clients/Caching/URL_Locator.cpp b/apps/JAWS/clients/Caching/URL_Locator.cpp deleted file mode 100644 index b7d00b104c1..00000000000 --- a/apps/JAWS/clients/Caching/URL_Locator.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* -*- C++ -*- */ - -// $Id$ - -#if !defined (ACE_URL_LOCATOR_C) -#define ACE_URL_LOCATOR_C - -#define ACE_BUILD_DLL -#include "URL_Locator.h" - -#if !defined (__ACE_INLINE__) -#include "URL_Locator.i" -#endif - -ACE_URL_Locator::~ACE_URL_Locator (void) -{ -} - -char * -ACE_URL_Locator::error_status (void) -{ - return "Not implemented yet."; -} - -#endif /* ACE_URL_LOCATOR_C */ diff --git a/apps/JAWS/clients/Caching/URL_Locator.h b/apps/JAWS/clients/Caching/URL_Locator.h deleted file mode 100644 index 684829ebb4e..00000000000 --- a/apps/JAWS/clients/Caching/URL_Locator.h +++ /dev/null @@ -1,107 +0,0 @@ -/* -*- C++ -*- */ - -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// none -// -// = FILENAME -// URL_Locator.h -// -// = AUTHOR -// Nanbor Wang -// -// ============================================================================ - -#if !defined (ACE_URL_LOCATOR_H) -#define ACE_URL_LOCATOR_H - -#include "URL_Properties.h" - -class ACE_Export ACE_URL_Locator - // = TITLE - // Abstract Base class designates what interfaces a URL_Locator - // should provide. - // - // = DESCRIPTION - // This class defines the basic URL_Locator APIs. - // An URL locator provides services for URL clients to - // query specific URL location that has certain properties - // and URL providers to export their services and a set of - // APIs to maintain their offers. -{ -public: - // Request type - enum ACE_URL_Locator_Op_Type - { - QUERY, - EXPORT, - WITHDRAW, - DESCRIBE, - MODIFY, - INVALID_OPERATION // LAST - }; - - // = Specify how to select offers. - enum ACE_Selection_Criteria - { - NONE, // URL that contains none of the properties. - SOME, // URL that contains some of the properties. - ALL, // URL that contains all of the properties. - INVALID_SELECTION // Invalid. - }; - - enum ACE_URL_Locator_Error - // errno will set to one of these value. - { - OFFER_EXIST, // trying to register an offer. - // that is already exist in repository. - NO_SUCH_OFFER, // No such offer in the repository. - INVALID_ARGUMENT, // Invalid argument encountered. - UNIMPLEMENTED, // function not implemented. - UNKNOWN, // Unknown error. - MAX_URL_ERROR - }; - // Possible error code of URL_Locator - - virtual ~ACE_URL_Locator (void) = 0; - // Default destructor. - - virtual int url_query (const ACE_Selection_Criteria how, - const ACE_URL_Property_Seq *pseq, - const size_t how_many, - size_t &num_query, - ACE_URL_Offer_Seq *offer) = 0; - // Query the locator for HTTP with designate properties (none, some, - // or all). The locator being queried will return a sequence of - // offers with <how_many> offers in it. This interface allocates - // <offer> so users must deallocate it after use. - - virtual int export_offer (ACE_URL_Offer *offer, - ACE_WString &offer_id) = 0; - // Export an offer to the locator. - - virtual int withdraw_offer (const ACE_WString &offer_id) = 0; - // Withdraw an offer. return 0 if succeed, -1 otherwise. - - virtual int describe_offer (const ACE_WString &offer_id, - ACE_URL_Offer *offer) = 0; - // Query a specific offer. - - virtual int modify_offer (const ACE_WString &offer_id, - const char *url = 0, - const ACE_URL_Property_Seq *del = 0, - const ACE_URL_Property_Seq *modify = 0) = 0; - // Modify a previously registered offer. - - virtual const char *error_status (void); - // Provide a human readable error status. -}; - -#if defined (__ACE_INLINE__) -#include "URL_Locator.i" -#endif /* __ACE_INLINE__ */ - -#endif /* ACE_WEB_LOCATOR_H */ diff --git a/apps/JAWS/clients/Caching/URL_Locator.i b/apps/JAWS/clients/Caching/URL_Locator.i deleted file mode 100644 index 722888896c1..00000000000 --- a/apps/JAWS/clients/Caching/URL_Locator.i +++ /dev/null @@ -1,4 +0,0 @@ -/* -*- C++ -*- */ - -// $Id$ - diff --git a/apps/JAWS/clients/Caching/URL_Properties.cpp b/apps/JAWS/clients/Caching/URL_Properties.cpp deleted file mode 100644 index fa86934123e..00000000000 --- a/apps/JAWS/clients/Caching/URL_Properties.cpp +++ /dev/null @@ -1,171 +0,0 @@ -// URL_Properties.cpp -// $Id$ - -#if !defined (ACE_URL_PROPERTIES_C) -#define ACE_URL_PROPERTIES_C - -#define ACE_BUILD_DLL -#include "URL_Properties.h" - -#if !defined (__ACE_INLINE__) -#include "URL_Properties.i" -#endif /* __ACE_INLINE__ */ - -#include "ace/OS.h" -#include "ace/Auto_Ptr.h" -#include "URL_Array_Helper.h" - -size_t -ACE_WString_Helper::encode (void *buf, ACE_WString *wstr) -{ - ACE_USHORT16 *wptr = (ACE_USHORT16 *) buf; - size_t i; - - for (i= 0; i <= wstr->length (); i++) - wptr[i] = htons ((*wstr)[i]); - - return i * sizeof (ACE_USHORT16); -} - -size_t -ACE_WString_Helper::decode (void *buf) -{ - ACE_USHORT16 *wptr = (ACE_USHORT16 *) buf; - size_t i; - - for (i = 0; wptr[i] != 0; i++) - wptr[i] = ntohs (wptr[i]); - - return (i + 1) * sizeof (ACE_USHORT16); -} - -ACE_URL_Property::~ACE_URL_Property (void) -{ - delete this->name_; - delete this->value_; -} - -size_t -ACE_URL_Property::encode (void *buf) const -{ - size_t blen = ACE_WString_Helper::encode (buf, this->name_); - blen += ACE_WString_Helper::encode ((void *) ((char *) buf + blen), - this->value_); - return blen; -} - -size_t -ACE_URL_Property::decode (void *buf) -{ - char *cbuf = (char *) buf; - size_t len = ACE_WString_Helper::decode(buf); - this->name ((ACE_USHORT16 *) cbuf); - - cbuf += len; - len += ACE_WString_Helper::decode ((void *) cbuf); - return len; -} - -void -ACE_URL_Property::dump (void) const -{ - ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this)); - - if (this->name_->length () > 0) - ACE_DEBUG ((LM_DEBUG, "\n name_: \"%s\"\n", - ACE_Auto_Basic_Array_Ptr<char> (this->name_->char_rep ()).get ())); - else - ACE_DEBUG ((LM_DEBUG, "\n name_: \"\"\n")); - - if (this->value_->length () > 0) - ACE_DEBUG ((LM_DEBUG, " value_: \"%s\"\n", - ACE_Auto_Basic_Array_Ptr<char> (this->value_->char_rep ()).get ())); - else - ACE_DEBUG ((LM_DEBUG, " value_: \"\"\n")); - - ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP)); -} - -ACE_URL_Offer::~ACE_URL_Offer (void) -{ - delete this->url_; -} - -size_t -ACE_URL_Offer::bsize (void) const -{ - size_t sum = (this->url_->length () + 1) * sizeof (ACE_USHORT16); - sum += ::ace_array_bsize (this->prop_); - return sum; -} - -size_t -ACE_URL_Offer::encode (void *buf) const -{ - ACE_UINT32 *s_buf = (ACE_UINT32 *) buf; - *s_buf = htonl (this->prop_.size ()); - - size_t len = sizeof (ACE_UINT32); - len += ACE_WString_Helper::encode ((void *) ((char *) buf + len), - this->url_); - - len += ::ace_array_encode ((void *) ((char *) buf + len), - this->prop_); - return len; -} - -size_t -ACE_URL_Offer::decode (void *buf) -{ - size_t len = sizeof (ACE_UINT32); - size_t a_size = (size_t) ntohl (*(ACE_UINT32 *) buf); - len += ACE_WString_Helper::decode ((void *) ((char *) buf + len)); - this->url ((ACE_USHORT16 *) ((char *) buf + len)); - - ACE_URL_Property_Seq prop_seq (a_size); - this->url_properties (prop_seq); - - len += ::ace_array_decode ((void *)((char *) buf + len), - this->prop_); - return len; -} - -void -ACE_URL_Offer::dump (void) const -{ - ACE_DEBUG ((LM_DEBUG, ACE_BEGIN_DUMP, this)); - - if (this->url_->length () > 0) - ACE_DEBUG ((LM_DEBUG, "\n url_: \"%s\"\n", - ACE_Auto_Basic_Array_Ptr<char> (this->url_->char_rep ()).get ())); - else - ACE_DEBUG ((LM_DEBUG, "\n url_: \"\"\n")); - - for (size_t i = 0; i < this->prop_.size (); i++) - this->prop_[i].dump (); - - ACE_DEBUG ((LM_DEBUG, ACE_END_DUMP)); -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Auto_Basic_Array_Ptr<char>; -template class ACE_Array<ACE_URL_Property>; -template class ACE_Array<ACE_URL_Offer>; -template size_t ace_array_bsize (ACE_Array<ACE_URL_Property> &); -template size_t ace_array_encode (void *, ACE_Array<ACE_URL_Property> &); -template size_t ace_array_decode (void *, ACE_Array<ACE_URL_Property> &); -template size_t ace_array_bsize (ACE_Array<ACE_URL_Offer> &); -template size_t ace_array_encode (void *, ACE_Array<ACE_URL_Offer> &); -template size_t ace_array_decode (void *, ACE_Array<ACE_URL_Offer> &); -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Auto_Basic_Array_Ptr<char> -#pragma instantiate ACE_Array<ACE_URL_Property> -#pragma instantiate ACE_Array<ACE_URL_Offer> -#pragma instantiate size_t ace_array_bsize (ACE_Array<ACE_URL_Property> &) -#pragma instantiate size_t ace_array_encode (void *, ACE_Array<ACE_URL_Property> &) -#pragma instantiate size_t ace_array_decode (void *, ACE_Array<ACE_URL_Property> &) -#pragma instantiate size_t ace_array_bsize (ACE_Array<ACE_URL_Offer> &) -#pragma instantiate size_t ace_array_encode (void *, ACE_Array<ACE_URL_Offer> &) -#pragma instantiate size_t ace_array_decode (void *, ACE_Array<ACE_URL_Offer> &) -#endif /*ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ -#endif /* ACE_URL_PROPERTIES_C */ diff --git a/apps/JAWS/clients/Caching/URL_Properties.h b/apps/JAWS/clients/Caching/URL_Properties.h deleted file mode 100644 index 6677222b3b3..00000000000 --- a/apps/JAWS/clients/Caching/URL_Properties.h +++ /dev/null @@ -1,200 +0,0 @@ -/* -*- C++ -*- */ - -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// none -// -// = FILENAME -// URL_Locator.h -// -// = AUTHOR -// Nanbor Wang -// -// ============================================================================ - -#if !defined (ACE_URL_PROPERTIES_H) -#define ACE_URL_PROPERTIES_H - -#include "ace/SString.h" -#include "ace/Array.h" - -class ACE_Export ACE_WString_Helper - // = TITLE - // Some helper functions for manipulate ACE_WString. - // - // = DESCRIPTION - // These functions simplify encoding/decoding of - // ACE_WString objects for network communication. -{ -public: - static size_t bsize (const ACE_WString *wstr); - // Returns the actual size required to contain the ACE_WString. - - static size_t encode (void *buf, ACE_WString *wstr); - // Encode <wstr> into <buf> for network communication. - // Return total octets consumed. - - static size_t decode (void *buf); - // This function doesn't relate to ACE_WString directly. - // It converts an ACE_USHORT16 string from network - // byte order to host byte order. Returns bsize of the string. -}; - -class ACE_Export ACE_URL_Property - // = TITLE - // Defines a property of a URL. - // - // = DESCRIPTION - // A property contains a <name> and a <value>. -// Nanbor, please add more description of what is typically *done* with a URL property. -{ -public: - ACE_URL_Property (const char *name = 0, - const char *value=0); - // Create a property. - - ACE_URL_Property (const ACE_USHORT16 *name, - const ACE_USHORT16 *value); - // Nanbor, please make sure that you comment these interfaces. In - // particular, does this interface distinguish between UNICODE and - // non-UNICODE? - - ACE_URL_Property (const ACE_URL_Property &p); - // Copy constructor. - - ~ACE_URL_Property (void); - // Destructor. - - ACE_URL_Property &operator= (const ACE_URL_Property &rhs); - // Assignment operator. - - int operator== (const ACE_URL_Property &rhs) const; - // Equals operator. - - int operator!= (const ACE_URL_Property &rhs) const; - // Inequality operator. - - // = Query property name. - ACE_WString *name_rep (void); - const ACE_WString *name (void) const; - - // = Set property name. - void name (const ACE_USHORT16 *n); - void name (const char *n); - - // = Query property value. - ACE_WString *value_rep (void); - const ACE_WString *value (void) const; - - // = Set property value. - void value (const ACE_USHORT16 *v); - void value (const char *v); - - // = Helper functions for encoding and decoding. - size_t bsize (void) const; - // Returns memory size required to encode this object. - // Nanbor, can we make this <size> rather than <bsize>? - - size_t encode (void *buf) const; - // Encodes this object into buf for network transmission. - - size_t decode (void *buf); - // Decodes buf and modifies this object, you should - // probably create this with default ctor. - - void dump (void) const; - // Dump out this object for debug. - -protected: - // Nanbor, is there a particular reason that you're using dynamic - // memory allocation here? Can you just use instances of - // ACE_WString that aren't allocated dynamically or is there some - // reason why you need pointers? - ACE_WString *name_; - // Property name pointer. - - ACE_WString *value_; - // Property value. -} ; - -typedef ACE_Array<ACE_URL_Property> ACE_URL_Property_Seq; -// type of URL_Property collection. - -class ACE_Export ACE_URL_Offer - // = TITLE - // Defines a URL offer. - // - // = DESCRIPTION - // A URL offer is defined by a <url> and an - // <ACE_URL_Property_Seq>. -// Nanbor, please explain how an offer is typically *used*. -{ -public: - ACE_URL_Offer (const size_t size = 1, const char *url = 0); - // Create an offer. - - ACE_URL_Offer (const ACE_URL_Offer &o); - // Copy ctor. - - ~ACE_URL_Offer (void); - // Default destructor. - - ACE_URL_Offer &operator= (const ACE_URL_Offer &rhs); - // Assignment operator. - - int operator== (const ACE_URL_Offer &rhs) const; - // Equality operator. - - int operator!= (const ACE_URL_Offer &rhs) const; - // Inequality operator. - - // = Get URL string. - ACE_WString *url_rep (void); - const ACE_WString *url (void) const; - - // = Set URL. - void url (const char *url); - void url (const ACE_USHORT16 *url); - - ACE_URL_Property_Seq &url_properties (void); - // Get properties of this offer. - - void url_properties (const ACE_URL_Property_Seq &prop); - // Set properties of this offer. This operation virtually get a - // copy of the passed in prop. - - // = Helper functions for encoding and decoding. - size_t bsize (void) const; - // Returns memory size required to encode this object. - // Nanbor, can you please make this <size>? - - size_t encode (void *buf) const; - // Encodes this object into buf for network transmission. - - size_t decode (void *buf); - // Decodes buf into current object, you better use - // the default ctor. - - void dump (void) const; - // Dump this object for debug. - -protected: - ACE_WString *url_; - // URL of this offer. - - ACE_URL_Property_Seq prop_; - // Properties associate with this offer. -}; - -// Nanbor, please add a comment here. - -typedef ACE_Array<ACE_URL_Offer> ACE_URL_Offer_Seq; - -#if defined (__ACE_INLINE__) -#include "URL_Properties.i" -#endif /* __ACE_INLINE__ */ - -#endif /* ACE_WEB_PROPERTIES_H */ diff --git a/apps/JAWS/clients/Caching/URL_Properties.i b/apps/JAWS/clients/Caching/URL_Properties.i deleted file mode 100644 index 63722c4e6f8..00000000000 --- a/apps/JAWS/clients/Caching/URL_Properties.i +++ /dev/null @@ -1,197 +0,0 @@ -/* -*- C++ -*- */ - -// $Id$ - -ACE_INLINE size_t -ACE_WString_Helper::bsize (const ACE_WString *wstr) -{ - return (wstr->length () + 1) * sizeof (ACE_USHORT16); -} - -ACE_INLINE -ACE_URL_Property::ACE_URL_Property (const char *name, const char *value) -{ - ACE_NEW (this->name_, ACE_WString (name)); - ACE_NEW (this->value_, ACE_WString (value)); -} - -ACE_INLINE -ACE_URL_Property::ACE_URL_Property (const ACE_USHORT16 *name, - const ACE_USHORT16 *value) -{ - ACE_NEW (this->name_, ACE_WString (name)); - ACE_NEW (this->value_, ACE_WString (value)); -} - -ACE_INLINE -ACE_URL_Property::ACE_URL_Property (const ACE_URL_Property &p) -{ - ACE_NEW (this->name_, ACE_WString (*p.name_)); - ACE_NEW (this->value_, ACE_WString (*p.value_)); -} - -ACE_INLINE ACE_URL_Property & -ACE_URL_Property::operator= (const ACE_URL_Property &rhs) -{ - if (this != &rhs) - { - delete this->name_; - delete this->value_; - ACE_NEW_RETURN (this->name_, ACE_WString(*rhs.name_), *this); - ACE_NEW_RETURN (this->value_, ACE_WString(*rhs.value_), *this); - } - return *this; -} - -ACE_INLINE int -ACE_URL_Property::operator== (const ACE_URL_Property &rhs) const -{ - if (this == &rhs || *this->name_ != *rhs.name_ || - *this->value_ != *rhs.value_) - return 1; - else - return 0; -} - -ACE_INLINE int -ACE_URL_Property::operator!= (const ACE_URL_Property &rhs) const -{ - return !(*this == rhs); -} - -ACE_INLINE ACE_WString * -ACE_URL_Property::name_rep (void) -{ - return this->name_; -} - -ACE_INLINE const ACE_WString * -ACE_URL_Property::name (void) const -{ - return this->name_; -} - -ACE_INLINE void -ACE_URL_Property::name (const char *n) -{ - delete this->name_; - ACE_NEW (this->name_, ACE_WString (n)); -} - -ACE_INLINE void -ACE_URL_Property::name (const ACE_USHORT16 *n) -{ - delete this->name_; - ACE_NEW (this->name_, ACE_WString (n)); -} - -ACE_INLINE ACE_WString * -ACE_URL_Property::value_rep (void) -{ - return this->value_; -} - -ACE_INLINE const ACE_WString * -ACE_URL_Property::value (void) const -{ - return this->value_; -} - -ACE_INLINE void -ACE_URL_Property::value (const char *v) -{ - delete this->value_; - ACE_NEW (this->value_, ACE_WString (v)); -} - -ACE_INLINE void -ACE_URL_Property::value (const ACE_USHORT16 *v) -{ - delete this->value_; - ACE_NEW (this->value_, ACE_WString (v)); -} - - -ACE_INLINE size_t -ACE_URL_Property::bsize (void) const -{ - size_t len = 2; - if (this->name_ != 0) - len += this->name_->length (); - if (this->value_ != 0) - len += this->value_->length (); - return len * sizeof (ACE_USHORT16); -} - -ACE_INLINE -ACE_URL_Offer::ACE_URL_Offer (const size_t size, const char *url) - : prop_ (size) -{ - ACE_NEW (this->url_, ACE_WString (url)); -} - -ACE_INLINE ACE_URL_Offer & -ACE_URL_Offer::operator= (const ACE_URL_Offer &rhs) -{ - if (this != &rhs) - { - *this->url_ = *rhs.url_; - this->prop_ = rhs.prop_; - } - return *this; -} - -ACE_INLINE int -ACE_URL_Offer::operator== (const ACE_URL_Offer &rhs) const -{ - if (this == &rhs - && this->url_ == rhs.url_ - && this->prop_ == rhs.prop_) - return 1; - else - return 0; -} - -ACE_INLINE int -ACE_URL_Offer::operator!= (const ACE_URL_Offer &rhs) const -{ - return !(*this == rhs); -} - -ACE_INLINE ACE_WString * -ACE_URL_Offer::url_rep (void) -{ - return this->url_; -} - -ACE_INLINE const ACE_WString * -ACE_URL_Offer::url (void) const -{ - return this->url_; -} - -ACE_INLINE void -ACE_URL_Offer::url (const ACE_USHORT16 *url) -{ - delete this->url_; - ACE_NEW (this->url_, ACE_WString (url)); -} - -ACE_INLINE void -ACE_URL_Offer::url (const char *url) -{ - delete this->url_; - ACE_NEW (this->url_, ACE_WString (url)); -} - -ACE_INLINE ACE_URL_Property_Seq & -ACE_URL_Offer::url_properties (void) -{ - return this->prop_; -} - -ACE_INLINE void -ACE_URL_Offer::url_properties (const ACE_URL_Property_Seq &prop) -{ - this->prop_ = prop; -} diff --git a/apps/JAWS/clients/Caching/http_client.cpp b/apps/JAWS/clients/Caching/http_client.cpp deleted file mode 100644 index 3f624a6c9f6..00000000000 --- a/apps/JAWS/clients/Caching/http_client.cpp +++ /dev/null @@ -1,68 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps/JAWS/clients/Caching -// -// = FILENAME -// http_client.cpp -// -// = DESCRIPTION -// This is a very simple client. It accepts URLs from a prompt, and -// will try to fetch them. Also accepts shell escapes. -// -// = AUTHOR -// James Hu -// -// ============================================================================ - -#include "http_handler.h" - -int -main (int, char *[]) -{ - // Present a command line. - // * Accept a URL. - // Pass it to the HTTP_Connector. - // Connect. - // Report status. - // * Accept shell escape character. - - char buf[BUFSIZ]; - - ACE_DEBUG ((LM_DEBUG, "* ")); - - while (ACE_OS::fgets (buf, sizeof (buf), stdin) != NULL) - { - char *s = buf; - - while (isspace (*s)) - s++; - - if (*s == '!') - { - do - s++; - while (isspace (*s)); - - // Shell command. - if (ACE_OS::system (s) == -1) - ACE_ERROR ((LM_ERROR, " ! Error executing: %s\n", s)); - } - else if (ACE_OS::strncmp (s, "http://", 7) == 0) - { - // URL - HTTP_Connector connector; - connector.connect (s); - } - else - ACE_ERROR ((LM_ERROR, " ? I don't understand: %s\n", s)); - - ACE_ERROR ((LM_ERROR, "* ")); - } - - ACE_DEBUG ((LM_DEBUG, "\nBye!\n")); - - return 0; -} diff --git a/apps/JAWS/clients/Caching/http_handler.cpp b/apps/JAWS/clients/Caching/http_handler.cpp deleted file mode 100644 index 06d6093e8ea..00000000000 --- a/apps/JAWS/clients/Caching/http_handler.cpp +++ /dev/null @@ -1,253 +0,0 @@ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps/JAWS/clients/Caching -// -// = FILENAME -// http_handler.cpp -// -// = AUTHOR -// James Hu -// -// ============================================================================ - -#include "http_handler.h" -#include "ace/Filecache.h" - -HTTP_Handler::HTTP_Handler (void) -{ -} - -HTTP_Handler::HTTP_Handler (const char * path) -{ - // How long is the request going to be? - this->request_[0] = '\0'; - this->request_size_ = - ACE_OS::strlen ("GET ") - + ACE_OS::strlen (path) - + ACE_OS::strlen (" HTTP/1.0\r\nAccept: HTTP/1.0\r\n\r\n"); - - // Make the request. - if ((u_int) this->request_size_ < sizeof (this->request_)) - ACE_OS::sprintf (this->request_, - "GET %s HTTP/1.0\r\nAccept: HTTP/1.0\r\n\r\n", - path); - - // Find the filename. - const char *last = ACE_OS::strrchr (path, '/'); - - if (last == 0) - last = path; - else if (last[1] == '\0') - last = "index.html"; - else - last = last+1; - - ACE_OS::sprintf (this->filename_, "%s", last); -} - -int -HTTP_Handler::open (void *) -{ - // If you want threads, use the activate stuff. -#if 0 - if (this->activate () != 0) - { - ACE_ERROR_RETURN ((LM_ERROR, "HTTP_Handler::open, whups!\n"), -1); - } - - return 0; -#else - return this->svc (); -#endif /* 0 */ -} - -int -HTTP_Handler::svc (void) -{ - static char buf[BUFSIZ]; - int count = 0; - - ACE_DEBUG ((LM_DEBUG, "[%t] sending request --\n%s", this->request_)); - - this->peer ().send_n (this->request_, this->request_size_); - - // Read in characters until encounter \r\n\r\n - int done = 0; - char *contentlength; - - do - { - while (((count += this->peer ().recv_n (buf + count, 1)) > 0) - && ((u_int) count < sizeof (buf))) - { - buf[count] = '\0'; - - if (count < 2) - continue; - done = ACE_OS::strcmp (buf + count - 4, "\n\n") == 0; - - if (done) - break; - - if (count < 4) - continue; - - done = ACE_OS::strcmp (buf + count - 4, "\r\n\r\n") == 0; - - if (done) - break; - } - - if (!done) - { - char *last = ACE_OS::strrchr (buf, '\n'); - last[0] = '\0'; - - if ((contentlength = ACE_OS::strstr (buf, "\nContent-length:")) - || (contentlength = ACE_OS::strstr (buf, "\nContent-Length:"))) - done = 1; - else - { - last[0] = '\n'; - count = ACE_OS::strlen (last); - ACE_OS::memmove (buf, last, count + 1); - } - } - else - { - contentlength = ACE_OS::strstr (buf, "\nContent-length:"); - - if (!contentlength) - contentlength = - ACE_OS::strstr (buf, "\nContent-Length:"); - } - - } - while (!done); - - // ASSERT (contentlength != 0) - if (contentlength - && (::sscanf (contentlength, "\nContent-%*[lL]ength: %d ", - &this->response_size_) == 1)) - { - ACE_Filecache_Handle afh (this->filename_, - this->response_size_); - - this->peer ().recv_n (afh.address (), this->response_size_); - - ACE_DEBUG ((LM_DEBUG, - " ``%s'' is now cached.\n", - this->filename_)); - } - else - { - // Maybe we should do something more clever here, such as extend - // ACE_Filecache_Handle to allow the creation of cache objects - // whose size is unknown? - - // Another possibility is to write the contents out to a file, - // and then cache it. - - // Perhaps make ACE_Filecache_Handle more savvy, and allow a - // constructor which accepts a PEER as a parameter. - ACE_DEBUG ((LM_DEBUG, - "HTTP_Handler, no content-length header!\n")); - } - - return 0; -} - -const char * -HTTP_Handler::filename (void) const -{ - return this->filename_; -} - -int -HTTP_Connector::connect (const char * url) -{ - char host[BUFSIZ]; - u_short port; - char path[BUFSIZ]; - - if (this->parseurl (url, host, &port, path) == -1) - { - ACE_DEBUG ((LM_DEBUG, - "HTTP_Connector, error parsing url: %s\n", - url)); - return -1; - } - - HTTP_Handler hh (path); - HTTP_Handler *hhptr = &hh; - - // First check the cache. - if (ACE_Filecache::instance ()->find (hh.filename ()) == 0) - { - ACE_DEBUG ((LM_DEBUG, " ``%s'' is already cached.\n", - hh.filename ())); - return 0; - } - - return this->connector_.connect (hhptr, ACE_INET_Addr (port, host)); -} - -#define DEFAULT_SERVER_PORT 80 - -// extract the main components of a URL -int -HTTP_Connector::parseurl (const char *url, - char *host, - u_short *port, - char *path) -{ - int status = 0; - - // hackish, but useful - if (3 != ::sscanf (url, "http://%[^:/]:%hu%s", host, port, path)) - { - if (2 != ::sscanf (url, "http://%[^:/]:%hu", host, port)) - { - if (2 != ::sscanf (url, "http://%[^:/]%s", host, path)) - { - if (1 != ::sscanf (url, "http://%[^:/]", host)) - status = -1; - else - { - *port = DEFAULT_SERVER_PORT; - ACE_OS::strcpy (path, "/"); - } - } - else - *port = DEFAULT_SERVER_PORT; - } - else ACE_OS::strcpy (path, "/"); - } - - // 0 => success - // -1 => error - return status; -} - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_Connector<HTTP_Handler, ACE_SOCK_CONNECTOR>; -template class ACE_Svc_Tuple<HTTP_Handler>; -template class ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH>; -template class ACE_Map_Entry<ACE_HANDLE, ACE_Svc_Tuple<HTTP_Handler>*>; -template class ACE_Map_Manager<ACE_HANDLE, ACE_Svc_Tuple<HTTP_Handler>*, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Iterator_Base<ACE_HANDLE, ACE_Svc_Tuple<HTTP_Handler>*, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Iterator<ACE_HANDLE, ACE_Svc_Tuple<HTTP_Handler>*, ACE_SYNCH_RW_MUTEX>; -template class ACE_Map_Reverse_Iterator<ACE_HANDLE, ACE_Svc_Tuple<HTTP_Handler>*, ACE_SYNCH_RW_MUTEX>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_Connector<HTTP_Handler, ACE_SOCK_CONNECTOR> -#pragma instantiate ACE_Svc_Tuple<HTTP_Handler> -#pragma instantiate ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> -#pragma instantiate ACE_Map_Entry<ACE_HANDLE, ACE_Svc_Tuple<HTTP_Handler>*> -#pragma instantiate ACE_Map_Manager<ACE_HANDLE, ACE_Svc_Tuple<HTTP_Handler>*, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Iterator_Base<ACE_HANDLE, ACE_Svc_Tuple<HTTP_Handler>*, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Iterator<ACE_HANDLE, ACE_Svc_Tuple<HTTP_Handler>*, ACE_SYNCH_RW_MUTEX> -#pragma instantiate ACE_Map_Reverse_Iterator<ACE_HANDLE, ACE_Svc_Tuple<HTTP_Handler>*, ACE_SYNCH_RW_MUTEX> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/apps/JAWS/clients/Caching/http_handler.h b/apps/JAWS/clients/Caching/http_handler.h deleted file mode 100644 index 85a1b9338fe..00000000000 --- a/apps/JAWS/clients/Caching/http_handler.h +++ /dev/null @@ -1,76 +0,0 @@ -/* -*- c++ -*- */ -// Hey, Emacs! This is a C++ file. -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps/JAWS/clients/Caching -// -// = FILENAME -// http_handler.h -// -// = AUTHOR -// James Hu -// -// ============================================================================ - -#include "ace/Connector.h" -#include "ace/SOCK_Connector.h" - -class HTTP_Handler : public ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> - // = TITLE - // A simple HTTP protocol handler for clients. - // - // = DESCRIPTION - // Checks to see if the requested file is already cached. If - // so, it says so. If not, the request is issued to the - // connection. The fetched file is cached. -{ -public: - // = Initialization methods. - HTTP_Handler (void); - HTTP_Handler (const char * path); - - virtual int open (void *); - // Open hook. - - virtual int svc (void); - // Entry points defined by the abstract Svc_Handler. - - const char *filename (void) const; - // Accessor to the file being fetched. - -private: - char request_[BUFSIZ]; - int request_size_; - - char filename_[BUFSIZ]; - int response_size_; -}; - -class HTTP_Connector - // = TITLE - // A simple HTTP connector. - // - // = DESCRIPTION - // Creates an HTTP Handler based on the URL, and then delegates - // to to the SOCK_CONNECTOR. Adapter pattern. -{ -public: - int connect (const char * url); - // User entry point into the HTTP connector. - -private: - int parseurl (const char *url, - char *host, - u_short *port, - char *path); - // Helper function. - -private: - ACE_Connector<HTTP_Handler, ACE_SOCK_CONNECTOR> connector_; - // Factory that actively establishes a connection with an HTTP - // server. -}; - diff --git a/apps/JAWS/clients/Makefile b/apps/JAWS/clients/Makefile deleted file mode 100644 index 6eeda515bec..00000000000 --- a/apps/JAWS/clients/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for JAWS -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -INFO = README - -DIRS = Blobby \ - Caching - - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU - diff --git a/apps/JAWS/clients/README b/apps/JAWS/clients/README deleted file mode 100644 index e35d7af53c9..00000000000 --- a/apps/JAWS/clients/README +++ /dev/null @@ -1,13 +0,0 @@ -This directory contains the source code for various clients related to -JAWS, which is a high-performance HTTP Web server written with ACE. For -more information on JAWS, please see - -http://www.cs.wustl.edu/~jxh/research/ - -The subdirectories in this directory contain the following components - - . Blobby - a Blobby client - - . Caching - a Web client which caches - - . WebSTONE - modified to be multi-threaded diff --git a/apps/JAWS/clients/WebSTONE/COPYING b/apps/JAWS/clients/WebSTONE/COPYING deleted file mode 100644 index 13057b45514..00000000000 --- a/apps/JAWS/clients/WebSTONE/COPYING +++ /dev/null @@ -1,348 +0,0 @@ - While most of the source code in WebStone is covered by the terms -in the file LICENSE, the following files are covered by the GNU license, -reproduced below: - - config.guess - config.sub - ------------------------------ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) 19yy <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/apps/JAWS/clients/WebSTONE/README b/apps/JAWS/clients/WebSTONE/README deleted file mode 100644 index 2d024b925a1..00000000000 --- a/apps/JAWS/clients/WebSTONE/README +++ /dev/null @@ -1,245 +0,0 @@ -README WebStone 2.0.1 bug fix release - Proxy server bug fixed (now correctly handles proxy server) - Error reading page_stats error fixed - More Windows NT integration - Correctly handles URL's to different hostnames in the filelist - Improved Solaris compatibility - - NOTE: If you intend to run webstone with more than 100 URL -entries in the filelist, please edit src/bench.h and change the -MAXNUMOFPAGES value to reflect the higher number, and then recompile -everything. Copy the new binaries into the bin directory and then -run webstone. - -README WebStone 2.0 Release version - -WARNING: WebStone 2.0 results should not be compared with WebStone 1.1 - results. Even under the same fileset performance will not be - equivalent. - -Please see the notes for 2.0beta6 for quick and dirty install - This version includes a port of the webstone source code to Windows -NT. This port is still in progress, so it is not possible to guarantee -that everything is working correctly - however in our test configurations -it has performed correctly. Note that the supporting scripts and report -generating code has not been ported to NT yet. - - This version also institutes some basic run rules to eliminate the -lack of conformity in Webstone performance quotes. - To report Webstone numbers, some basic rules should be followed: - - 1) The fileset used for the test must be the fileset.standard fileset - included in the distribution. Tests of CGI performance must be - with the file filelist.cgi-heavy, and tests of NSAPI performance - must be carried out with filelist.dynamic-heavy - - 2) The run time should be set for 10 minutes, and the number of - clients should vary from 20 clients to 100 clients in increments - of 10. When a connections/second time is quoted, it must include - information about the number of clients involved. - - 3) Any special TCP/IP tuning which the server has recieved should - be documented, as well as HTTPD server version and configuration - information such as logging, DNS lookups and number of threads. - - -README - WebStone 2.0beta6 - -WARNING: Do not compare WebStone 2.0 results with WebStone 1.0 results. - WebStone 2.0 introduces significant changes in testing methodology - and reporting. - -This is the WebStone benchmark. Quick and dirty install: - - set up a Web server - - put this directory (WebStone) on a seperate machine (the "controller") - - "./webstone -setup", which does the following: - - gui-configure - This script may fail if you don't have a Web browser or - Perl5. Don't worry, unless you want to use the GUI. - - autoconf - If the GNU autoconf fails for your OS, please forward the - error messages, and any porting hints, to the author. - - make install - This may not be necessary, since IRIX binaries are included. - - edit conf/testbed to reflect your site - See the doc/FAQ-webstone.html for details. - - ./webstone -genfiles will put the files in conf/fileset - onto your Web server. - - ./webstone - - to display a table of results: ./webstone -results - -If you'd like to try out the GUI for WebStone: - - run "./webstone -setup", as above. - - make sure you have a Web browser installed - - ./configure - - ./webstone -gui - -Files of interest: - README: This document. - README.FIRST: Quick and dirty directions. - README.DynamicWorkload: Information on the CGI and NSAPI workloads. - webstone: wrapper shell script for everything. - Takes options: - -gui: start the GUI mode - -kill: kill stray WebStone processes - -genfiles: build files (from conf/fileset) - and rcp onto the server $SERVER - - results: print table of results - -setup: initial make and setup - -silent: runs in the background - -tail: tail -f of most recent run - -Files of interest (./src): - Makefile, *.c, *.h: The Webstone source code - -Files of interest (./bin): - checkfilelist: uses rsh to check web server for files in filelist. - genfiles, genrand: generates files of arbitrary length. - getstats: Collects network statistics from Web server, clients. - killbench: terminates stray WebStone processes. - rebootall: reboots all WebStone webclients. - runbench: wrapper script for WebStone. - webmaster: WebStone controller executable. - webstone: WebStone client executable. - wscollect: reports results in tabular format. - -Files of interest (./conf): - filelist: default list of files on the Web server, - with workload description. - filelist.photo: Model of a popular Web site - containing photographic images. - filelist.ss: Model of SGI's Silicon Surf WWW site. - fileset: list of files for genfiles to create. - testbed: config file describing Web server, client, and network setup. - -Documentation (./doc): - FAQ.html: The FAQ, current as of this distribution. - LICENSE: Legal status of WebStone. - testbed.help: Explains the parameters in conf/testbed. - webstone-white-paper.ps: The original WebStone white paper. - webstone.gif: The WebStone logo. - -Additional documentation: - FAQ.html: Frequently Asked Questions, with answers - webstone.ps: PostScript white paper on WebStone - -Problems, etc. may be addressed to the WebStone mailing list. -Read the FAQ for details. - -Release Notes (2.0 beta6): - * fixed a bug for Web servers not on port 80 - * further changes to bin/wscollect.pl - -Release Notes (2.0 beta5): - * numerous minor fixes suggested by gcc -Wall -pedantic - * updated FAQ - * changed bin/wscollect.pl to use Perl formats - -Release Notes (2.0 beta4): - * added #include <sys/time.h> to bench.h - * changed webclient located to $TMPDIR - this should help people - who don't want to run WebStone as root - * changed check for libm to floor() instead of sqrt(). Apparently - some systems implement sqrt() in libc - let's hope no one implement - floor() in libc and sqrt() in libm! - -Release Notes (2.0 beta3): - * more portability fixes - * successfully compiled on FreeBSD 2.2, IRIX without any source - changes - -Release Notes (2.0 beta2): - * additional timezone fixes for SunOS - -Release Notes (2.0 beta1): - * fixed a bug in the rexec portion of webmaster.c - * fixed a bug in the usage() routine of webmaster.c - * added bin/genfiles-from-filelist.sh - - bin/genfiles-from-filelist.sh <filename> - - generates appropriate-length files from <filename> - - <filename> must contain three fields: - <relative URL> <weight> #<size in bytes> - example: /file.html 1 #1024 - * added bin/mine-logs.pl - - usage: mine-logs.pl <filename> - where <filename> is an http server log file - - writes a WebStone workload to standard output - -Release Notes (2.0 alpha5): - * revised default testbed file - * changed wscollect to wscollect.pl for consistency - * changed webstone-gui to webstone-gui.pl for consistency - * added some NT porting hints - * added autoconf, which should help Linux and SunOS porting - -Release Notes (2.0 alpha4): - * added SunOS and Linux portability elements - * new scheme for random access to pages - * converted several static arrays to dynamic pointers - -Release Notes (2.0 alpha2): - * fixed per-page statistics - * new, client-independent data-passing scheme - * added support for proxy servers - -Release Notes (2.0 alpha1): - * new filelist scheme - however, this breaks per-page statistics - * minor fixes - -Release Notes (1.1): - * Improved webclient performance by combining GET and ACCEPT - HTTP headers in one write() call. - * Improved webclient performance on systems that always attempt - to map protocol names to numbers using YP. - * WARNING: since the old code introduced a significant latency - in some systems, DO NOT compare WebStone 1.1 results - with results generated by any previous versions. - -Release Notes (1.0.3): - * Netscape Server 1.1.2 exposed a couple bugs, which I've now fixed. - -Release Notes (1.0.2): - * Fixed runbench so that ITERATIONS, MINCLIENTS, and MAXCLIENTS don't - have to have a common denominator any more. - * Fixed a few cosmetic bugs. - -Release Notes (1.0.1): - * Fixed select() bug in webmaster - -Release Notes (1.0 final): - * Fixed the "Error reading 2nd timing info" bug - * Fixed numerous bugs in the GUI - * Froze feature set. Work can now begin on WebStone 1.1 - -Release Notes (1.0b3): - * New Web browser GUI - NOTE: most Web browsers take up substantial CPU time. - If you run the GUI, we recommend that you make the controller - a separate machine, and don't run any WebStone clients on it. - * Minor bug fixes - Squashed some dubious error messages, fixed some client- - controller communications problems. - * Reporting changes - Changes the units and order of the final summary statistics. - Basically, this is for my own convenience, so I don't have to - massage the data quite so much before using it. wscollect - now reports only the metrics I regard as important - but all - metrics are still reported in the runs/*/run files. - -LEGAL STUFF: - -This file and all files contained in this directory are -copyright 1995, Silicon Graphics, Inc. - -This software is provided without support and without any obligation on the -part of Silicon Graphics, Inc. to assist in its use, correction, modification -or enhancement. There is no guarantee that this software will be included in -future software releases, and it probably will not be included. - -THIS SOFTWARE IS PROVIDED "AS IS" WITH NO WARRANTIES OF ANY KIND INCLUDING THE -WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE, -OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - -In no event will Silicon Graphics, Inc. be liable for any lost revenue or -profits or other special, indirect and consequential damages, even if -Silicon Graphics, Inc. has been advised of the possibility of such damages.
\ No newline at end of file diff --git a/apps/JAWS/clients/WebSTONE/README.DynamicWorkload b/apps/JAWS/clients/WebSTONE/README.DynamicWorkload deleted file mode 100644 index a263d1a8a0e..00000000000 --- a/apps/JAWS/clients/WebSTONE/README.DynamicWorkload +++ /dev/null @@ -1,37 +0,0 @@ -WebStone Dynamic Workload - - WebStone now includes a workload that tests dynamically generated -Web pages. - - To use the dynamic workload models, you must install a dynamic module -on the Web server to be tested. The Web server must also be configured such -that a request for "/file.dyn-send?size=1024" (for example) will cause the -module to be run, and will return 1024 bytes of data. - -Example configuration (Netscape server, executable is "nsapi-send"): - cd src - make nsapi - cp nsapi-send.so /usr/lib - cd /usr/ns-home/httpd-80/config - in magnus.conf, add the line: - Init fn=load-modules shlib=nsapi.so funcs=nsapi-send - in obj.conf, add the line: - Service method=(GET|HEAD) fn=nsapi-send \ - type=magnus-internal/dyn-send - in mime.types, add the line: - type=magnus-internal/dyn-send exts=dyn-send - restart the Web server - - Example code for CGI and NS-API is included as src/cgi-send.c -and src/nsapi-send.c - if you implement other APIs, please forward a copy -of your code to the WebStone mailing list or to the WebStone authors. - -Included workloads: - conf/workload.dynamic-heavy: All content is dynamically generated. - conf/filelist.dynamic-medium: About 50% of content is dynamically - generated. - conf/filelist.dynamic-light: About 25% of content is dynamically - generated. - -As always, we encourage you to design your own workloads, tailored for your -environment. diff --git a/apps/JAWS/clients/WebSTONE/README.FIRST b/apps/JAWS/clients/WebSTONE/README.FIRST deleted file mode 100644 index b93c02afe3b..00000000000 --- a/apps/JAWS/clients/WebSTONE/README.FIRST +++ /dev/null @@ -1,21 +0,0 @@ -QUICK AND DIRTY README FOR WEBSTONE 2.0 - -For more details, consult the README* files and the doc/FAQ-webstone.html - -First, run: - - ./webstone -setup - - This script uses GNU autoconf, makes the binaries, and then -puts you into the vi editor with the conf/testbed file. For details on -how to edit conf/testbed, consult the FAQ. - -Next, if you have a Web broswer available, and you'd like to try the GUI - - ./webstone -gui - -Otherwise, run the benchmark by typing - - ./webstone - - diff --git a/apps/JAWS/clients/WebSTONE/WEBSTONE-VERSION-2.0 b/apps/JAWS/clients/WebSTONE/WEBSTONE-VERSION-2.0 deleted file mode 100644 index e69de29bb2d..00000000000 --- a/apps/JAWS/clients/WebSTONE/WEBSTONE-VERSION-2.0 +++ /dev/null diff --git a/apps/JAWS/clients/WebSTONE/bin/WebStone-common.pl b/apps/JAWS/clients/WebSTONE/bin/WebStone-common.pl deleted file mode 100755 index 0e3ddd80ceb..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/WebStone-common.pl +++ /dev/null @@ -1,61 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# - -1; - -sub show_model { - $model = `head -1 $wd/conf/filelist`; - $model =~ s/\#//; - ( $model ) = split(':', $model); - - print CLIENT <<EOF -<P><STRONG> -<A HREF=\"$wd/bin/WebStone-setup.pl\">$model -</A></STRONG> -EOF - ; -} - -sub html_begin { - - ( $title ) = @_; - - close(STDOUT); - open(STDOUT, ">&CLIENT"); - close(STDERR); - open(STDERR, ">&CLIENT"); - - print CLIENT <<EOF -<HTML> -<HEAD> -<TITLE>WebStone $title</TITLE> -<A HREF="$wd/doc/WebStone.html"> -<IMG SRC="$wd/doc/webstone.gif" ALT="WebStone" BORDER=0 ></A> -<H1>World Wide Web Server Benchmarking</H1> -<DL> -<DT><EM>If you have any questions, please read the -<A HREF="$wd/doc/FAQ-webstone.html">WebStone FAQ</A>.</EM> -<HR> -EOF - ; - -} - -sub html_end { - - print CLIENT <<EOF -<HR> -<ADDRESS><A HREF="$wd/doc/LICENSE.html">copyright 1995 Silicon Graphics</A> -</ADDRESS> -</BODY> -</HTML> -EOF - ; - - close(STDERR); - close(STDOUT); - open(STDOUT); - open(STDERR); -} - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/WebStone-manage.pl b/apps/JAWS/clients/WebSTONE/bin/WebStone-manage.pl deleted file mode 100755 index e9d28e8fecf..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/WebStone-manage.pl +++ /dev/null @@ -1,31 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# - -push(@INC, "$wd/bin"); -require('WebStone-common.pl'); - -html_begin("Administration"); - -$runsdir = "$wd/bin/runs"; -$thelength = length($runsdir) + 10; -$oldrunsdir = $runsdir; -$oldfilelist = "$wd/conf/filelist"; - -print CLIENT <<EOF -<FORM METHOD="POST" ACTION="$wd/bin/killbench.pl"> -<H3>Clean up stray WebStone processes</H3> -<INPUT TYPE="SUBMIT" VALUE="Kill"> -</FORM> - -<HR> -<FORM METHOD="POST" ACTION="$wd/bin/move-runs.pl"> -<H3>Move Results Directory to:</H3> -<INPUT TYPE=TEXT NAME=runsdir SIZE=$thelength VALUE=$runsdir> -<INPUT TYPE="SUBMIT" VALUE="Move Directory"> -</FORM> -EOF - ; - -html_end(); - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/WebStone-run.pl b/apps/JAWS/clients/WebSTONE/bin/WebStone-run.pl deleted file mode 100755 index 716cebfa602..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/WebStone-run.pl +++ /dev/null @@ -1,37 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# - -$testbed = "conf/testbed"; - -push(@INC, "$wd/bin"); -require('WebStone-common.pl'); - -html_begin("Run"); - -print CLIENT <<EOF -<H3><CENTER><A HREF="WebStone-setup.pl">Edit Configuration</A> -</CENTER></H3> -EOF - ; - -&show_model(); -print CLIENT "<PRE>"; - -open(FILEHANDLE, $testbed); -while (<FILEHANDLE>) { - (/^\#/) || print CLIENT $_; -} -close(FILEHANDLE); - -print CLIENT <<EOF -</PRE> -<CENTER> -<FORM METHOD=POST ACTION="http://localhost:$html_port$wd/bin/runbench.pl"> -<INPUT TYPE="submit" VALUE="Run WebStone"> -</CENTER> -EOF - ; - -html_end(); - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/WebStone-setup.pl b/apps/JAWS/clients/WebSTONE/bin/WebStone-setup.pl deleted file mode 100755 index 107e1d94890..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/WebStone-setup.pl +++ /dev/null @@ -1,95 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# - -push(@INC, "$wd/bin"); -require('WebStone-common.pl'); - -@keylist = (); - -html_begin("Setup"); - -show_model(); - -print CLIENT <<EOF -<FORM METHOD="POST" ACTION="$wd/bin/write-testbed.pl"> -EOF - ; - -&gettestbed(); -&getconfig(); - -print CLIENT <<EOF -</DL> -<P><INPUT TYPE="SUBMIT" VALUE="Write Configuration"> -</FORM> - -<HR> -<FORM METHOD="POST" ACTION="$wd/bin/move-filelist.pl"> -<H3>Choose a Web site model:</H3> -<DL> -EOF - ; - -for $key (sort(keys %filelist)) { - print CLIENT "<DD><INPUT TYPE=RADIO NAME=filelist "; - if ($key eq "filelist") { - print CLIENT " CHECKED "; - } - print CLIENT " VALUE=\"$wd/conf/$key\"> $key: $filelist{$key}"; -} - -print CLIENT <<EOF -</DL> -<INPUT TYPE="SUBMIT" VALUE="Set Workload"> - -EOF - ; - -html_end(); - -# end of main program - -sub gettestbed { - open(TESTBED, "$wd/conf/testbed"); - while (<TESTBED>) { - if (/^\#|^(\w)*$/) { # do nothing - } - else { - ( $textvalue, $thevalue ) = split( '=', $_ ); - ( $thevalue ) = split( '#', $thevalue); - $testbed{$textvalue} = $thevalue; - push(@keylist, $textvalue); - } - } - close(TESTBED); - - open(HELPFILE, "$wd/doc/testbed.help"); - while (<HELPFILE>) { - ( $key, $textvalue ) = split( ':', $_ ); - $helptext{$key} = $textvalue; - } - close(HELPFILE); - - foreach $key (@keylist) { - print CLIENT "<P><DT>$helptext{$key}"; - $thesize = length($testbed{$key}) + 5; - print CLIENT "<DD>$key <INPUT TYPE=TEXT NAME=$key "; - print CLIENT "SIZE=$thesize VALUE=$testbed{$key}>\n"; - } -} - -sub getconfig { - opendir(CONF, "$wd/conf") || die "open $wd/conf: $!"; - %filelist = ""; - foreach $file (sort readdir(CONF)) { - if ( $file =~ /^filelist.*/ ) { - $headtext = `head -1 $wd/conf/$file`; - $headtext =~ s/\#//; - ( $headtext ) = split(':', $headtext); - $filelist{$file} = $headtext; - } - } - closedir(CONF); -} - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/checkfilelist b/apps/JAWS/clients/WebSTONE/bin/checkfilelist deleted file mode 100755 index 4cc2d11c49e..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/checkfilelist +++ /dev/null @@ -1,35 +0,0 @@ -#! /bin/sh - -# -# NAME -# checkfilelist - try retrieving files from server -# -# SYNOPSIS -# checkfilelist servername portno filelist -# -# - -if test "$#" -lt 3 ; then - echo "usage: $0 servername portno filelist" - exit 2 -fi - -HOSTNAME=$1 ; export HOSTNAME -PORTNO=$2 ; export PORTNO -FILELIST=$3 ; export FILELIST - -grep '^/' $FILELIST | cut -f1 | -( -while read URL -do - export URL - echo ">>>>> $URL" - ( - telnet $HOSTNAME $PORTNO << _EOF_ -GET $URL HTTP/1.0 - -_EOF_ - ) 2> /dev/null | head -5 | grep 'HTTP/1.0' - killall telnet -done -) diff --git a/apps/JAWS/clients/WebSTONE/bin/genfiles b/apps/JAWS/clients/WebSTONE/bin/genfiles deleted file mode 100755 index d5f06aee6df..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/genfiles +++ /dev/null @@ -1,41 +0,0 @@ -#! /bin/sh -# - -# get configuration -. $WEBSTONEROOT/conf/testbed - -cat $WEBSTONEROOT/conf/fileset | -nawk ' -($1 ~ /^[0-9][0-9]*[kK][bB]*$/) { - sub(/[kK][bB]*/, "", $1); - cmd = "$WEBSTONEROOT/bin/genrand " $1*1024 " " $2 - print cmd; - system(cmd); - next -} - -($1 ~ /^[0-9][0-9]*[mM][bB]*$/) { - sub(/[kK][bB]*/, "", $1); - cmd = "$WEBSTONEROOT/bin/genrand " $1*1024*1024 " " $2 - print cmd; - system(cmd); - next -} - -($1 ~ /^[0-9][0-9]*$/) { - sub(/[kK][bB]*/, "", $1); - cmd = "$WEBSTONEROOT/bin/genrand " $1 " " $2 - print cmd; - system(cmd); - next -} ' $* - -# copy files -files=`cat $WEBSTONEROOT/conf/fileset | cut -f2 -d' '` -for f in $files -do - $RCP $f $SERVER:$WEBDOCDIR - rm -f $f -done - -#end diff --git a/apps/JAWS/clients/WebSTONE/bin/genfiles-from-filelist.sh b/apps/JAWS/clients/WebSTONE/bin/genfiles-from-filelist.sh deleted file mode 100755 index 1293709238c..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/genfiles-from-filelist.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh -# - -# get configuration -[ -n "$WEBSTONEROOT" ] || WEBSTONEROOT=`pwd`/.. -. $WEBSTONEROOT/conf/testbed - -case $# in - 1) - FILELIST=$1 - ;; - *) - FILELIST=$WEBSTONEROOT/conf/filelist - ;; -esac - -TIMESTAMP=`date +"%y%m%d_%H%M"` -mkdir $TMPDIR/webstone-genfiles.$TIMESTAMP -cd $TMPDIR/webstone-genfiles.$TIMESTAMP - -cat $FILELIST | -nawk ' -($3 ~ /^\#[0-9]*/) { - sub(/^\#/, "", $3); - cmd = WEBSTONEROOT "/bin/genrand " $3 " ."$1 - print cmd; - system(cmd); - cmd = RCP " ." $1 " " SERVER ":" WEBDOCDIR - print cmd; - system(cmd); - cmd = "rm -f ." $1 - print cmd; - system(cmd); - next -} -' $* WEBSTONEROOT=$WEBSTONEROOT RCP=$RCP SERVER=$SERVER WEBDOCDIR=$WEBDOCDIR - -cd $TMPDIR -rm -rf $TMPDIR/webstone-genfiles.$TIMESTAMP - -#end diff --git a/apps/JAWS/clients/WebSTONE/bin/gui-configure b/apps/JAWS/clients/WebSTONE/bin/gui-configure deleted file mode 100755 index dcea4e3fe1c..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/gui-configure +++ /dev/null @@ -1,174 +0,0 @@ -#!/bin/sh -- because we're not sure where perl is yet -# - -'true' || eval 'exec perl -S $0 $argv:q'; -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' -& eval 'exec /usr/local/bin/perl -S $0 $argv:q' - if 0; - -# Usage: [perl] configure [file] -# -# This replaces the program paths (e.g. /bin/awk) with an -# alternate path that is found in the file "file.paths". It also finds -# perl5 and changes the path in all the stand-alone perl programs. -# - -$debug = 0; - -# -# Target shell scripts in question: -@shell_scripts=("conf/paths.pl", "conf/paths.sh"); -@perl5_src = < bin/webstone-gui.pl bin/WebStone-common.pl bin/killbench.pl bin/view-results.pl bin/WebStone-manage.pl bin/move-filelist.pl bin/write-testbed.pl bin/WebStone-run.pl bin/move-runs.pl bin/WebStone-setup.pl bin/runbench.pl >; -@perl_src = < bin/wscollect.pl bin/mine-logs.pl >; -@benchmark_dir_src = < webstone bin/killbench bin/runbench >; - -# all the HTML browsers we know about, IN ORDER OF PREFERENCE! -@all_www= ("netscape", "Mosaic", "xmosaic", "lynx"); - -# -# Potential directories to find commands; first, find the user's path... -$PATH = $ENV{"PATH"}; - -# additional dirs; *COLON* separated! -$other_dirs="/usr/ccs/bin:/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/ucb/bin:/usr/sbin:/usr/etc:/usr/local/bin:/usr/bin/X11:/usr/X11/bin:/usr/openwin/bin"; - -# -# split into a more reasonable format. Personal aliases come last. -@all_dirs = split(/:/, $other_dirs . ":" . $PATH); - -print "checking to make sure all the target(s) are here...\n"; - -for (@shell_scripts) { - die "ERROR -- $_ not found!\n" unless -f $_; - } - -# find perl -print "Trying to find perl...\n"; -for $dir (@all_dirs) { - # first, find where it might be - next if (! -d $dir); - while (<$dir/perl*>) { - if (-x $_) { - $perl_version=`($_ -v 2> /dev/null) | - awk '/This is perl/ { print $NF }'`; - if ($perl_version) { - $PERL=$_; - $pflag="1"; - last; - } - } - last if $pflag; - } - last if $pflag; - } - -if ($PERL) { - print "\nPerl is in $PERL\n"; - for (@perl_src) { $perl_src .= "$_ "; } - print "\nchanging the source in: $perl_src\n"; - system "$PERL -pi -e \"s@^#!.*/perl.*@#!$PERL@;\" $perl_src"; - - # make sure things are executable... - system("chmod u+x $perl_src"); -} -else -{ - printf "\nSome WebStone functions require Perl\n" unless $PERL; -} -# end if $PERL - -# find perl5 -$pflag = 0; -print "Trying to find perl5...\n"; -for $dir (@all_dirs) { - # first, find where it might be; oftentimes you'll see perl, - # perl4, perl5, etc. in the same dir - next if (! -d $dir); - while (<$dir/perl5* $dir/perl*>) { - if (-x $_) { - $perl_version=`($_ -v 2> /dev/null) | - awk '/This is perl, version 5/ { print $NF }'`; - if ($perl_version) { - $PERL5=$_; - $pflag="1"; - last; - } - } - last if $pflag; - } - last if $pflag; -} - -if ($PERL5) { - print "\nPerl5 is in $PERL5\n"; - - for (@perl5_src) { $perl5_src .= "$_ "; } - print "\nchanging the source in: $perl5_src\n"; - system "$PERL5 -pi -e \"s@^#!.*/perl.*@#!$PERL5@;\" $perl5_src"; - system("chmod u+x $perl5_src"); -} -else -{ - printf "\nThe WebStone GUI requires Perl5\n" unless $PERL5; -} -#end if $PERL5 - -# find the most preferred www viewer first. -for $www (@all_www) { - for $dir (@all_dirs) { - if (!$MOSAIC) { - if (-x "$dir/$www") { - $MOSAIC="$dir/$www"; - next; - } - } - } - } -if ($MOSAIC) { - print "\nHTML/WWW Browser is $MOSAIC\n"; - - $upper{"MOSAIC"} = $MOSAIC; - } -else { print "Cannot find a web browser! WebStone cannot be run except in CLI"; } - -print "\nOk, now doing substitutions on the shell scripts...\n"; -for $shell (@shell_scripts) { - print "Changing paths in $shell...\n"; - die "Can't open $shell\n" unless open(SCRIPT, $shell); - rename($shell, $shell . '.old'); - die "Can't open $shell\n" unless open(OUT, ">$shell"); - - # - # Open up the script, search for lines beginning with - # stuff like "TEST", "AWK", etc. If the file ends in "pl", - # assume it's a perl script and change it accordingly - while (<SCRIPT>) { - $found = 0; - for $command (keys %upper) { - if(/^\$?$command=/) { - # shell script - if ($shell !~ /.pl$/) { - print OUT "$command=$upper{$command}\n"; } - # perl script - else { - print OUT "\$" . "$command=\"$upper{$command}\";\n"; - } - $found = 1; - } - } - print OUT $_ if !$found; - - } - close(SCRIPT); - close(OUT); - } - - -for (@benchmark_dir_src) { $benchmark_dir_src .= "$_ "; } -print "\nchanging the source in: $benchmark_dir_src\n"; -$BENCHMARK_DIR=`pwd`; -chop $BENCHMARK_DIR; -$BENCHMARK_DIR =~ s/\//\\\//g; -system "$PERL -pi -e \"s/<BENCHMARK_DIR>/$BENCHMARK_DIR/\" $benchmark_dir_src"; - -# done... diff --git a/apps/JAWS/clients/WebSTONE/bin/killbench b/apps/JAWS/clients/WebSTONE/bin/killbench deleted file mode 100755 index 2997d891dca..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/killbench +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -x -# -# get configuration -. $WEBSTONEROOT/conf/testbed - -for i in $CLIENTS -do - $RSH -l root $i /etc/killall $1 webclient -done -# -sleep 1 -/etc/killall $1 webmaster -/etc/killall $1 runbench diff --git a/apps/JAWS/clients/WebSTONE/bin/killbench.pl b/apps/JAWS/clients/WebSTONE/bin/killbench.pl deleted file mode 100755 index 42c616a79e0..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/killbench.pl +++ /dev/null @@ -1,15 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# - -push(@INC, "$wd/bin"); -require('WebStone-common.pl'); - -html_begin(); - -print CLIENT "<P>Killing WebStone processes<PRE>"; -system("$wd/bin/killbench"); -print CLIENT "</PRE><P>Done."; - -html_end(); - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/mine-logs.pl b/apps/JAWS/clients/WebSTONE/bin/mine-logs.pl deleted file mode 100755 index 1b721aa46ae..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/mine-logs.pl +++ /dev/null @@ -1,88 +0,0 @@ -#!/pkg/gnu/bin//perl -# -# mine-logs.pl: -# script to transform access logs into WebStone workload -# -# created 18 December 1995 mblakele@engr.sgi.com -# -# functional map: -# usage: mine-logs.pl access.log -# -# 1. For each line in the input -# a. parse the URL and the time, the outcome code, and the size -# b. if the code is 200, and it's a GET, -# do we already know about this URL? -# i. yes - increment its counter -# ii. no - create a slot for it, record size, -# and set counter=1 -# - -$debug = 0; -$line_number = 0; - -while (<>) { - chomp; - - $line_number++; - ($line_number % 1000) || printf STDERR "."; - # parse line - ( $client, $junk1, $junk2, $date, $timezone, - $command, $url, $version, $result_code, $size ) = - split; - # strip some junk - $command =~ s/\"//; - $date =~ s/\[//; - - ($debug) && printf STDERR "$client, $date, $command, $url, $result_code, $size\n"; - - # is it a GET? Did it succeed? (i.e., is the result code 200?) - if (($command eq 'GET') && ($result_code == 200)) { - # is this URL already in the key set? - if (exists $counter{$url}) { - # URL is in key set - ($debug) && printf STDERR "URL $url already in key set: incrementing\n"; - $counter{$url}++; - if ($size == $size{$url}) { - ($debug) && printf STDERR "size mismatch on $url: $size != $size{$url}\n"; - if ($size <=> $size{$url}) { $size{$url} = $size; } - } - } - else { - # URL isn't in key set - ($debug) && printf STDERR "URL $url isn't in key set: adding size $size\n"; - $counter{$url} = 1; - $size{$url} = $size; - } - # end if key set - } # end if GET -} -# end of input file -printf STDERR "\n"; - -# now we print out a workload file - -# first, the headline -$date = `date`; -chomp($date); -printf "# WebStone workload file\n# \tgenerated by $0 $date\n#\n"; - -# next, sort the keys -@sorted_keys = sort by_counter keys(%counter); - -# iterate through sorted keys -foreach $key (@sorted_keys) { - # print url, weighting, and (commented) the size in bytes - ($debug) && printf STDERR "printing data for $key\n"; - printf "$key\t$counter{$key}\t#$size{$key}\n"; -} -# end foreach - -# end main - -sub -by_counter { - $counter{$b} <=> $counter{$a}; -} -# end by_counter - -# end mine-logs.pl diff --git a/apps/JAWS/clients/WebSTONE/bin/move-filelist.pl b/apps/JAWS/clients/WebSTONE/bin/move-filelist.pl deleted file mode 100755 index 0155b83f972..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/move-filelist.pl +++ /dev/null @@ -1,26 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# - -push(@INC, "$wd/bin"); -require('WebStone-common.pl'); - -$oldfilelist = "$wd/conf/filelist"; - -html_begin(); - -if ($filelist ne $oldfilelist) { - $backup = $oldfilelist . ".bak"; - print CLIENT "<BODY>Backing up $oldfilelist to $backup"; - rename($oldfilelist, $backup); - print CLIENT "<P>Copying $filelist to $oldfilelist"; - link($filelist, $oldfilelist); - print CLIENT "<P>Done."; -} -else -{ - print CLIENT "<STRONG>Can't move $filelist <P>to $filelist</STRONG>"; -} - -html_end(); - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/move-runs.pl b/apps/JAWS/clients/WebSTONE/bin/move-runs.pl deleted file mode 100755 index a4ca528f034..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/move-runs.pl +++ /dev/null @@ -1,24 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# - -push(@INC, "$wd/bin"); -require('WebStone-common.pl'); - -html_begin(); - -if ($runsdir ne $oldrunsdir) { - print CLIENT "<BODY>Moving $oldrunsdir to $runsdir..."; - if (-e $runsdir) { - print CLIENT "<STRONG>Error: $runsdir already exists!</STRONG>"; - } - rename($oldrunsdir, $runsdir); - print CLIENT "<P>Done."; -} -else -{ - print CLIENT "<STRONG>Can't move $runsdir <P>to $oldrunsdir</STRONG>"; -} - -html_end(); - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/rebootall b/apps/JAWS/clients/WebSTONE/bin/rebootall deleted file mode 100755 index 2de65110027..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/rebootall +++ /dev/null @@ -1,9 +0,0 @@ -#! /bin/sh -x - -# get configuration -. $WEBSTONEROOT/conf/testbed - -for i in $CLIENTS -do - $RSH -l root $i "sleep 5 ; init 6" & -done diff --git a/apps/JAWS/clients/WebSTONE/bin/runbench b/apps/JAWS/clients/WebSTONE/bin/runbench deleted file mode 100755 index 409351f8f55..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/runbench +++ /dev/null @@ -1,193 +0,0 @@ -#!/bin/sh -# $Header$ -# set -x -set +x -[ -n "$WEBSTONEROOT" ] || WEBSTONEROOT=`pwd`/../ - -case $# in - 1) - FILELIST=$1 - ;; - *) - FILELIST=$WEBSTONEROOT/conf/filelist - ;; -esac - -# load configurations -. $WEBSTONEROOT/conf/testbed - -[ -n "$DEBUG" ] && set +x - -# check variables -[ -n "$ITERATIONS" ] || ITERATIONS="1" -[ -n "$MINCLIENTS" ] || MINCLIENTS="1" -[ -n "$MAXCLIENTS" ] || MAXCLIENTS="1" -[ -n "$CLIENTINCR" ] || CLIENTINCR="1" -[ -n "$TIMEPERRUN" ] || TIMEPERRUN="1" -# don't care about PROXYSERVER -[ -n "$SERVER" ] || SERVER="www" -[ -n "$PORTNO" ] || PORTNO="80" -# [ -n "$SERVERINFO" ] || SERVERINFO="uname -a" -# OSTUNINGFILES -# WEBSERVERDIR -# WEBDOCDIR -# WEBSERVERTUNINGFILES -[ -n "$CLIENTS" ] || CLIENTS="localhost" -[ -n "$CLIENTACCOUNT" ] || CLIENTACCOUNT=$USER -[ -n "$CLIENTPASSWORD" ] || CLIENTPASSWORD=$CLIENTACCOUNT -# [ -n "$CLIENTINFO" ] || CLIENTINFO="uname -a" -[ -n "$TMPDIR" ] || TMPDIR="/tmp" -[ -n "$RCP" ] || RCP="rcp" -[ -n "$RSH" ] || RSH="rsh" - -export ITERATIONS MINCLIENTS MAXCLIENTS CLIENTINCR TIMEPERRUN -export SERVER PORTNO SERVERINFO -export CLIENTS CLIENTACCOUNT CLIENTPASSWORD CLIENTINFO -export TMPDIR RCP RSH - -echo "Clients: " $CLIENTS - -# -# Estimate run time -# -NUMCLIENTHOSTS=`echo $CLIENTS | wc -w` -TRIALS=`expr 1 + \( $MAXCLIENTS - $MINCLIENTS \) / $CLIENTINCR` -RUNTIME=`expr 60 \* $ITERATIONS \* $TRIALS \* $TIMEPERRUN` -RUNTIME=`expr $RUNTIME + $TRIALS \* \( $MAXCLIENTS + $MINCLIENTS \) \ - / \( 2 \* $NUMCLIENTHOSTS \)` - -echo "Estimated run time:" `expr $RUNTIME / 3600` "hours" \ - `expr $RUNTIME % 3600 / 60` "minutes" - -# -# Checking for valid set of benchmark files to retrieve -# -#if [ -z "$PROXYSERVER" ] -#then -# echo "Checking for a valid set of benchmark files" -# CHECKLISTTMP=$TMPDIR/webstone-checkfilelist.$$ -# rm -f $CHECKFILELISTTMP -# $WEBSTONEROOT/bin/checkfilelist $SERVER $PORTNO $FILELIST > $CHECKLISTTMP 2>&1 -# if [ `grep -c ' 4[0-9][0-9] '< $CHECKLISTTMP` -gt 0 ] -# then -# echo "ERROR: not all files in filelist are on server:" -# echo "----- checkfilelist results -----" -# cat $CHECKLISTTMP -# echo "----- checkfilelist results -----" -# rm -f $CHECKLISTTMP -# exit 1 -# else -# echo "OK: All files found" -# fi -# rm -f $CHECKLISTTMP -#fi -# end if $PROXYSERVER - -# -# distribute webclient binary -# -for i in $CLIENTS -do - $RCP $WEBSTONEROOT/bin/webclient $i:$TMPDIR #/usr/local/bin -done - -# BEGIN iterations -J=1 -while [ $J -le $ITERATIONS ] -do - NUMCLIENTS=$MINCLIENTS - while [ $NUMCLIENTS -le $MAXCLIENTS ] - do - echo "***** Iteration $J, Total clients "`expr $NUMCLIENTS`" **********" - date - TIMESTAMP=`date +"%y%m%d_%H%M"` - LOGDIR=$WEBSTONEROOT/bin/runs/$TIMESTAMP - - # - # nuke debug files - # - for client in $CLIENTS - do - $RSH $client "rm /tmp/webstone-debug*" > /dev/null 2>&1 - done - - mkdir -p $LOGDIR - rm -f $LOGDIR/config - touch $LOGDIR/config - CLIENTSPERHOST=`expr $NUMCLIENTS / $NUMCLIENTHOSTS` - EXTRACLIENTS=`expr $NUMCLIENTS % $NUMCLIENTHOSTS` - - for i in $CLIENTS - do - if [ $EXTRACLIENTS -gt 0 ] - then - echo "$i $CLIENTACCOUNT $CLIENTPASSWORD `expr $CLIENTSPERHOST + 1`" \ - >> $LOGDIR/config - EXTRACLIENTS=`expr $EXTRACLIENTS - 1` - else - echo "$i $CLIENTACCOUNT $CLIENTPASSWORD $CLIENTSPERHOST" \ - >> $LOGDIR/config - fi - done - cp $FILELIST $LOGDIR/`basename $FILELIST` - - # - # Put test configuration files on clients - # - for i in $CLIENTS localhost - do - $RSH $i "rm -f $TMPDIR/config $TMPDIR/`basename $FILELIST`" - $RCP $LOGDIR/config $i:$TMPDIR/config - $RCP $LOGDIR/`basename $FILELIST` $i:$TMPDIR/filelist - done - - # - # Get starting configuration and stats from each participant - # - $RSH $SERVER "$SERVERINFO" > $LOGDIR/hardware.$SERVER 2>&1 - for i in $CLIENTS - do - $RSH $i "$CLIENTINFO" > $LOGDIR/hardware.$i 2>&1 - done - - # set -x - for i in $OSTUNINGFILES $WEBSERVERTUNINGFILES - do - $RCP $SERVER:$i $LOGDIR - done - set +x - - # - # Run benchmark - # - date - CMD="$WEBSTONEROOT/bin/webmaster -v -u $TMPDIR/filelist" - CMD=$CMD" -f $TMPDIR/config -l $TIMEPERRUN" - [ -n "$SERVER" ] && CMD=$CMD" -w $SERVER" - [ -n "$PORTNO" ] && CMD=$CMD" -p $PORTNO" - [ -n "$PROXYSERVER" ] && CMD=$CMD" -P $PROXYSERVER" - [ -n "$DEBUG" ] && CMD=$CMD" -d" - echo $CMD - - # dump environment into $LOGDIR - rm -rf $LOGDIR/controller.env - env > $LOGDIR/controller.env - - $CMD | tee $LOGDIR/run - - # - # Get ending configuration and stats from each participant - # - date - #for i in $SERVER $CLIENTS - #do - #$WEBSTONEROOT/bin/getstats $i > $LOGDIR/end.$i 2>&1 - #done - #date - NUMCLIENTS=`expr $NUMCLIENTS + $CLIENTINCR` - done - # while NUMCLIENTS - J=`expr $J + 1` -done -# while J -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/runbench.pl b/apps/JAWS/clients/WebSTONE/bin/runbench.pl deleted file mode 100755 index 81071504f1a..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/runbench.pl +++ /dev/null @@ -1,36 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# - -push(@INC, "$wd/bin"); -require('WebStone-common.pl'); -require('flush.pl'); - -# force flush after every write or print -$| = 1; - -html_begin("In Progress"); - -print CLIENT "<H3><CENTER>Running WebStone</CENTER></H3><PRE>"; -show_model(); -&flush(CLIENT); -&flush(STDOUT); - -&start_runbench(); - -print CLIENT <<EOF -<TITLE>WebStone Completed</TITLE> -</PRE><CENTER> -<FORM METHOD=POST ACTION="http://localhost:$html_port$wd/bin/view-results.pl"> -<INPUT TYPE="submit" VALUE="View Results"> -</CENTER> -EOF - ; - -html_end(); - -sub start_runbench { - $command = "cd $wd/bin; ./runbench"; - system($command); -} - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/tabs2html b/apps/JAWS/clients/WebSTONE/bin/tabs2html deleted file mode 100755 index 8c7d851c357..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/tabs2html +++ /dev/null @@ -1,13 +0,0 @@ -#! /bin/sh - -nawk ' -BEGIN { FS=" " ; print "<BODY><TABLE>" } -{ - print "<TR ALIGN=RIGHT VALIGN=BOTTOM>" - for (i=1; i <= NF; i++) { - print "<TD>" $i "</TD>" - } - print "</TR>" -} -END { print "</TABLE></BODY>" } -' $* diff --git a/apps/JAWS/clients/WebSTONE/bin/view-results.pl b/apps/JAWS/clients/WebSTONE/bin/view-results.pl deleted file mode 100755 index 7ff961efcca..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/view-results.pl +++ /dev/null @@ -1,53 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# -push(@INC, "$wd/bin"); -require('WebStone-common.pl'); - -require('wscollect.pl'); - -$debug = 0; - -$printedTitles = 0; - -html_begin("Results"); - -print CLIENT "<H3>WebStone Results</H3>"; - -($debug) && print STDERR "opening table\n"; -print CLIENT "<BODY><TABLE BORDER=1>\r"; - -@directories = ("$wd/bin/runs"); -directory: for (@directories) { - &find($_); -} - -($debug) && print STDERR "closing table\n"; -print CLIENT "</TABLE></BODY>\r"; - -html_end(); - -# end main - -sub printcustom { - if (!$printedTitles) { - $printedTitles = 1; - print CLIENT "<TR>"; - for $title (@title) { - print CLIENT "<TH>$title</TH>\r"; - } # end for title - print CLIENT "</TR>\r"; - } - print CLIENT "<TR>"; - $first_column = 1; - for $data (@data) { - if ($first_column) { - $first_column = 0; - print CLIENT "<TD><A HREF=$wd/bin/runs/$data>$data</A></TD>\r"; - } else { - print CLIENT "<TD ALIGN=RIGHT>$data</TD>\r"; - } - } # end for data - print CLIENT "</TR>\r"; -} - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/webstone-gui.pl b/apps/JAWS/clients/WebSTONE/bin/webstone-gui.pl deleted file mode 100755 index 006cd9eba7c..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/webstone-gui.pl +++ /dev/null @@ -1,316 +0,0 @@ -#!/pkg/gnu/bin//perl5 - -require 'conf/paths.pl'; - -#$debug = 1; -$HELPME="http://reality.sgi.com/employees/mblakele_engr/WebStone/"; -$| = 1; # set pipes to hot - -&html(); - -sub html { - local($helper, $wd); - - &start_html_server(); - # These strings are used in, among others, PERL-to-HTML scripts. - # - $wd = `pwd`; - chop $wd; - - print "$html_port\n" if $debug; - - $HTML_STARTPAGE = "http://localhost:$html_port$wd/doc/WebStone.html"; - - # - # Fork off the HTML client, and fork off a server process that - # handles requests from that client. The parent process waits - # until the client exits and terminates the server. - # - print "Starting $MOSAIC...\n" if $debug; - - if (($client = fork()) == 0) { - foreach (keys %ENV) { - delete $ENV{$_} if (/proxy/i && !/no_proxy/i); - } - exec($MOSAIC, "$HTML_STARTPAGE") - || die "cannot exec $MOSAIC: $!"; - } - - if (($server = fork()) == 0) { - if (($helper = fork()) == 0) { - alarm 3600; - &patience(); - } - kill 'TERM',$helper; - $SIG{'PIPE'} = 'IGNORE'; - for (;;) { - accept(CLIENT, SOCK) || die "accept: $!"; - select((select(CLIENT), $| = 1)[0]); - &process_html_request(); - close(CLIENT); - } - } - - # - # Wait until the client terminates, then terminate the server. - # - close(SOCK); - waitpid($client, 0); - kill('TERM', $server); - exit; -} - -# -# Set up a listener on an arbitrary port. There is no good reason to -# listen on a well-known port number. -# -sub start_html_server { - local($sockaddr, $proto, $junk); - - $AF_INET = 2; - $SOCK_STREAM = 2; - $PORT = 0; #1024; - - $sockaddr = 'S n a4 x8'; - $this = pack($sockaddr, $AF_INET, $PORT, "\0\0\0\0"); - ($junk, $junk, $proto) = getprotobyname('tcp'); - socket(SOCK, $AF_INET, $SOCK_STREAM, $proto) || die "socket: $!"; - setsockopt(SOCK, 0xffff, 0x0004, 1) || die "setsockopt: $!"; - bind(SOCK, $this) || die "bind: $!"; - listen(SOCK, 1) || die "listen: $!"; - ($junk, $html_port) = unpack($sockaddr, getsockname(SOCK)); -} - - -# -# Process one client request. We expect the client to send stuff that -# begins with: -# -# command /password/perl_script junk -# -# Where perl_script is the name of a perl file that is executed via -# do "perl_script"; -# -# In case of a POST command the values in the client's attribute-value -# list are assigned to the corresponding global PERL variables. -# -sub process_html_request { - local($request, $command, $script, $magic, $url, $peer); - local(%args); - - # - # Parse the command and URL. Update the default file prefix. - # - $request = <CLIENT>; - print $request if $debug; - ($command, $url) = split(/\s+/, $request); - if ($command eq "" || $command eq "QUIT") { - return; - } - - #($junk, $script) = split(/\//, $url, 2); - #($script, $html_script_args) = split(',', $script, 2); - #($HTML_CWD = "file:$script") =~ s/\/[^\/]*$//; - $script = $url; - - while (<CLIENT>) { - last if (/^\s+$/); - } - - if ($command eq "GET") { - if (-d $script) { - get_dir($script); - } - elsif ($script =~ /\.pl\b/) { - perl_html_script($script); - } - else { - get_file($script); - } - } elsif ($command eq "POST") { - - print $request if $debug; - flush; - # - # Process the attribute-value list. - # - if ($_ = <CLIENT>) { - print "Hi $_" if $debug; - flush; - s/\s+$//; - s/^/\n/; - s/&/\n/g; - $html_post_attributes = ''; - $* = 1; - for (split(/(%[0-9][0-9A-Z])/, $_)) { - $html_post_attributes .= (/%([0-9][0-9A-Z])/) ? - pack('c',hex($1)) : $_; - } - %args = ('_junk_', split(/\n([^=]+)=/, $html_post_attributes)); - delete $args{'_junk_'}; - for (keys %args) { - print "\$$_ = $args{$_}\n" if $debug; - ${$_} = $args{$_}; - } - perl_html_script($script); - } else { - &bad_html_form($script); - } - } else { - &bad_html_command($request); - } -} - - -# -# Unexpected HTML command. -# -sub bad_html_command { - local($request) = @_; - - print CLIENT <<EOF -<HTML> -<HEAD> -<TITLE>Unknown command</TITLE> -<LINK REV="made" HREF=$HELPME> -</HEAD> -<BODY> -<H1>Unknown command</H1> -The command <TT>$request<TT> was not recognized. -</BODY> -</HTML> -EOF -; -} - -# -# Execute PERL script -# -sub perl_html_script { - local($script) = @_; - - if (! -e $script) { - print CLIENT <<EOF -<HTML> -<HEAD> -<TITLE>File not found</TITLE> -<LINK REV="made" HREF=$HELPME> -</HEAD> -<BODY> -<H1>File not found</H1> -The file <TT>$script</TT> does not exist or is not accessible. -</BODY> -</HTML> -EOF -; return; - } - do $script; - if ($@ && ($@ ne "\n")) { - print CLIENT <<EOF -<HTML> -<HEAD> -<TITLE>Command failed</TITLE> -<LINK REV="made" HREF=$HELPME> -</HEAD> -<BODY> -<H1>Command failed</H1> -$@ -</BODY> -</HTML> -EOF -; - } -} - -# -# Missing attribute list -# -sub bad_html_form { - local($script) = @_; - - print CLIENT <<EOF -<HTML> -<HEAD> -<TITLE>No attribute list</TITLE> -<LINK REV="made" HREF=$HELPME> -</HEAD> -<BODY> -<H1>No attribute list</H1> - -No attribute list was found. -</BODY> -</HTML> -EOF -; -} - -# -# Give them something to read while the server is initializing. -# -sub patience { - for (;;) { - accept(CLIENT, SOCK) || die "accept: $!"; - <CLIENT>; - print CLIENT <<EOF -<HTML> -<HEAD> -<TITLE>Initializing...</TITLE> -<LINK REV="made" HREF=$HELPME> -</HEAD> -<BODY> -<H1>Initializing...</H1> -WebStone is initializing... -</BODY> -</HTML> -EOF -; - close(CLIENT); - } -} - -sub get_file { - local($file) = @_; - - print CLIENT <<EOF -<HTML> -<HEAD> -<TITLE>$file</TITLE> -</HEAD> -<H1>$file</H1> -<BODY><PRE> -EOF - unless ($file =~ /(html|htm|gif|jpeg|jpg)\b/); - - open(FILE, $file); - while (<FILE>) { - print CLIENT $_; - } - close(FILE); - - print CLIENT <<EOF -</PRE> -</HTML> -EOF - unless ($file =~ /(html|htm|gif|jpeg|jpg)\b/); -} - -sub get_dir { - local($dir) = @_; - opendir(DIRECTORY, $dir); - @listing = readdir(DIRECTORY); - closedir(DIRECTORY); - print CLIENT <<EOF -<HTML> -<HEAD> -<TITLE>$dir</TITLE> -</HEAD> -<H1>$dir</H1> -<BODY> -EOF - ; - - while (<@listing>) { - print CLIENT "<P><A HREF=$dir/$_>$_</A>"; - } - print CLIENT "</HTML>"; -} diff --git a/apps/JAWS/clients/WebSTONE/bin/write-testbed.pl b/apps/JAWS/clients/WebSTONE/bin/write-testbed.pl deleted file mode 100755 index 9f2c75af0ba..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/write-testbed.pl +++ /dev/null @@ -1,47 +0,0 @@ -#!/pkg/gnu/bin//perl5 -# -# write new values from form to $wd/conf/testbed, and run WebStone -# - -push(@INC, "$wd/bin"); -require('WebStone-common.pl'); - -html_begin("Current Configuration"); - -&show_model(); -&write_data(); - -print CLIENT <<EOF -<HR> -<FORM METHOD="POST" ACTION="$wd/bin/runbench.pl"> -<P><INPUT TYPE="SUBMIT" VALUE="Run WebStone"> -</FORM> -</DL> - -EOF - ; - -html_end(); - -# end main - -sub write_data { - rename("$wd/conf/testbed", "$wd/conf/testbed.bak") || - die "rename testbed: $!\n"; - open(TESTBED, ">>$wd/conf/testbed") || die "open testbed: $!\n"; - - print CLIENT "<PRE>"; - - foreach $key (@keylist) { - $$key =~ s/\+/ /g; - $newvalue = "$key=\"$$key\"\n"; - print CLIENT $newvalue; - print TESTBED $newvalue; - } - - print CLIENT "</PRE>"; - - close(TESTBED); -} - -# end diff --git a/apps/JAWS/clients/WebSTONE/bin/wscollect.pl b/apps/JAWS/clients/WebSTONE/bin/wscollect.pl deleted file mode 100755 index adf5fee56eb..00000000000 --- a/apps/JAWS/clients/WebSTONE/bin/wscollect.pl +++ /dev/null @@ -1,139 +0,0 @@ -#!/pkg/gnu/bin//perl -# $Header$ -# updated version of the old wscollect script which goes through -# webstone run directories and summarizes the output in tabular -# format. -# syc 4/25/96 -# - -require "find.pl"; - -# -# the list @runs contains the timestamps for the runs which are found -# during the traversal of the runs directory. This list is used for -# indices into the associative arrays for storing run information. -# -# $numclients{ $time } - number of clients for the run -# $connrate{ $time } - connection rate average -# $littlesload{ $time } - little's load factor -# $latency{ $time } - latency average -# $error{ $time } - error rate -# $throughput{ $time } - throughput - -local( @runs, - %numclients, - %connrate, - %littlesload, - %latency, - %error, - %throughput); - -# Got rid of the trick hack of the title names, someone can put it -# back in later -@title = ( "Timestamp", - "Total number of clients", - "Connection rate average (conn/s)", - "Little's Load Factor", - "Average Latency (seconds)", - "Error Level (%)", - "Throughput avg. for all connections (MBits/s)"); - - -push( @ARGV, ".") if ( !@ARGV ); - -for (@ARGV) { - &find( $_ ); -} - -&PrintOutput; - -1; - -sub wanted { - local( $filename ) = $_; - - return unless ( $filename =~ /run/ ); - - local( $instats) = 0; - local( $runtime, $tag, $data, $cruft, @cruft ); - - open( FILE, $filename ) || return; # bail if failed to open - $runtime = `pwd`; - @cruft = split(/\//,$runtime); - $runtime = pop( @cruft); - chop( $runtime); - push( @runs, $runtime); - while ( $line = <FILE>) { - if (! $instats) { - $instats = 1 if ( $line =~ /^WEBSTONE 2\.0 results/ ); - next; - } - chop( $line ); - ( $tag, $data ) = split( /:?\s{2,}|\t/, $line); - - # perl hack to emulate case/switch statement - $tag =~ /number of clients/ && - ($numclients{ $runtime } = $data, next); - $tag =~ /error rate/ && - (( $error{ $runtime }) = $data =~ /([\d\.]+)/, next); - $tag =~ /connection rate/ && - (( $connrate{ $runtime }) = $data =~ /([\d\.]+)/, next); - $tag =~ /Server thruput/ && - (( $throughput{ $runtime }) = $data =~ /([\d\.]+)/, next); - $tag =~ /Little's Load/ && - (( $littlesload{ $runtime}) = $data =~ /([\d\.]+)/, next); # ' - $tag =~ /Average response time/ && - (( $latency{ $runtime } ) = $data =~ /([\d\.]+)/, next); - } - close( FILE ); - unless ( $throughput{ $runtime} ) { - pop( @runs); # if we didn't get a throughput, then the - # data is incomplete and just drop this run - } -} - - -sub printdata { - local ($timestamp, $num_clients, $conn_rate, - $load, $latency, $error, $tput) = @_; - format STDOUT = -@<<<<<<<<<<< @###### @######.## @####.## @###.#### @####.#### @######.## -$timestamp, $num_clients, $conn_rate, $load, $latency, $error, $tput -. - - if (!$printedTitles) { - $printedTitles = 1; - ($ttimestamp, $tnum_clients, $tconn_rate, - $tload, $tlatency, $terror, $ttput) = @title; - format STDOUT_TOP = -^||||||||||| ^||||||| ^||||||||| ^||||||| ^||||||||| ^||||||||| ^||||||||||| -$ttimestamp, $tnum_clients, $tconn_rate, $tload, $tlatency, $terror, $ttput -^||||||||||| ^||||||| ^||||||||| ^||||||| ^||||||||| ^||||||||| ^||||||||||| -$ttimestamp, $tnum_clients, $tconn_rate, $tload, $tlatency, $terror, $ttput -^||||||||||| ^||||||| ^||||||||| ^||||||| ^||||||||| ^||||||||| ^||||||||||| -$ttimestamp, $tnum_clients, $tconn_rate, $tload, $tlatency, $terror, $ttput -^||||||||||| ^||||||| ^||||||||| ^||||||| ^||||||||| ^||||||||| ^||||||||||| -$ttimestamp, $tnum_clients, $tconn_rate, $tload, $tlatency, $terror, $ttput -^||||||||||| ^||||||| ^||||||||| ^||||||| ^||||||||| ^||||||||| ^||||||||||| -$ttimestamp, $tnum_clients, $tconn_rate, $tload, $tlatency, $terror, $ttput ----------------------------------------------------------------------------- -. - # write STDOUT_TOP; - } # end if printedTitles - write STDOUT; -} - -sub PrintOutput { - local( $runtime ); - - for $runtime (sort @runs) { - &printdata( $runtime, $numclients{ $runtime}, $connrate{ $runtime}, - $littlesload{ $runtime}, $latency{ $runtime}, $error{ $runtime}, - $throughput{ $runtime}); - } -} - - - - - diff --git a/apps/JAWS/clients/WebSTONE/conf/filelist b/apps/JAWS/clients/WebSTONE/conf/filelist deleted file mode 100644 index 5368e28e460..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/filelist +++ /dev/null @@ -1,6 +0,0 @@ -# Sample filelist, abstracted from access logs -/file500.html 350 #500 -/file5k.html 500 #5125 -/file50k.html 140 #51250 -/file500k.html 9 #512500 -/file5m.html 1 #5248000 diff --git a/apps/JAWS/clients/WebSTONE/conf/filelist.cgi-heavy b/apps/JAWS/clients/WebSTONE/conf/filelist.cgi-heavy deleted file mode 100644 index 84272eee0f7..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/filelist.cgi-heavy +++ /dev/null @@ -1,6 +0,0 @@ -# Modified sample model; fully dynamic content -/file.cgi-send?size=500 350 -/file.cgi-send?size=5125 500 -/file.cgi-send?size=51250 140 -/file.cgi-send?size=512500 9 -/file.cgi-send?size=5248000 1 diff --git a/apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-heavy b/apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-heavy deleted file mode 100644 index de9c4fe4765..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-heavy +++ /dev/null @@ -1,6 +0,0 @@ -# Modified sample model; fully dynamic content -/file.dyn-send?size=500 350 -/file.dyn-send?size=5125 500 -/file.dyn-send?size=51250 140 -/file.dyn-send?size=512500 9 -/file.dyn-send?size=5248000 1 diff --git a/apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-light b/apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-light deleted file mode 100644 index 2c35810e75d..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-light +++ /dev/null @@ -1,6 +0,0 @@ -# Modified sample model; added light dynamic content use -/file500.html 350 #500 -/file5k.html 500 #5125 -/file.dyn-send?size=51250 140 -/file500k.html 9 #512500 -/file5m.html 1 #5248000 diff --git a/apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-medium b/apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-medium deleted file mode 100644 index 2a0abbb2b9f..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/filelist.dynamic-medium +++ /dev/null @@ -1,6 +0,0 @@ -# Modified sample model; added medium dynamic content use -/file.dyn-send?size=500 350 -/file5k.html 500 #5125 -/file.dyn-send?size=51250 140 -/file500k.html 9 #512500 -/file5m.html 1 #5248000 diff --git a/apps/JAWS/clients/WebSTONE/conf/filelist.homepage b/apps/JAWS/clients/WebSTONE/conf/filelist.homepage deleted file mode 100644 index b759828757a..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/filelist.homepage +++ /dev/null @@ -1,2 +0,0 @@ -# home page /index.html only -/index.html diff --git a/apps/JAWS/clients/WebSTONE/conf/filelist.sample b/apps/JAWS/clients/WebSTONE/conf/filelist.sample deleted file mode 100644 index 5368e28e460..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/filelist.sample +++ /dev/null @@ -1,6 +0,0 @@ -# Sample filelist, abstracted from access logs -/file500.html 350 #500 -/file5k.html 500 #5125 -/file50k.html 140 #51250 -/file500k.html 9 #512500 -/file5m.html 1 #5248000 diff --git a/apps/JAWS/clients/WebSTONE/conf/filelist.standard b/apps/JAWS/clients/WebSTONE/conf/filelist.standard deleted file mode 100644 index 5368e28e460..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/filelist.standard +++ /dev/null @@ -1,6 +0,0 @@ -# Sample filelist, abstracted from access logs -/file500.html 350 #500 -/file5k.html 500 #5125 -/file50k.html 140 #51250 -/file500k.html 9 #512500 -/file5m.html 1 #5248000 diff --git a/apps/JAWS/clients/WebSTONE/conf/fileset b/apps/JAWS/clients/WebSTONE/conf/fileset deleted file mode 100644 index 064fd7b3098..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/fileset +++ /dev/null @@ -1,32 +0,0 @@ -0k file0k.html -500 file500.html -1k file1k.html -2k file2k.html -3k file3k.html -4k file4k.html -5k file5k.html -6k file6k.html -7k file7k.html -8k file8k.html -9k file9k.html -10k file10k.html -11k file11k.html -12k file12k.html -13k file13k.html -14k file14k.html -15k file15k.html -16k file16k.html -17k file17k.html -18k file18k.html -19k file19k.html -20k file20k.html -21k file21k.html -29k file29k.html -33k file33k.html -45k file45k.html -50k file50k.html -64k file64k.html -115k file115k.html -200k file200k.html -500k file500k.html -5m file5m.html diff --git a/apps/JAWS/clients/WebSTONE/conf/paths.pl b/apps/JAWS/clients/WebSTONE/conf/paths.pl deleted file mode 100755 index 38319c40f4e..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/paths.pl +++ /dev/null @@ -1,2 +0,0 @@ -$MOSAIC="/pkg/www/bin/netscape"; - diff --git a/apps/JAWS/clients/WebSTONE/conf/paths.pl.old b/apps/JAWS/clients/WebSTONE/conf/paths.pl.old deleted file mode 100644 index 9bfc17bef8c..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/paths.pl.old +++ /dev/null @@ -1,2 +0,0 @@ -$MOSAIC="/usr/bin/X11/netscape"; - diff --git a/apps/JAWS/clients/WebSTONE/conf/paths.sh b/apps/JAWS/clients/WebSTONE/conf/paths.sh deleted file mode 100644 index e69de29bb2d..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/paths.sh +++ /dev/null diff --git a/apps/JAWS/clients/WebSTONE/conf/paths.sh.old b/apps/JAWS/clients/WebSTONE/conf/paths.sh.old deleted file mode 100644 index e69de29bb2d..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/paths.sh.old +++ /dev/null diff --git a/apps/JAWS/clients/WebSTONE/conf/testbed b/apps/JAWS/clients/WebSTONE/conf/testbed deleted file mode 100644 index 13452b41a56..00000000000 --- a/apps/JAWS/clients/WebSTONE/conf/testbed +++ /dev/null @@ -1,33 +0,0 @@ -### BENCHMARK PARAMETERS -- EDIT THESE AS REQUIRED -ITERATIONS="1" -MINCLIENTS="15" -MAXCLIENTS="15" -CLIENTINCR="3" -### this is actually the number of loops: -TIMEPERRUN="1000" - - -### SERVER PARAMETERS -- EDIT AS REQUIRED -PROXYSERVER= -SERVER="tango-cip" -PORTNO=6666 -SERVERINFO=uname -#OSTUNINGFILES="/var/sysgen/master.d/bsd" -#OSTUNINGFILES="/dev/null" -#WEBSERVERDIR="/usr/ns-home" -#WEBDOCDIR="$WEBSERVERDIR/docs" -#WEBSERVERTUNINGFILES="$WEBSERVERDIR/httpd-80/config/magnus.conf $WEBSERVERDIR/httpd-80/config/obj.conf" - -# WE NEED AN ACCOUNT WITH A FIXED PASSWORD, SO WE CAN REXEC -# THE WEBSTONE CLIENTS -CLIENTS="mambo merengue lambada" -#CLIENTS="lindy cumbia" -CLIENTACCOUNT=sumedh -CLIENTPASSWORD=yourpasswd -CLIENTINFO=uname -TMPDIR=/tmp - -# Possibly system-specific -RCP="rcp" -RSH="rsh" - diff --git a/apps/JAWS/clients/WebSTONE/doc/COPYING b/apps/JAWS/clients/WebSTONE/doc/COPYING deleted file mode 100644 index 13057b45514..00000000000 --- a/apps/JAWS/clients/WebSTONE/doc/COPYING +++ /dev/null @@ -1,348 +0,0 @@ - While most of the source code in WebStone is covered by the terms -in the file LICENSE, the following files are covered by the GNU license, -reproduced below: - - config.guess - config.sub - ------------------------------ - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) 19yy <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/apps/JAWS/clients/WebSTONE/doc/FAQ-webstone.html b/apps/JAWS/clients/WebSTONE/doc/FAQ-webstone.html deleted file mode 100644 index 0adad2fd6f7..00000000000 --- a/apps/JAWS/clients/WebSTONE/doc/FAQ-webstone.html +++ /dev/null @@ -1,402 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<HTML VERSION="2.0"> -<HEAD> -<!-- WEBMAGIC VERSION NUMBER="2.0.1" --> -<!-- WEBMAGIC TRANSLATION NAME="ServerRoot" SRC="/var/www/htdocs/" DST="/" --> -<!-- WEBMAGIC TRANSLATION NAME="ProjectRoot" SRC="./" DST="" --> -<TITLE>WebStone FAQ</TITLE> -</HEAD> -<BODY> -<P><!-- Changed by: Michael Blakeley, 9-Nov-1995 --></P> -<H1><IMG SRC="webstone.gif" WIDTH="534" HEIGHT="174" SGI_SETWIDTH SGI_SETHEIGHT SGI_FULLPATH="/disk6/WebStone-2.0/doc/webstone.gif"></H1> -<CENTER><H1 ALIGN="CENTER">WebStone</H1> -</CENTER><CENTER><H2 ALIGN="CENTER">Frequently Asked Questions, with Answers</H2> -</CENTER><CENTER><ADDRESS ALIGN="CENTER"><A HREF="mailto:schan@engr.sgi.com">Stephen Chan, schan@engr.sgi.com</A></ADDRESS> -</CENTER><CENTER><ADDRESS ALIGN="CENTER"><A HREF="http://www.sgi.com/Products/WebFORCE/">WebFORCE</A> Technical Marketing, <A HREF="http://www.sgi.com">Silicon Graphics</A></ADDRESS> -</CENTER><CENTER><ADDRESS ALIGN="CENTER">Last revised: 9 November 1995</ADDRESS> -</CENTER><HR> -<P><STRONG>This document answers frequently-asked questions about WebStone.</STRONG> </P> -<UL> -<LI><A HREF="#meta-FAQ">Meta-FAQ</A>: What is this document? Where can I get a copy? -<LI><A HREF="#diff">What is the difference between WebStone 1.1 and WebStone 2.0?</A> -<LI><A HREF="#compare1.1&2">Can I compare WebStone 1.1 and WebStone 2.0 numbers against each other?</A> -<LI><A HREF="#what-is">What is WebStone?</A> -<LI><A HREF="#webperf">What about Webperf?</A> -<LI><A HREF="#what-does">What does WebStone do?</A> -<LI><STRONG><A HREF="#_wmh2_815967937">Feature Enhancements in WebStone 2.0</STRONG></A> -<LI><A HREF="#does-not">What doesn't WebStone do?</A> -<LI><A HREF="#obtaining">Where can I get WebStone?</A> -<LI><A HREF="#running">How do I run WebStone?</A> -<UL> -<LI>Experimental GUI -</UL> -<LI><A HREF="#common-problems">Common problems when running WebStone</A> -<UL> -<LI><A HREF="#swap-space">Out of swap space</A> -<LI><A HREF="#timing-info">Error reading timing info</A> -</UL> -<LI><A HREF="#interpreting">What do the results mean?</A> -<LI><A HREF="#majordomo">I'm still having problems. Where can I get help?</A> -<LI><A HREF="#legal">Legal issues</A> -</UL> -<P>If you have comments about this document, please forward them to the <A HREF="mailto:mblakele@engr.sgi.com">author</A>. </P> -<HR> -<H2><A NAME="meta-FAQ">Meta-FAQ: What is this document? Where can I get a copy?</A></H2> -<P>This is a list of answers to Frequently Asked Questions (FAQ) about WebStone. -The latest copy is always available at <A HREF="http://www.sgi.com/Products/WebFORCE/WebStone">http://www.sgi.com/Products/WebFORCE/WebStone/</A> and via the WebStone mailing list. The FAQ is periodically posted to the <A HREF="#majordomo">WebStone mailing list</A>, and to the USENET newsgroup <A HREF="news:comp.benchmarks">comp.benchmarks</A>. </P> -<HR> -<H2><A NAME="diff">What is the difference between WebStone 1.1 and WebStone 2.0?</A></H2> -<P>WebStone 2.0 is a rewrite of the WebStone 1.1 code. Significant changes -have been made both in the code and in the fileset and run rules. Many bugs -were eliminated, support for other platforms has been included and many -new features have been added. The WebStone 1.1 and WebStone 2.0 numbers -cannot be compared, since so much has changed. In general, WebStone 1.1 -will give higher connections/second values, but lower throughput numbers -than WebStone 2.0.</P> -<HR> -<H2><A NAME="compare1.1&2">Can I compare WebStone 1.1 and WebStone 2.0 numbers against each other?</A></H2> -<P>Absolutely NOT! WebStone 1.1 numbers are based on a different fileset, as -well as an older version of the benchmarking software. The WebStone 1.1 -fileset was based on a fileset with a smaller average filesize, so that -the number of connections per second will tend to be higher (all things -being equal). The WebStone 2.0 fileset is based on observations of several -real world sites, and the distribution of the filesizes found there. This -fileset is also similar to the fileset chosen by the SPEC committee for -their benchmark.</P> -<P>While it is possible to convert the 1.1 fileset to a 2.0 format and then -test it, the resulting numbers will not be the same, because the underlying -software used to perform the testing has changed. WebStone 1.1 was also -heavily abused because of the lack of run rules, and reporting rules. It -is recommended that everyone move to WebStone 2.0.</P> -<HR> -<P></P> -<H2><A NAME="what-is">What is WebStone?</A></H2> -<P>WebStone is a highly-configurable client-server benchmark for HTTP servers. </P> -<P>The original WebStone benchmark was released in March, 1995. The original -white paper describing this benchmark is available from <A HREF="http://www.sgi.com/Products/WebFORCE/WebStone">http://www.sgi.com/Products/WebFORCE/WebStone/.</A> </P> -<P>WebStone is not a proprietary benchmark - it is an open benchmark. The source -code is freely available, and anyone can examine it. By design, WebStone -does not unfairly favor SGI, Netscape, or any other company - it is simply -a performance measurement tool. </P> -<HR> -<H2><A NAME="webperf">What about Webperf?</A></H2> -<P>A SPEC SFS working group is presently adapting SPEC SFS to Web server benchmarking. -SGI's WebStone team is part of this working group, and we support fully -the effort. WebStone is available to fulfill the immediate Web benchmarking -needs - not to confuse the public.</P> -<P>Basically, if you like WebStone, use it. When SPEC releases Webperf, check -it out.</P> -<HR> -<H2><A NAME="what-does">What does WebStone do?</A></H2> -<P>WebStone makes a user-configurable number of HTTP 1.0 GET requests for specific -pages on a Web server. Any Web server can be tested, and any HTML content -can be used. </P> -<P>WebStone measures the throughput and latency of each HTTP transfer. By default, -only statistical data are returned, but the user may optionally request -data for each and every transaction. WebStone also reports transaction failures, -which translate into those little "Connection Refused" alerts in the real -world.</P> -<HR> -<H2><A NAME="_wmh2_815967937">Feature Enhancements in WebStone 2.0</A></H2> -<P>WebStone 2.0 includes support for testing proxy servers, as well as more -flexible handling of URL's that enable WebStone to test a wide variety of -content types. The code has also been significantly rewritten so that it -is more robust and portable.</P> -<HR> -<H2><A NAME="does-not">What doesn't WebStone do?</A></H2> -<P>WebStone does not yet do any of the following (listed roughly in order of -planned implementation): </P> -<UL> -<LI>POST transactions, widely used for CGI-bin scripts -</UL> -<P>If you have additional requests for WebStone functionality, contact the <A HREF="#majordomo">WebStone mailing list</A>. </P> -<HR> -<H2><A NAME="obtaining">Where can I get WebStone?</A></H2> -<P>The latest copy of WebStone, and of this FAQ, is available at <A HREF="http://www.sgi.com/Products/WebFORCE/WebStone">http://www.sgi.com/Products/WebFORCE/WebStone</A> </P> -<HR> -<H2><A NAME="running">How do I run WebStone?</A></H2> -<P>WebStone includes a README file which may answer some of your questions. -However, here's a brief overview. </P> -<OL> -<LI><A HREF="#test-bed">Set up your test-bed</A> -<LI><A HREF="#loading-webstone">Load WebStone onto your webmaster </A> -<LI><A HREF="#edit-runbench">Edit <CODE>testbed</CODE></A> -<LI><A HREF="#file-list">Write a file list</A> -<LI><A HREF="#start-benchmark">Start the benchmark</A> -<LI><A HREF="#collect-results">Collect the results</A> -</OL> -<H3>WebStone now has an experimental GUI!</H3> -<P>To try the GUI, make sure you have a Web browser, and run <CODE>./webstone -gui</CODE> from the WebStone base directory. You don't need to hand-edit the <CODE>testbed</CODE> file anymore, but you still need to edit <CODE>filelist</CODE> if you want to change the workload. This may not be necessary, since we've -distributed two real-world workload models with WebStone. </P> -<P>These are the stepts to follow to run the GUI </P> -<OL> -<LI><A HREF="#test-bed">Set up your test-bed</A> -<LI><A HREF="#loading-webstone">Load WebStone onto your webmaster </A> -<LI><CODE>./configure</CODE> -<LI><CODE>./webstone -gui</CODE> -</OL> -<P>If the GUI appears to hang, you can kill stray WebStone processes with <CODE>./webstone -kill</CODE> </P> -<H3><A NAME="test-bed">Setting up your test bed</A></H3> -<P>Your test bed should include, at minimum, two machines and a network. The -first machine is your Web server - it can be any HTTP 1.0-compliant server. -As far as WebStone is concerned, it's a black box. </P> -<P>You'll also need a webmaster and one or more webclients. These should be -Unix hosts, since WebStone hasn't been tested on any non-Unix operating -systems (feel free to port it, if you like). The webmaster and the webclient -may be the same machine, if desired: we've run up to 120 webclients and -the webmaster on a single 32MB Indy. </P> -<P>You must establish a trust relationship between your webmaster and webclients. -Each webclient must be set up so that the webmaster can use <CODE>rexec</CODE> to execute the WebStone on the client. This can be done with a guest account. -It's also helpful if root can <CODE>rexec</CODE> and <CODE>rcp</CODE> to the webclients, and even to the web server. This requires editing the <CODE>/.rhosts</CODE> and <CODE>/etc/host.equiv</CODE> files. Here's an example: </P> -<P><CODE>/.rhosts</CODE> (on each webclient) </P> -<PRE> -webmaster root -</PRE> -<P><CODE>/etc/hosts/equiv</CODE> (on each webclient) </P> -<PRE> -webmaster -</PRE> -<P>To make best use of WebStone, your webmaster should be equipped with a C -compiler, Perl, awk, and a Web browser. A data analysis program such as -GnuPlot may also come in handy. </P> -<P>Connect the webclients, the webmaster, and the web server to a common network. -To check your setup, load a browser on one of the webclients, and make sure -it can connect to the Web server. </P> -<H3><A NAME="loading-webstone">Loading WebStone</A></H3> -<P>Copy the WebStone distribution onto your webmaster. If your webmaster isn't -an SGI IRIX 5.3 machine, you'll have to make the binaries. Type <KBD>make</KBD> from the WebStone directory - this creates the following binaries: </P> -<PRE> -webmaster -webclient -</PRE> -<P>Common porting errors </P> -<UL> -<LI>If you want to use gcc instead of cc, change the CC variable in <CODE>src/Makefile</CODE>. -<LI>Many System V-based Unix implementations (such as Solaris 2.x) will need<CODE> LIBS = -lsocket -lnsl</CODE> in <CODE>src/Makefile</CODE>. -<LI>Some users may also need to comment out the definition of <CODE>rexec</CODE> in <CODE>webmaster.c</CODE> -</UL> -<P>If you encounter other errors, please contact the <A HREF="#majordomo">WebStone mailing list</A>. </P> -<P>Type <CODE>make install</CODE> to put the binaries in the <CODE>bin</CODE> directory. </P> -<P>When you run WebStone, the <CODE>distribute</CODE> script automatically copies the <CODE>webclient</CODE> binary to the other client systems. If you're running diverse clients (e.g., -a couple Suns, a couple BSD hosts), you'll want to comment the <CODE>distribute</CODE> script out of <CODE>bin/runbench</CODE>, and distribute host-specific versions of <CODE>webclient</CODE> by hand. </P> -<H3><A NAME="edit-runbench">Edit <CODE></A>testbed</CODE></H3> -<P>If you use the <CODE>webstone</CODE> script to automate WebStone, you'll want to edit the <CODE>conf/testbed</CODE> script. The <CODE>testbed</CODE> script contains several configurable parameters that WebStone relies on. -Here is an example: </P> -<PRE> -### BENCHMARK PARAMETERS -- EDIT THESE AS REQUIRED -ITERATIONS="3" -MINCLIENTS="8" -MAXCLIENTS="128" -CLIENTINCR="8" -TIMEPERRUN="30" - -### SERVER PARAMETERS -- EDIT AS REQUIRED -#PROXY= -SERVER="www" -PORTNO=80 -SERVERINFO=hinv -OSTUNINGFILES="/var/sysgen/master.d/bsd" -WEBSERVERDIR="/usr/ns-home" -WEBDOCDIR="$WEBSERVERDIR/docs" -WEBSERVERTUNINGFILES="$WEBSERVERDIR/httpd-80/config/magnus.conf $WEBSERVERDIR/httpd-80/config/obj.conf" - -# WE NEED AN ACCOUNT WITH A FIXED PASSWORD, SO WE CAN REXEC -# THE WEBSTONE CLIENTS -CLIENTS="webstone1 webstone2 webstone3 webstone4 webstone5" -CLIENTACCOUNT=guest -CLIENTPASSWORD=guest -CLIENTINFO=hinv -TMPDIR=/tmp -</PRE> -<P>Briefly, the first set of parameters means that the WebStone benchmark will -run from 8 clients to 128 clients, in increments of 8. Each increment will -run for 30 minutes, and the whole test will be repeated three times. This -test suite would take roughly 24 hours to complete. </P> -<P>Why multiple iterations? The WebStone benchmark is a stochastic process -so there will be variation from run to run, especially if your test file -sets have large files or if you approach overloading the server. 3 iterations -is about the minimum you should run just to see if there is variation and -to gauge the amount of variation. the <TT>TIMEPERRUN</TT> needs to be long enough to establish a steady state and allow it to dominate -the run. 30 minutes seems to be enough if the sizes of the files are small. -You may want to run the benchmark longer per run to minimize variation if -the files are large. </P> -<P>The second set of parameters means that we will test a server called "www" -at port 80 (note that the port number may be changed to accomodate proxy -servers or multiple servers on the same host). We will use four clients. -Also, we specify the location of a system tuning file (on Sun Solaris, one -could use /etc/system), and web server tuning files (specified for Netscape). -These files will be copied into the <CODE>runs</CODE> subdirectories for later reference. </P> -<P>Finally, we specify the WebStone account on the clients. Here, we use the -guest account, with a fixed password: guest. </P> -<H3><A NAME="file-list">Write a file list</A></H3> -<P>The basic WebStone tests expect a set of files to reside on the server to -be retrieved by the <TT>webstone</TT> client programs. The file list tells WebStone which files to retrieve. </P> -<P>It's possible to use an arbitrary set of fixed-length files for WebStone. -Although these files have the <TT>.html</TT> extension, they are used to represent files of many types. Basically we -treat "bits-as-bits". You can use the programs in the <TT>genfileset</TT> subdirectory to create the needed set of files, and copy them onto your -server: </P> -<PRE> - ./webstone -genfiles -</PRE> -<P>The sample file list shipped with WebStone uses the files created by genfiles: </P> -<P># Sample filelist, abstracted from access logs<BR> -/file500.html 350 #500<BR> -/file5k.html 500 #5125<BR> -/file50k.html 140 #51250<BR> -/file500k.html 9 #512500<BR> -/file5m.html 1 #5248000<BR> -</P> -<P>This filelist consists of 5 different files. The number following the filename -is the weight of this file in the distribution. All the weights are summed -together and the frequency of each file is the weight of that file over -the total weights.</P> -<P>For example, in this fileset the weights add up to 1000. So the the file500k.html -page will occur 350 out of 1000 times, and the file5m.html will occur once -every 1000 pages. </P> -<P>Note that the URI should be changed to a full URI when testing proxy servers, -for example, if the proxy server is called proxy, but the actual server -which stores the file is called seltzer1, you could use the following filelist:</P> -<P> #Sample filelist, abstracted from access logs<BR> -http://seltzer1.sgi.com/file500.html 350 #500<BR> -http://seltzer1.sgi.com/file5k.html 500 #5125<BR> -http://seltzer1.sgi.com/file50k.html 140 #51250<BR> -http://seltzer1.sgi.com/file500k.html 9 #512500<BR> -http://seltzer1.sgi.com/file5m.html 1 #5248000</P> -<P>This URI is the one which is passed to the proxy server, which in turn uses -it to fetch the file from seltzer1.sgi.com. Notice that the particular files -and the distribution are identical to the previous filelist. The other change -which would need to be made for testing proxy servers is to have an entry -"PROXY=proxy" in the testbed file and to specify the port where the proxy -server listens for requests.</P> -<P>Wherever possible, use the same pages for WebStone that you will use in -the real world. This means that you'll have a harder time comparing your -results with published results, but your results will more accurately reflect <STRONG>your</STRONG> situation. </P> -<H3><A NAME="start-benchmark">Start the benchmark</A></H3> -<P>type <CODE>./webstone</CODE> </P> -<P>The results of each run will be saved in a directory called <TT>runs</TT>. Note that the runbench script attempts to collect configuration information -about your client and server configurations such as netstat results. You -may see some error messages if your clients don't have netstat or other -utilities. </P> -<H3><A NAME="collect-results">Collect the results</A></H3> -<P>The WebStone summary statistics generated by <TT>webmaster</TT> are saved by <TT>runbench</TT> in a date stamped subdirectory of the <TT>runs</TT> directory in the current directory similar to: </P> -<PRE> - runs/950804_2304/run -</PRE> -<P>The script wscollect is provided as a tool for collected the results of -all of the runs and generating a tab delimited file with all of the results. -This file can be read into a spreadsheet or read by other analysis programs. </P> -<PRE> - wscollect runs > runs.tabs -</PRE> -<P>An additional script called <TT>tabs2html</TT> will take a tab delimited file and produce an HTML 3.0 style table of the -results: </P> -<PRE> - tabs2html runs.tabs > runs.html -</PRE> -<HR> -<H2><A NAME="common-problems">Common problems when running WebStone</A></H2> -<H3><A NAME="swap-space">Out of swap space</A></H3> -<P>It's fairly common for the Web server under test to run out of swap space. -As a rule of thumb, make sure that you have swap space equal to the number -of server processes times the size of the largest test file. </P> -<P>For instance, if you're testing a 10MB file on a Netscape server with 64 -processes, you'll need to have at least 640MB of swap space. <CITE>N.B.</CITE>: On SGI IRIX 5.x, you can substitute large amounts of <EM>virtual swap space</EM>, since Netscape doesn't actually use all the space it asks for. </P> -<P>See your operating system-specific administration guide for details on adding -and configuring swap space. </P> -<H3><A NAME="timing-info">Error reading timing info</A></H3> -<P><STRONG>Question</STRONG>: </P> -<P>Running: </P> -<PRE> -webmaster -w webmaster -p 9990 -u flist -f config -</PRE> -<P>on jan.near.net </P> -<P>outputs: </P> -<PRE> -Waiting for READY from 6 clients -All READYs received -Sending GO to all clients -All clients started at Tue Aug 8 11:57:30 1995 -Waiting for clients completion -Reading results -.Error second reading timing info from one of the clients: -Interrupted system call -web child 1 did not respond. 3456 bytes read -.Error second reading timing info from one of the clients: -Interrupted system call -web child 0 did not respond. 3456 bytes read -</PRE> -<P>What does the second reading timing info contain? What might cause the second -read to fail while the first passes? </P> -<P><STRONG>Answer</STRONG>: </P> -<P>It's most likely that one of the WebStone clients died before it could report -results to the webmaster. We've squashed many circumstances in which this -happens, but bugs continue to appear, especially on systems we haven't tested. </P> -<P>We can't do much for this kind of problem without debugging traces. Edit <CODE>testbed</CODE>, and set the <CODE>DEBUG</CODE> parameter to <CODE>DEBUG=-d</CODE>, so that debugging info will be written to files named /tmp/webstone-debug.<PID>. </P> -<P>If you can replicate this problem with debugging turned on, please let us -know. We'd love to examine the traces. </P> -<P>Another possible source of problems with reading timing info is when a page -in the filelist did not get read by a client, but the webmaster was expecting -to find it. This can happen when the test time, number of clients and filelist -distribution are set up so that a file which gets read infrequently does -not get read _yet_ before the test period ends.This will get ironed out -in a later release of WebStone.</P> -<HR> -<H2><A NAME="interpreting">What do the results mean?</A></H2> -<P>WebStone primarily measures throughput (bytes/second) and latency (time -to complete a request). WebStone also reports pages/minute, connection rate -averages, and other numbers. Some of these may help you to sanity-check -the throughput measurements. </P> -<P>Two types of throughput are measured: aggregate and per-client. Both are -averaged over the entire test time and the entire client base. Aggregate -throughput is simply total bytes (body + header) transferred throughout -the test, divided by the total test time. Per-client throughput divides -aggregate throughput by the number of clients. </P> -<P>Two types of latency are reported: connection latency and request latency. -For each metric, the mean time is provided, as well as the standard deviation -of all data, plus the minimum and maximum times. Connection latency reflects -the time taken to establish a connection, while request latency reflects -the time to complete the data transfer once the connection has been established. </P> -<P>User-perceived latency will include the sum of connection and request latencies, -plus any network latency due to WAN connections, routers, modems, etc. </P> -<P>WebStone also reports a metric called <EM>Little's Ls</EM>. <EM>Ls</EM> is derived from Little's Law, and reflects how much time is spent by the -server on request processing, rather than overhead and errors. Ls. is also an indirect indicator of the average number of connections which -the web server has open at any particular instant. This number should stay -very close to the number of clients, or else some clients are being denied -access to the server at any given time.</P> -<P>If you load your Web servers high enough, you'll begin to see errors in -the results. That's fine (at least as far as WebStone is concerned). It -just means that your server is heavily loaded, and some clients aren't being -serviced before they time out. In fact, the number of errors at a given -load can be an excellent indicator of how your server will perform under -extremely heavy loads. </P> -<HR> -<H2><A NAME="majordomo">I'm still having problems. Where can I get help?</A></H2> -<P>Subscribe to the WebStone mailing list! Send a message to <A HREF="mailto:majordomo@engr.sgi.com">majordomo@engr.sgi.com</A> - the subject doesn't matter, but the content should be: </P> -<PRE> -subscribe webstone -</PRE> -<P>You should receive a message shortly, confirming that you've been added -to the mailing list. You can send to the whole list at <A HREF="mailto:webstone@engr.sgi.com">webstone@engr.sgi.com</A> - the authors of WebStone read the list, and they'll do their best to help. -Other list members may also be able to help. </P> -<P>If you have access to USENET News, you can also read and post to <A HREF="news:comp.benchmarks">comp.benchmarks</A>. As with any newsgroup, read the FAQ before posting! </P> -<P>There's also a mailing list devoted to the performance limits of the HTTP -protocol. You can subscribe by sending e-mail to <A HREF="mailto:www-speed-request@tipper.oit.unc.edu">www-speed-request@tipper.oit.unc.edu</A> with the text </P> -<PRE> -subscribe <your-email-address> -</PRE> -<HR> -<H2><A NAME="legal">Legal Stuff</A></H2> -<P>This file and all files contained in the WebStone distribution are copyright -© 1995, 1996 Silicon Graphics, Inc. </P> -<P>This software is provided without support and without any obligation on -the part of Silicon Graphics, Inc. to assist in its use, correction, modification -or enhancement. There is no guarantee that this software will be included -in future software releases, and it probably will not be included. </P> -<P>THIS SOFTWARE IS PROVIDED "AS IS" WITH NO WARRANTIES OF ANY KIND INCLUDING -THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE, -OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. </P> -<P>In no event will Silicon Graphics, Inc. be liable for any lost revenue or -profits or other special, indirect and consequential damages, even if Silicon -Graphics, Inc. has been advised of the possibility of such damages. </P> -</BODY> -</HTML> diff --git a/apps/JAWS/clients/WebSTONE/doc/LICENSE.html b/apps/JAWS/clients/WebSTONE/doc/LICENSE.html deleted file mode 100644 index 05d2b5a0378..00000000000 --- a/apps/JAWS/clients/WebSTONE/doc/LICENSE.html +++ /dev/null @@ -1,16 +0,0 @@ -This file and all files contained in this directory are -copyright 1995, Silicon Graphics, Inc. - -This software is provided without support and without any obligation on the -part of Silicon Graphics, Inc. to assist in its use, correction, modification -or enhancement. There is no guarantee that this software will be included in -future software releases, and it probably will not be included. - -THIS SOFTWARE IS PROVIDED "AS IS" WITH NO WARRANTIES OF ANY KIND INCLUDING THE -WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE, -OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - -In no event will Silicon Graphics, Inc. be liable for any lost revenue or -profits or other special, indirect and consequential damages, even if -Silicon Graphics, Inc. has been advised of the possibility of such damages. - diff --git a/apps/JAWS/clients/WebSTONE/doc/WebStone.html b/apps/JAWS/clients/WebSTONE/doc/WebStone.html deleted file mode 100644 index e16afbae696..00000000000 --- a/apps/JAWS/clients/WebSTONE/doc/WebStone.html +++ /dev/null @@ -1,24 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<HTML VERSION="2.0"> -<HEAD> -<!-- WEBMAGIC VERSION NUMBER="2.0" --> -<!-- WEBMAGIC TRANSLATION NAME="ServerRoot" SRC="/var/www/htdocs/" DST="/" --> -<!-- WEBMAGIC TRANSLATION NAME="ProjectRoot" SRC="./" DST="" --> -<TITLE>WebStone</TITLE> -</HEAD> -<BODY> -<P><A HREF="WebStone.html"><IMG SRC="webstone.gif" WIDTH="534" HEIGHT="174" BORDER="0" SGI_SETWIDTH SGI_SETHEIGHT SGI_FULLPATH="/usr/people/mblakele/WebStone-working/doc/webstone.gif"></A> -<H1>World Wide Web Server Benchmarking</H1> -<P>If you have any questions, please read the <EM><A HREF="FAQ-webstone.html">WebStone FAQ</EM></A>. -<HR> -<H2><A HREF="../bin/WebStone-setup.pl">Set up WebStone</A></H2> -<HR> -<H2><A HREF="../bin/WebStone-run.pl">Run WebStone</A></H2> -<HR> -<H2><A HREF="../bin/view-results.pl">View WebStone Results</A></H2> -<HR> -<H2><A HREF="../bin/WebStone-manage.pl">Administer WebStone</A></H2> -<HR> -<ADDRESS><A HREF="LICENSE.html">copyright 1995 Silicon Graphics</A></ADDRESS> -</BODY> -</HTML> diff --git a/apps/JAWS/clients/WebSTONE/doc/testbed.help b/apps/JAWS/clients/WebSTONE/doc/testbed.help deleted file mode 100755 index 4b25a16e1fe..00000000000 --- a/apps/JAWS/clients/WebSTONE/doc/testbed.help +++ /dev/null @@ -1,21 +0,0 @@ -ITERATIONS: Total Number of times to run test suite. -MINCLIENTS: Start the test suite by running this number of clients. -MAXCLIENTS: End the test suite when this number of clients have run. -CLIENTINCR: Increment the number of clients by this number after each run. -TIMEPERRUN: Minutes to run each test. -PORTNO: TCP/IP port to test on the Web server. -SERVER: Name or IP number of Web server to be tested. -PROXYSERVER: Name or IP number of a proxy server through which to test. -CLIENTS: Name(s) or IP address(es) of machine(s) to use as WebStone clients. -OSTUNINGFILES: Full pathname(s) of OS tuning files to copy into the bin/runs directory. -WEBSERVERDIR: Base directory name for Web server. -WEBDOCDIR: Base directory name for Web server document root. -WEBSERVERTUNINGFILES: Full pathname(s) of Web server tuning files to copy into bin/runs. -CLIENTINFO: Name of an informational binary to run on each client. -SERVERINFO: Name of an informational binary to run on each server. -TMPDIR: Full pathname of a directory where temporary files may be stored. -CLIENTACCOUNT: Run WebStone on CLIENTS as this username, via rsh. -CLIENTPASSWORD: Password for CLIENTACCOUNT. This cannot be blank. -DEBUG: Leave blank, or set to -d to activate debugging mode. Debug files are written to TMPDIR. -RCP: Command to use for remote copying. Default: rcp. -RSH: Command to use for remote execution of a command. Default: rsh. diff --git a/apps/JAWS/clients/WebSTONE/doc/webstone-white-paper.ps b/apps/JAWS/clients/WebSTONE/doc/webstone-white-paper.ps deleted file mode 100644 index 1ed0a6523f5..00000000000 --- a/apps/JAWS/clients/WebSTONE/doc/webstone-white-paper.ps +++ /dev/null @@ -1,8974 +0,0 @@ -%!PS-Adobe-3.0 - -%%Creator: Windows PSCRIPT - -%%Title: Microsoft Word - WEBSTON7.DOC - -%%BoundingBox: 18 9 593 784 - -%%DocumentNeededResources: (atend) - -%%DocumentSuppliedResources: (atend) - -%%Pages: (atend) - -%%BeginResource: procset Win35Dict 3 1 - -/Win35Dict 290 dict def Win35Dict begin/bd{bind def}bind def/in{72 - -mul}bd/ed{exch def}bd/ld{load def}bd/tr/translate ld/gs/gsave ld/gr - -/grestore ld/M/moveto ld/L/lineto ld/rmt/rmoveto ld/rlt/rlineto ld - -/rct/rcurveto ld/st/stroke ld/n/newpath ld/sm/setmatrix ld/cm/currentmatrix - -ld/cp/closepath ld/ARC/arcn ld/TR{65536 div}bd/lj/setlinejoin ld/lc - -/setlinecap ld/ml/setmiterlimit ld/sl/setlinewidth ld/scignore false - -def/sc{scignore{pop pop pop}{0 index 2 index eq 2 index 4 index eq - -and{pop pop 255 div setgray}{3{255 div 3 1 roll}repeat setrgbcolor}ifelse}ifelse}bd - -/FC{bR bG bB sc}bd/fC{/bB ed/bG ed/bR ed}bd/HC{hR hG hB sc}bd/hC{ - -/hB ed/hG ed/hR ed}bd/PC{pR pG pB sc}bd/pC{/pB ed/pG ed/pR ed}bd/sM - -matrix def/PenW 1 def/iPen 5 def/mxF matrix def/mxE matrix def/mxUE - -matrix def/mxUF matrix def/fBE false def/iDevRes 72 0 matrix defaultmatrix - -dtransform dup mul exch dup mul add sqrt def/fPP false def/SS{fPP{ - -/SV save def}{gs}ifelse}bd/RS{fPP{SV restore}{gr}ifelse}bd/EJ{gsave - -showpage grestore}bd/#C{userdict begin/#copies ed end}bd/FEbuf 2 string - -def/FEglyph(G )def/FE{1 exch{dup 16 FEbuf cvrs FEglyph exch 1 exch - -putinterval 1 index exch FEglyph cvn put}for}bd/SM{/iRes ed/cyP ed - -/cxPg ed/cyM ed/cxM ed 72 100 div dup scale dup 0 ne{90 eq{cyM exch - -0 eq{cxM exch tr -90 rotate -1 1 scale}{cxM cxPg add exch tr +90 rotate}ifelse}{cyP - -cyM sub exch 0 ne{cxM exch tr -90 rotate}{cxM cxPg add exch tr -90 - -rotate 1 -1 scale}ifelse}ifelse}{pop cyP cyM sub exch 0 ne{cxM cxPg - -add exch tr 180 rotate}{cxM exch tr 1 -1 scale}ifelse}ifelse 100 iRes - -div dup scale 0 0 transform .25 add round .25 sub exch .25 add round - -.25 sub exch itransform translate}bd/SJ{1 index 0 eq{pop pop/fBE false - -def}{1 index/Break ed div/dxBreak ed/fBE true def}ifelse}bd/ANSIVec[ - -16#0/grave 16#1/acute 16#2/circumflex 16#3/tilde 16#4/macron 16#5/breve - -16#6/dotaccent 16#7/dieresis 16#8/ring 16#9/cedilla 16#A/hungarumlaut - -16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle 16#60/grave - -16#7C/bar 16#82/quotesinglbase 16#83/florin 16#84/quotedblbase 16#85 - -/ellipsis 16#86/dagger 16#87/daggerdbl 16#88/circumflex 16#89/perthousand - -16#8A/Scaron 16#8B/guilsinglleft 16#8C/OE 16#91/quoteleft 16#92/quoteright - -16#93/quotedblleft 16#94/quotedblright 16#95/bullet 16#96/endash 16#97 - -/emdash 16#98/tilde 16#99/trademark 16#9A/scaron 16#9B/guilsinglright - -16#9C/oe 16#9F/Ydieresis 16#A0/space 16#A1/exclamdown 16#A4/currency - -16#A5/yen 16#A6/brokenbar 16#A7/section 16#A8/dieresis 16#A9/copyright - -16#AA/ordfeminine 16#AB/guillemotleft 16#AC/logicalnot 16#AD/hyphen - -16#AE/registered 16#AF/macron 16#B0/degree 16#B1/plusminus 16#B2/twosuperior - -16#B3/threesuperior 16#B4/acute 16#B5/mu 16#B6/paragraph 16#B7/periodcentered - -16#B8/cedilla 16#B9/onesuperior 16#BA/ordmasculine 16#BB/guillemotright - -16#BC/onequarter 16#BD/onehalf 16#BE/threequarters 16#BF/questiondown - -16#C0/Agrave 16#C1/Aacute 16#C2/Acircumflex 16#C3/Atilde 16#C4/Adieresis - -16#C5/Aring 16#C6/AE 16#C7/Ccedilla 16#C8/Egrave 16#C9/Eacute 16#CA - -/Ecircumflex 16#CB/Edieresis 16#CC/Igrave 16#CD/Iacute 16#CE/Icircumflex - -16#CF/Idieresis 16#D0/Eth 16#D1/Ntilde 16#D2/Ograve 16#D3/Oacute 16#D4 - -/Ocircumflex 16#D5/Otilde 16#D6/Odieresis 16#D7/multiply 16#D8/Oslash - -16#D9/Ugrave 16#DA/Uacute 16#DB/Ucircumflex 16#DC/Udieresis 16#DD/Yacute - -16#DE/Thorn 16#DF/germandbls 16#E0/agrave 16#E1/aacute 16#E2/acircumflex - -16#E3/atilde 16#E4/adieresis 16#E5/aring 16#E6/ae 16#E7/ccedilla 16#E8 - -/egrave 16#E9/eacute 16#EA/ecircumflex 16#EB/edieresis 16#EC/igrave - -16#ED/iacute 16#EE/icircumflex 16#EF/idieresis 16#F0/eth 16#F1/ntilde - -16#F2/ograve 16#F3/oacute 16#F4/ocircumflex 16#F5/otilde 16#F6/odieresis - -16#F7/divide 16#F8/oslash 16#F9/ugrave 16#FA/uacute 16#FB/ucircumflex - -16#FC/udieresis 16#FD/yacute 16#FE/thorn 16#FF/ydieresis ] def/reencdict - -12 dict def/IsChar{basefontdict/CharStrings get exch known}bd/MapCh{dup - -IsChar not{pop/bullet}if newfont/Encoding get 3 1 roll put}bd/MapDegree{16#b0 - -/degree IsChar{/degree}{/ring}ifelse MapCh}bd/MapBB{16#a6/brokenbar - -IsChar{/brokenbar}{/bar}ifelse MapCh}bd/ANSIFont{reencdict begin/newfontname - -ed/basefontname ed FontDirectory newfontname known not{/basefontdict - -basefontname findfont def/newfont basefontdict maxlength dict def basefontdict{exch - -dup/FID ne{dup/Encoding eq{exch dup length array copy newfont 3 1 roll - -put}{exch newfont 3 1 roll put}ifelse}{pop pop}ifelse}forall newfont - -/FontName newfontname put 127 1 159{newfont/Encoding get exch/bullet - -put}for ANSIVec aload pop ANSIVec length 2 idiv{MapCh}repeat MapDegree - -MapBB newfontname newfont definefont pop}if newfontname end}bd/SB{FC - -/ULlen ed/str ed str length fBE not{dup 1 gt{1 sub}if}if/cbStr ed - -/dxGdi ed/y0 ed/x0 ed str stringwidth dup 0 ne{/y1 ed/x1 ed y1 y1 - -mul x1 x1 mul add sqrt dxGdi exch div 1 sub dup x1 mul cbStr div exch - -y1 mul cbStr div}{exch abs neg dxGdi add cbStr div exch}ifelse/dyExtra - -ed/dxExtra ed x0 y0 M fBE{dxBreak 0 BCh dxExtra dyExtra str awidthshow}{dxExtra - -dyExtra str ashow}ifelse fUL{x0 y0 M dxUL dyUL rmt ULlen fBE{Break - -add}if 0 mxUE transform gs rlt cyUL sl [] 0 setdash st gr}if fSO{x0 - -y0 M dxSO dySO rmt ULlen fBE{Break add}if 0 mxUE transform gs rlt cyUL - -sl [] 0 setdash st gr}if n/fBE false def}bd/font{/name ed/Ascent ed - -0 ne/fT3 ed 0 ne/fSO ed 0 ne/fUL ed/Sy ed/Sx ed 10.0 div/ori ed -10.0 - -div/esc ed/BCh ed name findfont/xAscent 0 def/yAscent Ascent def/ULesc - -esc def ULesc mxUE rotate pop fT3{/esc 0 def xAscent yAscent mxUE transform - -/yAscent ed/xAscent ed}if [Sx 0 0 Sy neg xAscent yAscent] esc mxE - -rotate mxF concatmatrix makefont setfont [Sx 0 0 Sy neg 0 Ascent] mxUE - -mxUF concatmatrix pop fUL{currentfont dup/FontInfo get/UnderlinePosition - -known not{pop/Courier findfont}if/FontInfo get/UnderlinePosition get - -1000 div 0 exch mxUF transform/dyUL ed/dxUL ed}if fSO{0 .3 mxUF transform - -/dySO ed/dxSO ed}if fUL fSO or{currentfont dup/FontInfo get/UnderlineThickness - -known not{pop/Courier findfont}if/FontInfo get/UnderlineThickness get - -1000 div Sy mul/cyUL ed}if}bd/min{2 copy gt{exch}if pop}bd/max{2 copy - -lt{exch}if pop}bd/CP{/ft ed{{ft 0 eq{clip}{eoclip}ifelse}stopped{currentflat - -1 add setflat}{exit}ifelse}loop}bd/patfont 10 dict def patfont begin - -/FontType 3 def/FontMatrix [1 0 0 -1 0 0] def/FontBBox [0 0 16 16] - -def/Encoding StandardEncoding def/BuildChar{pop pop 16 0 0 0 16 16 - -setcachedevice 16 16 false [1 0 0 1 .25 .25]{pat}imagemask}bd end/p{ - -/pat 32 string def{}forall 0 1 7{dup 2 mul pat exch 3 index put dup - -2 mul 1 add pat exch 3 index put dup 2 mul 16 add pat exch 3 index - -put 2 mul 17 add pat exch 2 index put pop}for}bd/pfill{/PatFont patfont - -definefont setfont/ch(AAAA)def X0 64 X1{Y1 -16 Y0{1 index exch M ch - -show}for pop}for}bd/vert{X0 w X1{dup Y0 M Y1 L st}for}bd/horz{Y0 w - -Y1{dup X0 exch M X1 exch L st}for}bd/fdiag{X0 w X1{Y0 M X1 X0 sub dup - -rlt st}for Y0 w Y1{X0 exch M Y1 Y0 sub dup rlt st}for}bd/bdiag{X0 w - -X1{Y1 M X1 X0 sub dup neg rlt st}for Y0 w Y1{X0 exch M Y1 Y0 sub dup - -neg rlt st}for}bd/AU{1 add cvi 15 or}bd/AD{1 sub cvi -16 and}bd/SHR{pathbbox - -AU/Y1 ed AU/X1 ed AD/Y0 ed AD/X0 ed}bd/hfill{/w iRes 37.5 div round - -def 0.1 sl [] 0 setdash n dup 0 eq{horz}if dup 1 eq{vert}if dup 2 eq{fdiag}if - -dup 3 eq{bdiag}if dup 4 eq{horz vert}if 5 eq{fdiag bdiag}if}bd/F{/ft - -ed fm 256 and 0 ne{gs FC ft 0 eq{fill}{eofill}ifelse gr}if fm 1536 - -and 0 ne{SHR gs HC ft CP fm 1024 and 0 ne{/Tmp save def pfill Tmp restore}{fm - -15 and hfill}ifelse gr}if}bd/S{PenW sl PC st}bd/m matrix def/GW{iRes - -12 div PenW add cvi}bd/DoW{iRes 50 div PenW add cvi}bd/DW{iRes 8 div - -PenW add cvi}bd/SP{/PenW ed/iPen ed iPen 0 eq iPen 6 eq or{[] 0 setdash}if - -iPen 1 eq{[DW GW] 0 setdash}if iPen 2 eq{[DoW GW] 0 setdash}if iPen - -3 eq{[DW GW DoW GW] 0 setdash}if iPen 4 eq{[DW GW DoW GW DoW GW] 0 - -setdash}if}bd/E{m cm pop tr scale 1 0 moveto 0 0 1 0 360 arc cp m sm}bd - -/AG{/sy ed/sx ed sx div 4 1 roll sy div 4 1 roll sx div 4 1 roll sy - -div 4 1 roll atan/a2 ed atan/a1 ed sx sy scale a1 a2 ARC}def/A{m cm - -pop tr AG m sm}def/P{m cm pop tr 0 0 M AG cp m sm}def/RRect{n 4 copy - -M 3 1 roll exch L 4 2 roll L L cp}bd/RRCC{/r ed/y1 ed/x1 ed/y0 ed/x0 - -ed x0 x1 add 2 div y0 M x1 y0 x1 y1 r arcto 4{pop}repeat x1 y1 x0 y1 - -r arcto 4{pop}repeat x0 y1 x0 y0 r arcto 4{pop}repeat x0 y0 x1 y0 r - -arcto 4{pop}repeat cp}bd/RR{2 copy 0 eq exch 0 eq or{pop pop RRect}{2 - -copy eq{pop RRCC}{m cm pop/y2 ed/x2 ed/ys y2 x2 div 1 max def/xs x2 - -y2 div 1 max def/y1 exch ys div def/x1 exch xs div def/y0 exch ys div - -def/x0 exch xs div def/r2 x2 y2 min def xs ys scale x0 x1 add 2 div - -y0 M x1 y0 x1 y1 r2 arcto 4{pop}repeat x1 y1 x0 y1 r2 arcto 4{pop}repeat - -x0 y1 x0 y0 r2 arcto 4{pop}repeat x0 y0 x1 y0 r2 arcto 4{pop}repeat - -m sm cp}ifelse}ifelse}bd/PP{{rlt}repeat}bd/OB{gs 0 ne{7 3 roll/y ed - -/x ed x y translate ULesc rotate x neg y neg translate x y 7 -3 roll}if - -sc B fill gr}bd/B{M/dy ed/dx ed dx 0 rlt 0 dy rlt dx neg 0 rlt cp}bd - -/CB{B clip n}bd/ErrHandler{errordict dup maxlength exch length gt - -dup{errordict begin}if/errhelpdict 12 dict def errhelpdict begin/stackunderflow(operand stack underflow)def - -/undefined(this name is not defined in a dictionary)def/VMerror(you have used up all the printer's memory)def - -/typecheck(operator was expecting a different type of operand)def - -/ioerror(input/output error occured)def end{end}if errordict begin - -/handleerror{$error begin newerror{/newerror false def showpage 72 - -72 scale/x .25 def/y 9.6 def/Helvetica findfont .2 scalefont setfont - -x y moveto(Offending Command = )show/command load{dup type/stringtype - -ne{(max err string)cvs}if show}exec/y y .2 sub def x y moveto(Error = )show - -errorname{dup type dup( max err string )cvs show( : )show/stringtype - -ne{( max err string )cvs}if show}exec errordict begin errhelpdict errorname - -known{x 1 add y .2 sub moveto errhelpdict errorname get show}if end - -/y y .4 sub def x y moveto(Stack =)show ostack{/y y .2 sub def x 1 - -add y moveto dup type/stringtype ne{( max err string )cvs}if show}forall - -showpage}if end}def end}bd end - -%%EndResource - -/SVDoc save def - -%%EndProlog - -%%BeginSetup - -Win35Dict begin - -ErrHandler - -statusdict begin 0 setjobtimeout end - -statusdict begin statusdict /jobname (Microsoft Word - WEBSTON7.DOC) put end - -/oldDictCnt countdictstack def {}stopped - -{ countdictstack oldDictCnt lt { Win35Dict begin } - -{1 1 countdictstack oldDictCnt sub {pop end } for } ifelse } if - -/oldDictCnt countdictstack def {letter - -}stopped - -{ countdictstack oldDictCnt lt { Win35Dict begin } - -{1 1 countdictstack oldDictCnt sub {pop end } for } ifelse } if - -[ -{mark 1.0 1.0 .98 .9 .82 .68 .56 .48 .28 .1 .06 .0 counttomark dup 3 add -1 roll exch 2 sub mul dup floor cvi dup 3 1 roll sub exch dup 3 add index exch 2 add index dup 4 1 roll sub mul add counttomark 1 add 1 roll cleartomark } bind - -/exec load currenttransfer /exec load] cvx settransfer - -%%EndSetup - -%%Page: 1 1 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 83 83 0 0 0 75 /Times-Bold /font29 ANSIFont font - -0 0 0 fC - -278 772 1843 (WebSTONE: The First Generation in HTTP Server) 1843 SB - -938 869 524 (Benchmarking) 524 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -1087 1033 226 (Gene Trent) 226 SB - -1148 1092 103 (MTS) 103 SB - -1037 1151 326 (Silicon Graphics) 326 SB - -1091 1269 218 (Mark Sake) 218 SB - -1148 1328 103 (MTS) 103 SB - -1037 1387 326 (Silicon Graphics) 326 SB - -1055 1505 290 (February 1995) 290 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1041 1978 317 (ABSTRACT) 317 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -225 2097 110 (With ) 111 SB - -336 2097 74 (the ) 75 SB - -411 2097 145 (advent ) 146 SB - -557 2097 54 (of ) 55 SB - -612 2097 74 (the ) 76 SB - -688 2097 136 (Hyper ) 138 SB - -826 2097 105 (Text ) 107 SB - -933 2097 180 (Transfer ) 182 SB - -1115 2097 185 (Protocol ) 187 SB - -1302 2097 173 (\(HTTP\) ) 175 SB - -1477 2097 13 ( ) 15 SB - -1492 2097 40 (it ) 42 SB - -1534 2097 90 (was ) 92 SB - -1626 2097 84 (just ) 86 SB - -1712 2097 35 (a ) 37 SB - -1749 2097 141 (matter ) 143 SB - -1892 2097 54 (of ) 56 SB - -1948 2097 99 (time ) 101 SB - -2049 2097 126 (before) 126 SB - -225 2156 74 (the ) 81 SB - -306 2156 242 (commercial ) 249 SB - -555 2156 79 (use ) 86 SB - -641 2156 137 (would ) 144 SB - -785 2156 59 (be ) 66 SB - -851 2156 170 (evident. ) 177 SB - -1028 2156 13 ( ) 20 SB - -1048 2156 265 (Performance ) 272 SB - -1320 2156 145 (testing ) 152 SB - -1472 2156 54 (of ) 61 SB - -1533 2156 180 (different ) 187 SB - -1720 2156 198 (hardware ) 205 SB - -1925 2156 201 (platforms ) 209 SB - -2134 2156 41 (as) 41 SB - -225 2215 95 (well ) 96 SB - -321 2215 54 (as ) 55 SB - -376 2215 180 (different ) 182 SB - -558 2215 337 (implementations ) 339 SB - -897 2215 54 (of ) 56 SB - -953 2215 139 (HTTP ) 141 SB - -1094 2215 78 (has ) 80 SB - -1174 2215 119 (made ) 121 SB - -1295 2215 40 (it ) 42 SB - -1337 2215 203 (necessary ) 205 SB - -1542 2215 54 (to ) 56 SB - -1598 2215 133 (create ) 135 SB - -1733 2215 35 (a ) 37 SB - -1770 2215 95 (new ) 97 SB - -1867 2215 230 (benchmark ) 232 SB - -2099 2215 76 (that) 76 SB - -225 2274 85 (will ) 92 SB - -317 2274 121 (allow ) 128 SB - -445 2274 35 (a ) 43 SB - -488 2274 196 (customer ) 204 SB - -692 2274 123 (easily ) 131 SB - -823 2274 54 (to ) 62 SB - -885 2274 231 (understand ) 239 SB - -1124 2274 74 (the ) 82 SB - -1206 2274 262 (performance ) 270 SB - -1476 2274 271 (characterizes ) 279 SB - -1755 2274 54 (of ) 62 SB - -1817 2274 180 (different ) 188 SB - -2005 2274 170 (vendors.) 170 SB - -225 2333 90 (The ) 107 SB - -332 2333 280 (WebSTONE, ) 297 SB - -629 2333 35 (a ) 52 SB - -681 2333 95 (web ) 112 SB - -793 2333 156 (serving ) 173 SB - -966 2333 230 (benchmark ) 247 SB - -1213 2333 78 (has ) 95 SB - -1308 2333 105 (been ) 122 SB - -1430 2333 216 (developed ) 233 SB - -1663 2333 49 (in ) 66 SB - -1729 2333 59 (an ) 77 SB - -1806 2333 164 (attempt ) 182 SB - -1988 2333 54 (to ) 72 SB - -2060 2333 115 (better) 115 SB - -225 2392 231 (understand ) 237 SB - -462 2392 74 (the ) 81 SB - -543 2392 262 (performance ) 269 SB - -812 2392 249 (characterics ) 256 SB - -1068 2392 54 (of ) 61 SB - -1129 2392 102 (both ) 109 SB - -1238 2392 198 (hardware ) 205 SB - -1443 2392 84 (and ) 91 SB - -1534 2392 198 (software. ) 205 SB - -1739 2392 13 ( ) 20 SB - -1759 2392 90 (The ) 97 SB - -1856 2392 201 (following ) 208 SB - -2064 2392 111 (paper) 111 SB - -225 2451 195 (describes ) 203 SB - -428 2451 74 (the ) 82 SB - -510 2451 230 (benchmark ) 239 SB - -749 2451 49 (in ) 58 SB - -807 2451 188 (technical ) 197 SB - -1004 2451 121 (detail ) 130 SB - -1134 2451 84 (and ) 93 SB - -1227 2451 129 (issues ) 138 SB - -1365 2451 182 (involved ) 191 SB - -1556 2451 49 (in ) 58 SB - -1614 2451 230 (developing ) 239 SB - -1853 2451 83 (this ) 92 SB - -1945 2451 230 (benchmark.) 230 SB - -225 2510 99 (This ) 100 SB - -325 2510 230 (benchmark ) 231 SB - -556 2510 90 (was ) 91 SB - -647 2510 216 (developed ) 217 SB - -864 2510 169 (because ) 170 SB - -1034 2510 113 (there ) 114 SB - -1148 2510 44 (is ) 46 SB - -1194 2510 190 (currently ) 192 SB - -1386 2510 63 (no ) 65 SB - -1451 2510 117 (other ) 119 SB - -1570 2510 94 (way ) 96 SB - -1666 2510 54 (of ) 56 SB - -1722 2510 145 (testing ) 147 SB - -1869 2510 74 (the ) 76 SB - -1945 2510 230 (application.) 230 SB - -225 2569 1891 (This benchmark is intended for free distribution both this white paper and code. It is the intent ) 1892 SB - -2117 2569 58 (for) 58 SB - -225 2628 83 (this ) 89 SB - -314 2628 230 (benchmark ) 236 SB - -550 2628 54 (to ) 60 SB - -610 2628 117 (grow ) 123 SB - -733 2628 84 (and ) 90 SB - -823 2628 128 (better ) 134 SB - -957 2628 96 (help ) 102 SB - -1059 2628 84 (test ) 90 SB - -1149 2628 148 (system ) 154 SB - -1303 2628 262 (performance ) 268 SB - -1571 2628 71 (for ) 77 SB - -1648 2628 132 (future ) 138 SB - -1786 2628 167 (systems ) 173 SB - -1959 2628 84 (and ) 90 SB - -2049 2628 126 (HTTP) 126 SB - -225 2687 337 (implementations.) 337 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Bold - -%%+ font Times-Roman - -%%Page: 2 2 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 21 50 2154 2899 CB - -2154 2901 21 (2) 21 SB - -gr - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Roman - -%%Page: 3 3 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 21 50 2154 2899 CB - -2154 2901 21 (3) 21 SB - -gr - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 406 285 (Contents) 285 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -225 581 29 (1) 29 SB - -375 581 369 (Web Overview) 369 SB - -1575 581 160 (page 5) 160 SB - -225 719 29 (2) 29 SB - -375 719 549 (WebSTONE overview) 549 SB - -1575 719 160 (page 5) 160 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 797 63 (2.1) 63 SB - -525 797 818 (The WebSTONE as a performance tester) 818 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 788 160 (page 6) 160 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 866 76 (2.2 ) 76 SB - -525 866 533 (WebSTONE\222s measure of ) 533 SB - -1058 866 386 (server Performance) 386 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 857 160 (page 6) 160 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 935 63 (2.3) 63 SB - -525 935 692 (What the WebSTONE doesn\222t test) 692 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 926 160 (page 7) 160 SB - -225 1064 29 (3) 29 SB - -375 1064 642 (WebSTONE Architecture) 642 SB - -1575 1064 160 (page 7) 160 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1142 63 (3.1) 63 SB - -525 1142 448 (WebSTONE Software) 448 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 1133 160 (page 8) 160 SB - -225 1261 29 (4) 29 SB - -375 1261 649 (Configuration Parameters) 649 SB - -1575 1261 160 (page 9) 160 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1339 63 (4.1) 63 SB - -525 1339 274 (Duration test) 274 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 1330 160 (page 9) 160 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1408 63 (4.2) 63 SB - -525 1408 303 (Repetition test) 303 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 1399 160 (page 9) 160 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1477 63 (4.3) 63 SB - -525 1477 308 (Number of files) 308 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 1468 160 (page 9) 160 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1546 63 (4.4) 63 SB - -525 1546 341 (Number of pages) 341 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 1537 189 (page 10) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1615 63 (4.5) 63 SB - -525 1615 875 (Server software and hardware configuration) 875 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 1606 189 (page 10) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1684 63 (4.6) 63 SB - -525 1684 478 (Number of Webchildren) 478 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 1675 189 (page 10) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1753 63 (4.7) 63 SB - -525 1753 412 (Number of networks) 412 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 1744 189 (page 10) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1822 63 (4.8) 63 SB - -525 1822 354 (Number of clients) 354 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 1813 189 (page 11) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1891 63 (4.9) 63 SB - -525 1891 379 (Workload of pages) 379 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 1882 189 (page 11) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1960 88 (4.10) 88 SB - -525 1960 167 (Logging) 167 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 1951 189 (page 11) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2029 88 (4.11) 88 SB - -525 2029 218 (Debugging) 218 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 2020 189 (page 11) 189 SB - -225 2158 29 (5) 29 SB - -375 2158 551 (Workload Parameters) 551 SB - -1575 2158 189 (page 11) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2236 63 (5.1) 63 SB - -525 2236 401 (General modem mix) 401 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 2227 189 (page 11) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2305 63 (5.2) 63 SB - -525 2305 241 (General mix) 241 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 2296 189 (page 12) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2374 63 (5.3) 63 SB - -525 2374 299 (Media rich mix) 299 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 2365 189 (page 12) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2443 63 (5.4) 63 SB - -525 2443 544 (General and media rich mix) 544 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 2434 189 (page 12) 189 SB - -225 2572 29 (6) 29 SB - -375 2572 420 (Load Generation) 420 SB - -1575 2572 189 (page 12) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2650 76 (6.1 ) 76 SB - -525 2650 284 (Page selection) 284 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 2641 189 (page 12) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2719 63 (6.2) 63 SB - -525 2719 236 (Page access) 236 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 2710 189 (page 13) 189 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2788 63 (6.3) 63 SB - -525 2788 389 (Duration of the test) 389 SB - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -1575 2779 189 (page 13) 189 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Bold - -%%+ font Times-Roman - -%%Page: 4 4 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 21 50 2154 2899 CB - -2154 2901 21 (4) 21 SB - -gr - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -225 238 29 (7) 29 SB - -375 238 482 (Benchmark Results) 482 SB - -1575 238 189 (page 13) 189 SB - -225 307 73 (7.1) 73 SB - -375 307 485 (Summary of results) 485 SB - -1575 307 189 (page 20) 189 SB - -225 445 29 (8) 29 SB - -375 445 327 (Future Work) 327 SB - -1575 445 189 (page 21) 189 SB - -225 583 29 (9) 29 SB - -375 583 449 (Acknowledgments) 449 SB - -1575 583 189 (page 22) 189 SB - -225 721 58 (10) 58 SB - -375 721 491 (Author Information) 491 SB - -1575 721 189 (page 22) 189 SB - -225 859 58 (11) 58 SB - -375 859 114 (Refe) 114 SB - -489 859 158 (rences) 158 SB - -1575 859 189 (page 22) 189 SB - -225 997 58 (12) 58 SB - -375 997 309 (Trademarks) 309 SB - -1575 997 189 (page 22) 189 SB - -225 1135 187 (Figures) 187 SB - -225 1263 208 (Figure 3) 208 SB - -675 1263 798 (A WebSTONE test environment) 798 SB - -1575 1263 160 (page 7) 160 SB - -225 1332 267 (Figure 3.1 ) 267 SB - -675 1332 484 (Webchildren client ) 484 SB - -1575 1332 160 (page 8) 160 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Bold - -%%+ font Times-Roman - -%%Page: 5 5 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 21 50 2154 2899 CB - -2154 2901 21 (5) 21 SB - -gr - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 347 551 (1. Web Overview) 551 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 522 108 (Since) 108 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -483 498 19 ( ) 25 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -508 522 74 (the ) 80 SB - -588 522 145 (advent ) 151 SB - -739 522 54 (of ) 60 SB - -799 522 74 (the ) 81 SB - -880 522 164 (internet ) 171 SB - -1051 522 102 (over ) 109 SB - -1160 522 63 (20 ) 70 SB - -1230 522 116 (years ) 123 SB - -1353 522 99 (ago, ) 106 SB - -1459 522 113 (there ) 120 SB - -1579 522 78 (has ) 85 SB - -1664 522 78 (not ) 85 SB - -1749 522 105 (been ) 112 SB - -1861 522 59 (an ) 66 SB - -1927 522 99 (easy ) 106 SB - -2033 522 94 (way ) 101 SB - -2134 522 41 (to) 41 SB - -225 581 139 (access ) 140 SB - -365 581 243 (information ) 244 SB - -609 581 63 (on ) 64 SB - -673 581 74 (the ) 75 SB - -748 581 178 (network ) 179 SB - -927 581 134 (unless ) 135 SB - -1062 581 87 (you ) 88 SB - -1150 581 110 (were ) 111 SB - -1261 581 203 (proficient ) 204 SB - -1465 581 100 (with ) 101 SB - -1566 581 35 (a ) 37 SB - -1603 581 162 (number ) 164 SB - -1767 581 54 (of ) 56 SB - -1823 581 138 (UNIX ) 140 SB - -1963 581 212 (commands) 212 SB - -225 640 84 (and ) 86 SB - -311 640 237 (understood ) 239 SB - -550 640 99 (how ) 101 SB - -651 640 74 (the ) 76 SB - -727 640 178 (network ) 180 SB - -907 640 236 (functioned. ) 238 SB - -1145 640 13 ( ) 16 SB - -1161 640 86 (But ) 89 SB - -1250 640 112 (now, ) 115 SB - -1365 640 142 (thanks ) 145 SB - -1510 640 54 (to ) 57 SB - -1567 640 152 (HTTP, ) 155 SB - -1722 640 74 (the ) 77 SB - -1799 640 133 (ability ) 136 SB - -1935 640 54 (to ) 57 SB - -1992 640 183 (reference) 183 SB - -225 699 1548 (information and to travel the net \(known as surfing\) has been made incredibly ) 1549 SB - -1774 699 153 (simple. ) 154 SB - -1928 699 13 ( ) 14 SB - -1942 699 48 (A ) 49 SB - -1991 699 96 (user ) 97 SB - -2088 699 87 (with) 87 SB - -225 758 35 (a ) 39 SB - -264 758 102 (GUI ) 106 SB - -370 758 211 (\(graphical ) 215 SB - -585 758 96 (user ) 101 SB - -686 758 13 ( ) 18 SB - -704 758 201 (interface\) ) 206 SB - -910 758 81 (can ) 86 SB - -996 758 179 (navigate ) 184 SB - -1180 758 169 (through ) 174 SB - -1354 758 74 (the ) 79 SB - -1433 758 164 (internet ) 169 SB - -1602 758 54 (as ) 59 SB - -1661 758 123 (easily ) 128 SB - -1789 758 54 (as ) 59 SB - -1848 758 97 (they ) 102 SB - -1950 758 64 (do ) 69 SB - -2019 758 156 (through) 156 SB - -225 817 1438 (their windows based personal computers with the click of mouse button.) 1438 SB - -375 935 139 (HTTP ) 148 SB - -523 935 44 (is ) 53 SB - -576 935 59 (an ) 68 SB - -644 935 339 (application-level ) 348 SB - -992 935 182 (protocol ) 191 SB - -1183 935 100 (with ) 109 SB - -1292 935 87 (low ) 96 SB - -1388 935 195 (overhead ) 204 SB - -1592 935 84 (and ) 93 SB - -1685 935 74 (the ) 83 SB - -1768 935 126 (speed ) 136 SB - -1904 935 203 (necessary ) 213 SB - -2117 935 58 (for) 58 SB - -225 994 237 (distributed, ) 248 SB - -473 994 282 (collaborative, ) 293 SB - -766 994 242 (hypermedia ) 254 SB - -1020 994 243 (information ) 255 SB - -1275 994 180 (systems. ) 192 SB - -1467 994 13 ( ) 25 SB - -1492 994 45 (It ) 57 SB - -1549 994 44 (is ) 56 SB - -1605 994 35 (a ) 47 SB - -1652 994 170 (generic, ) 182 SB - -1834 994 191 (stateless, ) 203 SB - -2037 994 138 (object-) 138 SB - -225 1053 176 (oriented ) 178 SB - -403 1053 182 (protocol ) 185 SB - -588 1053 131 (which ) 134 SB - -722 1053 81 (can ) 84 SB - -806 1053 59 (be ) 62 SB - -868 1053 104 (used ) 107 SB - -975 1053 71 (for ) 74 SB - -1049 1053 119 (many ) 122 SB - -1171 1053 126 (tasks, ) 129 SB - -1300 1053 103 (such ) 106 SB - -1406 1053 54 (as ) 57 SB - -1463 1053 118 (name ) 121 SB - -1584 1053 153 (servers ) 156 SB - -1740 1053 84 (and ) 87 SB - -1827 1053 224 (distributed ) 227 SB - -2054 1053 121 (object) 121 SB - -225 1112 1768 (management systems, through extensions of its request methods \(commands\). A feature ) 1769 SB - -1994 1112 54 (of ) 55 SB - -2049 1112 126 (HTTP) 126 SB - -225 1171 44 (is ) 45 SB - -270 1171 74 (the ) 75 SB - -345 1171 137 (typing ) 138 SB - -483 1171 84 (and ) 85 SB - -568 1171 236 (negotiation ) 238 SB - -806 1171 54 (of ) 56 SB - -862 1171 97 (data ) 99 SB - -961 1171 308 (representation, ) 310 SB - -1271 1171 182 (allowing ) 184 SB - -1455 1171 167 (systems ) 169 SB - -1624 1171 54 (to ) 56 SB - -1680 1171 59 (be ) 61 SB - -1741 1171 101 (built ) 103 SB - -1844 1171 288 (independently ) 290 SB - -2134 1171 41 (of) 41 SB - -225 1230 74 (the ) 85 SB - -310 1230 97 (data ) 108 SB - -418 1230 120 (being ) 131 SB - -549 1230 241 (transferred. ) 252 SB - -801 1230 13 ( ) 24 SB - -825 1230 90 (The ) 101 SB - -926 1230 182 (protocol ) 193 SB - -1119 1230 44 (is ) 55 SB - -1174 1230 179 (typically ) 191 SB - -1365 1230 156 (layered ) 168 SB - -1533 1230 63 (on ) 75 SB - -1608 1230 79 (top ) 91 SB - -1699 1230 54 (of ) 66 SB - -1765 1230 164 (TCP/IP ) 176 SB - -1941 1230 49 (in ) 61 SB - -2002 1230 120 (order ) 132 SB - -2134 1230 41 (to) 41 SB - -225 1289 207 (guarantee ) 213 SB - -438 1289 97 (data ) 103 SB - -541 1289 177 (transfer. ) 183 SB - -724 1289 13 ( ) 19 SB - -743 1289 127 (Other ) 133 SB - -876 1289 181 (methods ) 188 SB - -1064 1289 54 (of ) 61 SB - -1125 1289 97 (data ) 104 SB - -1229 1289 164 (transfer ) 171 SB - -1400 1289 141 (maybe ) 148 SB - -1548 1289 117 (used, ) 124 SB - -1672 1289 90 (but, ) 97 SB - -1769 1289 74 (the ) 81 SB - -1850 1289 93 (vast ) 100 SB - -1950 1289 177 (majority ) 184 SB - -2134 1289 41 (of) 41 SB - -225 1348 982 (existing systems use TCP/IP for HTTP transfers. ) 983 SB - -1208 1348 13 ( ) 14 SB - -1222 1348 90 (The ) 91 SB - -1313 1348 182 (protocol ) 183 SB - -1496 1348 169 (consists ) 170 SB - -1666 1348 54 (of ) 55 SB - -1721 1348 35 (a ) 36 SB - -1757 1348 158 (request ) 159 SB - -1916 1348 84 (and ) 85 SB - -2001 1348 174 (response) 174 SB - -225 1407 1182 (paradigm. See reference for further information on HTTP.) 1182 SB - -375 1525 117 (Once ) 119 SB - -494 1525 35 (a ) 37 SB - -531 1525 161 (content ) 163 SB - -694 1525 56 (or ) 58 SB - -752 1525 242 (commercial ) 244 SB - -996 1525 181 (provider ) 183 SB - -1179 1525 78 (has ) 80 SB - -1259 1525 103 (their ) 105 SB - -1364 1525 139 (HTTP ) 141 SB - -1505 1525 134 (server ) 136 SB - -1641 1525 63 (on ) 65 SB - -1706 1525 74 (the ) 76 SB - -1782 1525 169 (Internet ) 171 SB - -1953 1525 35 (a ) 37 SB - -1990 1525 96 (user ) 98 SB - -2088 1525 87 (with) 87 SB - -225 1584 74 (the ) 79 SB - -304 1584 79 (use ) 84 SB - -388 1584 54 (of ) 59 SB - -447 1584 59 (an ) 65 SB - -512 1584 164 (internet ) 170 SB - -682 1584 174 (browser ) 180 SB - -862 1584 13 ( ) 19 SB - -881 1584 44 (is ) 50 SB - -931 1584 93 (able ) 99 SB - -1030 1584 54 (to ) 60 SB - -1090 1584 139 (access ) 145 SB - -1235 1584 74 (the ) 80 SB - -1315 1584 181 (provider ) 187 SB - -1502 1584 100 (with ) 106 SB - -1608 1584 35 (a ) 41 SB - -1649 1584 185 (common ) 191 SB - -1840 1584 184 (interface ) 190 SB - -2030 1584 145 (defined) 145 SB - -225 1643 169 (through ) 179 SB - -404 1643 74 (the ) 84 SB - -488 1643 136 (Hyper ) 146 SB - -634 1643 105 (Text ) 115 SB - -749 1643 171 (Markup ) 182 SB - -931 1643 208 (Language ) 219 SB - -1150 1643 201 (\(HTML\), ) 212 SB - -1362 1643 131 (which ) 142 SB - -1504 1643 44 (is ) 55 SB - -1559 1643 35 (a ) 46 SB - -1605 1643 137 (subset ) 148 SB - -1753 1643 54 (of ) 65 SB - -1818 1643 151 (SGML ) 162 SB - -1980 1643 195 (\(Standard) 195 SB - -225 1702 645 (Generalized Markup Language\).) 645 SB - -375 1820 1335 (HTML is a simple markup language used to create documents that ) 1336 SB - -1711 1820 95 (may ) 96 SB - -1807 1820 59 (be ) 60 SB - -1867 1820 142 (shared ) 143 SB - -2010 1820 165 (between) 165 SB - -225 1879 180 (different ) 183 SB - -408 1879 214 (platforms. ) 217 SB - -625 1879 13 ( ) 16 SB - -641 1879 90 (The ) 94 SB - -735 1879 190 (language ) 194 SB - -929 1879 140 (allows ) 144 SB - -1073 1879 102 (text, ) 106 SB - -1179 1879 110 (data, ) 114 SB - -1293 1879 192 (graphics, ) 196 SB - -1489 1879 127 (news, ) 131 SB - -1620 1879 96 (mail ) 100 SB - -1720 1879 84 (and ) 88 SB - -1808 1879 35 (a ) 39 SB - -1847 1879 162 (number ) 166 SB - -2013 1879 54 (of ) 58 SB - -2071 1879 104 (other) 104 SB - -225 1938 157 (utilities ) 159 SB - -384 1938 54 (to ) 57 SB - -441 1938 162 (interact ) 165 SB - -606 1938 100 (with ) 103 SB - -709 1938 74 (the ) 77 SB - -786 1938 139 (HTTP ) 142 SB - -928 1938 134 (server ) 137 SB - -1065 1938 84 (and ) 87 SB - -1152 1938 187 (browser. ) 190 SB - -1342 1938 13 ( ) 16 SB - -1358 1938 99 (This ) 102 SB - -1460 1938 115 (gives ) 118 SB - -1578 1938 74 (the ) 77 SB - -1655 1938 96 (user ) 99 SB - -1754 1938 74 (the ) 77 SB - -1831 1938 177 (freedom ) 180 SB - -2011 1938 54 (to ) 57 SB - -2068 1938 107 (enjoy) 107 SB - -225 1997 1501 (the benefits of the provider without having to know how it is accomplished.) 1501 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 2234 57 (2.) 57 SB - -375 2234 708 (WebSTONE overview) 708 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2409 90 (The ) 92 SB - -467 2409 267 (WebSTONE ) 269 SB - -736 2409 44 (is ) 46 SB - -782 2409 35 (a ) 38 SB - -820 2409 95 (new ) 98 SB - -918 2409 230 (benchmark ) 233 SB - -1151 2409 89 (that ) 92 SB - -1243 2409 103 (tests ) 106 SB - -1349 2409 74 (the ) 77 SB - -1426 2409 262 (performance ) 265 SB - -1691 2409 54 (of ) 57 SB - -1748 2409 139 (HTTP ) 142 SB - -1890 2409 13 ( ) 16 SB - -1906 2409 49 (in ) 52 SB - -1958 2409 173 (contrast ) 176 SB - -2134 2409 41 (to) 41 SB - -225 2468 435 (server platform\222s and ) 436 SB - -661 2468 180 (different ) 181 SB - -842 2468 337 (implementations ) 338 SB - -1180 2468 54 (of ) 55 SB - -1235 2468 152 (HTTP. ) 153 SB - -1388 2468 13 ( ) 14 SB - -1402 2468 178 (Because ) 179 SB - -1581 2468 113 (there ) 114 SB - -1695 2468 74 (are ) 75 SB - -1770 2468 119 (many ) 120 SB - -1890 2468 180 (different ) 181 SB - -2071 2468 104 (types) 104 SB - -225 2527 54 (of ) 55 SB - -280 2527 134 (server ) 135 SB - -415 2527 185 (software ) 186 SB - -601 2527 89 (that ) 90 SB - -691 2527 44 (is ) 45 SB - -736 2527 190 (currently ) 191 SB - -927 2527 198 (available, ) 199 SB - -1126 2527 13 ( ) 15 SB - -1141 2527 54 (as ) 56 SB - -1197 2527 95 (well ) 97 SB - -1294 2527 54 (as ) 56 SB - -1350 2527 180 (different ) 182 SB - -1532 2527 198 (hardware ) 200 SB - -1732 2527 214 (platforms, ) 216 SB - -1948 2527 113 (there ) 115 SB - -2063 2527 112 (needs) 112 SB - -225 2586 54 (to ) 55 SB - -280 2586 59 (be ) 60 SB - -340 2586 35 (a ) 36 SB - -376 2586 232 (mechanism ) 233 SB - -609 2586 71 (for ) 72 SB - -681 2586 145 (testing ) 146 SB - -827 2586 291 (benchmarking ) 293 SB - -1120 2586 134 (server ) 136 SB - -1256 2586 185 (software ) 187 SB - -1443 2586 84 (and ) 86 SB - -1529 2586 198 (hardware ) 200 SB - -1729 2586 182 (platform ) 184 SB - -1913 2586 262 (performance.) 262 SB - -225 2645 90 (The ) 99 SB - -324 2645 267 (WebSTONE ) 276 SB - -600 2645 44 (is ) 53 SB - -653 2645 35 (a ) 44 SB - -697 2645 230 (benchmark ) 239 SB - -936 2645 89 (that ) 98 SB - -1034 2645 183 (attempts ) 192 SB - -1226 2645 54 (to ) 63 SB - -1289 2645 64 (do ) 73 SB - -1362 2645 96 (this. ) 105 SB - -1467 2645 13 ( ) 23 SB - -1490 2645 67 (As ) 77 SB - -1567 2645 100 (with ) 110 SB - -1677 2645 82 (any ) 92 SB - -1769 2645 95 (new ) 105 SB - -1874 2645 230 (benchmark ) 240 SB - -2114 2645 61 (the) 61 SB - -225 2704 267 (WebSTONE ) 269 SB - -494 2704 44 (is ) 46 SB - -540 2704 35 (a ) 37 SB - -577 2704 162 (starting ) 164 SB - -741 2704 128 (point. ) 130 SB - -871 2704 13 ( ) 15 SB - -886 2704 117 (Once ) 119 SB - -1005 2704 74 (the ) 76 SB - -1081 2704 230 (benchmark ) 232 SB - -1313 2704 44 (is ) 46 SB - -1359 2704 226 (introduced ) 228 SB - -1587 2704 90 (into ) 92 SB - -1679 2704 74 (the ) 76 SB - -1755 2704 157 (general ) 159 SB - -1914 2704 13 ( ) 15 SB - -1929 2704 139 (World ) 141 SB - -2070 2704 105 (Wide) 105 SB - -225 2763 1669 (Web \(WWW\) community, improvements and enhancements will be made to further ) 1670 SB - -1895 2763 74 (the ) 75 SB - -1970 2763 79 (use ) 80 SB - -2050 2763 54 (of ) 55 SB - -2105 2763 70 (this) 70 SB - -225 2822 1068 (benchmark in support of better end user performance.) 1068 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Bold - -%%+ font Times-Roman - -%%Page: 6 6 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 21 50 2154 2899 CB - -2154 2901 21 (6) 21 SB - -gr - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 219 121 (Since ) 125 SB - -500 219 74 (the ) 78 SB - -578 219 260 (functionality ) 264 SB - -842 219 54 (of ) 58 SB - -900 219 74 (the ) 78 SB - -978 219 105 (Web ) 109 SB - -1087 219 44 (is ) 48 SB - -1135 219 144 (similar ) 148 SB - -1283 219 54 (to ) 58 SB - -1341 219 74 (the ) 78 SB - -1419 219 260 (functionality ) 265 SB - -1684 219 54 (of ) 59 SB - -1743 219 166 (NFS\231, ) 171 SB - -1914 219 74 (the ) 79 SB - -1993 219 182 (LADDIS) 182 SB - -225 278 230 (benchmark ) 233 SB - -458 278 90 (was ) 93 SB - -551 278 193 (reviewed ) 196 SB - -747 278 71 (for ) 74 SB - -821 278 13 ( ) 16 SB - -837 278 172 (possible ) 175 SB - -1012 278 54 (as ) 57 SB - -1069 278 74 (the ) 77 SB - -1146 278 95 (web ) 98 SB - -1244 278 243 (benchmark. ) 246 SB - -1490 278 13 ( ) 16 SB - -1506 278 302 (Unfortunately, ) 305 SB - -1811 278 113 (there ) 117 SB - -1928 278 90 (was ) 94 SB - -2022 278 63 (no ) 67 SB - -2089 278 86 (easy) 86 SB - -225 337 94 (way ) 97 SB - -322 337 54 (to ) 57 SB - -379 337 122 (adapt ) 125 SB - -504 337 83 (this ) 86 SB - -590 337 243 (benchmark. ) 246 SB - -836 337 13 ( ) 16 SB - -852 337 209 (However, ) 212 SB - -1064 337 195 (LADDIS ) 198 SB - -1262 337 75 (did ) 78 SB - -1340 337 108 (offer ) 111 SB - -1451 337 35 (a ) 38 SB - -1489 337 238 (perspective ) 241 SB - -1730 337 63 (on ) 67 SB - -1797 337 99 (how ) 103 SB - -1900 337 54 (to ) 58 SB - -1958 337 217 (benchmark) 217 SB - -225 396 255 (client/server ) 258 SB - -483 396 273 (environment. ) 276 SB - -759 396 13 ( ) 16 SB - -775 396 90 (The ) 93 SB - -868 396 267 (WebSTONE ) 270 SB - -1138 396 44 (is ) 47 SB - -1185 396 104 (used ) 107 SB - -1292 396 54 (to ) 58 SB - -1350 396 177 (measure ) 181 SB - -1531 396 207 (maximum ) 211 SB - -1742 396 84 (and ) 88 SB - -1830 396 167 (average ) 171 SB - -2001 396 174 (response) 174 SB - -225 455 118 (times ) 133 SB - -358 455 71 (for ) 87 SB - -445 455 229 (connecting ) 245 SB - -690 455 54 (to ) 70 SB - -760 455 74 (the ) 90 SB - -850 455 147 (server. ) 163 SB - -1013 455 13 ( ) 29 SB - -1042 455 54 (In ) 70 SB - -1112 455 174 (addition ) 190 SB - -1302 455 234 (throughput ) 250 SB - -1552 455 97 (data ) 113 SB - -1665 455 44 (is ) 60 SB - -1725 455 92 (also ) 108 SB - -1833 455 220 (generated. ) 236 SB - -2069 455 13 ( ) 29 SB - -2098 455 77 (The) 77 SB - -225 514 267 (WebSTONE ) 268 SB - -493 514 13 ( ) 14 SB - -507 514 44 (is ) 45 SB - -552 514 190 (executed ) 191 SB - -743 514 306 (simultaneously ) 307 SB - -1050 514 63 (on ) 64 SB - -1114 514 85 (one ) 86 SB - -1200 514 56 (or ) 57 SB - -1257 514 115 (more ) 116 SB - -1373 514 139 (clients ) 141 SB - -1514 514 169 (resident ) 171 SB - -1685 514 63 (on ) 65 SB - -1750 514 74 (the ) 76 SB - -1826 514 169 (server\222s ) 171 SB - -1997 514 178 (network.) 178 SB - -225 573 112 (Each ) 118 SB - -343 573 120 (client ) 126 SB - -469 573 44 (is ) 50 SB - -519 573 93 (able ) 99 SB - -618 573 54 (to ) 60 SB - -678 573 142 (launch ) 148 SB - -826 573 35 (a ) 41 SB - -867 573 162 (number ) 169 SB - -1036 573 54 (of ) 61 SB - -1097 573 171 (children ) 178 SB - -1275 573 145 (\(called ) 152 SB - -1427 573 280 (Webchildren\) ) 287 SB - -1714 573 217 (depending ) 224 SB - -1938 573 63 (on ) 70 SB - -2008 573 99 (how ) 106 SB - -2114 573 61 (the) 61 SB - -225 632 290 (system load is ) 291 SB - -516 632 239 (configured. ) 240 SB - -756 632 13 ( ) 14 SB - -770 632 112 (Each ) 113 SB - -883 632 263 (Webchildren ) 264 SB - -1147 632 44 (is ) 45 SB - -1192 632 93 (able ) 94 SB - -1286 632 54 (to ) 55 SB - -1341 632 158 (request ) 159 SB - -1500 632 243 (information ) 244 SB - -1744 632 108 (from ) 109 SB - -1853 632 74 (the ) 75 SB - -1928 632 134 (server ) 135 SB - -2063 632 112 (based) 112 SB - -225 691 63 (on ) 70 SB - -295 691 35 (a ) 42 SB - -337 691 120 (given ) 127 SB - -464 691 74 (file ) 81 SB - -545 691 111 (load. ) 118 SB - -663 691 13 ( ) 20 SB - -683 691 90 (The ) 97 SB - -780 691 267 (WebSTONE ) 274 SB - -1054 691 44 (is ) 51 SB - -1105 691 154 (written ) 161 SB - -1266 691 54 (to ) 62 SB - -1328 691 59 (be ) 67 SB - -1395 691 253 (independent ) 261 SB - -1656 691 54 (of ) 62 SB - -1718 691 74 (the ) 82 SB - -1800 691 134 (server ) 142 SB - -1942 691 182 (platform ) 190 SB - -2132 691 43 (or) 43 SB - -225 750 1347 (software running on it. In essence it treats the server as a blackbox.) 1347 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 869 95 (2.1) 95 SB - -375 869 1477 (The WebSTONE as a measure of performance) 1477 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1044 54 (In ) 59 SB - -434 1044 174 (addition ) 179 SB - -613 1044 54 (to ) 59 SB - -672 1044 35 (a ) 40 SB - -712 1044 230 (benchmark ) 236 SB - -948 1044 89 (that ) 95 SB - -1043 1044 201 (generates ) 207 SB - -1250 1044 263 (standardized ) 269 SB - -1519 1044 97 (data ) 103 SB - -1622 1044 71 (for ) 77 SB - -1699 1044 243 (comparison ) 249 SB - -1948 1044 54 (of ) 60 SB - -2008 1044 167 (different) 167 SB - -225 1103 1542 (platforms, the WebSTONE is also a performance tester and maybe used as a ) 1543 SB - -1768 1103 92 (tool ) 93 SB - -1861 1103 54 (to ) 55 SB - -1916 1103 13 ( ) 14 SB - -1930 1103 96 (help ) 97 SB - -2027 1103 148 (identify) 148 SB - -225 1162 262 (performance ) 265 SB - -490 1162 348 (characterizations ) 351 SB - -841 1162 54 (of ) 57 SB - -898 1162 134 (server ) 137 SB - -1035 1162 214 (platforms. ) 217 SB - -1252 1162 13 ( ) 16 SB - -1268 1162 45 (It ) 48 SB - -1316 1162 44 (is ) 48 SB - -1364 1162 81 (our ) 85 SB - -1449 1162 98 (goal ) 102 SB - -1551 1162 89 (that ) 93 SB - -1644 1162 74 (the ) 78 SB - -1722 1162 230 (benchmark ) 234 SB - -1956 1162 85 (will ) 89 SB - -2045 1162 130 (evolve) 130 SB - -225 1221 1687 (and will help define a standard the WWW community may use when comparing data.) 1687 SB - -375 1339 115 (Used ) 122 SB - -497 1339 54 (as ) 61 SB - -558 1339 35 (a ) 42 SB - -600 1339 262 (performance ) 270 SB - -870 1339 92 (tool ) 100 SB - -970 1339 74 (the ) 82 SB - -1052 1339 280 (WebSTONE, ) 288 SB - -1340 1339 98 (uses ) 106 SB - -1446 1339 202 (workload ) 210 SB - -1656 1339 231 (parameters ) 239 SB - -1895 1339 84 (and ) 92 SB - -1987 1339 139 (clients ) 147 SB - -2134 1339 41 (to) 41 SB - -225 1398 182 (generate ) 185 SB - -410 1398 139 (HTTP ) 142 SB - -552 1398 131 (traffic ) 134 SB - -686 1398 89 (that ) 92 SB - -778 1398 140 (allows ) 144 SB - -922 1398 59 (an ) 63 SB - -985 1398 139 (HTTP ) 143 SB - -1128 1398 134 (server ) 138 SB - -1266 1398 54 (to ) 58 SB - -1324 1398 59 (be ) 63 SB - -1387 1398 171 (stressed ) 175 SB - -1562 1398 49 (in ) 53 SB - -1615 1398 35 (a ) 39 SB - -1654 1398 162 (number ) 166 SB - -1820 1398 54 (of ) 58 SB - -1878 1398 180 (different ) 184 SB - -2062 1398 113 (ways.) 113 SB - -225 1457 1867 (This can gives insight into the server\222s behavior and performance in a variety of environments.) 1867 SB - -375 1575 129 (There ) 131 SB - -506 1575 96 (four ) 98 SB - -604 1575 180 (different ) 182 SB - -786 1575 221 (workloads ) 223 SB - -1009 1575 89 (that ) 91 SB - -1100 1575 196 (represent ) 198 SB - -1298 1575 35 (a ) 37 SB - -1335 1575 150 (sample ) 152 SB - -1487 1575 54 (of ) 57 SB - -1544 1575 74 (the ) 77 SB - -1621 1575 166 (existing ) 169 SB - -1790 1575 153 (servers ) 156 SB - -1946 1575 190 (currently ) 193 SB - -2139 1575 36 (in) 36 SB - -225 1634 311 (use on the web.) 311 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -225 1691 36 (\267 ) 75 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 1696 1647 (The first one is a workload for general use actives that is sensitive to modem users.) 1647 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -225 1753 36 (\267 ) 75 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 1758 90 (The ) 93 SB - -393 1758 151 (second ) 154 SB - -547 1758 202 (workload ) 205 SB - -752 1758 44 (is ) 47 SB - -799 1758 35 (a ) 39 SB - -838 1758 157 (general ) 161 SB - -999 1758 86 (mix ) 90 SB - -1089 1758 89 (that ) 93 SB - -1182 1758 44 (is ) 48 SB - -1230 1758 78 (not ) 82 SB - -1312 1758 54 (as ) 58 SB - -1370 1758 217 (concerned ) 221 SB - -1591 1758 100 (with ) 104 SB - -1695 1758 74 (the ) 78 SB - -1773 1758 160 (modem ) 164 SB - -1937 1758 109 (user, ) 113 SB - -2050 1758 90 (but, ) 94 SB - -2144 1758 31 (is) 31 SB - -300 1817 646 (still sensitive to download times.) 646 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -225 1874 36 (\267 ) 75 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 1879 1204 (The third mix is a media rich mix that has very large content.) 1204 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -225 1936 36 (\267 ) 75 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 1941 1228 (the fourth mix is a combination of both the first and third mix.) 1228 SB - -375 2059 45 (It ) 50 SB - -425 2059 144 (should ) 149 SB - -574 2059 59 (be ) 64 SB - -638 2059 125 (noted ) 130 SB - -768 2059 89 (that ) 94 SB - -862 2059 112 (since ) 117 SB - -979 2059 74 (the ) 79 SB - -1058 2059 95 (web ) 100 SB - -1158 2059 44 (is ) 49 SB - -1207 2059 83 (still ) 89 SB - -1296 2059 49 (in ) 55 SB - -1351 2059 59 (its ) 65 SB - -1416 2059 155 (infancy ) 161 SB - -1577 2059 40 (it ) 46 SB - -1623 2059 85 (will ) 91 SB - -1714 2059 97 (take ) 103 SB - -1817 2059 99 (time ) 105 SB - -1922 2059 54 (to ) 60 SB - -1982 2059 105 (have ) 111 SB - -2093 2059 82 (well) 82 SB - -225 2118 158 (defined ) 165 SB - -390 2118 127 (mixes ) 134 SB - -524 2118 89 (that ) 96 SB - -620 2118 85 (will ) 93 SB - -713 2118 59 (be ) 67 SB - -780 2118 227 (considered ) 235 SB - -1015 2118 195 (standard. ) 203 SB - -1218 2118 13 ( ) 21 SB - -1239 2118 45 (It ) 53 SB - -1292 2118 92 (also ) 100 SB - -1392 2118 144 (should ) 152 SB - -1544 2118 59 (be ) 67 SB - -1611 2118 125 (noted ) 133 SB - -1744 2118 89 (that ) 97 SB - -1841 2118 113 (there ) 121 SB - -1962 2118 44 (is ) 52 SB - -2014 2118 92 (also ) 100 SB - -2114 2118 61 (the) 61 SB - -225 2177 149 (chance ) 152 SB - -377 2177 89 (that ) 92 SB - -469 2177 113 (there ) 116 SB - -585 2177 85 (will ) 88 SB - -673 2177 59 (be ) 62 SB - -735 2177 63 (no ) 66 SB - -801 2177 103 (such ) 106 SB - -907 2177 13 ( ) 16 SB - -923 2177 113 (thing ) 116 SB - -1039 2177 54 (as ) 57 SB - -1096 2177 35 (a ) 38 SB - -1134 2177 182 (standard ) 185 SB - -1319 2177 86 (mix ) 89 SB - -1408 2177 84 (and ) 87 SB - -1495 2177 103 (each ) 106 SB - -1601 2177 196 (customer ) 199 SB - -1800 2177 85 (will ) 88 SB - -1888 2177 105 (have ) 109 SB - -1997 2177 54 (to ) 58 SB - -2055 2177 120 (define) 120 SB - -225 2236 1681 (their own mix based on individual sites and run the test against the selected systems.) 1681 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 2414 1578 (2.2 WebSTONE\222s measure of server performance) 1578 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2589 90 (The ) 96 SB - -471 2589 267 (WebSTONE ) 273 SB - -744 2589 44 (is ) 51 SB - -795 2589 35 (a ) 42 SB - -837 2589 259 (configurable ) 266 SB - -1103 2589 230 (benchmark ) 237 SB - -1340 2589 89 (that ) 96 SB - -1436 2589 140 (allows ) 147 SB - -1583 2589 262 (performance ) 269 SB - -1852 2589 275 (measurement ) 282 SB - -2134 2589 41 (of) 41 SB - -225 2648 646 (the server in the following ways:) 646 SB - -225 2707 755 (- Average and maximum connect time) 755 SB - -225 2766 774 (- Average and maximum response time) 774 SB - -225 2825 448 (- Data throughput rate) 448 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Symbol - -%%+ font Times-Bold - -%%+ font Times-Roman - -%%Page: 7 7 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 21 50 2154 2899 CB - -2154 2901 21 (7) 21 SB - -gr - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -225 169 560 (- Number of pages retrieved) 560 SB - -225 228 527 (- Number of files retrieved) 527 SB - -375 346 1572 (The benchmark\222s goal is to control as much of the clients running environment ) 1573 SB - -1948 346 54 (as ) 55 SB - -2003 346 172 (possible.) 172 SB - -225 405 1192 (The WebSTONE has no interest in the server configuration.) 1192 SB - -375 523 121 (Since ) 122 SB - -497 523 74 (the ) 76 SB - -573 523 134 (object ) 136 SB - -709 523 44 (is ) 46 SB - -755 523 54 (to ) 56 SB - -811 523 155 (control ) 157 SB - -968 523 54 (as ) 56 SB - -1024 523 121 (much ) 123 SB - -1147 523 54 (of ) 56 SB - -1203 523 74 (the ) 76 SB - -1279 523 120 (client ) 122 SB - -1401 523 260 (environment ) 262 SB - -1663 523 54 (as ) 56 SB - -1719 523 172 (possible ) 174 SB - -1893 523 71 (we ) 73 SB - -1966 523 166 (decided ) 168 SB - -2134 523 41 (to) 41 SB - -225 582 44 (is ) 50 SB - -275 582 115 (write ) 121 SB - -396 582 74 (the ) 80 SB - -476 582 230 (benchmark ) 236 SB - -712 582 49 (in ) 55 SB - -767 582 46 (C ) 52 SB - -819 582 84 (and ) 90 SB - -909 582 78 (not ) 84 SB - -993 582 54 (to ) 60 SB - -1053 582 79 (use ) 85 SB - -1138 582 166 (existing ) 172 SB - -1310 582 108 (code ) 114 SB - -1424 582 170 (libraries ) 176 SB - -1600 582 54 (as ) 60 SB - -1660 582 97 (they ) 103 SB - -1763 582 74 (are ) 80 SB - -1843 582 78 (not ) 84 SB - -1927 582 154 (written ) 161 SB - -2088 582 87 (with) 87 SB - -225 641 262 (performance ) 264 SB - -489 641 49 (in ) 51 SB - -540 641 124 (mind. ) 126 SB - -666 641 13 ( ) 15 SB - -681 641 90 (The ) 92 SB - -773 641 230 (benchmark ) 232 SB - -1005 641 122 (sends ) 124 SB - -1129 641 139 (HTTP ) 141 SB - -1270 641 177 (requests ) 179 SB - -1449 641 54 (to ) 56 SB - -1505 641 74 (the ) 77 SB - -1582 641 134 (server ) 137 SB - -1719 641 84 (and ) 87 SB - -1806 641 98 (then ) 101 SB - -1907 641 204 (processes ) 207 SB - -2114 641 61 (the) 61 SB - -225 700 262 (performance ) 269 SB - -494 700 97 (data ) 104 SB - -598 700 119 (when ) 126 SB - -724 700 123 (done. ) 130 SB - -854 700 13 ( ) 20 SB - -874 700 99 (This ) 106 SB - -980 700 151 (insures ) 159 SB - -1139 700 89 (that ) 97 SB - -1236 700 98 (only ) 106 SB - -1342 700 74 (the ) 82 SB - -1424 700 108 (code ) 116 SB - -1540 700 203 (necessary ) 211 SB - -1751 700 54 (to ) 62 SB - -1813 700 165 (execute ) 173 SB - -1986 700 74 (the ) 82 SB - -2068 700 107 (given) 107 SB - -225 759 879 (request is performed in the most direct path.) 879 SB - -375 877 168 (Though ) 178 SB - -553 877 113 (there ) 123 SB - -676 877 85 (will ) 95 SB - -771 877 147 (always ) 157 SB - -928 877 59 (be ) 69 SB - -997 877 132 (added ) 142 SB - -1139 877 195 (overhead ) 205 SB - -1344 877 49 (in ) 59 SB - -1403 877 74 (the ) 84 SB - -1487 877 230 (benchmark ) 240 SB - -1727 877 83 (this ) 94 SB - -1821 877 161 (ensures ) 172 SB - -1993 877 74 (the ) 85 SB - -2078 877 97 (most) 97 SB - -225 936 155 (control ) 160 SB - -385 936 102 (over ) 107 SB - -492 936 74 (the ) 79 SB - -571 936 188 (accuracy ) 193 SB - -764 936 54 (of ) 59 SB - -823 936 74 (the ) 79 SB - -902 936 243 (benchmark. ) 248 SB - -1150 936 13 ( ) 18 SB - -1168 936 110 (With ) 116 SB - -1284 936 83 (this ) 89 SB - -1373 936 162 (method ) 168 SB - -1541 936 74 (the ) 80 SB - -1621 936 109 (layer ) 115 SB - -1736 936 54 (of ) 60 SB - -1796 936 166 (existing ) 172 SB - -1968 936 170 (libraries ) 176 SB - -2144 936 31 (is) 31 SB - -225 995 1754 (removed and only what is needed to measure the pure performance of the server is used.) 1754 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1114 95 (2.3) 95 SB - -375 1114 1185 (Metrics the WebSTONE doesn\222t test) 1185 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1289 121 (Since ) 134 SB - -509 1289 83 (this ) 96 SB - -605 1289 230 (benchmark ) 243 SB - -848 1289 44 (is ) 57 SB - -905 1289 217 (concerned ) 230 SB - -1135 1289 98 (only ) 111 SB - -1246 1289 100 (with ) 113 SB - -1359 1289 74 (the ) 87 SB - -1446 1289 134 (server ) 147 SB - -1593 1289 185 (software ) 198 SB - -1791 1289 84 (and ) 98 SB - -1889 1289 211 (hardware, ) 225 SB - -2114 1289 61 (the) 61 SB - -225 1348 267 (WebSTONE ) 273 SB - -498 1348 105 (does ) 111 SB - -609 1348 78 (not ) 84 SB - -693 1348 84 (test ) 91 SB - -784 1348 74 (the ) 81 SB - -865 1348 174 (browser ) 181 SB - -1046 1348 56 (or ) 63 SB - -1109 1348 120 (client ) 127 SB - -1236 1348 91 (side ) 98 SB - -1334 1348 249 (applications ) 256 SB - -1590 1348 56 (or ) 63 SB - -1653 1348 183 (libraries. ) 190 SB - -1843 1348 13 ( ) 20 SB - -1863 1348 13 ( ) 20 SB - -1883 1348 168 (Though ) 175 SB - -2058 1348 49 (in ) 56 SB - -2114 1348 61 (the) 61 SB - -225 1407 132 (future ) 138 SB - -363 1407 40 (it ) 46 SB - -409 1407 126 (might ) 132 SB - -541 1407 59 (be ) 65 SB - -606 1407 54 (of ) 60 SB - -666 1407 159 (interest ) 165 SB - -831 1407 54 (to ) 61 SB - -892 1407 85 (add ) 92 SB - -984 1407 83 (this ) 90 SB - -1074 1407 54 (to ) 61 SB - -1135 1407 74 (the ) 81 SB - -1216 1407 243 (benchmark. ) 250 SB - -1466 1407 13 ( ) 20 SB - -1486 1407 138 (Please ) 145 SB - -1631 1407 76 (see ) 83 SB - -1714 1407 132 (future ) 139 SB - -1853 1407 193 (additions ) 200 SB - -2053 1407 54 (to ) 61 SB - -2114 1407 61 (the) 61 SB - -225 1466 654 (benchmark in chapter 8, later on ) 655 SB - -880 1466 49 (in ) 50 SB - -930 1466 83 (this ) 84 SB - -1014 1466 124 (paper ) 125 SB - -1139 1466 71 (for ) 72 SB - -1211 1466 117 (other ) 118 SB - -1329 1466 157 (metrics ) 158 SB - -1487 1466 89 (that ) 90 SB - -1577 1466 83 (this ) 84 SB - -1661 1466 230 (benchmark ) 231 SB - -1892 1466 190 (currently ) 191 SB - -2083 1466 92 (does) 92 SB - -225 1525 837 (not test but will need to in the near future.) 837 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1673 57 (3.) 57 SB - -375 1673 826 (WebSTONE Architecture) 826 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1848 90 (The ) 92 SB - -467 1848 267 (WebSTONE ) 269 SB - -736 1848 248 (architecture ) 251 SB - -987 1848 44 (is ) 47 SB - -1034 1848 142 (shown ) 145 SB - -1179 1848 49 (in ) 52 SB - -1231 1848 129 (figure ) 132 SB - -1363 1848 93 (2-1. ) 96 SB - -1459 1848 13 ( ) 16 SB - -1475 1848 90 (The ) 93 SB - -1568 1848 263 (Webchildren ) 266 SB - -1834 1848 74 (are ) 77 SB - -1911 1848 214 (controlled ) 217 SB - -2128 1848 47 (by) 47 SB - -225 1907 74 (the ) 76 SB - -301 1907 320 (WebMASTER. ) 322 SB - -623 1907 13 ( ) 15 SB - -638 1907 90 (The ) 92 SB - -730 1907 307 (WebMASTER ) 309 SB - -1039 1907 174 (controls ) 177 SB - -1216 1907 74 (the ) 77 SB - -1293 1907 202 (operation ) 205 SB - -1498 1907 54 (of ) 57 SB - -1555 1907 74 (the ) 77 SB - -1632 1907 230 (benchmark ) 233 SB - -1865 1907 92 (run. ) 95 SB - -1960 1907 13 ( ) 16 SB - -1976 1907 67 (As ) 70 SB - -2046 1907 129 (shown) 129 SB - -225 1966 49 (in ) 50 SB - -275 1966 129 (figure ) 130 SB - -405 1966 80 (2-1 ) 81 SB - -486 1966 113 (there ) 114 SB - -600 1966 74 (are ) 75 SB - -675 1966 38 (4 ) 39 SB - -714 1966 263 (Webchildren ) 264 SB - -978 1966 215 (connected ) 216 SB - -1194 1966 54 (to ) 55 SB - -1249 1966 74 (the ) 75 SB - -1324 1966 139 (HTTP ) 140 SB - -1464 1966 134 (server ) 135 SB - -1599 1966 102 (over ) 103 SB - -1702 1966 35 (a ) 36 SB - -1738 1966 203 (dedicated ) 204 SB - -1942 1966 114 (LAN ) 115 SB - -2057 1966 118 (\(LAN) 118 SB - -225 2025 68 (1\). ) 77 SB - -302 2025 13 ( ) 22 SB - -324 2025 90 (The ) 99 SB - -423 2025 307 (WebMASTER ) 316 SB - -739 2025 44 (is ) 53 SB - -792 2025 190 (executed ) 199 SB - -991 2025 63 (on ) 72 SB - -1063 2025 35 (a ) 44 SB - -1107 2025 177 (separate ) 186 SB - -1293 2025 148 (system ) 158 SB - -1451 2025 157 (outside ) 167 SB - -1618 2025 54 (of ) 64 SB - -1682 2025 74 (the ) 84 SB - -1766 2025 276 (Webchildren. ) 286 SB - -2052 2025 13 ( ) 23 SB - -2075 2025 13 ( ) 23 SB - -2098 2025 77 (The) 77 SB - -225 2084 307 (WebMASTER ) 317 SB - -542 2084 81 (can ) 91 SB - -633 2084 59 (be ) 69 SB - -702 2084 79 (run ) 89 SB - -791 2084 63 (on ) 73 SB - -864 2084 85 (one ) 95 SB - -959 2084 54 (of ) 64 SB - -1023 2084 74 (the ) 85 SB - -1108 2084 139 (clients ) 150 SB - -1258 2084 56 (or ) 67 SB - -1325 2084 63 (on ) 74 SB - -1399 2084 35 (a ) 46 SB - -1445 2084 177 (separate ) 188 SB - -1633 2084 189 (machine. ) 200 SB - -1833 2084 13 ( ) 24 SB - -1857 2084 90 (The ) 101 SB - -1958 2084 217 (benchmark) 217 SB - -225 2143 190 (currently ) 191 SB - -416 2143 44 (is ) 45 SB - -461 2143 226 (configured ) 227 SB - -688 2143 54 (to ) 55 SB - -743 2143 79 (run ) 80 SB - -823 2143 74 (the ) 75 SB - -898 2143 307 (WebMASTER ) 308 SB - -1206 2143 63 (on ) 64 SB - -1270 2143 35 (a ) 36 SB - -1306 2143 176 (machine ) 177 SB - -1483 2143 89 (that ) 90 SB - -1573 2143 44 (is ) 45 SB - -1618 2143 78 (not ) 80 SB - -1698 2143 63 (on ) 65 SB - -1763 2143 74 (the ) 76 SB - -1839 2143 113 (same ) 115 SB - -1954 2143 178 (network ) 180 SB - -2134 2143 41 (as) 41 SB - -225 2202 505 (the clients and the server.) 505 SB - -255 255 255 fC - -/fm 256 def - -150 60 1185 2533 B - -1 F - -n - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -gs 143 53 1189 2537 CB - -1189 2539 117 (LAN 1) 117 SB - -gr - -255 255 255 fC - -/fm 256 def - -150 60 705 2533 B - -1 F - -n - -0 0 0 fC - -gs 143 53 709 2537 CB - -709 2539 117 (LAN 2) 117 SB - -gr - -0 lc - -0 lj - -0 0 0 pC - -0 3 SP - -255 255 255 fC - -/fm 256 def - -240 420 1695 2383 B - -1 F - -S - -n - -0 0 0 fC - -gs 229 409 1701 2389 CB - -1763 2491 104 (HTTP) 104 SB - -gr - -gs 229 409 1701 2389 CB - -1761 2541 109 (Server) 109 SB - -gr - -255 255 255 fC - -/fm 256 def - -210 90 1245 2413 B - -1 F - -S - -n - -32 0 0 33 33 0 0 0 29 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -gs 199 79 1251 2419 CB - -1251 2420 166 (Webchildren) 166 SB - -gr - -255 255 255 fC - -/fm 256 def - -210 90 975 2413 B - -1 F - -S - -n - -0 0 0 fC - -gs 199 79 981 2419 CB - -981 2420 166 (Webchildren) 166 SB - -gr - -255 255 255 fC - -/fm 256 def - -210 90 1245 2683 B - -1 F - -S - -n - -0 0 0 fC - -gs 199 79 1251 2689 CB - -1251 2690 166 (Webchildren) 166 SB - -gr - -255 255 255 fC - -/fm 256 def - -210 90 975 2683 B - -1 F - -S - -n - -0 0 0 fC - -gs 199 79 981 2689 CB - -981 2690 166 (Webchildren) 166 SB - -gr - -255 255 255 fC - -/fm 256 def - -210 240 465 2473 B - -1 F - -S - -n - -0 0 0 fC - -gs 199 229 471 2479 CB - -473 2580 194 (WebMASTER) 194 SB - -gr - -1 lc - -1 lj - -1065 2503 M 0 180 1 PP - -S - -n - -1365 2503 M 0 180 1 PP - -S - -n - -1065 2593 M 630 0 1 PP - -S - -n - -885 2593 M 0 -240 1 PP - -S - -n - -885 2593 M 0 240 1 PP - -S - -n - -1065 2353 M 0 60 1 PP - -S - -n - -1335 2353 M 0 60 1 PP - -S - -n - -1365 2833 M 0 -60 1 PP - -S - -n - -1065 2833 M 0 -60 1 PP - -S - -n - -675 2593 M 210 0 1 PP - -S - -n - -885 2833 M 480 0 1 PP - -S - -n - -885 2353 M 450 0 1 PP - -S - -n - -255 255 255 fC - -/fm 256 def - -1050 90 435 2903 B - -1 F - -n - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -0 0 0 fC - -gs 1043 83 439 2907 CB - -439 2909 1021 (Figure 3 A WebSTONE test environment) 1021 SB - -gr - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Bold - -%%+ font Times-Roman - -%%Page: 8 8 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 21 50 2154 2899 CB - -2154 2901 21 (8) 21 SB - -gr - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 307 110 (With ) 116 SB - -491 307 74 (the ) 80 SB - -571 307 133 (ability ) 139 SB - -710 307 54 (to ) 60 SB - -770 307 105 (have ) 111 SB - -881 307 74 (the ) 80 SB - -961 307 307 (WebMASTER ) 313 SB - -1274 307 63 (on ) 70 SB - -1344 307 35 (a ) 42 SB - -1386 307 180 (different ) 187 SB - -1573 307 148 (system ) 155 SB - -1728 307 115 (gives ) 122 SB - -1850 307 74 (the ) 81 SB - -1931 307 196 (flexibility ) 203 SB - -2134 307 41 (to) 41 SB - -225 366 1845 (have different networks talking to the same server and to have different client configurations.) 1845 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 485 95 (3.1) 95 SB - -375 485 709 (WebSTONE Software) 709 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 660 90 (The ) 110 SB - -485 660 267 (WebSTONE ) 287 SB - -772 660 44 (is ) 64 SB - -836 660 35 (a ) 55 SB - -891 660 237 (distributed, ) 257 SB - -1148 660 281 (multi-process ) 302 SB - -1450 660 243 (benchmark. ) 264 SB - -1714 660 13 ( ) 34 SB - -1748 660 90 (The ) 111 SB - -1859 660 145 (master ) 166 SB - -2025 660 150 (process) 150 SB - -225 719 341 (\(WebMASTER\) ) 360 SB - -585 719 118 (reads ) 137 SB - -722 719 74 (the ) 93 SB - -815 719 120 (client ) 140 SB - -955 719 278 (configuration ) 298 SB - -1253 719 93 (files ) 113 SB - -1366 719 54 (as ) 74 SB - -1440 719 95 (well ) 115 SB - -1555 719 54 (as ) 74 SB - -1629 719 74 (the ) 94 SB - -1723 719 206 (command ) 226 SB - -1949 719 96 (line. ) 116 SB - -2065 719 13 ( ) 33 SB - -2098 719 77 (The) 77 SB - -225 778 307 (WebMASTER ) 311 SB - -536 778 98 (then ) 103 SB - -639 778 217 (constructs ) 222 SB - -861 778 35 (a ) 40 SB - -901 778 206 (command ) 211 SB - -1112 778 83 (line ) 88 SB - -1200 778 71 (for ) 76 SB - -1276 778 103 (each ) 108 SB - -1384 778 276 (Webchildren. ) 281 SB - -1665 778 13 ( ) 18 SB - -1683 778 90 (The ) 95 SB - -1778 778 307 (WebMASTER ) 312 SB - -2090 778 85 (then) 85 SB - -225 837 187 (remotely ) 193 SB - -418 837 158 (spawns ) 164 SB - -582 837 74 (the ) 80 SB - -662 837 276 (Webchildren. ) 282 SB - -944 837 13 ( ) 19 SB - -963 837 112 (Each ) 118 SB - -1081 837 54 (of ) 60 SB - -1141 837 74 (the ) 80 SB - -1221 837 263 (Webchildren ) 269 SB - -1490 837 98 (then ) 105 SB - -1595 837 118 (reads ) 125 SB - -1720 837 74 (the ) 81 SB - -1801 837 206 (command ) 213 SB - -2014 837 83 (line ) 90 SB - -2104 837 71 (and) 71 SB - -225 896 151 (startup ) 156 SB - -381 896 317 (communication ) 322 SB - -703 896 100 (with ) 105 SB - -808 896 74 (the ) 79 SB - -887 896 320 (WebMASTER. ) 325 SB - -1212 896 13 ( ) 18 SB - -1230 896 117 (After ) 122 SB - -1352 896 59 (all ) 64 SB - -1416 896 74 (the ) 79 SB - -1495 896 263 (Webchildren ) 268 SB - -1763 896 105 (have ) 111 SB - -1874 896 105 (been ) 111 SB - -1985 896 190 (initialized) 190 SB - -225 955 1482 (the WebMASTER instructs the Webchildren to commence the benchmark.) 1482 SB - -375 1073 67 (As ) 69 SB - -444 1073 103 (each ) 105 SB - -549 1073 263 (Webchildren ) 265 SB - -814 1073 160 (finishes ) 163 SB - -977 1073 59 (its ) 62 SB - -1039 1073 79 (run ) 82 SB - -1121 1073 74 (the ) 77 SB - -1198 1073 307 (WebMASTER ) 310 SB - -1508 1073 163 (collects ) 166 SB - -1674 1073 74 (the ) 77 SB - -1751 1073 97 (data ) 100 SB - -1851 1073 108 (from ) 111 SB - -1962 1073 103 (each ) 106 SB - -2068 1073 107 (client) 107 SB - -225 1132 84 (and ) 89 SB - -314 1132 199 (coalesces ) 204 SB - -518 1132 74 (the ) 79 SB - -597 1132 97 (data ) 102 SB - -699 1132 90 (into ) 96 SB - -795 1132 35 (a ) 41 SB - -836 1132 148 (report. ) 154 SB - -990 1132 13 ( ) 19 SB - -1009 1132 152 (During ) 158 SB - -1167 1132 74 (the ) 80 SB - -1247 1132 79 (run ) 85 SB - -1332 1132 74 (the ) 80 SB - -1412 1132 263 (Webchildren ) 269 SB - -1681 1132 74 (are ) 80 SB - -1761 1132 258 (autonomous ) 264 SB - -2025 1132 54 (of ) 60 SB - -2085 1132 90 (each) 90 SB - -225 1191 582 (other and the WebMASTER.) 582 SB - -375 1309 141 (Figure ) 142 SB - -517 1309 76 (3.1 ) 77 SB - -594 1309 137 (shows ) 139 SB - -733 1309 59 (an ) 61 SB - -794 1309 177 (example ) 179 SB - -973 1309 54 (of ) 56 SB - -1029 1309 35 (a ) 37 SB - -1066 1309 144 (typical ) 146 SB - -1212 1309 120 (client ) 122 SB - -1334 1309 164 (running ) 166 SB - -1500 1309 38 (3 ) 40 SB - -1540 1309 276 (Webchildren. ) 278 SB - -1818 1309 13 ( ) 15 SB - -1833 1309 90 (The ) 92 SB - -1925 1309 250 (Webchildren) 250 SB - -225 1368 74 (are ) 78 SB - -303 1368 186 (spawned ) 190 SB - -493 1368 60 (by ) 64 SB - -557 1368 74 (the ) 78 SB - -635 1368 320 (WebMASTER. ) 324 SB - -959 1368 13 ( ) 18 SB - -977 1368 112 (Each ) 117 SB - -1094 1368 200 (Webchild ) 205 SB - -1299 1368 98 (then ) 103 SB - -1402 1368 118 (reads ) 123 SB - -1525 1368 59 (its ) 64 SB - -1589 1368 278 (configuration ) 283 SB - -1872 1368 93 (files ) 98 SB - -1970 1368 84 (and ) 89 SB - -2059 1368 116 (opens) 116 SB - -225 1427 513 (log files if part of the test.) 513 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 241 121 1515 1683 CB - -1515 1685 104 (HTTP) 104 SB - -gr - -gs 241 121 1515 1683 CB - -1515 1735 109 (Server) 109 SB - -gr - -1 lc - -1 lj - -0 0 0 pC - -0 1 SP - -gs 151 1 675 1683 CB - -825 1683 M -150 0 1 PP - -S - -n - -gr - -gs 1 301 1215 1653 CB - -1215 1653 M 0 300 1 PP - -S - -n - -gr - -gs 1 541 675 1683 CB - -675 1683 M 0 540 1 PP - -S - -n - -gr - -255 255 255 fC - -/fm 256 def - -210 60 855 1653 B - -1 F - -n - -32 0 0 33 33 0 0 0 29 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -gs 211 61 855 1653 CB - -855 1654 166 (Webchildren) 166 SB - -gr - -120 45 944 1667 E - -S - -n - -255 255 255 fC - -/fm 256 def - -210 60 855 1773 B - -1 F - -n - -0 0 0 fC - -gs 211 61 855 1773 CB - -855 1774 166 (Webchildren) 166 SB - -gr - -120 45 944 1787 E - -S - -n - -255 255 255 fC - -/fm 256 def - -210 60 855 1923 B - -1 F - -n - -0 0 0 fC - -gs 211 61 855 1923 CB - -855 1924 166 (Webchildren) 166 SB - -gr - -120 45 944 1937 E - -S - -n - -0 lc - -0 lj - -0 3 SP - -930 750 555 1593 B - -S - -n - -255 255 255 fC - -/fm 256 def - -90 120 915 2133 B - -1 F - -n - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -gs 83 113 919 2137 CB - -919 2139 66 (Log) 66 SB - -gr - -gs 83 113 919 2137 CB - -919 2189 71 (files) 71 SB - -gr - -1 lc - -1 lj - -255 255 255 fC - -/fm 256 def - -45 30 959 2102 E - -1 F - -S - -n - -1005 2103 M 0 180 1 PP - -S - -n - -915 2103 M 0 180 1 PP - -S - -n - -/fm 256 def - -45 30 959 2282 E - -1 F - -S - -n - -814 1653 M -368 0 1 PP - -S - -n - -0 1 SP - -0 0 0 fC - -/fm 256 def - -450 1663 M 15 10 -15 10 0 -20 3 PP - -1 F - -S - -n - -/fm 256 def - -810 1643 M -15 -10 15 -10 0 20 3 PP - -1 F - -S - -n - -0 3 SP - -814 1773 M -368 0 1 PP - -S - -n - -0 1 SP - -/fm 256 def - -450 1783 M 15 10 -15 9 0 -19 3 PP - -1 F - -S - -n - -/fm 256 def - -810 1764 M -15 -9 15 -10 0 19 3 PP - -1 F - -S - -n - -0 3 SP - -814 1923 M -368 0 1 PP - -S - -n - -0 1 SP - -/fm 256 def - -450 1933 M 15 10 -15 10 0 -20 3 PP - -1 F - -S - -n - -/fm 256 def - -810 1913 M -15 -10 15 -10 0 20 3 PP - -1 F - -S - -n - -32 0 0 38 38 0 0 0 34 /Times-Roman /font32 ANSIFont font - -gs 241 61 315 1593 CB - -315 1595 233 ( WebMASTER) 233 SB - -gr - -gs 241 61 315 1711 CB - -315 1713 233 ( WebMASTER) 233 SB - -gr - -gs 241 61 315 1863 CB - -315 1865 233 ( WebMASTER) 233 SB - -gr - -0 3 SP - -1076 1653 M 128 0 1 PP - -S - -n - -0 1 SP - -/fm 256 def - -1200 1643 M -15 -10 15 -10 0 20 3 PP - -1 F - -S - -n - -/fm 256 def - -1080 1663 M 15 10 -15 10 0 -20 3 PP - -1 F - -S - -n - -0 3 SP - -1076 1803 M 128 0 1 PP - -S - -n - -0 1 SP - -/fm 256 def - -1200 1794 M -15 -9 15 -10 0 19 3 PP - -1 F - -S - -n - -/fm 256 def - -1080 1813 M 15 10 -15 9 0 -19 3 PP - -1 F - -S - -n - -0 3 SP - -1076 1953 M 128 0 1 PP - -S - -n - -0 1 SP - -/fm 256 def - -1200 1943 M -15 -10 15 -10 0 20 3 PP - -1 F - -S - -n - -/fm 256 def - -1080 1963 M 15 10 -15 10 0 -20 3 PP - -1 F - -S - -n - -0 3 SP - -1226 1803 M 428 0 1 PP - -S - -n - -0 1 SP - -/fm 256 def - -1650 1794 M -15 -9 15 -10 0 19 3 PP - -1 F - -S - -n - -/fm 256 def - -1230 1813 M 15 10 -15 9 0 -19 3 PP - -1 F - -S - -n - -gs 151 1 675 1803 CB - -825 1803 M -150 0 1 PP - -S - -n - -gr - -gs 151 1 675 1953 CB - -825 1953 M -150 0 1 PP - -S - -n - -gr - -0 3 SP - -675 2223 M 229 0 1 PP - -S - -n - -0 1 SP - -/fm 256 def - -900 2213 M -15 -10 15 -10 0 20 3 PP - -1 F - -S - -n - -255 255 255 fC - -/fm 256 def - -120 120 1155 2133 B - -1 F - -n - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -gs 113 113 1159 2137 CB - -1159 2139 106 (config) 106 SB - -gr - -gs 113 113 1159 2137 CB - -1159 2189 71 (files) 71 SB - -gr - -0 3 SP - -255 255 255 fC - -/fm 256 def - -60 30 1214 2102 E - -1 F - -S - -n - -1275 2103 M 0 180 1 PP - -S - -n - -1155 2103 M 0 180 1 PP - -S - -n - -/fm 256 def - -60 30 1214 2282 E - -1 F - -S - -n - -1215 2073 M -146 -380 1 PP - -S - -n - -0 1 SP - -0 0 0 fC - -/fm 256 def - -1061 1701 M -4 18 -14 -10 18 -8 3 PP - -1 F - -S - -n - -0 3 SP - -1185 2073 M -144 -230 1 PP - -S - -n - -0 1 SP - -/fm 256 def - -1034 1851 M -1 18 -16 -8 17 -10 3 PP - -1 F - -S - -n - -0 3 SP - -1155 2103 M -112 -112 1 PP - -S - -n - -0 1 SP - -/fm 256 def - -1038 2000 M 3 17 -17 -4 14 -13 3 PP - -1 F - -S - -n - -32 0 0 58 58 0 0 0 54 /Times-Bold /font29 ANSIFont font - -gs 691 91 645 2373 CB - -645 2375 587 (Figure 3.1 Webchildren) 587 SB - -gr - -gs 691 91 645 2373 CB - -645 2444 134 (client) 134 SB - -gr - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Bold - -%%+ font Times-Roman - -%%Page: 9 9 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 21 50 2154 2899 CB - -2154 2901 21 (9) 21 SB - -gr - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 170 912 (4. Configuration Parameters) 912 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 326 1800 (Since the WebSTONE can has many variables this gives the flexibility to configure and run) 1800 SB - -225 385 119 (many ) 123 SB - -348 385 180 (different ) 184 SB - -532 385 138 (suites. ) 142 SB - -674 385 13 ( ) 17 SB - -691 385 90 (The ) 94 SB - -785 385 182 (standard ) 186 SB - -971 385 86 (mix ) 90 SB - -1061 385 54 (of ) 58 SB - -1119 385 93 (files ) 97 SB - -1216 385 85 (will ) 89 SB - -1305 385 96 (give ) 100 SB - -1405 385 35 (a ) 40 SB - -1445 385 157 (general ) 162 SB - -1607 385 262 (performance ) 267 SB - -1874 385 201 (indicator. ) 206 SB - -2080 385 13 ( ) 18 SB - -2098 385 77 (The) 77 SB - -225 444 979 (parameters that are configurable are listed below:) 979 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -226 639 23 (\267) 24 SB - -250 639 13 ( ) 51 SB - -225 639 23 (\267) 24 SB - -249 639 13 ( ) 51 SB - -32 0 0 50 50 0 0 0 46 /Times-Bold /font29 ANSIFont font - -300 643 336 (Duration of test) 336 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -226 700 23 (\267) 24 SB - -250 700 13 ( ) 51 SB - -225 700 23 (\267) 24 SB - -249 700 13 ( ) 51 SB - -32 0 0 50 50 0 0 0 46 /Times-Bold /font29 ANSIFont font - -300 704 365 (Repetition of test) 365 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -226 761 23 (\267) 24 SB - -250 761 13 ( ) 51 SB - -225 761 23 (\267) 24 SB - -249 761 13 ( ) 51 SB - -32 0 0 50 50 0 0 0 46 /Times-Bold /font29 ANSIFont font - -300 765 327 (Number of files) 327 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -226 822 23 (\267) 24 SB - -250 822 13 ( ) 51 SB - -225 822 23 (\267) 24 SB - -249 822 13 ( ) 51 SB - -32 0 0 50 50 0 0 0 46 /Times-Bold /font29 ANSIFont font - -300 826 362 (Number of pages) 362 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -226 883 23 (\267) 24 SB - -250 883 13 ( ) 51 SB - -225 883 23 (\267) 24 SB - -249 883 13 ( ) 51 SB - -32 0 0 50 50 0 0 0 46 /Times-Bold /font29 ANSIFont font - -300 887 947 (Server software and hardware configuration) 947 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -226 944 23 (\267) 24 SB - -250 944 13 ( ) 51 SB - -225 944 23 (\267) 24 SB - -249 944 13 ( ) 51 SB - -32 0 0 50 50 0 0 0 46 /Times-Bold /font29 ANSIFont font - -300 948 519 (Number of Webchildren) 519 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -226 1005 23 (\267) 24 SB - -250 1005 13 ( ) 51 SB - -225 1005 23 (\267) 24 SB - -249 1005 13 ( ) 51 SB - -32 0 0 50 50 0 0 0 46 /Times-Bold /font29 ANSIFont font - -300 1009 438 (Number of networks) 438 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -226 1066 23 (\267) 24 SB - -250 1066 13 ( ) 51 SB - -225 1066 23 (\267) 24 SB - -249 1066 13 ( ) 51 SB - -32 0 0 50 50 0 0 0 46 /Times-Bold /font29 ANSIFont font - -300 1070 378 (Number of clients) 378 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -226 1127 23 (\267) 24 SB - -250 1127 13 ( ) 51 SB - -225 1127 23 (\267) 24 SB - -249 1127 13 ( ) 51 SB - -32 0 0 50 50 0 0 0 46 /Times-Bold /font29 ANSIFont font - -300 1131 400 (Workload of pages) 400 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -226 1188 23 (\267) 24 SB - -250 1188 13 ( ) 51 SB - -225 1188 23 (\267) 24 SB - -249 1188 13 ( ) 51 SB - -32 0 0 50 50 0 0 0 46 /Times-Bold /font29 ANSIFont font - -300 1192 175 (Logging) 175 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -226 1249 23 (\267) 24 SB - -250 1249 13 ( ) 51 SB - -225 1249 23 (\267) 24 SB - -249 1249 13 ( ) 51 SB - -32 0 0 50 50 0 0 0 46 /Times-Bold /font29 ANSIFont font - -300 1253 231 (Debugging) 231 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1382 615 (4.1 Duration of test) 615 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1557 1219 (The WebSTONE is designed to run for a specified duration. ) 1220 SB - -1595 1557 48 (A ) 49 SB - -1644 1557 120 (given ) 121 SB - -1765 1557 84 (test ) 85 SB - -1850 1557 44 (is ) 45 SB - -1895 1557 79 (run ) 80 SB - -1975 1557 49 (in ) 50 SB - -2025 1557 108 (units ) 109 SB - -2134 1557 41 (of) 41 SB - -225 1616 180 (minutes. ) 189 SB - -414 1616 90 (The ) 99 SB - -513 1616 207 (maximum ) 216 SB - -729 1616 164 (running ) 173 SB - -902 1616 99 (time ) 108 SB - -1010 1616 44 (is ) 53 SB - -1063 1616 217 (dependent ) 226 SB - -1289 1616 63 (on ) 72 SB - -1361 1616 104 (your ) 113 SB - -1474 1616 120 (client ) 129 SB - -1603 1616 175 (memory ) 184 SB - -1787 1616 84 (and ) 93 SB - -1880 1616 74 (the ) 83 SB - -1963 1616 162 (number ) 171 SB - -2134 1616 41 (of) 41 SB - -225 1675 515 (Webchildren to be spawn.) 515 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1794 576 (4.2 Repetition test) 576 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1969 90 (The ) 91 SB - -466 1969 267 (WebSTONE ) 268 SB - -734 1969 78 (has ) 80 SB - -814 1969 74 (the ) 76 SB - -890 1969 133 (ability ) 135 SB - -1025 1969 54 (to ) 56 SB - -1081 1969 79 (run ) 81 SB - -1162 1969 71 (for ) 73 SB - -1235 1969 35 (a ) 37 SB - -1272 1969 162 (number ) 164 SB - -1436 1969 54 (of ) 56 SB - -1492 1969 210 (iterations. ) 212 SB - -1704 1969 13 ( ) 15 SB - -1719 1969 99 (This ) 101 SB - -1820 1969 44 (is ) 46 SB - -1866 1969 181 (basically ) 183 SB - -2049 1969 35 (a ) 37 SB - -2086 1969 89 (loop) 89 SB - -225 2028 177 (counter. ) 178 SB - -403 2028 13 ( ) 14 SB - -417 2028 83 (For ) 84 SB - -501 2028 191 (example: ) 192 SB - -693 2028 13 ( ) 14 SB - -707 2028 45 (If ) 46 SB - -753 2028 74 (the ) 75 SB - -828 2028 84 (test ) 85 SB - -913 2028 169 (consists ) 170 SB - -1083 2028 54 (of ) 55 SB - -1138 2028 35 (a ) 36 SB - -1174 2028 69 (set ) 71 SB - -1245 2028 54 (of ) 56 SB - -1301 2028 38 (4 ) 40 SB - -1341 2028 93 (files ) 95 SB - -1436 2028 84 (and ) 86 SB - -1522 2028 74 (the ) 76 SB - -1598 2028 84 (test ) 86 SB - -1684 2028 54 (to ) 56 SB - -1740 2028 59 (be ) 61 SB - -1801 2028 79 (run ) 81 SB - -1882 2028 90 (was ) 92 SB - -1974 2028 54 (to ) 56 SB - -2030 2028 145 (request) 145 SB - -225 2087 103 (each ) 105 SB - -330 2087 74 (file ) 76 SB - -406 2087 38 (1 ) 40 SB - -446 2087 99 (time ) 101 SB - -547 2087 84 (and ) 86 SB - -633 2087 98 (then ) 100 SB - -733 2087 135 (report ) 137 SB - -870 2087 106 (back ) 108 SB - -978 2087 74 (the ) 76 SB - -1054 2087 128 (status ) 131 SB - -1185 2087 54 (of ) 57 SB - -1242 2087 89 (that ) 92 SB - -1334 2087 79 (run ) 82 SB - -1416 2087 74 (the ) 77 SB - -1493 2087 230 (benchmark ) 233 SB - -1726 2087 137 (would ) 140 SB - -1866 2087 98 (then ) 101 SB - -1967 2087 164 (attempt ) 167 SB - -2134 2087 41 (to) 41 SB - -225 2146 1427 (retrieve each file one time and then generate a report based on this data.) 1427 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 2265 605 (4.3 Number of files) 605 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2440 1019 (There are two different ways to read files or UIL\222s ) 1020 SB - -1395 2440 90 (into ) 91 SB - -1486 2440 74 (the ) 75 SB - -1561 2440 243 (benchmark. ) 244 SB - -1805 2440 13 ( ) 14 SB - -1819 2440 90 (The ) 91 SB - -1910 2440 265 (configuration) 265 SB - -225 2499 712 (file \223filelist\224 contains a list of pages ) 713 SB - -938 2499 84 (and ) 85 SB - -1023 2499 93 (files ) 94 SB - -1117 2499 89 (that ) 90 SB - -1207 2499 74 (are ) 75 SB - -1282 2499 156 (already ) 157 SB - -1439 2499 303 (preconfigured. ) 304 SB - -1743 2499 13 ( ) 14 SB - -1757 2499 129 (There ) 130 SB - -1887 2499 44 (is ) 45 SB - -1932 2499 35 (a ) 36 SB - -1968 2499 101 (limit ) 102 SB - -2070 2499 54 (of ) 55 SB - -2125 2499 50 (50) 50 SB - -225 2558 1240 (files per page in the current implementation of this benchmark.) 1240 SB - -375 2676 90 (The ) 91 SB - -466 2676 117 (other ) 118 SB - -584 2676 94 (way ) 95 SB - -679 2676 54 (to ) 55 SB - -734 2676 99 (read ) 100 SB - -834 2676 93 (files ) 94 SB - -928 2676 90 (into ) 91 SB - -1019 2676 74 (the ) 75 SB - -1094 2676 79 (run ) 80 SB - -1174 2676 44 (is ) 45 SB - -1219 2676 50 (at ) 51 SB - -1270 2676 74 (the ) 75 SB - -1345 2676 206 (command ) 207 SB - -1552 2676 96 (line. ) 97 SB - -1649 2676 13 ( ) 14 SB - -1663 2676 90 (The ) 91 SB - -1754 2676 96 (user ) 97 SB - -1851 2676 95 (may ) 96 SB - -1947 2676 71 (list ) 72 SB - -2019 2676 74 (the ) 76 SB - -2095 2676 80 (files) 80 SB - -225 2735 54 (to ) 59 SB - -284 2735 59 (be ) 64 SB - -348 2735 131 (tested ) 136 SB - -484 2735 63 (on ) 68 SB - -552 2735 74 (the ) 79 SB - -631 2735 206 (command ) 211 SB - -842 2735 96 (line. ) 102 SB - -944 2735 13 ( ) 19 SB - -963 2735 99 (This ) 105 SB - -1068 2735 44 (is ) 50 SB - -1118 2735 148 (limited ) 154 SB - -1272 2735 60 (by ) 66 SB - -1338 2735 74 (the ) 80 SB - -1418 2735 162 (number ) 168 SB - -1586 2735 54 (of ) 60 SB - -1646 2735 219 (arguments ) 225 SB - -1871 2735 168 (allowed ) 174 SB - -2045 2735 63 (on ) 69 SB - -2114 2735 61 (the) 61 SB - -225 2794 289 (command line.) 289 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Symbol - -%%+ font Times-Bold - -%%+ font Times-Roman - -%%Page: 10 10 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (10) 42 SB - -gr - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 239 654 (4.4 Number of pages) 654 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 414 261 (At this point ) 262 SB - -637 414 74 (the ) 75 SB - -712 414 169 (concept ) 170 SB - -882 414 54 (of ) 55 SB - -937 414 35 (a ) 36 SB - -973 414 107 (page ) 108 SB - -1081 414 125 (needs ) 126 SB - -1207 414 54 (to ) 55 SB - -1262 414 59 (be ) 60 SB - -1322 414 239 (introduced. ) 240 SB - -1562 414 13 ( ) 14 SB - -1576 414 121 (Since ) 122 SB - -1698 414 74 (the ) 75 SB - -1773 414 169 (concept ) 170 SB - -1943 414 54 (of ) 55 SB - -1998 414 35 (a ) 36 SB - -2034 414 141 (HTML) 141 SB - -225 473 209 (document ) 214 SB - -439 473 44 (is ) 49 SB - -488 473 85 (one ) 90 SB - -578 473 89 (that ) 94 SB - -672 473 78 (has ) 83 SB - -755 473 89 (text ) 94 SB - -849 473 100 (with ) 105 SB - -954 473 119 (inline ) 124 SB - -1078 473 150 (images ) 155 SB - -1233 473 84 (like ) 89 SB - -1322 473 93 (GIF ) 98 SB - -1420 473 84 (and ) 89 SB - -1509 473 127 (JPEG ) 132 SB - -1641 473 49 (in ) 54 SB - -1695 473 53 (it, ) 58 SB - -1753 473 113 (there ) 118 SB - -1871 473 44 (is ) 49 SB - -1920 473 35 (a ) 40 SB - -1960 473 215 (conceptual) 215 SB - -225 532 107 (view ) 108 SB - -333 532 89 (that ) 90 SB - -423 532 35 (a ) 36 SB - -459 532 107 (page ) 108 SB - -567 532 44 (is ) 45 SB - -612 532 74 (the ) 75 SB - -687 532 154 (HTML ) 155 SB - -842 532 89 (text ) 90 SB - -932 532 94 (plus ) 95 SB - -1027 532 59 (all ) 61 SB - -1088 532 74 (the ) 76 SB - -1164 532 93 (GIF ) 95 SB - -1259 532 84 (and ) 86 SB - -1345 532 127 (JPEG ) 129 SB - -1474 532 93 (files ) 95 SB - -1569 532 89 (that ) 91 SB - -1660 532 74 (are ) 76 SB - -1736 532 217 (associated ) 219 SB - -1955 532 100 (with ) 102 SB - -2057 532 40 (it ) 42 SB - -2099 532 76 (that) 76 SB - -225 591 119 (make ) 120 SB - -345 591 54 (to ) 55 SB - -400 591 133 (whole ) 134 SB - -534 591 222 (document. ) 223 SB - -757 591 13 ( ) 14 SB - -771 591 99 (This ) 100 SB - -871 591 196 (approach ) 197 SB - -1068 591 90 (was ) 91 SB - -1159 591 121 (taken ) 122 SB - -1281 591 54 (to ) 55 SB - -1336 591 133 (mimic ) 134 SB - -1470 591 54 (as ) 55 SB - -1525 591 149 (closely ) 150 SB - -1675 591 54 (to ) 55 SB - -1730 591 35 (a ) 36 SB - -1766 591 86 (real ) 87 SB - -1853 591 74 (life ) 75 SB - -1928 591 247 (environment) 247 SB - -225 650 126 (usage ) 128 SB - -353 650 148 (patters ) 150 SB - -503 650 134 (where ) 137 SB - -640 650 93 (GIF ) 96 SB - -736 650 84 (and ) 87 SB - -823 650 127 (JPEG ) 130 SB - -953 650 144 (inlined ) 147 SB - -1100 650 150 (images ) 153 SB - -1253 650 74 (are ) 77 SB - -1330 650 278 (automatically ) 281 SB - -1611 650 124 (down ) 127 SB - -1738 650 98 (load ) 101 SB - -1839 650 113 (upon ) 116 SB - -1955 650 176 (retrieval ) 179 SB - -2134 650 41 (of) 41 SB - -225 709 74 (the ) 78 SB - -303 709 154 (HTML ) 158 SB - -461 709 89 (text ) 93 SB - -554 709 120 (page. ) 125 SB - -679 709 13 ( ) 18 SB - -697 709 209 (Therefore ) 214 SB - -911 709 108 (from ) 113 SB - -1024 709 83 (this ) 88 SB - -1112 709 115 (point ) 120 SB - -1232 709 63 (on ) 68 SB - -1300 709 35 (a ) 40 SB - -1340 709 107 (page ) 112 SB - -1452 709 85 (will ) 90 SB - -1542 709 59 (be ) 64 SB - -1606 709 227 (considered ) 232 SB - -1838 709 74 (the ) 79 SB - -1917 709 69 (set ) 74 SB - -1991 709 54 (of ) 59 SB - -2050 709 93 (files ) 98 SB - -2148 709 27 (it) 27 SB - -225 768 116 (takes ) 117 SB - -342 768 54 (to ) 55 SB - -397 768 133 (create ) 134 SB - -531 768 59 (an ) 60 SB - -591 768 154 (HTML ) 155 SB - -746 768 187 (viewable ) 188 SB - -934 768 222 (document. ) 223 SB - -1157 768 13 ( ) 14 SB - -1171 768 126 (Note: ) 127 SB - -1298 768 13 ( ) 14 SB - -1312 768 168 (Though ) 169 SB - -1481 768 49 (in ) 50 SB - -1531 768 86 (real ) 87 SB - -1618 768 74 (life ) 76 SB - -1694 768 59 (an ) 61 SB - -1755 768 249 (applications ) 251 SB - -2006 768 169 (program) 169 SB - -225 827 137 (would ) 142 SB - -367 827 74 (lite ) 79 SB - -446 827 69 (off ) 74 SB - -520 827 59 (all ) 64 SB - -584 827 74 (the ) 79 SB - -663 827 158 (request ) 163 SB - -826 827 71 (for ) 76 SB - -902 827 74 (the ) 79 SB - -981 827 93 (files ) 98 SB - -1079 827 50 (at ) 55 SB - -1134 827 85 (one ) 90 SB - -1224 827 112 (time, ) 117 SB - -1341 827 40 (it ) 45 SB - -1386 827 90 (was ) 95 SB - -1481 827 166 (decided ) 171 SB - -1652 827 89 (that ) 94 SB - -1746 827 83 (this ) 88 SB - -1834 827 90 (was ) 95 SB - -1929 827 78 (not ) 84 SB - -2013 827 59 (an ) 65 SB - -2078 827 97 (issue) 97 SB - -225 886 112 (since ) 129 SB - -354 886 173 (multiple ) 190 SB - -544 886 171 (children ) 188 SB - -732 886 79 (run ) 96 SB - -828 886 63 (on ) 80 SB - -908 886 103 (each ) 120 SB - -1028 886 120 (client ) 138 SB - -1166 886 84 (and ) 102 SB - -1268 886 89 (that ) 107 SB - -1375 886 74 (the ) 92 SB - -1467 886 183 (acquired ) 201 SB - -1668 886 124 (affect ) 142 SB - -1810 886 54 (of ) 72 SB - -1882 886 293 (simultaneously) 293 SB - -225 945 609 (connections is stilled achieved.) 609 SB - -375 1092 90 (The ) 91 SB - -466 1092 267 (WebSTONE ) 268 SB - -734 1092 44 (is ) 45 SB - -779 1092 187 (designed ) 188 SB - -967 1092 54 (to ) 55 SB - -1022 1092 79 (use ) 80 SB - -1102 1092 74 (the ) 75 SB - -1177 1092 169 (concept ) 170 SB - -1347 1092 54 (of ) 55 SB - -1402 1092 126 (pages ) 127 SB - -1529 1092 141 (during ) 142 SB - -1671 1092 158 (testing. ) 159 SB - -1830 1092 90 (The ) 91 SB - -1921 1092 254 (WebSTONE) 254 SB - -225 1151 1104 (is able to handle up to 100 pages with 50 files per page.) 1104 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1270 1837 (4.5 All of the server software and hardware configuration) 1837 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1445 168 (Though ) 186 SB - -561 1445 74 (the ) 92 SB - -653 1445 267 (WebSTONE ) 285 SB - -938 1445 44 (is ) 62 SB - -1000 1445 140 (design ) 158 SB - -1158 1445 54 (to ) 72 SB - -1230 1445 84 (test ) 102 SB - -1332 1445 180 (different ) 198 SB - -1530 1445 134 (server ) 153 SB - -1683 1445 185 (software ) 204 SB - -1887 1445 84 (and ) 103 SB - -1990 1445 185 (hardware) 185 SB - -225 1504 297 (configurations ) 300 SB - -525 1504 74 (the ) 77 SB - -602 1504 230 (benchmark ) 233 SB - -835 1504 49 (in ) 52 SB - -887 1504 108 (itself ) 111 SB - -998 1504 105 (does ) 108 SB - -1106 1504 78 (not ) 81 SB - -1187 1504 252 (discriminate ) 255 SB - -1442 1504 54 (as ) 57 SB - -1499 1504 54 (to ) 57 SB - -1556 1504 291 (configuration. ) 294 SB - -1850 1504 13 ( ) 17 SB - -1867 1504 99 (This ) 103 SB - -1970 1504 140 (allows ) 144 SB - -2114 1504 61 (the) 61 SB - -225 1563 123 (tester ) 134 SB - -359 1563 54 (to ) 65 SB - -424 1563 68 (try ) 80 SB - -504 1563 180 (different ) 192 SB - -696 1563 297 (configurations ) 309 SB - -1005 1563 49 (in ) 61 SB - -1066 1563 120 (order ) 132 SB - -1198 1563 54 (to ) 66 SB - -1264 1563 161 (achieve ) 173 SB - -1437 1563 162 (optimal ) 174 SB - -1611 1563 262 (performance ) 274 SB - -1885 1563 71 (for ) 83 SB - -1968 1563 74 (the ) 86 SB - -2054 1563 121 (server) 121 SB - -225 1622 185 (software ) 189 SB - -414 1622 84 (and ) 88 SB - -502 1622 211 (hardware. ) 215 SB - -717 1622 13 ( ) 17 SB - -734 1622 161 (NOTE: ) 165 SB - -899 1622 54 (In ) 58 SB - -957 1622 163 (fairness ) 167 SB - -1124 1622 74 (the ) 78 SB - -1202 1622 103 (tests ) 107 SB - -1309 1622 144 (should ) 148 SB - -1457 1622 59 (be ) 63 SB - -1520 1622 79 (run ) 83 SB - -1603 1622 100 (with ) 104 SB - -1707 1622 74 (the ) 78 SB - -1785 1622 113 (same ) 117 SB - -1902 1622 198 (hardware ) 202 SB - -2104 1622 71 (and) 71 SB - -225 1681 544 (software as reported in the ) 545 SB - -770 1681 84 (test ) 85 SB - -855 1681 155 (results. ) 156 SB - -1011 1681 13 ( ) 14 SB - -1025 1681 72 (All ) 73 SB - -1098 1681 198 (hardware ) 199 SB - -1297 1681 84 (and ) 85 SB - -1382 1681 117 (sever ) 118 SB - -1500 1681 185 (software ) 186 SB - -1686 1681 297 (configurations ) 298 SB - -1984 1681 144 (should ) 145 SB - -2129 1681 46 (be) 46 SB - -225 1740 651 (disclosed when a test is released.) 651 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1869 1018 (4.6 The number of Webchildren) 1018 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2044 296 (On each client ) 297 SB - -672 2044 97 (host ) 98 SB - -770 2044 74 (the ) 75 SB - -845 2044 162 (number ) 163 SB - -1008 2044 54 (of ) 55 SB - -1063 2044 263 (Webchildren ) 264 SB - -1327 2044 219 (requesting ) 220 SB - -1547 2044 126 (pages ) 127 SB - -1674 2044 56 (or ) 57 SB - -1731 2044 93 (files ) 94 SB - -1825 2044 108 (from ) 109 SB - -1934 2044 74 (the ) 75 SB - -2009 2044 134 (server ) 135 SB - -2144 2044 31 (is) 31 SB - -225 2103 272 (configurable. ) 276 SB - -501 2103 13 ( ) 17 SB - -518 2103 112 (Note ) 116 SB - -634 2103 89 (that ) 93 SB - -727 2103 54 (as ) 59 SB - -786 2103 74 (the ) 79 SB - -865 2103 162 (number ) 167 SB - -1032 2103 54 (of ) 59 SB - -1091 2103 263 (Webchildren ) 268 SB - -1359 2103 173 (increase ) 178 SB - -1537 2103 85 (less ) 90 SB - -1627 2103 175 (memory ) 180 SB - -1807 2103 44 (is ) 49 SB - -1856 2103 185 (available ) 190 SB - -2046 2103 63 (on ) 68 SB - -2114 2103 61 (the) 61 SB - -225 2162 120 (client ) 121 SB - -346 2162 116 (hosts ) 117 SB - -463 2162 71 (for ) 72 SB - -535 2162 164 (running ) 165 SB - -700 2162 103 (tests ) 104 SB - -804 2162 84 (and ) 85 SB - -889 2162 113 (there ) 114 SB - -1003 2162 123 (could ) 124 SB - -1127 2162 59 (be ) 60 SB - -1187 2162 35 (a ) 37 SB - -1224 2162 262 (performance ) 264 SB - -1488 2162 156 (penalty ) 158 SB - -1646 2162 217 (depending ) 219 SB - -1865 2162 63 (on ) 65 SB - -1930 2162 74 (the ) 76 SB - -2006 2162 126 (speed ) 128 SB - -2134 2162 41 (of) 41 SB - -225 2221 731 (the clients running on the client host.) 731 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 2369 770 (4.7 Number of networks) 770 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2544 45 (It ) 48 SB - -423 2544 44 (is ) 47 SB - -470 2544 172 (possible ) 175 SB - -645 2544 54 (to ) 57 SB - -702 2544 105 (have ) 108 SB - -810 2544 115 (more ) 118 SB - -928 2544 98 (then ) 102 SB - -1030 2544 85 (one ) 89 SB - -1119 2544 178 (network ) 182 SB - -1301 2544 215 (connected ) 219 SB - -1520 2544 54 (to ) 58 SB - -1578 2544 74 (the ) 78 SB - -1656 2544 134 (server ) 138 SB - -1794 2544 84 (and ) 88 SB - -1882 2544 54 (to ) 58 SB - -1940 2544 105 (have ) 109 SB - -2049 2544 126 (clients) 126 SB - -225 2603 63 (on ) 68 SB - -293 2603 180 (different ) 185 SB - -478 2603 197 (networks ) 202 SB - -680 2603 164 (running ) 169 SB - -849 2603 74 (the ) 79 SB - -928 2603 243 (benchmark. ) 248 SB - -1176 2603 13 ( ) 18 SB - -1194 2603 168 (Though ) 173 SB - -1367 2603 83 (this ) 88 SB - -1455 2603 90 (was ) 95 SB - -1550 2603 78 (not ) 83 SB - -1633 2603 110 (done ) 115 SB - -1748 2603 49 (in ) 54 SB - -1802 2603 83 (this ) 89 SB - -1891 2603 157 (version ) 163 SB - -2054 2603 54 (of ) 60 SB - -2114 2603 61 (the) 61 SB - -225 2662 1491 (benchmark there should be no reason that it would not work provided that ) 1492 SB - -1717 2662 74 (the ) 75 SB - -1792 2662 134 (server ) 135 SB - -1927 2662 97 (host ) 98 SB - -2025 2662 118 (name ) 119 SB - -2144 2662 31 (is) 31 SB - -225 2721 522 (the same on all the clients.) 522 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Bold - -%%+ font Times-Roman - -%%Page: 11 11 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (11) 42 SB - -gr - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 170 679 (4.8 Number of clients) 679 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 345 90 (The ) 94 SB - -469 345 267 (WebSTONE ) 271 SB - -740 345 184 (supports ) 188 SB - -928 345 74 (the ) 78 SB - -1006 345 133 (ability ) 137 SB - -1143 345 54 (to ) 58 SB - -1201 345 105 (have ) 109 SB - -1310 345 54 (as ) 59 SB - -1369 345 119 (many ) 124 SB - -1493 345 171 (children ) 176 SB - -1669 345 63 (on ) 68 SB - -1737 345 103 (each ) 108 SB - -1845 345 120 (client ) 125 SB - -1970 345 54 (as ) 59 SB - -2029 345 100 (long ) 105 SB - -2134 345 41 (as) 41 SB - -225 404 113 (there ) 119 SB - -344 404 44 (is ) 51 SB - -395 404 159 (enough ) 166 SB - -561 404 175 (memory ) 182 SB - -743 404 63 (on ) 70 SB - -813 404 102 (both ) 109 SB - -922 404 74 (the ) 81 SB - -1003 404 307 (WebMASTER ) 314 SB - -1317 404 84 (and ) 91 SB - -1408 404 120 (client ) 127 SB - -1535 404 180 (systems. ) 187 SB - -1722 404 13 ( ) 20 SB - -1742 404 112 (Note ) 119 SB - -1861 404 113 (there ) 120 SB - -1981 404 141 (maybe ) 148 SB - -2129 404 46 (an) 46 SB - -225 463 802 (issue of performance bottlenecks on the ) 803 SB - -1028 463 120 (client ) 121 SB - -1149 463 91 (side ) 92 SB - -1241 463 40 (if ) 41 SB - -1282 463 113 (there ) 114 SB - -1396 463 74 (are ) 75 SB - -1471 463 80 (too ) 81 SB - -1552 463 119 (many ) 120 SB - -1672 463 263 (Webchildren ) 264 SB - -1936 463 56 (or ) 57 SB - -1993 463 74 (the ) 75 SB - -2068 463 107 (client) 107 SB - -225 522 150 (is slow.) 150 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 651 712 (4.9 Workload of pages) 712 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 738 112 (Each ) 114 SB - -489 738 107 (page ) 109 SB - -598 738 49 (in ) 52 SB - -650 738 74 (the ) 77 SB - -727 738 267 (WebSTONE ) 270 SB - -997 738 78 (has ) 81 SB - -1078 738 35 (a ) 38 SB - -1116 738 147 (weight ) 150 SB - -1266 738 217 (associated ) 220 SB - -1486 738 100 (with ) 103 SB - -1589 738 53 (it. ) 56 SB - -1645 738 13 ( ) 16 SB - -1661 738 48 (A ) 51 SB - -1712 738 107 (page ) 110 SB - -1822 738 95 (may ) 98 SB - -1920 738 59 (be ) 62 SB - -1982 738 108 (from ) 111 SB - -2093 738 38 (1 ) 41 SB - -2134 738 41 (to) 41 SB - -225 797 130 (100% ) 133 SB - -358 797 54 (of ) 57 SB - -415 797 74 (the ) 77 SB - -492 797 97 (test. ) 100 SB - -592 797 13 ( ) 16 SB - -608 797 85 (See ) 88 SB - -696 797 74 (the ) 77 SB - -773 797 132 (filelist ) 135 SB - -908 797 71 (for ) 74 SB - -982 797 148 (further ) 151 SB - -1133 797 243 (information ) 246 SB - -1379 797 63 (on ) 66 SB - -1445 797 291 (configuration. ) 294 SB - -1739 797 13 ( ) 17 SB - -1756 797 218 (Weighting ) 222 SB - -1978 797 44 (is ) 48 SB - -2026 797 104 (used ) 108 SB - -2134 797 41 (to) 41 SB - -225 856 177 (simulate ) 180 SB - -405 856 89 (that ) 92 SB - -497 856 158 (activity ) 161 SB - -658 856 54 (of ) 57 SB - -715 856 35 (a ) 38 SB - -753 856 120 (given ) 123 SB - -876 856 120 (page. ) 123 SB - -999 856 13 ( ) 16 SB - -1015 856 90 (The ) 93 SB - -1108 856 137 (higher ) 140 SB - -1248 856 74 (the ) 77 SB - -1325 856 229 (percentage ) 233 SB - -1558 856 74 (the ) 78 SB - -1636 856 115 (more ) 119 SB - -1755 856 115 (often ) 119 SB - -1874 856 74 (the ) 78 SB - -1952 856 107 (page ) 111 SB - -2063 856 44 (is ) 48 SB - -2111 856 64 (hit.) 64 SB - -225 915 1182 (The lower the percentage the less often the page will be hit.) 1182 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1113 415 (4.10 Logging) 415 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1288 180 (Logging ) 189 SB - -564 1288 44 (is ) 54 SB - -618 1288 132 (added ) 142 SB - -760 1288 54 (to ) 64 SB - -824 1288 74 (the ) 84 SB - -908 1288 243 (benchmark, ) 253 SB - -1161 1288 77 (but ) 87 SB - -1248 1288 159 (caution ) 169 SB - -1417 1288 144 (should ) 154 SB - -1571 1288 59 (be ) 69 SB - -1640 1288 198 (exercised ) 208 SB - -1848 1288 119 (when ) 129 SB - -1977 1288 118 (using ) 128 SB - -2105 1288 70 (this) 70 SB - -225 1347 141 (option ) 151 SB - -376 1347 54 (as ) 64 SB - -440 1347 103 (each ) 113 SB - -553 1347 263 (Webchildren ) 273 SB - -826 1347 95 (logs ) 105 SB - -931 1347 121 (every ) 131 SB - -1062 1347 230 (connection ) 240 SB - -1302 1347 84 (and ) 94 SB - -1396 1347 171 (relevant ) 181 SB - -1577 1347 97 (data ) 107 SB - -1684 1347 49 (in ) 59 SB - -1743 1347 35 (a ) 45 SB - -1788 1347 177 (separate ) 188 SB - -1976 1347 87 (file. ) 98 SB - -2074 1347 13 ( ) 24 SB - -2098 1347 77 (The) 77 SB - -225 1406 1859 (logging information contains additional information that is not returned to the WebMASTER.) 1859 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1585 497 (4.11 Debugging) 497 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1760 231 (Debugging ) 235 SB - -610 1760 44 (is ) 48 SB - -658 1760 132 (added ) 136 SB - -794 1760 54 (to ) 58 SB - -852 1760 96 (help ) 100 SB - -952 1760 206 (debugged ) 210 SB - -1162 1760 40 (if ) 44 SB - -1206 1760 113 (there ) 118 SB - -1324 1760 44 (is ) 49 SB - -1373 1760 35 (a ) 40 SB - -1413 1760 176 (problem ) 181 SB - -1594 1760 100 (with ) 105 SB - -1699 1760 74 (the ) 79 SB - -1778 1760 134 (server ) 139 SB - -1917 1760 56 (or ) 61 SB - -1978 1760 133 (client. ) 138 SB - -2116 1760 13 ( ) 18 SB - -2134 1760 41 (In) 41 SB - -225 1819 1454 (debugging mode the HTTP header is display for each request that is sent.) 1454 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1938 864 (5. Workload configuration) 864 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2113 95 (One ) 100 SB - -475 2113 54 (of ) 59 SB - -534 2113 74 (the ) 79 SB - -613 2113 117 (goals ) 122 SB - -735 2113 71 (for ) 76 SB - -811 2113 74 (the ) 79 SB - -890 2113 267 (WebSTONE ) 272 SB - -1162 2113 44 (is ) 49 SB - -1211 2113 54 (to ) 59 SB - -1270 2113 135 (model ) 140 SB - -1410 2113 35 (a ) 40 SB - -1450 2113 86 (real ) 91 SB - -1541 2113 129 (world ) 134 SB - -1675 2113 202 (workload ) 207 SB - -1882 2113 71 (via ) 76 SB - -1958 2113 35 (a ) 41 SB - -1999 2113 176 (synthetic) 176 SB - -225 2172 1678 (workloads based on data gathered from different sites \(Hotwired, IUMA, Netscape, ) 1679 SB - -1904 2172 84 (and ) 85 SB - -1989 2172 54 (of ) 55 SB - -2044 2172 131 (course) 131 SB - -225 2231 553 (SGI\). Unfortunately this is ) 554 SB - -779 2231 115 (small ) 116 SB - -895 2231 97 (data ) 98 SB - -993 2231 69 (set ) 70 SB - -1063 2231 54 (to ) 55 SB - -1118 2231 87 (pull ) 88 SB - -1206 2231 108 (from ) 109 SB - -1315 2231 90 (but, ) 91 SB - -1406 2231 40 (it ) 41 SB - -1447 2231 78 (has ) 79 SB - -1526 2231 105 (been ) 106 SB - -1632 2231 128 (found ) 129 SB - -1761 2231 89 (that ) 90 SB - -1851 2231 40 (it ) 41 SB - -1892 2231 105 (does ) 106 SB - -1998 2231 177 (currently) 177 SB - -225 2290 215 (represents ) 217 SB - -442 2290 74 (the ) 76 SB - -518 2290 157 (general ) 159 SB - -677 2290 79 (use ) 81 SB - -758 2290 54 (of ) 56 SB - -814 2290 152 (HTTP. ) 154 SB - -968 2290 13 ( ) 15 SB - -983 2290 54 (In ) 56 SB - -1039 2290 83 (this ) 85 SB - -1124 2290 230 (benchmark ) 232 SB - -1356 2290 113 (there ) 116 SB - -1472 2290 74 (are ) 77 SB - -1549 2290 38 (4 ) 41 SB - -1590 2290 180 (different ) 183 SB - -1773 2290 127 (mixes ) 130 SB - -1903 2290 108 (from ) 111 SB - -2014 2290 74 (the ) 77 SB - -2091 2290 84 (data) 84 SB - -225 2349 478 (gather from those sites.) 478 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 2468 759 (5.1 General modem mix) 759 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2643 772 (The General modem mix is a synthetic ) 773 SB - -1148 2643 107 (page ) 108 SB - -1256 2643 86 (mix ) 87 SB - -1343 2643 89 (that ) 90 SB - -1433 2643 137 (would ) 138 SB - -1571 2643 59 (be ) 60 SB - -1631 2643 104 (used ) 105 SB - -1736 2643 40 (if ) 41 SB - -1777 2643 160 (modem ) 161 SB - -1938 2643 115 (users ) 116 SB - -2054 2643 121 (where) 121 SB - -225 2702 1596 (to be considered. Two concerns to a potential server site should be the size of ) 1597 SB - -1822 2702 74 (the ) 75 SB - -1897 2702 126 (pages ) 127 SB - -2024 2702 89 (that ) 90 SB - -2114 2702 61 (are) 61 SB - -225 2761 63 (on ) 69 SB - -294 2761 103 (their ) 110 SB - -404 2761 148 (system ) 155 SB - -559 2761 84 (and ) 91 SB - -650 2761 98 (type ) 105 SB - -755 2761 54 (of ) 61 SB - -816 2761 139 (access ) 146 SB - -962 2761 54 (to ) 61 SB - -1023 2761 74 (the ) 81 SB - -1104 2761 147 (server. ) 154 SB - -1258 2761 13 ( ) 20 SB - -1278 2761 45 (If ) 52 SB - -1330 2761 35 (a ) 42 SB - -1372 2761 84 (end ) 91 SB - -1463 2761 96 (user ) 103 SB - -1566 2761 44 (is ) 51 SB - -1617 2761 200 (accessing ) 207 SB - -1824 2761 74 (the ) 81 SB - -1905 2761 134 (server ) 141 SB - -2046 2761 100 (with ) 107 SB - -2153 2761 22 (a) 22 SB - -225 2820 169 (14.4kbs ) 170 SB - -395 2820 160 (modem ) 161 SB - -556 2820 98 (then ) 99 SB - -655 2820 40 (it ) 41 SB - -696 2820 137 (would ) 138 SB - -834 2820 59 (be ) 60 SB - -894 2820 49 (in ) 50 SB - -944 2820 74 (the ) 76 SB - -1020 2820 93 (best ) 95 SB - -1115 2820 159 (interest ) 161 SB - -1276 2820 54 (of ) 56 SB - -1332 2820 74 (the ) 76 SB - -1408 2820 81 (site ) 83 SB - -1491 2820 54 (to ) 56 SB - -1547 2820 105 (have ) 107 SB - -1654 2820 115 (small ) 117 SB - -1771 2820 126 (pages ) 128 SB - -1899 2820 54 (as ) 56 SB - -1955 2820 54 (to ) 56 SB - -2011 2820 78 (not ) 80 SB - -2091 2820 84 (take) 84 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Bold - -%%+ font Times-Roman - -%%Page: 12 12 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (12) 42 SB - -gr - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -225 169 35 (a ) 37 SB - -262 169 100 (long ) 103 SB - -365 169 99 (time ) 102 SB - -467 169 54 (to ) 57 SB - -524 169 209 (download ) 212 SB - -736 169 74 (the ) 77 SB - -813 169 110 (data. ) 113 SB - -926 169 13 ( ) 16 SB - -942 169 99 (This ) 102 SB - -1044 169 86 (mix ) 89 SB - -1133 169 116 (takes ) 119 SB - -1252 169 74 (the ) 77 SB - -1329 169 84 (end ) 87 SB - -1416 169 96 (user ) 99 SB - -1515 169 89 (that ) 92 SB - -1607 169 78 (has ) 81 SB - -1688 169 54 (to ) 57 SB - -1745 169 79 (use ) 82 SB - -1827 169 35 (a ) 38 SB - -1865 169 160 (modem ) 163 SB - -2028 169 54 (as ) 57 SB - -2085 169 90 (their) 90 SB - -225 228 230 (connection ) 235 SB - -460 228 90 (into ) 95 SB - -555 228 182 (account. ) 187 SB - -742 228 13 ( ) 19 SB - -761 228 99 (This ) 105 SB - -866 228 86 (mix ) 92 SB - -958 228 85 (will ) 91 SB - -1049 228 150 (consist ) 156 SB - -1205 228 54 (of ) 60 SB - -1265 228 115 (small ) 121 SB - -1386 228 126 (pages ) 132 SB - -1518 228 89 (that ) 95 SB - -1613 228 74 (are ) 80 SB - -1693 228 85 (less ) 91 SB - -1784 228 98 (then ) 104 SB - -1888 228 88 (20k ) 94 SB - -1982 228 116 (bytes ) 122 SB - -2104 228 71 (and) 71 SB - -225 287 741 (mainly text with sparse graphics files.) 741 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 435 509 (5.2 General mix) 509 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 581 90 (The ) 101 SB - -476 581 168 (General ) 179 SB - -655 581 86 (mix ) 97 SB - -752 581 44 (is ) 55 SB - -807 581 85 (one ) 96 SB - -903 581 89 (that ) 100 SB - -1003 581 44 (is ) 55 SB - -1058 581 78 (not ) 90 SB - -1148 581 217 (concerned ) 229 SB - -1377 581 100 (with ) 112 SB - -1489 581 147 (modem) 147 SB - -1636 581 13 ( ) 25 SB - -1661 581 115 (users ) 127 SB - -1788 581 197 (however, ) 209 SB - -1997 581 40 (it ) 52 SB - -2049 581 44 (is ) 56 SB - -2105 581 70 (still) 70 SB - -225 640 960 (concerned with the network responsiveness and ) 961 SB - -1186 640 247 (throughput. ) 248 SB - -1434 640 13 ( ) 14 SB - -1448 640 86 (File ) 87 SB - -1535 640 107 (sizes ) 108 SB - -1643 640 49 (in ) 50 SB - -1693 640 83 (this ) 84 SB - -1777 640 86 (mix ) 87 SB - -1864 640 85 (will ) 86 SB - -1950 640 59 (be ) 60 SB - -2010 640 165 (between) 165 SB - -225 699 351 (1 and 100k bytes.) 351 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 847 604 (5.3 Media rich mix) 604 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1022 138 (Media ) 141 SB - -516 1022 88 (rich ) 91 SB - -607 1022 44 (is ) 47 SB - -654 1022 158 (defined ) 161 SB - -815 1022 60 (by ) 63 SB - -878 1022 74 (the ) 77 SB - -955 1022 98 (type ) 101 SB - -1056 1022 84 (and ) 88 SB - -1144 1022 88 (size ) 92 SB - -1236 1022 54 (of ) 58 SB - -1294 1022 97 (data ) 101 SB - -1395 1022 150 (stored. ) 154 SB - -1549 1022 13 ( ) 17 SB - -1566 1022 138 (Media ) 142 SB - -1708 1022 169 (referees ) 173 SB - -1881 1022 54 (to ) 58 SB - -1939 1022 236 (multi-media) 236 SB - -225 1081 161 (content ) 164 SB - -389 1081 103 (such ) 106 SB - -495 1081 68 (as: ) 71 SB - -566 1081 13 ( ) 16 SB - -582 1081 152 (MPEG ) 155 SB - -737 1081 84 (and ) 87 SB - -824 1081 219 (Quicktime ) 222 SB - -1046 1081 134 (movie ) 137 SB - -1183 1081 106 (files, ) 110 SB - -1293 1081 152 (MPEG ) 156 SB - -1449 1081 84 (and ) 88 SB - -1537 1081 77 (aiff ) 81 SB - -1618 1081 111 (..etc. ) 115 SB - -1733 1081 132 (sound ) 136 SB - -1869 1081 116 (clips, ) 120 SB - -1989 1081 84 (and ) 88 SB - -2077 1081 98 (large) 98 SB - -225 1140 179 (graphics ) 183 SB - -408 1140 106 (files. ) 111 SB - -519 1140 13 ( ) 18 SB - -537 1140 138 (Media ) 143 SB - -680 1140 88 (rich ) 93 SB - -773 1140 161 (content ) 166 SB - -939 1140 100 (sites ) 105 SB - -1044 1140 74 (are ) 79 SB - -1123 1140 78 (not ) 83 SB - -1206 1140 168 (worried ) 173 SB - -1379 1140 125 (about ) 130 SB - -1509 1140 74 (the ) 79 SB - -1588 1140 88 (size ) 93 SB - -1681 1140 54 (of ) 59 SB - -1740 1140 103 (their ) 108 SB - -1848 1140 106 (files. ) 111 SB - -1959 1140 131 (These ) 136 SB - -2095 1140 80 (files) 80 SB - -225 1199 151 (usually ) 155 SB - -380 1199 150 (consist ) 154 SB - -534 1199 54 (of ) 58 SB - -592 1199 134 (movie ) 138 SB - -730 1199 103 (clips ) 107 SB - -837 1199 84 (and ) 88 SB - -925 1199 132 (sound ) 136 SB - -1061 1199 106 (files. ) 110 SB - -1171 1199 13 ( ) 17 SB - -1188 1199 99 (This ) 104 SB - -1292 1199 86 (mix ) 91 SB - -1383 1199 44 (is ) 49 SB - -1432 1199 104 (used ) 109 SB - -1541 1199 54 (to ) 59 SB - -1600 1199 124 (cover ) 129 SB - -1729 1199 83 (this ) 88 SB - -1817 1199 119 (need. ) 124 SB - -1941 1199 13 ( ) 18 SB - -1959 1199 131 (These ) 136 SB - -2095 1199 80 (files) 80 SB - -225 1258 732 (range in size from 20k to megabytes.) 732 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1406 1005 (5.4 General and media rich mix) 1005 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1552 929 (To cover the combination of a site that wishes ) 930 SB - -1305 1552 54 (to ) 55 SB - -1360 1552 134 (server ) 135 SB - -1495 1552 102 (both ) 103 SB - -1598 1552 115 (small ) 116 SB - -1714 1552 161 (content ) 162 SB - -1876 1552 84 (and ) 85 SB - -1961 1552 138 (Media ) 139 SB - -2100 1552 75 (rich) 75 SB - -225 1611 1279 (content this mix was created. This mix will most suite this need.) 1279 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1759 619 (6. Load Generation) 619 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1934 90 (The ) 98 SB - -473 1934 155 (current ) 163 SB - -636 1934 98 (load ) 106 SB - -742 1934 222 (generation ) 230 SB - -972 1934 54 (of ) 62 SB - -1034 1934 74 (the ) 82 SB - -1116 1934 267 (WebSTONE ) 275 SB - -1391 1934 44 (is ) 52 SB - -1443 1934 54 (to ) 62 SB - -1505 1934 158 (request ) 166 SB - -1671 1934 126 (pages ) 134 SB - -1805 1934 84 (and ) 92 SB - -1897 1934 93 (files ) 101 SB - -1998 1934 108 (from ) 116 SB - -2114 1934 61 (the) 61 SB - -225 1993 134 (server ) 142 SB - -367 1993 54 (as ) 62 SB - -429 1993 84 (fast ) 92 SB - -521 1993 54 (as ) 62 SB - -583 1993 74 (the ) 82 SB - -665 1993 134 (server ) 142 SB - -807 1993 81 (can ) 89 SB - -896 1993 103 (send ) 111 SB - -1007 1993 124 (them. ) 132 SB - -1139 1993 13 ( ) 21 SB - -1160 1993 215 (Reflecting ) 223 SB - -1383 1993 74 (the ) 82 SB - -1465 1993 155 (current ) 163 SB - -1628 1993 260 (environment ) 268 SB - -1896 1993 49 (in ) 58 SB - -1954 1993 74 (the ) 83 SB - -2037 1993 138 (WWW) 138 SB - -225 2052 1376 (community. To generate a load there are four things that are needed.) 1376 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -225 2109 36 (\267 ) 75 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 2114 48 (A ) 51 SB - -351 2114 162 (number ) 165 SB - -516 2114 54 (of ) 57 SB - -573 2114 276 (Webchildern. ) 279 SB - -852 2114 13 ( ) 16 SB - -868 2114 90 (The ) 93 SB - -961 2114 115 (more ) 118 SB - -1079 2114 263 (Webchildern ) 266 SB - -1345 2114 89 (that ) 92 SB - -1437 2114 74 (are ) 77 SB - -1514 2114 219 (requesting ) 222 SB - -1736 2114 126 (pages ) 129 SB - -1865 2114 108 (from ) 111 SB - -1976 2114 74 (the ) 78 SB - -2054 2114 121 (server) 121 SB - -300 2173 667 (the more load that this will cause.) 667 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -225 2230 36 (\267 ) 75 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 2235 1764 (The type of page. This is mainly determined by the page size and the weight of the page.) 1764 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -225 2292 36 (\267 ) 75 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 2297 174 (Number ) 175 SB - -475 2297 54 (of ) 55 SB - -530 2297 152 (clients. ) 153 SB - -683 2297 13 ( ) 14 SB - -697 2297 90 (The ) 91 SB - -788 2297 115 (more ) 116 SB - -904 2297 139 (clients ) 140 SB - -1044 2297 89 (that ) 90 SB - -1134 2297 74 (are ) 75 SB - -1209 2297 49 (in ) 50 SB - -1259 2297 74 (the ) 75 SB - -1334 2297 84 (test ) 85 SB - -1419 2297 74 (the ) 75 SB - -1494 2297 115 (more ) 116 SB - -1610 2297 263 (Webchildern ) 264 SB - -1874 2297 89 (that ) 90 SB - -1964 2297 74 (are ) 75 SB - -2039 2297 93 (able ) 95 SB - -2134 2297 41 (to) 41 SB - -300 2356 651 (be brought to bear on the server.) 651 SB - -32 0 0 50 50 0 0 0 50 /Symbol font - -225 2413 36 (\267 ) 75 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 2418 1703 (The number of pages. The more pages that are requested test other aspects of server.) 1703 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 2596 579 (6.1 Page selection) 579 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2771 1140 (Each page in the mix has a percentage associated with it. ) 1141 SB - -1516 2771 13 ( ) 14 SB - -1530 2771 99 (This ) 100 SB - -1630 2771 229 (percentage ) 230 SB - -1860 2771 44 (is ) 45 SB - -1905 2771 74 (the ) 75 SB - -1980 2771 195 (weighting) 195 SB - -225 2830 143 (factor. ) 151 SB - -376 2830 13 ( ) 21 SB - -397 2830 90 (The ) 98 SB - -495 2830 137 (higher ) 145 SB - -640 2830 74 (the ) 82 SB - -722 2830 162 (number ) 170 SB - -892 2830 74 (the ) 82 SB - -974 2830 115 (more ) 123 SB - -1097 2830 178 (frequent ) 186 SB - -1283 2830 74 (the ) 82 SB - -1365 2830 107 (page ) 115 SB - -1480 2830 85 (will ) 93 SB - -1573 2830 59 (be ) 67 SB - -1640 2830 77 (hit. ) 85 SB - -1725 2830 13 ( ) 21 SB - -1746 2830 48 (A ) 56 SB - -1802 2830 164 (random ) 172 SB - -1974 2830 162 (number ) 170 SB - -2144 2830 31 (is) 31 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Symbol - -%%+ font Times-Bold - -%%+ font Times-Roman - -%%Page: 13 13 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (13) 42 SB - -gr - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -225 169 833 (generated and then compared to the page ) 834 SB - -1059 169 160 (weight. ) 161 SB - -1220 169 13 ( ) 14 SB - -1234 169 45 (If ) 46 SB - -1280 169 74 (the ) 75 SB - -1355 169 164 (random ) 165 SB - -1520 169 162 (number ) 163 SB - -1683 169 174 (matches ) 175 SB - -1858 169 74 (the ) 75 SB - -1933 169 107 (page ) 108 SB - -2041 169 134 (weight) 134 SB - -225 228 98 (then ) 100 SB - -325 228 89 (that ) 91 SB - -416 228 142 (pages\222 ) 144 SB - -560 228 93 (files ) 95 SB - -655 228 74 (are ) 76 SB - -731 228 189 (retrieved ) 192 SB - -923 228 85 (one ) 88 SB - -1011 228 50 (at ) 53 SB - -1064 228 35 (a ) 38 SB - -1102 228 112 (time. ) 115 SB - -1217 228 13 ( ) 16 SB - -1233 228 112 (Each ) 115 SB - -1348 228 263 (Webchildren ) 266 SB - -1614 228 78 (has ) 81 SB - -1695 228 59 (its ) 62 SB - -1757 228 99 (own ) 102 SB - -1859 228 164 (random ) 167 SB - -2026 228 149 (number) 149 SB - -225 287 194 (sequence.) 194 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 406 498 (6.2 Page Access) 498 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 581 117 (After ) 119 SB - -494 581 35 (a ) 38 SB - -532 581 107 (page ) 110 SB - -642 581 44 (is ) 47 SB - -689 581 172 (selected ) 175 SB - -864 581 60 (by ) 63 SB - -927 581 164 (random ) 167 SB - -1094 581 147 (weight ) 150 SB - -1244 581 98 (then ) 101 SB - -1345 581 103 (each ) 106 SB - -1451 581 200 (Webchild ) 203 SB - -1654 581 178 (contacts ) 181 SB - -1835 581 74 (the ) 77 SB - -1912 581 139 (HTTP ) 142 SB - -2054 581 121 (server) 121 SB - -225 640 84 (and ) 88 SB - -313 640 177 (requests ) 181 SB - -494 640 74 (the ) 78 SB - -572 640 91 (first ) 95 SB - -667 640 74 (file ) 78 SB - -745 640 54 (of ) 58 SB - -803 640 74 (the ) 78 SB - -881 640 120 (page. ) 124 SB - -1005 640 13 ( ) 17 SB - -1022 640 117 (After ) 121 SB - -1143 640 74 (the ) 78 SB - -1221 640 200 (Webchild ) 204 SB - -1425 640 173 (receives ) 177 SB - -1602 640 74 (the ) 78 SB - -1680 640 91 (first ) 95 SB - -1775 640 107 (page ) 112 SB - -1887 640 40 (it ) 45 SB - -1932 640 177 (requests ) 182 SB - -2114 640 61 (the) 61 SB - -225 699 98 (next ) 101 SB - -326 699 85 (one ) 89 SB - -415 699 101 (until ) 105 SB - -520 699 59 (all ) 63 SB - -583 699 74 (the ) 78 SB - -661 699 93 (files ) 97 SB - -758 699 71 (for ) 75 SB - -833 699 89 (that ) 93 SB - -926 699 107 (page ) 111 SB - -1037 699 105 (have ) 109 SB - -1146 699 105 (been ) 109 SB - -1255 699 218 (requested. ) 222 SB - -1477 699 13 ( ) 17 SB - -1494 699 73 (On ) 77 SB - -1571 699 103 (each ) 107 SB - -1678 699 107 (page ) 111 SB - -1789 699 74 (the ) 78 SB - -1867 699 99 (time ) 103 SB - -1970 699 40 (it ) 44 SB - -2014 699 116 (takes ) 120 SB - -2134 699 41 (to) 41 SB - -225 758 1465 (connect and down load the file is recorded and log if logging is turned on.) 1465 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 936 733 (6.3 Duration of the test) 733 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1111 90 (The ) 100 SB - -475 1111 267 (WebSTONE ) 277 SB - -752 1111 44 (is ) 54 SB - -806 1111 187 (designed ) 197 SB - -1003 1111 54 (to ) 64 SB - -1067 1111 79 (run ) 89 SB - -1156 1111 101 (until ) 112 SB - -1268 1111 74 (the ) 85 SB - -1353 1111 139 (clients ) 150 SB - -1503 1111 79 (run ) 90 SB - -1593 1111 79 (out ) 90 SB - -1683 1111 54 (of ) 65 SB - -1748 1111 175 (memory ) 186 SB - -1934 1111 56 (or ) 67 SB - -2001 1111 74 (the ) 85 SB - -2086 1111 89 (loop) 89 SB - -225 1170 164 (counter ) 165 SB - -390 1170 83 (hits ) 84 SB - -474 1170 151 (20000. ) 152 SB - -626 1170 13 ( ) 14 SB - -640 1170 90 (The ) 91 SB - -731 1170 102 (loop ) 103 SB - -834 1170 164 (counter ) 165 SB - -999 1170 44 (is ) 45 SB - -1044 1170 74 (the ) 75 SB - -1119 1170 133 (ability ) 134 SB - -1253 1170 54 (to ) 55 SB - -1308 1170 79 (run ) 80 SB - -1388 1170 35 (a ) 36 SB - -1424 1170 84 (test ) 85 SB - -1509 1170 49 (in ) 50 SB - -1559 1170 203 (repetition ) 204 SB - -1763 1170 54 (as ) 55 SB - -1818 1170 54 (to ) 56 SB - -1874 1170 112 (time. ) 114 SB - -1988 1170 13 ( ) 15 SB - -2003 1170 99 (This ) 101 SB - -2104 1170 71 (test) 71 SB - -225 1229 44 (is ) 45 SB - -270 1229 148 (limited ) 149 SB - -419 1229 169 (because ) 170 SB - -589 1229 54 (of ) 55 SB - -644 1229 13 ( ) 14 SB - -658 1229 120 (client ) 121 SB - -779 1229 188 (memory. ) 189 SB - -968 1229 13 ( ) 14 SB - -982 1229 45 (If ) 46 SB - -1028 1229 120 (client ) 121 SB - -1149 1229 175 (memory ) 176 SB - -1325 1229 44 (is ) 45 SB - -1370 1229 78 (not ) 79 SB - -1449 1229 59 (an ) 60 SB - -1509 1229 110 (issue ) 111 SB - -1620 1229 83 (this ) 84 SB - -1704 1229 162 (number ) 163 SB - -1867 1229 81 (can ) 83 SB - -1950 1229 59 (be ) 61 SB - -2011 1229 164 (changed) 164 SB - -225 1288 1483 (and the benchmark recompiled. Most tests do not last longer than 1 hour..) 1483 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1466 696 (7. Benchmark Results) 696 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1641 90 (The ) 91 SB - -466 1641 201 (following ) 202 SB - -668 1641 44 (is ) 45 SB - -713 1641 35 (a ) 36 SB - -749 1641 144 (typical ) 145 SB - -894 1641 79 (run ) 80 SB - -974 1641 54 (of ) 55 SB - -1029 1641 74 (the ) 75 SB - -1104 1641 243 (benchmark. ) 244 SB - -1348 1641 13 ( ) 14 SB - -1362 1641 90 (The ) 91 SB - -1453 1641 91 (first ) 92 SB - -1545 1641 79 (run ) 81 SB - -1626 1641 44 (is ) 46 SB - -1672 1641 54 (of ) 56 SB - -1728 1641 74 (the ) 76 SB - -1804 1641 230 (benchmark ) 232 SB - -2036 1641 139 (against) 139 SB - -225 1700 962 (the Netsite server followed by the NCSA server.) 962 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -225 1847 943 (The following parameters were modified to run the test:) 943 SB - -225 1897 204 (nm_clusters) 204 SB - -225 1947 279 (somaxconn = 50) 279 SB - -225 1997 334 (nm_clusters = 4000) 334 SB - -225 2047 371 (tcp_keepidle = \(1200\)) 371 SB - -225 2097 488 (tcp_keep_timer_in_close = 1) 488 SB - -225 2197 333 (Hardware platform:) 333 SB - -225 2297 459 (1 150 MHZ IP22 Processor) 459 SB - -225 2347 897 (FPU: MIPS R4010 Floating Point Chip Revision: 0.0) 897 SB - -225 2397 822 (CPU: MIPS R4400 Processor Chip Revision: 5.0) 822 SB - -225 2447 403 (On-board serial ports: 2) 403 SB - -225 2497 617 (On-board bi-directional parallel port) 617 SB - -225 2547 453 (Data cache size: 16 Kbytes) 453 SB - -225 2597 557 (Instruction cache size: 16 Kbytes) 557 SB - -225 2647 924 (Secondary unified instruction/data cache size: 1 Mbyte) 924 SB - -225 2697 534 (Main memory size: 256 Mbytes) 534 SB - -225 2747 934 (Integral ISDN: Basic Rate Interface unit 0, revision 1.0) 934 SB - -225 2797 1077 (XPI FDDI controller: xpi0, firmware version 9411032038, SAS) 1077 SB - -225 2847 546 (Integral Ethernet: ec3, version 1) 546 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Bold - -%%+ font Times-Roman - -%%Page: 14 14 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (14) 42 SB - -gr - -225 169 546 (Integral Ethernet: ec0, version 1) 546 SB - -225 219 1215 (Integral SCSI controller 5: Version WD33C95A, differential, revision 0) 1215 SB - -225 269 657 (Disk drive: unit 4 on SCSI controller 5) 657 SB - -225 319 657 (Disk drive: unit 3 on SCSI controller 5) 657 SB - -225 369 657 (Disk drive: unit 2 on SCSI controller 5) 657 SB - -225 419 657 (Disk drive: unit 1 on SCSI controller 5) 657 SB - -225 469 1215 (Integral SCSI controller 4: Version WD33C95A, differential, revision 0) 1215 SB - -225 519 1012 (Integral SCSI controller 0: Version WD33C93B, revision D) 1012 SB - -225 569 657 (Disk drive: unit 5 on SCSI controller 0) 657 SB - -225 619 633 (CDROM: unit 4 on SCSI controller 0) 633 SB - -225 669 657 (Disk drive: unit 2 on SCSI controller 0) 657 SB - -225 769 1633 (The file set used for this test is listed below. In this case a general and media rich mix was used.) 1633 SB - -225 869 1097 (#This file is used to configure the pages and files to be tested for.) 1097 SB - -225 919 21 (6) 21 SB - -225 969 74 (40 3) 74 SB - -225 1019 199 (/file3k.html) 199 SB - -225 1069 199 (/file4k.html) 199 SB - -225 1119 199 (/file5k.html) 199 SB - -225 1169 53 (5 3) 53 SB - -225 1219 220 (/file10k.html) 220 SB - -225 1269 220 (/file17k.html) 220 SB - -225 1319 220 (/file20k.html) 220 SB - -225 1369 53 (5 2) 53 SB - -225 1419 211 (/file5m.html) 211 SB - -225 1469 211 (/file1m.html) 211 SB - -225 1519 74 (20 3) 74 SB - -225 1569 199 (/file6k.html) 199 SB - -225 1619 199 (/file7k.html) 199 SB - -225 1669 241 (/file200k.html) 241 SB - -225 1719 74 (20 2) 74 SB - -225 1769 211 (/file3m.html) 211 SB - -225 1819 220 (/file21k.html) 220 SB - -225 1869 74 (10 2) 74 SB - -225 1919 241 (/file500k.html) 241 SB - -225 1969 220 (/file13k.html) 220 SB - -225 2069 1890 (What follows is the results of a test ran for 10 minutes with the above page sets. The first set of data is from the) 1890 SB - -225 2119 242 (Netsite server.) 242 SB - -225 2219 182 (Netsite 1.0) 182 SB - -225 2269 1428 (********************************************************************) 1428 SB - -225 2319 1239 (/usr/local/bin/webstone -w xpi0-alfalfa -c sulu:2959 -u filelist -t 35 -n %d) 1239 SB - -225 2369 773 (Client: gateweb-indy8 Number of Clients: 6) 773 SB - -225 2419 773 (Client: gateweb-indy9 Number of Clients: 6) 773 SB - -225 2469 783 (Client: gateweb-indy10 Number of Clients: 6) 783 SB - -225 2519 783 (Client: gateweb-indy11 Number of Clients: 6) 783 SB - -225 2619 616 (Waiting for READY from 24 clients) 616 SB - -225 2669 375 (All READYs received) 375 SB - -225 2719 428 (Sending GO to all clients) 428 SB - -225 2769 793 (All clients started at Fri Mar 17 11:23:10 1995) 793 SB - -225 2819 516 (Waiting for clients completion) 516 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Roman - -%%Page: 15 15 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (15) 42 SB - -gr - -225 169 780 (All clients ended at Fri Mar 17 11:58:34 1995) 780 SB - -225 219 145 (Page # 0) 145 SB - -225 269 1944 (=================================================================================) 1944 SB - -225 319 692 (Total number of times page was hit 6649) 692 SB - -225 369 560 (Total time 4238.492450 seconds) 560 SB - -225 419 611 (Maximum Response time 2.071999) 611 SB - -225 469 666 (Total connect time for page 77.660191) 666 SB - -225 519 615 (Maximum time to connect 0.052151) 615 SB - -225 569 655 (Total amount of data moved 81702912) 655 SB - -225 619 273 (Page size 12288) 273 SB - -225 669 546 (Total number of connects 19947) 546 SB - -225 719 1944 (=================================================================================) 1944 SB - -225 819 145 (Page # 1) 145 SB - -225 869 1944 (=================================================================================) 1944 SB - -225 919 671 (Total number of times page was hit 607) 671 SB - -225 969 539 (Total time 526.552497 seconds) 539 SB - -225 1019 611 (Maximum Response time 1.805497) 611 SB - -225 1069 645 (Total connect time for page 8.111734) 645 SB - -225 1119 615 (Maximum time to connect 0.036912) 615 SB - -225 1169 655 (Total amount of data moved 29213696) 655 SB - -225 1219 273 (Page size 48128) 273 SB - -225 1269 525 (Total number of connects 1821) 525 SB - -225 1319 1944 (=================================================================================) 1944 SB - -225 1419 145 (Page # 2) 145 SB - -225 1469 1944 (=================================================================================) 1944 SB - -225 1519 671 (Total number of times page was hit 980) 671 SB - -225 1569 581 (Total time 15710.908864 seconds) 581 SB - -225 1619 632 (Maximum Response time 22.764984) 632 SB - -225 1669 666 (Total connect time for page 19.605667) 666 SB - -225 1719 615 (Maximum time to connect 5.785718) 615 SB - -225 1769 697 (Total amount of data moved 6165626880) 697 SB - -225 1819 315 (Page size 6291456) 315 SB - -225 1869 525 (Total number of connects 1960) 525 SB - -225 1919 1944 (=================================================================================) 1944 SB - -225 2019 145 (Page # 3) 145 SB - -225 2069 1944 (=================================================================================) 1944 SB - -225 2119 692 (Total number of times page was hit 2866) 692 SB - -225 2169 560 (Total time 2581.663009 seconds) 560 SB - -225 2219 611 (Maximum Response time 3.341992) 611 SB - -225 2269 666 (Total connect time for page 33.253920) 666 SB - -225 2319 615 (Maximum time to connect 0.046310) 615 SB - -225 2369 676 (Total amount of data moved 625108992) 676 SB - -225 2419 294 (Page size 218112) 294 SB - -225 2469 525 (Total number of connects 8598) 525 SB - -225 2519 1944 (=================================================================================) 1944 SB - -225 2619 145 (Page # 4) 145 SB - -225 2669 1944 (=================================================================================) 1944 SB - -225 2719 692 (Total number of times page was hit 3040) 692 SB - -225 2769 581 (Total time 25083.667145 seconds) 581 SB - -225 2819 632 (Maximum Response time 11.803875) 632 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Roman - -%%Page: 16 16 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (16) 42 SB - -gr - -225 169 666 (Total connect time for page 26.375753) 666 SB - -225 219 615 (Maximum time to connect 0.036555) 615 SB - -225 269 697 (Total amount of data moved 9628385280) 697 SB - -225 319 315 (Page size 3167232) 315 SB - -225 369 525 (Total number of connects 6080) 525 SB - -225 419 1944 (=================================================================================) 1944 SB - -225 519 145 (Page # 5) 145 SB - -225 569 1944 (=================================================================================) 1944 SB - -225 619 692 (Total number of times page was hit 1628) 692 SB - -225 669 560 (Total time 2148.113647 seconds) 560 SB - -225 719 611 (Maximum Response time 2.793287) 611 SB - -225 769 666 (Total connect time for page 14.345538) 666 SB - -225 819 615 (Maximum time to connect 0.036117) 615 SB - -225 869 676 (Total amount of data moved 855207936) 676 SB - -225 919 294 (Page size 525312) 294 SB - -225 969 525 (Total number of connects 3256) 525 SB - -225 1019 1944 (=================================================================================) 1944 SB - -225 1119 816 (==================================) 816 SB - -225 1169 453 (WEBSTONE number: 450) 453 SB - -225 1219 459 (Total number of clients: 24) 459 SB - -225 1269 1051 (Total cumulative time of test for all hosts \(sec\): 50333.931099) 1051 SB - -225 1319 872 (Total number of pages retrieved from server: 15770) 872 SB - -225 1369 583 (Total number of errors to server: 0) 583 SB - -225 1419 714 (Total number of connects to server: 41672) 714 SB - -225 1469 756 (Average time per connect: 0.004304 seconds) 756 SB - -225 1519 769 (Maximum time to connect: 5.782854 seconds) 769 SB - -225 1569 711 (Total mount of data moved: 17409474560) 711 SB - -225 1619 1438 (Total bytes of body moved: 17401507840 bytes.Total bytes of header moved 7966720) 1438 SB - -225 1669 1081 (Average body size: 417583 bytes. Average retrieval size 417774) 1081 SB - -225 1719 470 (Thruput = 345879 bytes/sec) 470 SB - -225 1769 719 (Average Response time: 1.207859 seconds) 719 SB - -225 1819 775 (Maximum Response time: 19.524160 seconds) 775 SB - -225 1969 1491 (***********************************************************************) 1491 SB - -225 2019 175 (NCSA 1.3) 175 SB - -225 2069 1512 (************************************************************************) 1512 SB - -225 2169 1380 (/usr/local/bin/webstone -w xpi0-alfalfa -c sulu:2920 -p 1081 -u filelist -t 35 -n %d) 1380 SB - -225 2219 773 (Client: gateweb-indy8 Number of Clients: 6) 773 SB - -225 2269 773 (Client: gateweb-indy9 Number of Clients: 6) 773 SB - -225 2319 783 (Client: gateweb-indy10 Number of Clients: 6) 783 SB - -225 2369 783 (Client: gateweb-indy11 Number of Clients: 6) 783 SB - -225 2469 616 (Waiting for READY from 24 clients) 616 SB - -225 2519 375 (All READYs received) 375 SB - -225 2569 428 (Sending GO to all clients) 428 SB - -225 2619 793 (All clients started at Fri Mar 17 10:46:38 1995) 793 SB - -225 2669 516 (Waiting for clients completion) 516 SB - -225 2719 780 (All clients ended at Fri Mar 17 11:22:02 1995) 780 SB - -225 2769 145 (Page # 0) 145 SB - -225 2819 1944 (=================================================================================) 1944 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Roman - -%%Page: 17 17 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (17) 42 SB - -gr - -225 169 692 (Total number of times page was hit 1414) 692 SB - -225 219 581 (Total time 16772.472590 seconds) 581 SB - -225 269 632 (Maximum Response time 23.797445) 632 SB - -225 319 666 (Total connect time for page 93.585630) 666 SB - -225 369 615 (Maximum time to connect 5.997783) 615 SB - -225 419 655 (Total amount of data moved 17375232) 655 SB - -225 469 273 (Page size 12288) 273 SB - -225 519 525 (Total number of connects 4242) 525 SB - -225 569 1944 (=================================================================================) 1944 SB - -225 669 145 (Page # 1) 145 SB - -225 719 1944 (=================================================================================) 1944 SB - -225 769 671 (Total number of times page was hit 144) 671 SB - -225 819 560 (Total time 1797.158479 seconds) 560 SB - -225 869 632 (Maximum Response time 23.050203) 632 SB - -225 919 645 (Total connect time for page 0.673942) 645 SB - -225 969 615 (Maximum time to connect 0.013216) 615 SB - -225 1019 634 (Total amount of data moved 6930432) 634 SB - -225 1069 273 (Page size 48128) 273 SB - -225 1119 504 (Total number of connects 432) 504 SB - -225 1169 1944 (=================================================================================) 1944 SB - -225 1269 145 (Page # 2) 145 SB - -225 1319 1944 (=================================================================================) 1944 SB - -225 1369 671 (Total number of times page was hit 102) 671 SB - -225 1419 560 (Total time 4813.787541 seconds) 560 SB - -225 1469 632 (Maximum Response time 56.573603) 632 SB - -225 1519 645 (Total connect time for page 6.192456) 645 SB - -225 1569 615 (Maximum time to connect 5.905150) 615 SB - -225 1619 676 (Total amount of data moved 641728512) 676 SB - -225 1669 315 (Page size 6291456) 315 SB - -225 1719 504 (Total number of connects 204) 504 SB - -225 1769 1944 (=================================================================================) 1944 SB - -225 1869 145 (Page # 3) 145 SB - -225 1919 1944 (=================================================================================) 1944 SB - -225 1969 671 (Total number of times page was hit 580) 671 SB - -225 2019 560 (Total time 7588.192121 seconds) 560 SB - -225 2069 632 (Maximum Response time 25.115934) 632 SB - -225 2119 645 (Total connect time for page 2.897182) 645 SB - -225 2169 615 (Maximum time to connect 0.019975) 615 SB - -225 2219 676 (Total amount of data moved 126504960) 676 SB - -225 2269 294 (Page size 218112) 294 SB - -225 2319 525 (Total number of connects 1740) 525 SB - -225 2369 1944 (=================================================================================) 1944 SB - -225 2469 145 (Page # 4) 145 SB - -225 2519 1944 (=================================================================================) 1944 SB - -225 2569 671 (Total number of times page was hit 600) 671 SB - -225 2619 581 (Total time 16247.815216 seconds) 581 SB - -225 2669 632 (Maximum Response time 39.003870) 632 SB - -225 2719 645 (Total connect time for page 1.790447) 645 SB - -225 2769 615 (Maximum time to connect 0.015736) 615 SB - -225 2819 697 (Total amount of data moved 1900339200) 697 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Roman - -%%Page: 18 18 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (18) 42 SB - -gr - -225 169 315 (Page size 3167232) 315 SB - -225 219 525 (Total number of connects 1200) 525 SB - -225 269 1944 (=================================================================================) 1944 SB - -225 369 145 (Page # 5) 145 SB - -225 419 1944 (=================================================================================) 1944 SB - -225 469 671 (Total number of times page was hit 294) 671 SB - -225 519 560 (Total time 2922.036210 seconds) 560 SB - -225 569 632 (Maximum Response time 20.210504) 632 SB - -225 619 666 (Total connect time for page 18.487052) 666 SB - -225 669 615 (Maximum time to connect 5.843007) 615 SB - -225 719 676 (Total amount of data moved 154441728) 676 SB - -225 769 294 (Page size 525312) 294 SB - -225 819 504 (Total number of connects 588) 504 SB - -225 869 1944 (=================================================================================) 1944 SB - -225 969 816 (==================================) 816 SB - -225 1019 432 (WEBSTONE number: 89) 432 SB - -225 1069 459 (Total number of clients: 24) 459 SB - -225 1119 1051 (Total cumulative time of test for all hosts \(sec\): 50244.193163) 1051 SB - -225 1169 851 (Total number of pages retrieved from server: 3134) 851 SB - -225 1219 583 (Total number of errors to server: 0) 583 SB - -225 1269 693 (Total number of connects to server: 8420) 693 SB - -225 1319 756 (Average time per connect: 0.014684 seconds) 756 SB - -225 1369 769 (Maximum time to connect: 5.995063 seconds) 769 SB - -225 1419 690 (Total mount of data moved: 2848899584) 690 SB - -225 1469 1417 (Total bytes of body moved: 2847382528 bytes.Total bytes of header moved 1517056) 1417 SB - -225 1519 1081 (Average body size: 338169 bytes. Average retrieval size 338349) 1081 SB - -225 1569 460 (Thruput = 56701 bytes/sec) 460 SB - -225 1619 719 (Average Response time: 5.967243 seconds) 719 SB - -225 1669 775 (Maximum Response time: 42.658441 seconds) 775 SB - -225 1769 904 (cern 3.0 ************************************) 904 SB - -225 1819 1380 (/usr/local/bin/webstone -w xpi0-alfalfa -c sulu:2996 -p 1080 -u filelist -t 45 -n %d) 1380 SB - -225 1869 773 (Client: gateweb-indy8 Number of Clients: 6) 773 SB - -225 1919 773 (Client: gateweb-indy9 Number of Clients: 6) 773 SB - -225 1969 783 (Client: gateweb-indy10 Number of Clients: 6) 783 SB - -225 2019 783 (Client: gateweb-indy11 Number of Clients: 6) 783 SB - -225 2119 616 (Waiting for READY from 24 clients) 616 SB - -225 2169 375 (All READYs received) 375 SB - -225 2219 428 (Sending GO to all clients) 428 SB - -225 2269 793 (All clients started at Fri Mar 17 15:10:43 1995) 793 SB - -225 2319 516 (Waiting for clients completion) 516 SB - -225 2369 780 (All clients ended at Fri Mar 17 15:56:07 1995) 780 SB - -225 2419 145 (Page # 0) 145 SB - -225 2469 1944 (=================================================================================) 1944 SB - -225 2519 692 (Total number of times page was hit 3724) 692 SB - -225 2569 581 (Total time 16302.320093 seconds) 581 SB - -225 2619 632 (Maximum Response time 62.488345) 632 SB - -225 2669 708 (Total connect time for page 7149.901812) 708 SB - -225 2719 636 (Maximum time to connect 59.671519) 636 SB - -225 2769 655 (Total amount of data moved 45530112) 655 SB - -225 2819 273 (Page size 12288) 273 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Roman - -%%Page: 19 19 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (19) 42 SB - -gr - -225 169 546 (Total number of connects 11105) 546 SB - -225 219 1944 (=================================================================================) 1944 SB - -225 319 145 (Page # 1) 145 SB - -225 369 1944 (=================================================================================) 1944 SB - -225 419 671 (Total number of times page was hit 501) 671 SB - -225 469 560 (Total time 2637.893006 seconds) 560 SB - -225 519 632 (Maximum Response time 38.798005) 632 SB - -225 569 708 (Total connect time for page 1229.359340) 708 SB - -225 619 636 (Maximum time to connect 35.484663) 636 SB - -225 669 655 (Total amount of data moved 24018944) 655 SB - -225 719 273 (Page size 48128) 273 SB - -225 769 525 (Total number of connects 1496) 525 SB - -225 819 1944 (=================================================================================) 1944 SB - -225 919 145 (Page # 2) 145 SB - -225 969 1944 (=================================================================================) 1944 SB - -225 1019 671 (Total number of times page was hit 432) 671 SB - -225 1069 560 (Total time 3164.881323 seconds) 560 SB - -225 1119 632 (Maximum Response time 41.850207) 632 SB - -225 1169 708 (Total connect time for page 1267.914110) 708 SB - -225 1219 636 (Maximum time to connect 35.819251) 636 SB - -225 1269 697 (Total amount of data moved 2707423232) 697 SB - -225 1319 315 (Page size 6291456) 315 SB - -225 1369 504 (Total number of connects 862) 504 SB - -225 1419 1944 (=================================================================================) 1944 SB - -225 1519 145 (Page # 3) 145 SB - -225 1569 1944 (=================================================================================) 1944 SB - -225 1619 692 (Total number of times page was hit 2080) 692 SB - -225 1669 560 (Total time 8849.459607 seconds) 560 SB - -225 1719 632 (Maximum Response time 63.461733) 632 SB - -225 1769 708 (Total connect time for page 3450.850531) 708 SB - -225 1819 636 (Maximum time to connect 59.909275) 636 SB - -225 1869 676 (Total amount of data moved 453441536) 676 SB - -225 1919 294 (Page size 218112) 294 SB - -225 1969 525 (Total number of connects 6205) 525 SB - -225 2019 1944 (=================================================================================) 1944 SB - -225 2119 145 (Page # 4) 145 SB - -225 2169 1944 (=================================================================================) 1944 SB - -225 2219 692 (Total number of times page was hit 1732) 692 SB - -225 2269 581 (Total time 10588.881744 seconds) 581 SB - -225 2319 632 (Maximum Response time 63.663196) 632 SB - -225 2369 708 (Total connect time for page 5386.565167) 708 SB - -225 2419 636 (Maximum time to connect 59.516712) 636 SB - -225 2469 697 (Total amount of data moved 5447897088) 697 SB - -225 2519 315 (Page size 3167232) 315 SB - -225 2569 525 (Total number of connects 3452) 525 SB - -225 2619 1944 (=================================================================================) 1944 SB - -225 2719 145 (Page # 5) 145 SB - -225 2769 1944 (=================================================================================) 1944 SB - -225 2819 671 (Total number of times page was hit 943) 671 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Roman - -%%Page: 20 20 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (20) 42 SB - -gr - -225 169 560 (Total time 3968.363226 seconds) 560 SB - -225 219 632 (Maximum Response time 62.245675) 632 SB - -225 269 708 (Total connect time for page 2099.311825) 708 SB - -225 319 636 (Maximum time to connect 59.244292) 636 SB - -225 369 676 (Total amount of data moved 491273216) 676 SB - -225 419 294 (Page size 525312) 294 SB - -225 469 525 (Total number of connects 1878) 525 SB - -225 519 1896 (===============================================================================) 1896 SB - -225 619 816 (==================================) 816 SB - -225 669 453 (WEBSTONE number: 209) 453 SB - -225 719 459 (Total number of clients: 24) 459 SB - -225 769 1051 (Total cumulative time of test for all hosts \(sec\): 45943.710179) 1051 SB - -225 819 851 (Total number of pages retrieved from server: 9412) 851 SB - -225 869 625 (Total number of errors to server: 247) 625 SB - -225 919 714 (Total number of connects to server: 25167) 714 SB - -225 969 756 (Average time per connect: 0.823767 seconds) 756 SB - -225 1019 790 (Maximum time to connect: 30.002288 seconds) 790 SB - -225 1069 690 (Total mount of data moved: 9394691072) 690 SB - -225 1119 1417 (Total bytes of body moved: 9389627392 bytes.Total bytes of header moved 5063680) 1417 SB - -225 1169 1081 (Average body size: 373093 bytes. Average retrieval size 373294) 1081 SB - -225 1219 470 (Thruput = 204483 bytes/sec) 470 SB - -225 1269 719 (Average Response time: 1.825553 seconds) 719 SB - -225 1319 775 (Maximum Response time: 34.973206 seconds) 775 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1420 736 (7.1 Summary of results) 736 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -225 1595 182 (Netsite 1.0) 182 SB - -225 1645 453 (WEBSTONE number: 450) 453 SB - -225 1695 459 (Total number of clients: 24) 459 SB - -225 1745 1051 (Total cumulative time of test for all hosts \(sec\): 50333.931099) 1051 SB - -225 1795 872 (Total number of pages retrieved from server: 15770) 872 SB - -225 1845 583 (Total number of errors to server: 0) 583 SB - -225 1895 714 (Total number of connects to server: 41672) 714 SB - -225 1945 756 (Average time per connect: 0.004304 seconds) 756 SB - -225 1995 769 (Maximum time to connect: 5.782854 seconds) 769 SB - -225 2045 711 (Total mount of data moved: 17409474560) 711 SB - -225 2095 1438 (Total bytes of body moved: 17401507840 bytes.Total bytes of header moved 7966720) 1438 SB - -225 2145 1081 (Average body size: 417583 bytes. Average retrieval size 417774) 1081 SB - -225 2195 470 (Thruput = 345879 bytes/sec) 470 SB - -225 2245 719 (Average Response time: 1.207859 seconds) 719 SB - -225 2295 775 (Maximum Response time: 19.524160 seconds) 775 SB - -225 2395 147 (Cern 3.0) 147 SB - -225 2445 453 (WEBSTONE number: 209) 453 SB - -225 2495 459 (Total number of clients: 24) 459 SB - -225 2545 1051 (Total cumulative time of test for all hosts \(sec\): 45943.710179) 1051 SB - -225 2595 851 (Total number of pages retrieved from server: 9412) 851 SB - -225 2645 625 (Total number of errors to server: 247) 625 SB - -225 2695 714 (Total number of connects to server: 25167) 714 SB - -225 2745 756 (Average time per connect: 0.823767 seconds) 756 SB - -225 2795 790 (Maximum time to connect: 30.002288 seconds) 790 SB - -225 2845 690 (Total mount of data moved: 9394691072) 690 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Bold - -%%+ font Times-Roman - -%%Page: 21 21 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (21) 42 SB - -gr - -225 169 1417 (Total bytes of body moved: 9389627392 bytes.Total bytes of header moved 5063680) 1417 SB - -225 219 1081 (Average body size: 373093 bytes. Average retrieval size 373294) 1081 SB - -225 269 470 (Thruput = 204483 bytes/sec) 470 SB - -225 319 719 (Average Response time: 1.825553 seconds) 719 SB - -225 369 775 (Maximum Response time: 34.973206 seconds) 775 SB - -225 469 175 (NCSA 1.3) 175 SB - -225 519 432 (WEBSTONE number: 89) 432 SB - -225 569 459 (Total number of clients: 24) 459 SB - -225 619 1051 (Total cumulative time of test for all hosts \(sec\): 50244.193163) 1051 SB - -225 669 851 (Total number of pages retrieved from server: 3134) 851 SB - -225 719 583 (Total number of errors to server: 0) 583 SB - -225 769 693 (Total number of connects to server: 8420) 693 SB - -225 819 756 (Average time per connect: 0.014684 seconds) 756 SB - -225 869 769 (Maximum time to connect: 5.995063 seconds) 769 SB - -225 919 690 (Total mount of data moved: 2848899584) 690 SB - -225 969 1417 (Total bytes of body moved: 2847382528 bytes.Total bytes of header moved 1517056) 1417 SB - -225 1019 1081 (Average body size: 338169 bytes. Average retrieval size 338349) 1081 SB - -225 1069 460 (Thruput = 56701 bytes/sec) 460 SB - -225 1119 719 (Average Response time: 5.967243 seconds) 719 SB - -225 1169 775 (Maximum Response time: 42.658441 seconds) 775 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -225 1307 1818 (The three examples above show a typical output from a run of the WebSTONE benchmark.) 1818 SB - -225 1366 1393 (The WebSTONE number is the number of pages retrieved per minute.) 1393 SB - -225 1425 1863 (Average time to connect: This is calculated by dividing the total time to connect by the total ) 1863 SB - -375 1484 403 (number of connects.) 403 SB - -225 1543 1907 (Maximum time to connect: This is defined as the longest time it took to connect during the run.) 1907 SB - -225 1602 1579 (Total amount of data moved: This is the amount of data transferred during the ) 1580 SB - -1805 1602 92 (run. ) 93 SB - -1898 1602 30 (\( ) 31 SB - -1929 1602 161 (NOTE: ) 162 SB - -2091 1602 13 ( ) 14 SB - -2105 1602 70 (this) 70 SB - -375 1661 1756 (also includes data moved of pages that where incomplete. Incomplete pages means that ) 1756 SB - -375 1720 1401 (the page was interrupted during retrieval and was unable to complete.\)) 1401 SB - -225 1779 1909 (Average Response time: This is calculated by dividing the total response time by the number of ) 1909 SB - -375 1838 187 (response.) 187 SB - -225 1897 1649 (Maximum response time: This is the maximum time to connect and transfer a page.) 1649 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 2045 1455 (8. Future of the WebSTONE and future work) 1455 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 2220 67 (As ) 69 SB - -444 2220 83 (this ) 85 SB - -529 2220 44 (is ) 46 SB - -575 2220 74 (the ) 76 SB - -651 2220 91 (first ) 93 SB - -744 2220 157 (version ) 159 SB - -903 2220 54 (of ) 56 SB - -959 2220 74 (the ) 76 SB - -1035 2220 230 (benchmark ) 232 SB - -1267 2220 40 (it ) 42 SB - -1309 2220 44 (is ) 46 SB - -1355 2220 54 (to ) 56 SB - -1411 2220 59 (be ) 62 SB - -1473 2220 227 (considered ) 230 SB - -1703 2220 35 (a ) 38 SB - -1741 2220 122 (living ) 125 SB - -1866 2220 230 (benchmark ) 233 SB - -2099 2220 76 (that) 76 SB - -225 2279 699 (will continue to grow and improve.) 699 SB - -375 2397 482 (In the future there are a ) 483 SB - -858 2397 162 (number ) 163 SB - -1021 2397 54 (of ) 55 SB - -1076 2397 132 (things ) 133 SB - -1209 2397 89 (that ) 90 SB - -1299 2397 106 (need ) 107 SB - -1406 2397 54 (to ) 55 SB - -1461 2397 59 (be ) 60 SB - -1521 2397 132 (added ) 133 SB - -1654 2397 54 (to ) 55 SB - -1709 2397 74 (the ) 75 SB - -1784 2397 230 (benchmark ) 231 SB - -2015 2397 89 (that ) 90 SB - -2105 2397 70 (this) 70 SB - -225 2456 1529 (author at this time did not have time to add. The following is but a small list.) 1529 SB - -32 0 0 75 75 0 0 0 75 /Symbol font - -226 2513 34 (\267) 35 SB - -261 2513 19 ( ) 40 SB - -225 2513 34 (\267) 35 SB - -260 2513 19 ( ) 40 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 2543 893 (Effects of the CGI \(Common Gate Interface\)) 893 SB - -32 0 0 75 75 0 0 0 75 /Symbol font - -226 2600 34 (\267) 35 SB - -261 2600 19 ( ) 40 SB - -225 2600 34 (\267) 35 SB - -260 2600 19 ( ) 40 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 2630 798 (Security \(encryption and authentication\)) 798 SB - -32 0 0 75 75 0 0 0 75 /Symbol font - -226 2687 34 (\267) 35 SB - -261 2687 19 ( ) 40 SB - -225 2687 34 (\267) 35 SB - -260 2687 19 ( ) 40 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 2717 298 (HTML parsing) 298 SB - -32 0 0 75 75 0 0 0 75 /Symbol font - -226 2774 34 (\267) 35 SB - -261 2774 19 ( ) 40 SB - -225 2774 34 (\267) 35 SB - -260 2774 19 ( ) 40 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -300 2804 436 (RDBMS performance) 436 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Symbol - -%%+ font Times-Bold - -%%+ font Times-Roman - -%%Page: 22 22 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (22) 42 SB - -gr - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 257 1067 (These and others are of importance in the near future.) 1067 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 376 658 (9. Acknowledgments) 658 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 551 129 (There ) 139 SB - -514 551 74 (are ) 84 SB - -598 551 35 (a ) 45 SB - -643 551 162 (number ) 172 SB - -815 551 54 (of ) 64 SB - -879 551 145 (people ) 155 SB - -1034 551 89 (that ) 99 SB - -1133 551 105 (have ) 115 SB - -1248 551 143 (helped ) 153 SB - -1401 551 100 (with ) 111 SB - -1512 551 83 (this ) 94 SB - -1606 551 230 (benchmark ) 241 SB - -1847 551 102 (over ) 113 SB - -1960 551 74 (the ) 85 SB - -2045 551 94 (past ) 105 SB - -2150 551 25 (2) 25 SB - -225 610 171 (months. ) 180 SB - -405 610 13 ( ) 22 SB - -427 610 103 (First ) 112 SB - -539 610 84 (and ) 93 SB - -632 610 190 (foremost ) 199 SB - -831 610 121 (Mark ) 130 SB - -961 610 110 (Sake ) 120 SB - -1081 610 99 (who ) 109 SB - -1190 610 143 (helped ) 153 SB - -1343 610 108 (code ) 118 SB - -1461 610 84 (and ) 94 SB - -1555 610 448 (developed/architected ) 458 SB - -2013 610 74 (the ) 84 SB - -2097 610 78 (first) 78 SB - -225 669 1412 (version of the benchmark. Steffen Low for support and belief that this ) 1413 SB - -1638 669 144 (should ) 145 SB - -1783 669 168 (happen. ) 169 SB - -1952 669 13 ( ) 14 SB - -1966 669 70 (To ) 71 SB - -2037 669 138 (Helena) 138 SB - -225 728 339 (Winkler-Parenty ) 353 SB - -578 728 71 (for ) 85 SB - -663 728 59 (all ) 73 SB - -736 728 76 (her ) 90 SB - -826 728 109 (help. ) 123 SB - -949 728 13 ( ) 27 SB - -976 728 30 (I ) 44 SB - -1020 728 137 (would ) 151 SB - -1171 728 92 (also ) 107 SB - -1278 728 84 (like ) 99 SB - -1377 728 54 (to ) 69 SB - -1446 728 147 (special ) 162 SB - -1608 728 123 (thank ) 138 SB - -1746 728 132 (David ) 147 SB - -1893 728 209 (Ceimwize ) 224 SB - -2117 728 58 (for) 58 SB - -225 787 535 (contributions to this paper.) 535 SB - -375 905 221 (Additional ) 222 SB - -597 905 142 (thanks ) 143 SB - -740 905 54 (to ) 55 SB - -795 905 105 (Neal ) 106 SB - -901 905 177 (Nucklus ) 178 SB - -1079 905 84 (and ) 85 SB - -1164 905 82 (Bill ) 83 SB - -1247 905 182 (Nowicki ) 183 SB - -1430 905 71 (for ) 72 SB - -1502 905 147 (critical ) 148 SB - -1650 905 114 (input ) 115 SB - -1765 905 54 (to ) 55 SB - -1820 905 83 (this ) 84 SB - -1904 905 124 (paper ) 125 SB - -2029 905 84 (and ) 85 SB - -2114 905 61 (the) 61 SB - -225 964 230 (benchmark.) 230 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1083 742 (10. Author information) 742 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -375 1258 117 (Gene ) 128 SB - -503 1258 122 (Trent ) 133 SB - -636 1258 44 (is ) 55 SB - -691 1258 35 (a ) 46 SB - -737 1258 179 (Member ) 190 SB - -927 1258 54 (of ) 65 SB - -992 1258 204 (Technical ) 215 SB - -1207 1258 99 (staff ) 110 SB - -1317 1258 49 (in ) 61 SB - -1378 1258 74 (the ) 86 SB - -1464 1258 187 (Advance ) 199 SB - -1663 1258 108 (Data ) 120 SB - -1783 1258 178 (Division ) 190 SB - -1973 1258 54 (of ) 66 SB - -2039 1258 136 (Silicon) 136 SB - -225 1317 203 (Graphics. ) 220 SB - -445 1317 13 ( ) 30 SB - -475 1317 87 (Mr. ) 104 SB - -579 1317 122 (Trent ) 139 SB - -718 1317 44 (is ) 61 SB - -779 1317 74 (the ) 91 SB - -870 1317 184 (principal ) 201 SB - -1071 1317 194 (Software ) 211 SB - -1282 1317 190 (Engineer ) 207 SB - -1489 1317 89 (that ) 106 SB - -1595 1317 216 (developed ) 234 SB - -1829 1317 74 (the ) 92 SB - -1921 1317 254 (WebSTONE) 254 SB - -225 1376 230 (benchmark ) 231 SB - -456 1376 84 (and ) 85 SB - -541 1376 142 (author ) 143 SB - -684 1376 54 (of ) 55 SB - -739 1376 83 (this ) 84 SB - -823 1376 122 (white ) 124 SB - -947 1376 137 (paper. ) 139 SB - -1086 1376 13 ( ) 15 SB - -1101 1376 117 (Gene ) 119 SB - -1220 1376 119 (holds ) 121 SB - -1341 1376 35 (a ) 37 SB - -1378 1376 201 (bachelors ) 203 SB - -1581 1376 146 (degree ) 148 SB - -1729 1376 49 (in ) 51 SB - -1780 1376 216 (Electronic ) 218 SB - -1998 1376 177 (Engineer) 177 SB - -225 1435 232 (technology ) 235 SB - -460 1435 108 (from ) 111 SB - -571 1435 135 (Devry ) 138 SB - -709 1435 177 (Institute ) 180 SB - -889 1435 54 (of ) 57 SB - -946 1435 261 (Technology. ) 264 SB - -1210 1435 13 ( ) 16 SB - -1226 1435 71 (He ) 74 SB - -1300 1435 81 (can ) 84 SB - -1384 1435 59 (be ) 63 SB - -1447 1435 167 (reached ) 171 SB - -1618 1435 50 (at ) 54 SB - -1672 1435 249 (et@sgi.com ) 253 SB - -1925 1435 56 (or ) 60 SB - -1985 1435 50 (at ) 54 SB - -2039 1435 136 (Silicon) 136 SB - -225 1494 757 (Graphics 2011 N. Mountain View, Ca) 757 SB - -375 1612 121 (Mark ) 133 SB - -508 1612 110 (Sake ) 122 SB - -630 1612 44 (is ) 56 SB - -686 1612 35 (a ) 47 SB - -733 1612 179 (Member ) 191 SB - -924 1612 54 (of ) 66 SB - -990 1612 204 (Technical ) 216 SB - -1206 1612 99 (staff ) 111 SB - -1317 1612 49 (in ) 61 SB - -1378 1612 74 (the ) 86 SB - -1464 1612 187 (Advance ) 199 SB - -1663 1612 108 (Data ) 120 SB - -1783 1612 178 (Division ) 190 SB - -1973 1612 54 (of ) 66 SB - -2039 1612 136 (Silicon) 136 SB - -225 1671 1238 (Graphics. Mr. Sake co-authored the WebSTONE benchmark.) 1238 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 1938 486 (11. References:) 486 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -383 2094 59 ([1]) 59 SB - -525 2094 862 (Berners-Lee, Fielding, and Frystyk Nielsen.) 862 SB - -525 2153 303 (\223Hypertext Tra) 303 SB - -828 2153 550 (nsfer Protocol - HTTP/1.0\224) 550 SB - -525 2212 986 (Network Working Group INTERRNET_DRAFT) 986 SB - -525 2271 639 (<draft-fielding-http-spec-01.ps>) 639 SB - -525 2330 1311 (<URL:http://www.ics.uci.edu/pub/ietf/http/> December 19, 1994) 1311 SB - -375 2439 59 ([2]) 59 SB - -525 2439 566 (Mark Wittle, Bruce E. Keith) 566 SB - -525 2498 1359 (\223LADDIS: The Next Generation In NFS File Server Benchmarking\224) 1359 SB - -525 2557 1031 (USENIX Association Conference Proceeding, 1993) 1031 SB - -32 0 0 75 75 0 0 0 69 /Times-Bold /font29 ANSIFont font - -225 2726 507 (12. Trademarks) 507 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Bold - -%%+ font Times-Roman - -%%Page: 23 23 - -%%PageResources: (atend) - -SS - -0 0 25 11 798 1100 300 SM - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -0 0 0 fC - -225 2951 226 (Gene Trent) 226 SB - -225 3010 716 (Copyright \251 Silicon Graphics, 1995) 716 SB - -32 0 0 42 42 0 0 0 38 /Times-Roman /font32 ANSIFont font - -gs 42 50 2133 2899 CB - -2133 2901 42 (23) 42 SB - -gr - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -225 169 91 (NFS) 91 SB - -32 0 0 31 31 0 0 0 28 /Times-Roman /font32 ANSIFont font - -316 163 32 (tm) 32 SB - -32 0 0 50 50 0 0 0 45 /Times-Roman /font32 ANSIFont font - -348 169 828 ( is a trademark of Sun Microsystems, Inc.) 828 SB - -225 228 1274 (UNIX is a registered trademark of UNIX Systems Laboratories.) 1274 SB - -1 #C - -statusdict begin /manualfeed false store end - -EJ RS - -%%PageTrailer - -%%PageResources: font Times-Roman - -%%Trailer - -SVDoc restore - -end - -%%Pages: 23 - -% TrueType font name key: - -% MSTT31c0e8 = 2b0fDTimes New RomanF0000002a000001900000 - -% MSTT31c0f9 = 089fDTimes New RomanF0000003a000002bc0000 - -% MSTT31c106 = 089fDTimes New RomanF0000003a000001900000 - -% MSTT31c113 = 089fDTimes New RomanF00000053000002bc0000 - -% MSTT31c120 = 089fDTimes New RomanF00000032000001900000 - -% MSTT31c132 = 089fDTimes New RomanF0000002a000001900000 - -% MSTT31c13f = 089fDTimes New RomanF0000004b000002bc0000 - -% MSTT31c14c = 089fDSymbolF00000032000001900000 - -% MSTT31c157 = 089fDTimes New RomanF00000021000001900000 - -% MSTT31c164 = 089fDTimes New RomanF00000026000001900000 - -% MSTT31c171 = 089fDSymbolF00000032000002bc0000 - -% MSTT31c17c = 089fDTimes New RomanF00000032000002bc0000 - -% MSTT31c189 = 089fDSymbolF0000004b000002bc0000 - -% MSTT31c194 = 089fDTimes New RomanF0000001f000001900000 - -% MSTT31c1aa = 089fDTimes New RomanF0000004b000001900000 - -% MSTT31c1b7 = 09dfDTimes New RomanF0000003a000002bc0000 - -% MSTT31c1c4 = 09dfDTimes New RomanF00000053000002bc0000 - -% MSTT31c1d1 = 09dfDTimes New RomanF00000032000001900000 - -% MSTT31c1de = 09dfDTimes New RomanF0000003a000001900000 - -% MSTT31c1eb = 09dfDTimes New RomanF0000002a000001900000 - -% MSTT31c1f8 = 09dfDTimes New RomanF0000004b000002bc0000 - -% MSTT31c205 = 09dfDSymbolF00000032000001900000 - -% MSTT31c210 = 09dfDTimes New RomanF00000021000001900000 - -% MSTT31c21d = 09dfDSymbolF00000032000002bc0000 - -% MSTT31c228 = 09dfDTimes New RomanF00000032000002bc0000 - -% MSTT31c235 = 09dfDTimes New RomanF00000026000001900000 - -% MSTT31c242 = 09dfDSymbolF0000004b000002bc0000 - -% MSTT31c24d = 09dfDTimes New RomanF0000001f000001900000 - -%%DocumentSuppliedResources: procset Win35Dict 3 1 - - - -%%DocumentNeededResources: font Symbol - -%%+ font Times-Bold - -%%+ font Times-Roman - - - -%%EOF - - diff --git a/apps/JAWS/clients/WebSTONE/doc/webstone.gif b/apps/JAWS/clients/WebSTONE/doc/webstone.gif Binary files differdeleted file mode 100644 index c7cd76d9a59..00000000000 --- a/apps/JAWS/clients/WebSTONE/doc/webstone.gif +++ /dev/null diff --git a/apps/JAWS/clients/WebSTONE/doc/webstone2.html b/apps/JAWS/clients/WebSTONE/doc/webstone2.html deleted file mode 100644 index 50534eb704c..00000000000 --- a/apps/JAWS/clients/WebSTONE/doc/webstone2.html +++ /dev/null @@ -1,72 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> -<HTML VERSION="2.0"> -<HEAD> -<!-- WEBMAGIC VERSION NUMBER="2.0.1" --> -<!-- WEBMAGIC TRANSLATION NAME="ServerRoot" SRC="/var/www/htdocs/" DST="/" --> -<!-- WEBMAGIC TRANSLATION NAME="ProjectRoot" SRC="./" DST="" --> -<TITLE>What is Webstone 2.0</TITLE> -</HEAD> -<BODY> -<CENTER><H1 ALIGN="CENTER"><IMG SRC="webstone.gif" WIDTH="534" HEIGHT="174" SGI_FULLPATH="/disk6/WebStone-2.0/doc/webstone.gif"></H1> -</CENTER><H1>Introducing WebStone 2.0</H1> -<P>WebStone 2.0 is the second generation Webstone web server benchmark. It -incorporates numerous bug fixes, modifications for compatibility with other -platforms and adds the new functionality of benchmark proxy servers, cgi -and NSAPI programs as well as introducing run rules which should make Webstone -numbers significantly more meaningful for comparison.</P> -<H2>New Features</H2> -<P>Webstone 2.0 provides facilities for benchmarking proxy servers. This is -accomplished by putting in a value for the the PROXYSERVER entry in the -conf/testbed file, and changing the filelist to include URL's that have -the hostname for the actual web server.</P> -<P>Dynamic content benchmarking is now explicitly supported in Webstone 2.0. -The file README.DynamicWorkload has directions for testing of NSAPI. The -included filelist.dynamic-{light,medium,heavy} serve as sample loads, with -the filelist.dynamic-heavy being the load that should be reported for NSAPI -performance. The cgi-send numbers should be quored for the filelist.cgi-heavy -fileset.</P> -<P>A port of the WebStone 2.0 benchmark to Windows NT is also included in this -release. This port is still in progress, so full functionality is not assured. -Specifically only the benchmark code has been ported - the supporting scripts -have not.</P> -<H2>Run Rules</H2> -<P>As of Webstone 2.0, there are now run rules which must be adhered to for -published Webstone numbers. These are fairly basic, but they provide important -constraints on the benchmarking which make Webstone numbers more meaningful.</P> -<P><B>Fileset: </B>Included in the Webstone distribution is filelist.standard, which was previously -called filelist.sample. This filelist has a distribution of fileset sizes -that matches the kind of distributions seen in live web sites. The largest -file in the distribution is a 5 MB in length, which simulates the occasional -MPEG or other animation file which is downloaded. This filelist should be -used for all published Webstone numbers. Note that running WebStone 2.0 -with the sort of fileset given in WebStone 1.1 will not yield a comparable -benchmark. In general, the WebStone 2.0 filelist will yield lower rates -for connections/second, but higher rates for throughput - the two sets of -numbers cannot be compared.</P> -<P>When reporting NSAPI numbers, the filelist.dynamic-heavy filelist should -be used. For CGI numbers, the filelist.cgi-heavy filelist should be used.</P> -<P><B>Benchmark Run Configuration:</B> For a reported WebStone run, the runtime must be set at least 10 minutes. -This provides adequate time for the server and client configuration to reach -a steady state, and then provides a length of time long enough to cancel -out the high variations seen in the first few minutes of the run. The number -of clients should also vary from 20 to 100 in increments of 10 so that performance -of the server under a wide variety of loads can be observed.</P> -<P><B>Server Configuration:</B> The number of threads/processes is open to the discretion of the benchmarkers. -However, whether server side logging is on must be explicitly reported. -When logging is turned on, it must be in the common logfile format, and -only IP addresses should be logged. Parsed HTML is recommended to be turned -off.</P> -<P>Proxy Configuration: The configuration of how often the proxy server polls -the actual server for refreshes of it's cache should be described, as well -as any information</P> -<P><B>Server Machine Configuration:</B> When reporting runs, it is necessary that the operating system, memory -configuration and any special operating system modifications be reported, -especially changes to the TCP/IP stack.</P> -<P><B>Testbed configuration: </B>Reported runs must include information about the network topology being -used, as well as the number and type of machines generating load.</P> -<P>All reported runs must include the information summarized by webstone -results, -excluding the timestamp. This includes: number of clients, connections per -second, little's law number, latency, error level and throughput. Preferably -in a table format.</P> -</BODY> -</HTML> diff --git a/apps/JAWS/clients/WebSTONE/src/Makefile b/apps/JAWS/clients/WebSTONE/src/Makefile deleted file mode 100644 index d57dfffcd8f..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/Makefile +++ /dev/null @@ -1,112 +0,0 @@ -# Generated automatically from Makefile.in by configure. -# -# WebStone src/Makefile.in, version 2.0a5 -# last modified 12 Dec 1995 by mblakele@engr.sgi.com -# - -PRODUCT = webstone -VERSION = 2.0b4 - -DYNAMICDEFS = -DMCC_HTTPD -DXP_UNIX -DYNAMICINCLUDES = -I/usr/ns-home/nsapi/include - -LD_SHAREDCMD = ld -shared - -CC = cc -LIBS = -lsocket -lm -lthread #-lm -LDFLAGS = -INCLUDES = $(DYNAMICINCLUDES) -CFLAGS = -fast -CPPFLAGS = -DEFS = -DHAVE_CONFIG_H $(DYNAMICDEFS) - -BINDIR = ../bin -CP = cp -RM = rm -f - -EXECUTABLE1 = webmaster -MAIN1 = webmaster.c -EXECUTABLE2 = webclient -MAIN2 = webclient.c -EXECUTABLE3 = genrand -MAIN3 = genrand.c - -MASTERSRCS = timefunc.c bench.c parse_file_list.c statistics.c \ - errexit.c sysdep.c - -STONESRCS = timefunc.c get.c \ - parse_file_list.c bench.c statistics.c errexit.c \ - sysdep.c - -#For Solaris 2.x, remove the comment from the following lines -LIBS = -lm -lnsl -lsocket -#-L/usr/ucblib -lucb -#INCLUDES = -I/usr/ns-home/nsapi/include -I/usr/ucbinclude - -OPTIMIZATION = -O -COMPILE = $(CC) $(CFLAGS) $(DEFS) $(INCLUDES) - -MASTEROBJS = webmaster.o $(MASTERSRCS:.c=.o) -STONEOBJS = webclient.o $(STONESRCS:.c=.o) -GENRANDOBJS = genrand.o - -TARGETS = $(EXECUTABLE1) $(EXECUTABLE2) $(EXECUTABLE3) - -.SUFFIXES: -.SUFFIXES: .c .o -.c.o: - @echo "COMPILING FILE " $< - $(COMPILE) -c $< -o $@ - -all: $(TARGETS) - -install: all - $(CP) $(TARGETS) $(BINDIR) - -pure: all - purify -mail-to-user=root webclient - $(CP) webclient.pure $(BINDIR)/webclient - $(RM) webclient.pure - purify -mail-to-user=root webmaster - $(CP) webmaster.pure $(BINDIR)/webmaster - $(RM) webmaster.pure - -clean: - $(RM) $(MASTEROBJS) $(STONEOBJS) $(GENRANDOBJS) - $(RM) webmaster.pure webclient.pure - -clobber: clean - $(RM) config.cache config.log config.status config.h Makefile - $(RM) $(TARGETS) - -webmaster.o: webmaster.c bench.h parse_file_list.h statistics.h \ - sysdep.h timefunc.h debug.h config.h - -webclient.o: webclient.c bench.h debug.h get.h \ - parse_file_list.h statistics.h sysdep.h timefunc.h config.h - -timefunc.o: timefunc.c timefunc.h bench.h debug.h statistics.h \ - sysdep.h config.h - -bench.o: bench.c bench.h debug.h statistics.h sysdep.h timefunc.h config.h - -errexit.o: errexit.c sysdep.h config.h - -statistics.o: statistics.c statistics.h sysdep.h config.h - -cgi: cgi-send.o - $(COMPILE) cgi-send.o -o cgi-send.cgi - -nsapi: nsapi-send.o - $(LD_SHAREDCMD) nsapi-send.o -o nsapi-send.so - -webmaster: $(MASTEROBJS) - $(COMPILE) $(MASTEROBJS) $(LIBPATH) $(LIBS) -o $(EXECUTABLE1) - -webclient: $(STONEOBJS) - $(COMPILE) $(STONEOBJS) $(LIBPATH) $(LIBS) -lthread -o $(EXECUTABLE2) - -genrand: $(GENRANDOBJS) - $(COMPILE) $(GENRANDOBJS) $(LIBPATH) $(LIBS) -o $(EXECUTABLE3) - -# diff --git a/apps/JAWS/clients/WebSTONE/src/Makefile.in b/apps/JAWS/clients/WebSTONE/src/Makefile.in deleted file mode 100644 index da887d4a6c7..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/Makefile.in +++ /dev/null @@ -1,110 +0,0 @@ -# -# WebStone src/Makefile.in, version 2.0a5 -# last modified 12 Dec 1995 by mblakele@engr.sgi.com -# - -PRODUCT = @PRODUCT@ -VERSION = @VERSION@ - -DYNAMICDEFS = -DMCC_HTTPD -DXP_UNIX -DYNAMICINCLUDES = -I/usr/ns-home/nsapi/include - -LD_SHAREDCMD = ld -shared - -CC = @CC@ -LIBS = @LIBS@ #-lm -LDFLAGS = @LDFLAGS@ -INCLUDES = $(DYNAMICINCLUDES) -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ -DEFS = @DEFS@ $(DYNAMICDEFS) - -BINDIR = ../bin -CP = cp -RM = rm -f - -EXECUTABLE1 = webmaster -MAIN1 = webmaster.c -EXECUTABLE2 = webclient -MAIN2 = webclient.c -EXECUTABLE3 = genrand -MAIN3 = genrand.c - -MASTERSRCS = timefunc.c bench.c parse_file_list.c statistics.c \ - errexit.c sysdep.c - -STONESRCS = timefunc.c get.c \ - parse_file_list.c bench.c statistics.c errexit.c \ - sysdep.c - -#For Solaris 2.x, remove the comment from the following lines -#LIBS = -lm -lnsl -lsocket -L/usr/ucblib -lucb -#INCLUDES = -I/usr/ns-home/nsapi/include -I/usr/ucbinclude - -OPTIMIZATION = -O -COMPILE = $(CC) $(CFLAGS) $(DEFS) $(INCLUDES) - -MASTEROBJS = webmaster.o $(MASTERSRCS:.c=.o) -STONEOBJS = webclient.o $(STONESRCS:.c=.o) -GENRANDOBJS = genrand.o - -TARGETS = $(EXECUTABLE1) $(EXECUTABLE2) $(EXECUTABLE3) - -.SUFFIXES: -.SUFFIXES: .c .o -.c.o: - @echo "COMPILING FILE " $< - $(COMPILE) -c $< -o $@ - -all: $(TARGETS) - -install: all - $(CP) $(TARGETS) $(BINDIR) - -pure: all - purify -mail-to-user=root webclient - $(CP) webclient.pure $(BINDIR)/webclient - $(RM) webclient.pure - purify -mail-to-user=root webmaster - $(CP) webmaster.pure $(BINDIR)/webmaster - $(RM) webmaster.pure - -clean: - $(RM) $(MASTEROBJS) $(STONEOBJS) $(GENRANDOBJS) - $(RM) webmaster.pure webclient.pure - -clobber: clean - $(RM) config.cache config.log config.status config.h Makefile - $(RM) $(TARGETS) - -webmaster.o: webmaster.c bench.h parse_file_list.h statistics.h \ - sysdep.h timefunc.h debug.h config.h - -webclient.o: webclient.c bench.h debug.h get.h \ - parse_file_list.h statistics.h sysdep.h timefunc.h config.h - -timefunc.o: timefunc.c timefunc.h bench.h debug.h statistics.h \ - sysdep.h config.h - -bench.o: bench.c bench.h debug.h statistics.h sysdep.h timefunc.h config.h - -errexit.o: errexit.c sysdep.h config.h - -statistics.o: statistics.c statistics.h sysdep.h config.h - -cgi: cgi-send.o - $(COMPILE) cgi-send.o -o cgi-send.cgi - -nsapi: nsapi-send.o - $(LD_SHAREDCMD) nsapi-send.o -o nsapi-send.so - -webmaster: $(MASTEROBJS) - $(COMPILE) $(MASTEROBJS) $(LIBPATH) $(LIBS) -o $(EXECUTABLE1) - -webclient: $(STONEOBJS) - $(COMPILE) $(STONEOBJS) $(LIBPATH) $(LIBS) -o $(EXECUTABLE2) - -genrand: $(GENRANDOBJS) - $(COMPILE) $(GENRANDOBJS) $(LIBPATH) $(LIBS) -o $(EXECUTABLE3) - -# diff --git a/apps/JAWS/clients/WebSTONE/src/README b/apps/JAWS/clients/WebSTONE/src/README deleted file mode 100755 index 2061342b7ae..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/README +++ /dev/null @@ -1,232 +0,0 @@ -README WebStone 2.0 Release version - -WARNING: WebStone 2.0 results should not be compared with WebStone 1.1 - results. Even under the same fileset performance will not be - equivalent. - -Please see the notes for 2.0beta6 for quick and dirty install - This version includes a port of the webstone source code to Windows -NT. This port is still in progress, so it is not possible to guarantee -that everything is working correctly - however in our test configurations -it has performed correctly. Note that the supporting scripts and report -generating code has not been ported to NT yet. - - This version also institutes some basic run rules to eliminate the -lack of conformity in Webstone performance quotes. - To report Webstone numbers, some basic rules should be followed: - - 1) The fileset used for the test must be the fileset.standard fileset - included in the distribution. Tests of CGI performance must be - with the file filelist.cgi-heavy, and tests of NSAPI performance - must be carried out with filelist.dynamic-heavy - - 2) The run time should be set for 10 minutes, and the number of - clients should vary from 20 clients to 100 clients in increments - of 10. When a connections/second time is quoted, it must include - information about the number of clients involved. - - 3) Any special TCP/IP tuning which the server has recieved should - be documented, as well as HTTPD server version and configuration - information such as logging, DNS lookups and number of threads. - - -README - WebStone 2.0beta6 - -WARNING: Do not compare WebStone 2.0 results with WebStone 1.0 results. - WebStone 2.0 introduces significant changes in testing methodology - and reporting. - -This is the WebStone benchmark. Quick and dirty install: - - set up a Web server - - put this directory (WebStone) on a seperate machine (the "controller") - - "./webstone -setup", which does the following: - - gui-configure - This script may fail if you don't have a Web browser or - Perl5. Don't worry, unless you want to use the GUI. - - autoconf - If the GNU autoconf fails for your OS, please forward the - error messages, and any porting hints, to the author. - - make install - This may not be necessary, since IRIX binaries are included. - - edit conf/testbed to reflect your site - See the doc/FAQ-webstone.html for details. - - ./webstone -genfiles will put the files in conf/fileset - onto your Web server. - - ./webstone - - to display a table of results: ./webstone -results - -If you'd like to try out the GUI for WebStone: - - run "./webstone -setup", as above. - - make sure you have a Web browser installed - - ./configure - - ./webstone -gui - -Files of interest: - README: This document. - README.FIRST: Quick and dirty directions. - README.DynamicWorkload: Information on the CGI and NSAPI workloads. - webstone: wrapper shell script for everything. - Takes options: - -gui: start the GUI mode - -kill: kill stray WebStone processes - -genfiles: build files (from conf/fileset) - and rcp onto the server $SERVER - - results: print table of results - -setup: initial make and setup - -silent: runs in the background - -tail: tail -f of most recent run - -Files of interest (./src): - Makefile, *.c, *.h: The Webstone source code - -Files of interest (./bin): - checkfilelist: uses rsh to check web server for files in filelist. - genfiles, genrand: generates files of arbitrary length. - getstats: Collects network statistics from Web server, clients. - killbench: terminates stray WebStone processes. - rebootall: reboots all WebStone webclients. - runbench: wrapper script for WebStone. - webmaster: WebStone controller executable. - webstone: WebStone client executable. - wscollect: reports results in tabular format. - -Files of interest (./conf): - filelist: default list of files on the Web server, - with workload description. - filelist.photo: Model of a popular Web site - containing photographic images. - filelist.ss: Model of SGI's Silicon Surf WWW site. - fileset: list of files for genfiles to create. - testbed: config file describing Web server, client, and network setup. - -Documentation (./doc): - FAQ.html: The FAQ, current as of this distribution. - LICENSE: Legal status of WebStone. - testbed.help: Explains the parameters in conf/testbed. - webstone-white-paper.ps: The original WebStone white paper. - webstone.gif: The WebStone logo. - -Additional documentation: - FAQ.html: Frequently Asked Questions, with answers - webstone.ps: PostScript white paper on WebStone - -Problems, etc. may be addressed to the WebStone mailing list. -Read the FAQ for details. - -Release Notes (2.0 beta6): - * fixed a bug for Web servers not on port 80 - * further changes to bin/wscollect.pl - -Release Notes (2.0 beta5): - * numerous minor fixes suggested by gcc -Wall -pedantic - * updated FAQ - * changed bin/wscollect.pl to use Perl formats - -Release Notes (2.0 beta4): - * added #include <sys/time.h> to bench.h - * changed webclient located to $TMPDIR - this should help people - who don't want to run WebStone as root - * changed check for libm to floor() instead of sqrt(). Apparently - some systems implement sqrt() in libc - let's hope no one implement - floor() in libc and sqrt() in libm! - -Release Notes (2.0 beta3): - * more portability fixes - * successfully compiled on FreeBSD 2.2, IRIX without any source - changes - -Release Notes (2.0 beta2): - * additional timezone fixes for SunOS - -Release Notes (2.0 beta1): - * fixed a bug in the rexec portion of webmaster.c - * fixed a bug in the usage() routine of webmaster.c - * added bin/genfiles-from-filelist.sh - - bin/genfiles-from-filelist.sh <filename> - - generates appropriate-length files from <filename> - - <filename> must contain three fields: - <relative URL> <weight> #<size in bytes> - example: /file.html 1 #1024 - * added bin/mine-logs.pl - - usage: mine-logs.pl <filename> - where <filename> is an http server log file - - writes a WebStone workload to standard output - -Release Notes (2.0 alpha5): - * revised default testbed file - * changed wscollect to wscollect.pl for consistency - * changed webstone-gui to webstone-gui.pl for consistency - * added some NT porting hints - * added autoconf, which should help Linux and SunOS porting - -Release Notes (2.0 alpha4): - * added SunOS and Linux portability elements - * new scheme for random access to pages - * converted several static arrays to dynamic pointers - -Release Notes (2.0 alpha2): - * fixed per-page statistics - * new, client-independent data-passing scheme - * added support for proxy servers - -Release Notes (2.0 alpha1): - * new filelist scheme - however, this breaks per-page statistics - * minor fixes - -Release Notes (1.1): - * Improved webclient performance by combining GET and ACCEPT - HTTP headers in one write() call. - * Improved webclient performance on systems that always attempt - to map protocol names to numbers using YP. - * WARNING: since the old code introduced a significant latency - in some systems, DO NOT compare WebStone 1.1 results - with results generated by any previous versions. - -Release Notes (1.0.3): - * Netscape Server 1.1.2 exposed a couple bugs, which I've now fixed. - -Release Notes (1.0.2): - * Fixed runbench so that ITERATIONS, MINCLIENTS, and MAXCLIENTS don't - have to have a common denominator any more. - * Fixed a few cosmetic bugs. - -Release Notes (1.0.1): - * Fixed select() bug in webmaster - -Release Notes (1.0 final): - * Fixed the "Error reading 2nd timing info" bug - * Fixed numerous bugs in the GUI - * Froze feature set. Work can now begin on WebStone 1.1 - -Release Notes (1.0b3): - * New Web browser GUI - NOTE: most Web browsers take up substantial CPU time. - If you run the GUI, we recommend that you make the controller - a separate machine, and don't run any WebStone clients on it. - * Minor bug fixes - Squashed some dubious error messages, fixed some client- - controller communications problems. - * Reporting changes - Changes the units and order of the final summary statistics. - Basically, this is for my own convenience, so I don't have to - massage the data quite so much before using it. wscollect - now reports only the metrics I regard as important - but all - metrics are still reported in the runs/*/run files. - -LEGAL STUFF: - -This file and all files contained in this directory are -copyright 1995, Silicon Graphics, Inc. - -This software is provided without support and without any obligation on the -part of Silicon Graphics, Inc. to assist in its use, correction, modification -or enhancement. There is no guarantee that this software will be included in -future software releases, and it probably will not be included. - -THIS SOFTWARE IS PROVIDED "AS IS" WITH NO WARRANTIES OF ANY KIND INCLUDING THE -WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE, -OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - -In no event will Silicon Graphics, Inc. be liable for any lost revenue or -profits or other special, indirect and consequential damages, even if -Silicon Graphics, Inc. has been advised of the possibility of such damages. diff --git a/apps/JAWS/clients/WebSTONE/src/acconfig.h b/apps/JAWS/clients/WebSTONE/src/acconfig.h deleted file mode 100644 index ea85c00c0ba..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/acconfig.h +++ /dev/null @@ -1,15 +0,0 @@ -/* Special definitions for autoheader - Copyright (C) 1995 Silicon Graphics, Inc. -$Header$ -*/ - -/* Define to the name of the distribution. */ -#undef PRODUCT - -/* Define to the version of the distribution. */ -#undef VERSION - -/* Should we use timezone in gettimeofday? */ -#undef USE_TIMEZONE - -/* end */ diff --git a/apps/JAWS/clients/WebSTONE/src/bench.c b/apps/JAWS/clients/WebSTONE/src/bench.c deleted file mode 100644 index 48007321f23..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/bench.c +++ /dev/null @@ -1,632 +0,0 @@ -/************************************************************************** - * * - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ - -#include <stdio.h> -#include <errno.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <math.h> -#include <limits.h> -#include <float.h> -#ifndef WIN32 -#include <unistd.h> -#include <sys/time.h> -#include <sys/uio.h> -#include <sys/param.h> -#include <netdb.h> -#else -#include <windows.h> -#include <winsock.h> -#endif /* WIN32 */ -#include "sysdep.h" -#include "bench.h" - - -/* allocate memory and exit if out of memory */ -void *mymalloc(size_t size) { -void *ptr; - - ptr = malloc(size); - if (ptr == NULL) - errexit("Call to malloc() failed\n"); - return ptr; -} - -/* - * Receive n bytes from a socket - */ -int -recvdata(SOCKET sock, char *ptr, int nbytes) { - - int nleft, nread; - - nleft = nbytes; - while (nleft > 0) - { - D_PRINTF( "In recvdata(%d, %d)\n", sock, nleft ); - nread = NETREAD(sock, ptr, nleft); - D_PRINTF( "NETREAD() returned %d\n", nread ); - if (BADSOCKET(nread) || nread == 0) - { - /* return error value NETWRITE */ - D_PRINTF( "Error in recvdata(): %s\n",neterrstr() ); - return(nread); - } - - D_PRINTF( "NETREAD() data: \"%.*s\"\n", nread, ptr); - nleft -= nread; - ptr += nread; - } /* end while */ - - /* return >= 0 */ - return(nbytes - nleft); - -} /* end recvdata */ - - -/* - * Send n bytes to a socket - */ -int -senddata(SOCKET sock, char *ptr, int nbytes) { - int nleft, nwritten; - - D_PRINTF( "In senddata(%d, \"%.*s\", %d)\n", sock, nbytes, ptr, nbytes ); - nleft = nbytes; - while (nleft > 0) - { - nwritten = NETWRITE(sock, ptr, nleft); - D_PRINTF( "senddata() returned %d\n", nwritten ); - if (BADSOCKET(nwritten)) - { - /* return error value from NETWRITE */ - D_PRINTF( "Error in senddata(): %s\n", neterrstr() ); - return(nwritten); - } - nleft -= nwritten; - ptr += nwritten; - } - return(nbytes - nleft); - -} /* end senddata */ - -/* GENERAL NOTE: the conversion routines that follow pass their results - * back in a static arrays. A second call to the same routine overwrites - * the previous buffer value for that routine. If you want to save the - * value in the buffer copy it to another variable. - */ - -char * -timeval_to_text(const struct timeval *the_timeval) { - /* - * given a timeval (seconds and microseconds), put the text - * "seconds.microseconds" into timeval_as_text - */ - THREAD static char timeval_as_text[SIZEOF_TIMEVALTEXT+1]; - int seconds, microseconds; - int returnval = 0; - - seconds = the_timeval->tv_sec; - microseconds = the_timeval->tv_usec; - returnval = sprintf(timeval_as_text, - "%10d.%6.6d\t", seconds, microseconds); - return timeval_as_text; -} - - -char * -double_to_text(const double the_double) { - /* - * given a double, return text - */ - THREAD static char double_as_text[SIZEOF_DOUBLETEXT + 1]; - int returnval = 0; - - returnval = sprintf(double_as_text, "%17.01f\t", the_double); - return(double_as_text); -} - -struct timeval -text_to_timeval(char *timeval_as_text) { - int returnval = 0; - long int seconds, microseconds; - struct timeval the_timeval; - - D_PRINTF("T/%d %s\n", (int)timeval_as_text, timeval_as_text); - returnval = sscanf(timeval_as_text, "%ld.%ld", - &seconds, µseconds); - the_timeval.tv_sec = seconds; - the_timeval.tv_usec = microseconds; - return the_timeval; -} - -double -text_to_double(char *double_as_text) { - double the_double = 0; - int returnval = 0; - - D_PRINTF("D/%d %s\n", (int)double_as_text, double_as_text); - returnval = sscanf(double_as_text, "%lf", &the_double); - return(the_double); -} - - -rqst_stats_t * -text_to_rqst_stats(char *rqst_stats_as_text) { - THREAD static rqst_stats_t rqst_stats; - rqst_stats_t *the_rqst_stats = &rqst_stats; - - the_rqst_stats->totalresponsetime = - text_to_timeval(strtok(rqst_stats_as_text, "\t")); - - the_rqst_stats->totalresponsetimesq = - text_to_double(strtok((char *)NULL, "\t")); - - the_rqst_stats->minresponsetime = - text_to_timeval(strtok((char *)NULL, "\t")); - - the_rqst_stats->maxresponsetime = - text_to_timeval(strtok((char *)NULL, "\t")); - - the_rqst_stats->totalconnecttime = - text_to_timeval(strtok((char *)NULL, "\t")); - - the_rqst_stats->totalconnecttimesq = - text_to_double(strtok((char *)NULL, "\t")); - - the_rqst_stats->minconnecttime = - text_to_timeval(strtok((char *)NULL, "\t")); - - the_rqst_stats->maxconnecttime = - text_to_timeval(strtok((char *)NULL, "\t")); - - the_rqst_stats->totalconnects = (unsigned long) - text_to_double(strtok((char *)NULL, "\t")); - - the_rqst_stats->totalerrs = (unsigned long) - text_to_double(strtok((char *)NULL, "\t")); - - the_rqst_stats->totalerrortime = - text_to_timeval(strtok((char *)NULL, "\t")); - - the_rqst_stats->totalbytes = - text_to_double(strtok((char *)NULL, "\t")); - - the_rqst_stats->totalbytessq = - text_to_double(strtok((char *)NULL, "\t")); - - the_rqst_stats->minbytes = - text_to_double(strtok((char *)NULL, "\t")); - - the_rqst_stats->maxbytes = - text_to_double(strtok((char *)NULL, "\t")); - - the_rqst_stats->totalbody = - text_to_double(strtok((char *)NULL, "\t")); - - the_rqst_stats->totalbodysq = - text_to_double(strtok((char *)NULL, "\t")); - - the_rqst_stats->minbody = - text_to_double(strtok((char *)NULL, "\t")); - - the_rqst_stats->maxbody = - text_to_double(strtok((char *)NULL, "\t")); - - return(the_rqst_stats); -} /* end text_to_rqst_stats */ - - -char * -rqst_stats_to_text(rqst_stats_t *the_rqst_stats) { - THREAD static char rqst_stats_as_text[SIZEOF_RQSTSTATSTEXT]; - char *tmpbuf; - - *rqst_stats_as_text = 0; - - tmpbuf = timeval_to_text(&(the_rqst_stats->totalresponsetime)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->totalresponsetimesq)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = timeval_to_text(&(the_rqst_stats->minresponsetime)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = timeval_to_text(&(the_rqst_stats->maxresponsetime)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = timeval_to_text(&(the_rqst_stats->totalconnecttime)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->totalconnecttimesq)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = timeval_to_text(&(the_rqst_stats->minconnecttime)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = timeval_to_text(&(the_rqst_stats->maxconnecttime)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->totalconnects)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->totalerrs)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = timeval_to_text(&(the_rqst_stats->totalerrortime)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->totalbytes)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->totalbytessq)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->minbytes)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->maxbytes)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->totalbody)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->totalbodysq)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->minbody)); - strcat(rqst_stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_rqst_stats->maxbody)); - strcat(rqst_stats_as_text, tmpbuf); - - D_PRINTF( "rqst_stats_to_text returning %d: %s\n", - strlen(rqst_stats_as_text), - rqst_stats_as_text ); - - return(rqst_stats_as_text); -} - - -stats_t * -text_to_stats(char *stats_as_text) { - int i; - rqst_stats_t *the_rqst_stats; - THREAD static stats_t stats; - stats_t *the_stats = &stats; - - D_PRINTF( "Parsing stats: %s\n", stats_as_text ); - /* grab stats.rs */ - the_rqst_stats = text_to_rqst_stats(stats_as_text); - the_stats->rs = *the_rqst_stats; - - /* grab main structure */ - the_stats->starttime = text_to_timeval(strtok((char *)NULL, "\t")); - the_stats->endtime = text_to_timeval(strtok((char *)NULL, "\t")); - the_stats->datatime = text_to_timeval(strtok((char *)NULL, "\t")); - the_stats->totalpages = (unsigned long) text_to_double(strtok((char *)NULL, "\t")); - the_stats->total_num_of_files = (unsigned int) text_to_double(strtok((char *)NULL, "\t")); - for (i = 0; i < number_of_pages; i++) - { - the_stats->page_numbers[i] = (unsigned int) text_to_double(strtok((char *)NULL, "\t")); - } - /* return bytes read */ - D_PRINTF( "Returning stats\n"); - return(the_stats); -} /* end text_to_stats */ - - - -char * -stats_to_text(const stats_t *the_stats) { - int i; - THREAD static char stats_as_text[SIZEOF_STATSTEXT]; - char *tmpbuf; - rqst_stats_t the_rqst_stats; - - *stats_as_text = 0; - - /* stats.rs */ - the_rqst_stats = the_stats->rs; - tmpbuf = rqst_stats_to_text(&the_rqst_stats); - strcat(stats_as_text, tmpbuf); - - /* main structure */ - - tmpbuf = timeval_to_text(&(the_stats->starttime)); - strcat(stats_as_text, tmpbuf); - - tmpbuf = timeval_to_text(&(the_stats->endtime)); - strcat(stats_as_text, tmpbuf); - - tmpbuf = timeval_to_text(&(the_stats->datatime)); - strcat(stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_stats->totalpages)); - strcat(stats_as_text, tmpbuf); - - tmpbuf = double_to_text((the_stats->total_num_of_files)); - strcat(stats_as_text, tmpbuf); - - for (i = 0; i < number_of_pages; i++) - { - tmpbuf = double_to_text((the_stats->page_numbers[i])); - strcat(stats_as_text, tmpbuf); - } - - strcat(stats_as_text, "\n"); - - return(stats_as_text); -} /* end stats_to_text */ - - - -page_stats_t * -text_to_page_stats(char *page_stats_as_text) { - rqst_stats_t *the_rqst_stats; - THREAD static page_stats_t pagestat; - page_stats_t *pagestats = &pagestat; - - /* grab stats.rs */ - the_rqst_stats = text_to_rqst_stats(page_stats_as_text); - - /* grab main structure */ - pagestats->totalpages = (unsigned long) text_to_double(strtok((char *)NULL, "\t")); - - pagestats->page_size = (unsigned int) text_to_double(strtok((char *)NULL, "\t")); - - pagestats->page_valid = (int) text_to_double(strtok((char *)NULL, "\t")); - - pagestats->rs = *the_rqst_stats; - /* return bytes read */ - - return(pagestats); -} /* end text_to_page_stats */ - - - -char * -page_stats_to_text(const page_stats_t *pagestats) { - THREAD static char page_stats_as_text[SIZEOF_PAGESTATSTEXT]; - char *tmpbuf; - rqst_stats_t the_rqst_stats; - - *page_stats_as_text = 0; - - /* stats.rs */ - the_rqst_stats = pagestats->rs; - tmpbuf = rqst_stats_to_text(&the_rqst_stats); - strcat(page_stats_as_text, tmpbuf); - - /* main structure */ - tmpbuf = double_to_text(pagestats->totalpages); - strcat(page_stats_as_text, tmpbuf); - - tmpbuf = double_to_text(pagestats->page_size); - strcat(page_stats_as_text, tmpbuf); - - tmpbuf = double_to_text(pagestats->page_valid); - strcat(page_stats_as_text, tmpbuf); - - strcat(page_stats_as_text, "\n"); - - return(page_stats_as_text); -} /* end page_stats_to_text */ - -void -rqtimer_init(rqst_timer_t *p) { - memset(p, 0, sizeof(*p)); -} - -void -rqstat_init(rqst_stats_t *p) { - memset(p, 0, sizeof(*p)); - - p->minbytes = DBL_MAX; - p->minbody = DBL_MAX; - p->minconnecttime.tv_sec = LONG_MAX; - p->minconnecttime.tv_usec = LONG_MAX; - p->minresponsetime.tv_sec = LONG_MAX; - p->minresponsetime.tv_usec = LONG_MAX; -} - -void -stats_init(stats_t *p) { - - memset(p, 0, sizeof(*p)); - - p->rs.minbytes = DBL_MAX; - p->rs.minbody = DBL_MAX; - p->rs.minconnecttime.tv_sec = LONG_MAX; - p->rs.minconnecttime.tv_usec = LONG_MAX; - p->rs.minresponsetime.tv_sec = LONG_MAX; - p->rs.minresponsetime.tv_usec = LONG_MAX; -} - -void -page_stats_init(page_stats_t *p) { - - memset(p, 0, sizeof(*p)); - - /* commented out so that unread pages result in - page_stats_as_text buffer overflow - p->rs.minbytes = DBL_MAX; - p->rs.minbody = DBL_MAX; - p->rs.minconnecttime.tv_sec = LONG_MAX; - p->rs.minconnecttime.tv_usec = LONG_MAX; - p->rs.minresponsetime.tv_sec = LONG_MAX; - p->rs.minresponsetime.tv_usec = LONG_MAX; - - */ -} - -void -rqstat_times(rqst_stats_t *rs, rqst_timer_t *rt) -{ - double t; - - compdifftime(&(rt->exittime), &(rt->entertime), - &(rs->totalresponsetime)); - t = timevaldouble(&(rs->totalresponsetime)); - rs->totalresponsetimesq = t * t; - - rs->minresponsetime = rs->totalresponsetime; - rs->maxresponsetime = rs->totalresponsetime; - - compdifftime(&(rt->afterconnect), &(rt->beforeconnect), - &(rs->totalconnecttime)); - - t = timevaldouble(&(rs->totalconnecttime)); - rs->totalconnecttimesq = t * t; - - rs->minconnecttime = rs->totalconnecttime; - rs->maxconnecttime = rs->totalconnecttime; - - rs->totalbody = rt->bodybytes; - rs->totalbodysq = ((double)(rt->bodybytes)) * ((double)(rt->bodybytes)); - rs->minbody = rt->bodybytes; - rs->maxbody = rt->bodybytes; - - rs->totalbytes = rt->totalbytes; - rs->totalbytessq = ((double)(rt->totalbytes)) * ((double)(rt->totalbytes)); - rs->minbytes = rt->totalbytes; - rs->maxbytes = rt->totalbytes; - - rs->totalconnects = 1; - rs->totalerrs = 0; - rs->totalerrortime.tv_sec = 0; - rs->totalerrortime.tv_usec = 0; -} - -void -rqstat_sum(rqst_stats_t *sum, rqst_stats_t *incr) -{ - addtime( &(sum->totalresponsetime), &(incr->totalresponsetime)); - mintime( &(sum->minresponsetime), &(incr->minresponsetime)); - maxtime( &(sum->maxresponsetime), &(incr->maxresponsetime)); - sum->totalresponsetimesq += incr->totalresponsetimesq; - - addtime( &(sum->totalconnecttime), &(incr->totalconnecttime)); - mintime( &(sum->minconnecttime), &(incr->minconnecttime)); - maxtime( &(sum->maxconnecttime), &(incr->maxconnecttime)); - sum->totalconnecttimesq += incr->totalconnecttimesq; - - sum->totalconnects += incr->totalconnects; - sum->totalerrs += incr->totalerrs; - addtime( &(sum->totalerrortime), &(incr->totalerrortime)); - - sum->totalbytes += incr->totalbytes; - - sum->totalbytessq += incr->totalbytessq; - sum->minbytes = min(sum->minbytes, incr->minbytes); - sum->maxbytes = max(sum->maxbytes, incr->maxbytes); - - sum->totalbody += incr->totalbody; - - sum->totalbodysq += incr->totalbodysq; - sum->minbody = min(sum->minbody, incr->minbody); - sum->maxbody = max(sum->maxbody, incr->maxbody); - -} - - -void -rqstat_print(rqst_stats_t *stats) -{ - rqstat_fprint(stdout, stats); -} - - -void -rqstat_fprint(FILE *f, rqst_stats_t *stats) -{ - struct timeval meantime, /*vartime,*/ stdtime; - - fprintf(f, "%d connection(s) to server, %d errors\n", - stats->totalconnects, stats->totalerrs); - - if (stats->totalconnects == 0) { - fprintf(f,"NO CONNECTIONS, THEREFORE NO STATISTICS\n" - "IS YOUR WEBSERVER RUNNING?\n" - "DO THE PAGES EXIST ON THE SERVER?\n"); - return; - } - - /* title */ - fprintf(f, "\n\t\t\t Average Std Dev Minimum Maximum\n\n"); - - /* first line (connect time) */ - avgtime(&(stats->totalconnecttime), - stats->totalconnects, &meantime); - - /* variancetime(&(stats->totalconnecttime), - stats->totalconnecttimesq, - stats->totalconnects, &vartime); */ - - stddevtime(&(stats->totalconnecttime), - stats->totalconnecttimesq, - stats->totalconnects, &stdtime); - - fprintf(f, "Connect time (sec) \t%3d.%6.6d %3d.%6.6d %3d.%6.6d %3d.%6.6d\n", - meantime.tv_sec, - meantime.tv_usec, - stdtime.tv_sec, - stdtime.tv_usec, - stats->minconnecttime.tv_sec, - stats->minconnecttime.tv_usec, - stats->maxconnecttime.tv_sec, - stats->maxconnecttime.tv_usec); - - /* second line (response time) */ - avgtime(&(stats->totalresponsetime), - stats->totalconnects, &meantime); - - /* variancetime(&(stats->totalresponsetime), - stats->totalresponsetimesq, - stats->totalconnects, &vartime); */ - - stddevtime(&(stats->totalresponsetime), - stats->totalresponsetimesq, - stats->totalconnects, &stdtime); - - fprintf(f, "Response time (sec) \t%3d.%6.6d %3d.%6.6d %3d.%6.6d %3d.%6.6d\n", - meantime.tv_sec, - meantime.tv_usec, - stdtime.tv_sec, - stdtime.tv_usec, - stats->minresponsetime.tv_sec, - stats->minresponsetime.tv_usec, - stats->maxresponsetime.tv_sec, - stats->maxresponsetime.tv_usec); - - /* 3rd-5th lines (response size, body size, # bytes moved */ - fprintf(f, "Response size (bytes) \t%10.0lf %10.0lf %10.0lf %10.0lf\n", - mean(stats->totalbytes, stats->totalconnects), - stddev(stats->totalbytes, stats->totalbytessq, - stats->totalconnects), - stats->minbytes, - stats->maxbytes); - - fprintf(f, "Body size (bytes) \t%10.0lf %10.0lf %10.0lf %10.0lf\n\n", - mean(stats->totalbody, stats->totalconnects), - stddev(stats->totalbody, stats->totalbodysq, - stats->totalconnects), - stats->minbody, - stats->maxbody); - - fprintf(f, "%.0lf body bytes moved + %.0lf header bytes moved = %.0lf total\n", - stats->totalbody, - stats->totalbytes - stats->totalbody, - stats->totalbytes); - -} diff --git a/apps/JAWS/clients/WebSTONE/src/bench.h b/apps/JAWS/clients/WebSTONE/src/bench.h deleted file mode 100644 index 069bf3c1694..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/bench.h +++ /dev/null @@ -1,273 +0,0 @@ -/************************************************************************** - * * - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ -#ifndef __BENCH_H__ -#define __BENCH_H__ -#include <stdio.h> -#include <stdarg.h> -#ifndef WIN32 -#include <sys/time.h> -#endif /* WIN32 */ - -#define USECINSEC 1000000 -#define MSECINSEC 1000 -#define MAX_ACCEPT_SECS 180 /* maximum time master will wait for listen() */ - -#define NCCARGS 4096 -#define MAXCLIENTS 1024 -#define MAXUSERNAME 25 -#define MAXPASSWD 20 -#define BUFSIZE 4096 - -#define MAXTOTALPROCS MAXCLIENTS /* overall max # of procs */ -#define MAXPROCSPERNODE MAXCLIENTS /* max # of procs/node */ - - -#define CONTENT_LENGTH_STRING "CONTENT-LENGTH:" -#define OKSTR "OK" -#define OKSTRLEN ((int)strlen(OKSTR)) -#define GOSTR "GO" -#define GOSTRLEN ((int)strlen(GOSTR)) -#define READYSTR "READY" -#define READYSTRLEN ((int)strlen(READYSTR)) -#define ABORTSTR "ABORT" -#define ABORTSTRLEN ((int)strlen(ABORTSTR)) - - -#define MAXNUMOFFILES 1 /* max # of files per page */ -#define URL_SIZE 1024 -#define MAXNUMOFPAGES 100 -#define SIZEOF_TIMEVALTEXT 18 -#define SIZEOF_DOUBLETEXT 18 -#define SIZEOF_RQSTSTATSTEXT ((7 * SIZEOF_TIMEVALTEXT) + \ - (12 * SIZEOF_DOUBLETEXT) + 1) -#define SIZEOF_STATSTEXTBASE (SIZEOF_RQSTSTATSTEXT + \ - (3 * SIZEOF_TIMEVALTEXT) + \ - (2 * SIZEOF_DOUBLETEXT) + 1) -#define SIZEOF_STATSTEXT (SIZEOF_STATSTEXTBASE + MAXNUMOFPAGES * SIZEOF_DOUBLETEXT) -#define SIZEOF_PAGESTATSTEXT (SIZEOF_RQSTSTATSTEXT + \ - (0 * SIZEOF_TIMEVALTEXT) + \ - (3 * SIZEOF_DOUBLETEXT) + 1) - -#define D_PRINTF debug && d_printf - -#ifdef USE_TIMEZONE -typedef struct rqst_timer { - struct timeval entertime; - struct timezone entertimezone; - struct timeval beforeconnect; - struct timezone beforeconnectzone; - struct timeval afterconnect; - struct timezone afterconnectzone; - struct timeval beforeheader; - struct timezone beforeheaderzone; - struct timeval afterheader; - struct timezone afterheaderzone; - struct timeval afterbody; - struct timezone afterbodyzone; - struct timeval exittime; - struct timezone exittimezone; - long unsigned int totalbytes; - long unsigned int bodybytes; - int valid; - long unsigned int page_number; -} rqst_timer_t; -#else -typedef struct rqst_timer { - struct timeval entertime; - struct timeval beforeconnect; - struct timeval afterconnect; - struct timeval beforeheader; - struct timeval afterheader; - struct timeval afterbody; - struct timeval exittime; - long unsigned int totalbytes; - long unsigned int bodybytes; - int valid; - long unsigned int page_number; -} rqst_timer_t; -#endif /* USE_TIMEZONE */ - -extern void rqtimer_init(rqst_timer_t *); - -#ifdef USE_TIMEZONE -typedef struct rqst_stats { - struct timeval totalresponsetime; - struct timezone totalresponsetimezone; - double totalresponsetimesq; - struct timeval minresponsetime; - struct timezone minresponsetimezone; - struct timeval maxresponsetime; - struct timezone maxresponsetimezone; - struct timeval totalconnecttime; - struct timezone totalconnecttimezone; - double totalconnecttimesq; - struct timeval minconnecttime; - struct timezone minconnecttimezone; - struct timeval maxconnecttime; - struct timezone maxconnecttimezone; - long unsigned int totalconnects; - long unsigned int totalerrs; - struct timeval totalerrortime; - struct timezone totalerrortimezone; - double totalbytes; - double totalbytessq; - double minbytes; - double maxbytes; - double totalbody; - double totalbodysq; - double minbody; - double maxbody; -} rqst_stats_t; -#else -typedef struct rqst_stats { - struct timeval totalresponsetime; - double totalresponsetimesq; - struct timeval minresponsetime; - struct timeval maxresponsetime; - struct timeval totalconnecttime; - double totalconnecttimesq; - struct timeval minconnecttime; - struct timeval maxconnecttime; - long unsigned int totalconnects; - long unsigned int totalerrs; - struct timeval totalerrortime; - double totalbytes; - double totalbytessq; - double minbytes; - double maxbytes; - double totalbody; - double totalbodysq; - double minbody; - double maxbody; -} rqst_stats_t; -#endif /* USE_TIMEZONE */ - -extern void rqstat_init(rqst_stats_t *); -extern void rqstat_sum(rqst_stats_t *, rqst_stats_t *); -extern void rqstat_print(rqst_stats_t *); -extern void rqstat_fprint(FILE *, rqst_stats_t *); -extern void rqstat_times(rqst_stats_t *, rqst_timer_t *); - -#ifdef USE_TIMEZONE -typedef struct stats { - /* char hostname[MAXHOSTNAMELEN]; */ - rqst_stats_t rs; - struct timeval starttime; - struct timezone starttimezone; - struct timeval endtime; - struct timezone endtimezone; - struct timeval datatime; - struct timezone datatimezone; - long unsigned int totalpages; - unsigned int total_num_of_files; - unsigned int page_numbers[MAXNUMOFPAGES]; -} stats_t; -#else -typedef struct stats { - /* char hostname[MAXHOSTNAMELEN]; */ - rqst_stats_t rs; - struct timeval starttime; - struct timeval endtime; - struct timeval datatime; - long unsigned int totalpages; - unsigned int total_num_of_files; - unsigned int page_numbers[MAXNUMOFPAGES]; -} stats_t; -#endif /* USE_TIMEZONE */ - -extern void stats_init(stats_t *); -extern stats_t * text_to_stats(char *); -extern char * stats_to_text(const stats_t *); - -typedef struct page_stats { - rqst_stats_t rs; - long unsigned int totalpages; - unsigned int page_size; - int page_valid; -} page_stats_t; - -extern void page_stats_init(page_stats_t *); -extern page_stats_t * text_to_page_stats(char *); -extern char * page_stats_to_text(const page_stats_t *); - -/* THIS STRUCTURE DEFINES A PAGE. */ -typedef struct page_list { - int load_num; - int num_of_files; - char *(filename[MAXNUMOFFILES]); - char *(servername[MAXNUMOFFILES]); - int port_number[MAXNUMOFFILES]; -}page_list_t; - - - -/* shared variables */ -extern THREAD FILE *debugfile; -extern int debug; - -extern int savefile; -extern int timeexpired; -extern long int number_of_pages; - -/* routines in bench.c */ - -extern void *mymalloc(size_t size); -extern int recvdata(SOCKET sock, char *ptr, int nbytes); -extern int senddata(SOCKET sock, char *ptr, int nbytes); -extern void rqstat_times(rqst_stats_t *rs, rqst_timer_t *rt); -/* note several others listed above */ - -/* routines in errexit.c */ - -void errexit(const char *, ...); -extern int returnerr(const char *, ...); -extern int d_printf(const char *, ...); -extern char *neterrstr(void); - -/* routines in get.c */ - -extern int get(char *loc, NETPORT port, char *url, rqst_timer_t *timer); - -/* routines in parse_file_list.c */ - -extern int count_file_list(const char *url_list_file); -extern void parse_file_list (const char *url_list_file, page_list_t *page_list, - long int *num_of_pages, long int *num_of_files); -extern long int load_percent(page_list_t *page_list, long int number_of_pages); - -/* routines in statistics.c (formerly statistics.h) */ - -extern double mean(const double, const int); -extern double variance(const double, const double, const int); -extern double stddev(const double, const double, const int); - -/* routines in timefunc.c (formerly timefunc.h) */ - -extern double timevaldouble(struct timeval *); -extern void doubletimeval(const double, struct timeval *); - -extern void addtime(struct timeval *, struct timeval *); -extern void compdifftime(struct timeval *, struct timeval *, struct timeval *); -extern void mintime(struct timeval *, struct timeval *); -extern void maxtime(struct timeval *, struct timeval *); -extern void avgtime(struct timeval *, int, struct timeval *); -extern void variancetime(struct timeval *, double, int, struct timeval *); -extern void stddevtime(struct timeval *, double, int, struct timeval *); - -extern void sqtime(struct timeval *, struct timeval *); - -extern double thruputpersec(const double, struct timeval *); - -/* routines in webclient.c */ - -extern SOCKET connectsock(char *host, NETPORT portnum, char *protocol); - -#endif /* !__BENCH_H__ */ diff --git a/apps/JAWS/clients/WebSTONE/src/cgi-send b/apps/JAWS/clients/WebSTONE/src/cgi-send Binary files differdeleted file mode 100755 index bc9be6561a8..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/cgi-send +++ /dev/null diff --git a/apps/JAWS/clients/WebSTONE/src/cgi-send.c b/apps/JAWS/clients/WebSTONE/src/cgi-send.c deleted file mode 100644 index 5e1641694af..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/cgi-send.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Send 10K file; send random bits. - * - */ - -#include <stdio.h> -#include <stdlib.h> - -#define FILE_SIZE 10240 -#define MALLOC_FAILURE "Out of memory" - -int -main() -{ - int filesize; - char *str_filesize; - char *buffer; - int index; - - printf("Content-type: text/plain\r\n\r\n"); - - if ( !(str_filesize = getenv("QUERY_STRING")) ) - filesize = FILE_SIZE; - else { - if ( !strncmp(str_filesize, "size=", 5) ) - filesize = atoi(&(str_filesize[5])); - else - filesize = FILE_SIZE; - } - - if ( !(buffer = (char *)malloc(filesize)) ) { - fwrite(MALLOC_FAILURE, strlen(MALLOC_FAILURE), 1, stdout); - return -1; - } - - for (index=0; index< filesize; index++) - /* generate random characters from A-Z */ - buffer[index] = rand() %26 + 63; - - fwrite(buffer, filesize, 1, stdout); - - free(buffer); - - return 0; -} diff --git a/apps/JAWS/clients/WebSTONE/src/client/webclient.mak b/apps/JAWS/clients/WebSTONE/src/client/webclient.mak deleted file mode 100755 index f7c492da2a8..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/client/webclient.mak +++ /dev/null @@ -1,479 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-!IF "$(CFG)" == ""
-CFG=webclient - Win32 Debug
-!MESSAGE No configuration specified. Defaulting to webclient - Win32 Debug.
-!ENDIF
-
-!IF "$(CFG)" != "webclient - Win32 Release" && "$(CFG)" !=\
- "webclient - 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 "webclient.mak" CFG="webclient - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "webclient - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "webclient - 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 "webclient - Win32 Debug"
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "webclient - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "WinRel"
-# PROP BASE Intermediate_Dir "WinRel"
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "WinRel"
-# PROP Intermediate_Dir "WinRel"
-OUTDIR=.\WinRel
-INTDIR=.\WinRel
-
-ALL : "$(OUTDIR)\webclient.exe" "$(OUTDIR)\webclient.bsc"
-
-CLEAN :
- -@erase "$(INTDIR)\bench.obj"
- -@erase "$(INTDIR)\bench.sbr"
- -@erase "$(INTDIR)\errexit.obj"
- -@erase "$(INTDIR)\errexit.sbr"
- -@erase "$(INTDIR)\get.obj"
- -@erase "$(INTDIR)\get.sbr"
- -@erase "$(INTDIR)\getopt.obj"
- -@erase "$(INTDIR)\getopt.sbr"
- -@erase "$(INTDIR)\gettimeofday.obj"
- -@erase "$(INTDIR)\gettimeofday.sbr"
- -@erase "$(INTDIR)\parse_file_list.obj"
- -@erase "$(INTDIR)\parse_file_list.sbr"
- -@erase "$(INTDIR)\statistics.obj"
- -@erase "$(INTDIR)\statistics.sbr"
- -@erase "$(INTDIR)\sysdep.obj"
- -@erase "$(INTDIR)\sysdep.sbr"
- -@erase "$(INTDIR)\timefunc.obj"
- -@erase "$(INTDIR)\timefunc.sbr"
- -@erase "$(INTDIR)\webclient.obj"
- -@erase "$(INTDIR)\webclient.sbr"
- -@erase "$(OUTDIR)\webclient.bsc"
- -@erase "$(OUTDIR)\webclient.exe"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FR /YX /c
-# ADD CPP /nologo /MTd /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FR /YX /c
-CPP_PROJ=/nologo /MTd /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE"\
- /FR"$(INTDIR)/" /Fp"$(INTDIR)/webclient.pch" /YX /Fo"$(INTDIR)/" /c
-CPP_OBJS=.\WinRel/
-CPP_SBRS=.\WinRel/
-# 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)/webclient.bsc"
-BSC32_SBRS= \
- "$(INTDIR)\bench.sbr" \
- "$(INTDIR)\errexit.sbr" \
- "$(INTDIR)\get.sbr" \
- "$(INTDIR)\getopt.sbr" \
- "$(INTDIR)\gettimeofday.sbr" \
- "$(INTDIR)\parse_file_list.sbr" \
- "$(INTDIR)\statistics.sbr" \
- "$(INTDIR)\sysdep.sbr" \
- "$(INTDIR)\timefunc.sbr" \
- "$(INTDIR)\webclient.sbr"
-
-"$(OUTDIR)\webclient.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(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 wsock32.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
-# SUBTRACT LINK32 /profile
-LINK32_FLAGS=wsock32.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)/webclient.pdb" /machine:I386 /out:"$(OUTDIR)/webclient.exe"
-LINK32_OBJS= \
- "$(INTDIR)\bench.obj" \
- "$(INTDIR)\errexit.obj" \
- "$(INTDIR)\get.obj" \
- "$(INTDIR)\getopt.obj" \
- "$(INTDIR)\gettimeofday.obj" \
- "$(INTDIR)\parse_file_list.obj" \
- "$(INTDIR)\statistics.obj" \
- "$(INTDIR)\sysdep.obj" \
- "$(INTDIR)\timefunc.obj" \
- "$(INTDIR)\webclient.obj"
-
-"$(OUTDIR)\webclient.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "webclient - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "WinDebug"
-# PROP BASE Intermediate_Dir "WinDebug"
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "WinDebug"
-# PROP Intermediate_Dir "WinDebug"
-OUTDIR=.\WinDebug
-INTDIR=.\WinDebug
-
-ALL : "$(OUTDIR)\webclient.exe" "$(OUTDIR)\webclient.bsc"
-
-CLEAN :
- -@erase "$(INTDIR)\bench.obj"
- -@erase "$(INTDIR)\bench.sbr"
- -@erase "$(INTDIR)\errexit.obj"
- -@erase "$(INTDIR)\errexit.sbr"
- -@erase "$(INTDIR)\get.obj"
- -@erase "$(INTDIR)\get.sbr"
- -@erase "$(INTDIR)\getopt.obj"
- -@erase "$(INTDIR)\getopt.sbr"
- -@erase "$(INTDIR)\gettimeofday.obj"
- -@erase "$(INTDIR)\gettimeofday.sbr"
- -@erase "$(INTDIR)\parse_file_list.obj"
- -@erase "$(INTDIR)\parse_file_list.sbr"
- -@erase "$(INTDIR)\statistics.obj"
- -@erase "$(INTDIR)\statistics.sbr"
- -@erase "$(INTDIR)\sysdep.obj"
- -@erase "$(INTDIR)\sysdep.sbr"
- -@erase "$(INTDIR)\timefunc.obj"
- -@erase "$(INTDIR)\timefunc.sbr"
- -@erase "$(INTDIR)\vc40.idb"
- -@erase "$(INTDIR)\vc40.pdb"
- -@erase "$(INTDIR)\webclient.obj"
- -@erase "$(INTDIR)\webclient.sbr"
- -@erase "$(OUTDIR)\webclient.bsc"
- -@erase "$(OUTDIR)\webclient.exe"
- -@erase "$(OUTDIR)\webclient.ilk"
- -@erase "$(OUTDIR)\webclient.pdb"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-# ADD BASE CPP /nologo /W3 /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FR /YX /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FR /YX /c
-CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_CONSOLE"\
- /FR"$(INTDIR)/" /Fp"$(INTDIR)/webclient.pch" /YX /Fo"$(INTDIR)/"\
- /Fd"$(INTDIR)/" /c
-CPP_OBJS=.\WinDebug/
-CPP_SBRS=.\WinDebug/
-# 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)/webclient.bsc"
-BSC32_SBRS= \
- "$(INTDIR)\bench.sbr" \
- "$(INTDIR)\errexit.sbr" \
- "$(INTDIR)\get.sbr" \
- "$(INTDIR)\getopt.sbr" \
- "$(INTDIR)\gettimeofday.sbr" \
- "$(INTDIR)\parse_file_list.sbr" \
- "$(INTDIR)\statistics.sbr" \
- "$(INTDIR)\sysdep.sbr" \
- "$(INTDIR)\timefunc.sbr" \
- "$(INTDIR)\webclient.sbr"
-
-"$(OUTDIR)\webclient.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(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 wsock32.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
-# SUBTRACT LINK32 /profile
-LINK32_FLAGS=wsock32.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)/webclient.pdb" /debug /machine:I386\
- /out:"$(OUTDIR)/webclient.exe"
-LINK32_OBJS= \
- "$(INTDIR)\bench.obj" \
- "$(INTDIR)\errexit.obj" \
- "$(INTDIR)\get.obj" \
- "$(INTDIR)\getopt.obj" \
- "$(INTDIR)\gettimeofday.obj" \
- "$(INTDIR)\parse_file_list.obj" \
- "$(INTDIR)\statistics.obj" \
- "$(INTDIR)\sysdep.obj" \
- "$(INTDIR)\timefunc.obj" \
- "$(INTDIR)\webclient.obj"
-
-"$(OUTDIR)\webclient.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 "webclient - Win32 Release"
-# Name "webclient - Win32 Debug"
-
-!IF "$(CFG)" == "webclient - Win32 Release"
-
-!ELSEIF "$(CFG)" == "webclient - Win32 Debug"
-
-!ENDIF
-
-################################################################################
-# Begin Source File
-
-SOURCE=..\webclient.c
-DEP_CPP_WEBCL=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
- {$(INCLUDE)}"\sys\TYPES.H"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\webclient.obj" : $(SOURCE) $(DEP_CPP_WEBCL) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\webclient.sbr" : $(SOURCE) $(DEP_CPP_WEBCL) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\timefunc.c
-DEP_CPP_TIMEF=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\timefunc.obj" : $(SOURCE) $(DEP_CPP_TIMEF) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\timefunc.sbr" : $(SOURCE) $(DEP_CPP_TIMEF) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\sysdep.c
-DEP_CPP_SYSDE=\
- "..\config.h"\
- "..\sysdep.h"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\sysdep.obj" : $(SOURCE) $(DEP_CPP_SYSDE) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\sysdep.sbr" : $(SOURCE) $(DEP_CPP_SYSDE) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\statistics.c
-DEP_CPP_STATI=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\statistics.obj" : $(SOURCE) $(DEP_CPP_STATI) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\statistics.sbr" : $(SOURCE) $(DEP_CPP_STATI) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\parse_file_list.c
-DEP_CPP_PARSE=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
- {$(INCLUDE)}"\sys\TYPES.H"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\parse_file_list.obj" : $(SOURCE) $(DEP_CPP_PARSE) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\parse_file_list.sbr" : $(SOURCE) $(DEP_CPP_PARSE) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\gettimeofday.c
-DEP_CPP_GETTI=\
- {$(INCLUDE)}"\sys\TIMEB.H"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\gettimeofday.obj" : $(SOURCE) $(DEP_CPP_GETTI) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\gettimeofday.sbr" : $(SOURCE) $(DEP_CPP_GETTI) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\getopt.c
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\getopt.sbr" : $(SOURCE) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\get.c
-DEP_CPP_GET_C=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
- {$(INCLUDE)}"\sys\STAT.H"\
- {$(INCLUDE)}"\sys\TYPES.H"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\get.obj" : $(SOURCE) $(DEP_CPP_GET_C) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\get.sbr" : $(SOURCE) $(DEP_CPP_GET_C) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\errexit.c
-DEP_CPP_ERREX=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
- {$(INCLUDE)}"\sys\TYPES.H"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\errexit.obj" : $(SOURCE) $(DEP_CPP_ERREX) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\errexit.sbr" : $(SOURCE) $(DEP_CPP_ERREX) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\bench.c
-DEP_CPP_BENCH=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
- {$(INCLUDE)}"\sys\TYPES.H"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\bench.obj" : $(SOURCE) $(DEP_CPP_BENCH) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\bench.sbr" : $(SOURCE) $(DEP_CPP_BENCH) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-# End Target
-# End Project
-################################################################################
diff --git a/apps/JAWS/clients/WebSTONE/src/config.cache b/apps/JAWS/clients/WebSTONE/src/config.cache deleted file mode 100644 index c8705dca2f4..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/config.cache +++ /dev/null @@ -1,47 +0,0 @@ -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -ac_cv_c_const=${ac_cv_c_const='yes'} -ac_cv_c_cross=${ac_cv_c_cross='no'} -ac_cv_func_gethostname=${ac_cv_func_gethostname='yes'} -ac_cv_func_gettimeofday=${ac_cv_func_gettimeofday='yes'} -ac_cv_func_memcmp=${ac_cv_func_memcmp='yes'} -ac_cv_func_select=${ac_cv_func_select='yes'} -ac_cv_func_socket=${ac_cv_func_socket='yes'} -ac_cv_func_strerror=${ac_cv_func_strerror='yes'} -ac_cv_func_vprintf=${ac_cv_func_vprintf='yes'} -ac_cv_func_wait3=${ac_cv_func_wait3='yes'} -ac_cv_header_fcntl_h=${ac_cv_header_fcntl_h='yes'} -ac_cv_header_limits_h=${ac_cv_header_limits_h='yes'} -ac_cv_header_sgtty_h=${ac_cv_header_sgtty_h='yes'} -ac_cv_header_stdc=${ac_cv_header_stdc='yes'} -ac_cv_header_sys_time_h=${ac_cv_header_sys_time_h='yes'} -ac_cv_header_sys_wait_h=${ac_cv_header_sys_wait_h='yes'} -ac_cv_header_time=${ac_cv_header_time='yes'} -ac_cv_header_unistd_h=${ac_cv_header_unistd_h='yes'} -ac_cv_lib_compat=${ac_cv_lib_compat='no'} -ac_cv_lib_m=${ac_cv_lib_m='yes'} -ac_cv_lib_socket=${ac_cv_lib_socket='yes'} -ac_cv_lib_ucb=${ac_cv_lib_ucb='no'} -ac_cv_path_PERL=${ac_cv_path_PERL='/usr/sbin/perl'} -ac_cv_prog_AWK=${ac_cv_prog_AWK='nawk'} -ac_cv_prog_CC=${ac_cv_prog_CC='cc'} -ac_cv_prog_CPP=${ac_cv_prog_CPP='cc -E'} -ac_cv_prog_gcc=${ac_cv_prog_gcc='no'} -ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set='yes'} -ac_cv_struct_tm=${ac_cv_struct_tm='time.h'} -ac_cv_struct_tm_zone=${ac_cv_struct_tm_zone='no'} -ac_cv_type_signal=${ac_cv_type_signal='void'} -ac_cv_type_size_t=${ac_cv_type_size_t='yes'} -ac_cv_var_tzname=${ac_cv_var_tzname='yes'} diff --git a/apps/JAWS/clients/WebSTONE/src/config.guess b/apps/JAWS/clients/WebSTONE/src/config.guess deleted file mode 100755 index 2ff0eba28ac..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/config.guess +++ /dev/null @@ -1,565 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc. -# -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Written by Per Bothner <bothner@cygnus.com>. -# The master version of this file is at the FSF in /home/gd/gnu/lib. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit system type (host/target name). -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 8/24/94.) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - alpha:OSF1:V*:*) - # After 1.2, OSF1 uses "V1.3" for uname -r. - echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^V//'` - exit 0 ;; - alpha:OSF1:*:*) - # 1.2 uses "1.2" for uname -r. - echo alpha-dec-osf${UNAME_RELEASE} - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - amiga:NetBSD:*:*) - echo m68k-cbm-netbsd${UNAME_RELEASE} - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - Pyramid*:OSx*:*:*) - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - sun4*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - atari*:NetBSD:*:*) - echo m68k-atari-netbsd${UNAME_RELEASE} - exit 0 ;; - sun3*:NetBSD:*:*) - echo m68k-sun-netbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:NetBSD:*:*) - echo m68k-apple-netbsd${UNAME_RELEASE} - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - mips:*:4*:UMIPS) - echo mips-mips-riscos4sysv - exit 0 ;; - mips:*:5*:RISCos) - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ - -o ${TARGET_BINARY_INTERFACE}x = x ] ; then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i[34]86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - sed 's/^ //' << EOF >dummy.c - #include <sys/systemcfg.h> - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:4) - if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=4.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[3478]??:HP-UX:*:*) - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/7?? | 9000/8?[79] ) HP_ARCH=hppa1.1 ;; - 9000/8?? ) HP_ARCH=hppa1.0 ;; - esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - sed 's/^ //' << EOF >dummy.c - #include <unistd.h> - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY*C90:*:*:*) - echo c90-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; - hp3[0-9][05]:NetBSD:*:*) - echo m68k-hp-netbsd${UNAME_RELEASE} - exit 0 ;; - i[34]86:BSD/386:*:* | *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:NetBSD:*:*) - echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - *:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. - ld_help_string=`ld --help 2>&1` - if echo $ld_help_string | grep >/dev/null 2>&1 "supported emulations: elf_i[345]86"; then - echo "${UNAME_MACHINE}-unknown-linux" ; exit 0 - elif echo $ld_help_string | grep >/dev/null 2>&1 "supported emulations: i[345]86linux"; then - echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0 - elif echo $ld_help_string | grep >/dev/null 2>&1 "supported emulations: i[345]86coff"; then - echo "${UNAME_MACHINE}-unknown-linuxcoff" ; exit 0 - elif test "${UNAME_MACHINE}" = "alpha" ; then - echo alpha-unknown-linux ; exit 0 - else - # Either a pre-BFD a.out linker (linuxoldld) or one that does not give us - # useful --help. Gcc wants to distinguish between linuxoldld and linuxaout. - test ! -d /usr/lib/ldscripts/. \ - && echo "${UNAME_MACHINE}-unknown-linuxoldld" && exit 0 - # Determine whether the default compiler is a.out or elf - cat >dummy.c <<EOF -main(argc, argv) -int argc; -char *argv[]; -{ -#ifdef __ELF__ - printf ("%s-unknown-linux\n", argv[1]); -#else - printf ("%s-unknown-linuxaout\n", argv[1]); -#endif - return 0; -} -EOF - ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - fi ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. - i[34]86:DYNIX/ptx:4*:*) - echo i386-sequent-sysv4 - exit 0 ;; - i[34]86:*:4.*:* | i[34]86:SYSTEM_V:4.*:*) - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} - else - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - i[34]86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` - echo ${UNAME_MACHINE}-unknown-isc$UNAME_REL - elif /bin/uname -X 2>/dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-unknown-sysv32 - fi - exit 0 ;; - Intel:Mach:3*:*) - echo i386-unknown-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - M680[234]0:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0) - uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3 && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m680[234]0:LynxOS:2.[23]*:*) - echo m68k-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i[34]86:LynxOS:2.[23]*:*) - echo i386-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.[23]*:*) - echo sparc-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.[23]*:*) - echo rs6000-lynx-lynxos${UNAME_RELEASE} - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -cat >dummy.c <<EOF -#ifdef _SEQUENT_ -# include <sys/types.h> -# include <sys/utsname.h> -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include <sys/param.h> - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - printf ("%s-next-nextstep%s\n", __ARCHITECTURE__, version==2 ? "2" : "3"); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-unknown-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 -rm -f dummy.c dummy - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -#echo '(Unable to guess system type)' 1>&2 - -exit 1 diff --git a/apps/JAWS/clients/WebSTONE/src/config.h b/apps/JAWS/clients/WebSTONE/src/config.h deleted file mode 100644 index ae96e98e0a3..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/config.h +++ /dev/null @@ -1,90 +0,0 @@ -/* config.h. Generated automatically by configure. */ -/* config.h.in. Generated automatically from configure.in by autoheader. */ - -/* Define to empty if the keyword does not work. */ -/* #undef const */ - -/* Define if you don't have vprintf but do have _doprnt. */ -/* #undef HAVE_DOPRNT */ - -/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */ -#define HAVE_SYS_WAIT_H 1 - -/* Define if your struct tm has tm_zone. */ -/* #undef HAVE_TM_ZONE */ - -/* Define if you don't have tm_zone but do have the external array - tzname. */ -#define HAVE_TZNAME 1 - -/* Define if you have the vprintf function. */ -#define HAVE_VPRINTF 1 - -/* Define if you have the wait3 system call. */ -#define HAVE_WAIT3 1 - -/* Define as the return type of signal handlers (int or void). */ -#define RETSIGTYPE void - -/* Define to `unsigned' if <sys/types.h> doesn't define. */ -/* #undef size_t */ - -/* Define if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Define if you can safely include both <sys/time.h> and <time.h>. */ -#define TIME_WITH_SYS_TIME 1 - -/* Define if your <sys/time.h> declares struct tm. */ -/* #undef TM_IN_SYS_TIME */ - -/* Define to the name of the distribution. */ -#define PRODUCT "webstone" - -/* Define to the version of the distribution. */ -#define VERSION "2.0b4" - -/* Should we use timezone in gettimeofday? */ -#define USE_TIMEZONE 1 - -/* Define if you have the gethostname function. */ -#define HAVE_GETHOSTNAME 1 - -/* Define if you have the gettimeofday function. */ -#define HAVE_GETTIMEOFDAY 1 - -/* Define if you have the select function. */ -#define HAVE_SELECT 1 - -/* Define if you have the socket function. */ -#define HAVE_SOCKET 1 - -/* Define if you have the strerror function. */ -#define HAVE_STRERROR 1 - -/* Define if you have the <fcntl.h> header file. */ -#define HAVE_FCNTL_H 1 - -/* Define if you have the <limits.h> header file. */ -#define HAVE_LIMITS_H 1 - -/* Define if you have the <sgtty.h> header file. */ -#define HAVE_SGTTY_H 1 - -/* Define if you have the <sys/time.h> header file. */ -#define HAVE_SYS_TIME_H 1 - -/* Define if you have the <unistd.h> header file. */ -#define HAVE_UNISTD_H 1 - -/* Define if you have the compat library (-lcompat). */ -/* #undef HAVE_LIBCOMPAT */ - -/* Define if you have the m library (-lm). */ -#define HAVE_LIBM 1 - -/* Define if you have the socket library (-lsocket). */ -#define HAVE_LIBSOCKET 1 - -/* Define if you have the ucb library (-lucb). */ -/* #undef HAVE_LIBUCB */ diff --git a/apps/JAWS/clients/WebSTONE/src/config.h.in b/apps/JAWS/clients/WebSTONE/src/config.h.in deleted file mode 100644 index 91299ae624b..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/config.h.in +++ /dev/null @@ -1,89 +0,0 @@ -/* config.h.in. Generated automatically from configure.in by autoheader. */ - -/* Define to empty if the keyword does not work. */ -#undef const - -/* Define if you don't have vprintf but do have _doprnt. */ -#undef HAVE_DOPRNT - -/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */ -#undef HAVE_SYS_WAIT_H - -/* Define if your struct tm has tm_zone. */ -#undef HAVE_TM_ZONE - -/* Define if you don't have tm_zone but do have the external array - tzname. */ -#undef HAVE_TZNAME - -/* Define if you have the vprintf function. */ -#undef HAVE_VPRINTF - -/* Define if you have the wait3 system call. */ -#undef HAVE_WAIT3 - -/* Define as the return type of signal handlers (int or void). */ -#undef RETSIGTYPE - -/* Define to `unsigned' if <sys/types.h> doesn't define. */ -#undef size_t - -/* Define if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define if you can safely include both <sys/time.h> and <time.h>. */ -#undef TIME_WITH_SYS_TIME - -/* Define if your <sys/time.h> declares struct tm. */ -#undef TM_IN_SYS_TIME - -/* Define to the name of the distribution. */ -#undef PRODUCT - -/* Define to the version of the distribution. */ -#undef VERSION - -/* Should we use timezone in gettimeofday? */ -#undef USE_TIMEZONE - -/* Define if you have the gethostname function. */ -#undef HAVE_GETHOSTNAME - -/* Define if you have the gettimeofday function. */ -#undef HAVE_GETTIMEOFDAY - -/* Define if you have the select function. */ -#undef HAVE_SELECT - -/* Define if you have the socket function. */ -#undef HAVE_SOCKET - -/* Define if you have the strerror function. */ -#undef HAVE_STRERROR - -/* Define if you have the <fcntl.h> header file. */ -#undef HAVE_FCNTL_H - -/* Define if you have the <limits.h> header file. */ -#undef HAVE_LIMITS_H - -/* Define if you have the <sgtty.h> header file. */ -#undef HAVE_SGTTY_H - -/* Define if you have the <sys/time.h> header file. */ -#undef HAVE_SYS_TIME_H - -/* Define if you have the <unistd.h> header file. */ -#undef HAVE_UNISTD_H - -/* Define if you have the compat library (-lcompat). */ -#undef HAVE_LIBCOMPAT - -/* Define if you have the m library (-lm). */ -#undef HAVE_LIBM - -/* Define if you have the socket library (-lsocket). */ -#undef HAVE_LIBSOCKET - -/* Define if you have the ucb library (-lucb). */ -#undef HAVE_LIBUCB diff --git a/apps/JAWS/clients/WebSTONE/src/config.log b/apps/JAWS/clients/WebSTONE/src/config.log deleted file mode 100644 index 1b2fa65abd8..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/config.log +++ /dev/null @@ -1,4 +0,0 @@ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -cc -c -g conftest.c diff --git a/apps/JAWS/clients/WebSTONE/src/config.status b/apps/JAWS/clients/WebSTONE/src/config.status deleted file mode 100755 index 2f00f63aba7..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/config.status +++ /dev/null @@ -1,288 +0,0 @@ -#! /bin/sh -# Generated automatically by configure. -# Run this file to recreate the current configuration. -# This directory was configured as follows, -# on host tango: -# -# configure -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]" -for ac_option -do - case "$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running ${CONFIG_SHELL-/bin/sh} configure --no-create --no-recursion" - exec ${CONFIG_SHELL-/bin/sh} configure --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "./config.status generated by autoconf version 2.7" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "$ac_cs_usage"; exit 0 ;; - *) echo "$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=. - -trap 'rm -fr Makefile config.h conftest*; exit 1' 1 2 15 - -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\&%]/\\&/g; - s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF -/^[ ]*VPATH[ ]*=[^:]*$/d - -s%@CFLAGS@%-g%g -s%@CPPFLAGS@%%g -s%@CXXFLAGS@%%g -s%@DEFS@%-DHAVE_CONFIG_H%g -s%@LDFLAGS@%%g -s%@LIBS@%-lsocket -lm %g -s%@exec_prefix@%${prefix}%g -s%@prefix@%bin%g -s%@program_transform_name@%s,x,x,%g -s%@bindir@%${exec_prefix}/bin%g -s%@sbindir@%${exec_prefix}/sbin%g -s%@libexecdir@%${exec_prefix}/libexec%g -s%@datadir@%${prefix}/share%g -s%@sysconfdir@%${prefix}/etc%g -s%@sharedstatedir@%${prefix}/com%g -s%@localstatedir@%${prefix}/var%g -s%@libdir@%${exec_prefix}/lib%g -s%@includedir@%${prefix}/include%g -s%@oldincludedir@%/usr/include%g -s%@infodir@%${prefix}/info%g -s%@mandir@%${prefix}/man%g -s%@PRODUCT@%webstone%g -s%@VERSION@%2.0b4%g -s%@host@%sparc-sun-solaris2.5.1%g -s%@host_alias@%sparc-sun-solaris2.5.1%g -s%@host_cpu@%sparc%g -s%@host_vendor@%sun%g -s%@host_os@%solaris2.5.1%g -s%@target@%sparc-sun-solaris2.5.1%g -s%@target_alias@%sparc-sun-solaris2.5.1%g -s%@target_cpu@%sparc%g -s%@target_vendor@%sun%g -s%@target_os@%solaris2.5.1%g -s%@build@%sparc-sun-solaris2.5.1%g -s%@build_alias@%sparc-sun-solaris2.5.1%g -s%@build_cpu@%sparc%g -s%@build_vendor@%sun%g -s%@build_os@%solaris2.5.1%g -s%@CC@%cc%g -s%@SET_MAKE@%%g -s%@AWK@%nawk%g -s%@PERL@%/usr/sbin/perl%g -s%@PERL_SCRIPTS@%bin/wscollect.pl%g -s%@CPP@%cc -E%g -s%@LIBOBJS@%%g - -CEOF - -CONFIG_FILES=${CONFIG_FILES-"Makefile"} -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust relative srcdir, etc. for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file -fi; done -rm -f conftest.subs - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' -ac_dC='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' -ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' - -CONFIG_HEADERS=${CONFIG_HEADERS-"config.h"} -for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then - # Support "outfile[:infile]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - echo creating $ac_file - - rm -f conftest.frag conftest.in conftest.out - cp $ac_given_srcdir/$ac_file_in conftest.in - - cat > conftest.frag <<CEOF -${ac_dA}PRODUCT${ac_dB}PRODUCT${ac_dC}"webstone"${ac_dD} -${ac_uA}PRODUCT${ac_uB}PRODUCT${ac_uC}"webstone"${ac_uD} -${ac_eA}PRODUCT${ac_eB}PRODUCT${ac_eC}"webstone"${ac_eD} -${ac_dA}VERSION${ac_dB}VERSION${ac_dC}"2.0b4"${ac_dD} -${ac_uA}VERSION${ac_uB}VERSION${ac_uC}"2.0b4"${ac_uD} -${ac_eA}VERSION${ac_eB}VERSION${ac_eC}"2.0b4"${ac_eD} -${ac_dA}HAVE_LIBM${ac_dB}HAVE_LIBM${ac_dC}1${ac_dD} -${ac_uA}HAVE_LIBM${ac_uB}HAVE_LIBM${ac_uC}1${ac_uD} -${ac_eA}HAVE_LIBM${ac_eB}HAVE_LIBM${ac_eC}1${ac_eD} -${ac_dA}HAVE_LIBSOCKET${ac_dB}HAVE_LIBSOCKET${ac_dC}1${ac_dD} -${ac_uA}HAVE_LIBSOCKET${ac_uB}HAVE_LIBSOCKET${ac_uC}1${ac_uD} -${ac_eA}HAVE_LIBSOCKET${ac_eB}HAVE_LIBSOCKET${ac_eC}1${ac_eD} -CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag <<CEOF -${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD} -${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD} -${ac_eA}STDC_HEADERS${ac_eB}STDC_HEADERS${ac_eC}1${ac_eD} -${ac_dA}HAVE_SYS_WAIT_H${ac_dB}HAVE_SYS_WAIT_H${ac_dC}1${ac_dD} -${ac_uA}HAVE_SYS_WAIT_H${ac_uB}HAVE_SYS_WAIT_H${ac_uC}1${ac_uD} -${ac_eA}HAVE_SYS_WAIT_H${ac_eB}HAVE_SYS_WAIT_H${ac_eC}1${ac_eD} -${ac_dA}HAVE_FCNTL_H${ac_dB}HAVE_FCNTL_H${ac_dC}1${ac_dD} -${ac_uA}HAVE_FCNTL_H${ac_uB}HAVE_FCNTL_H${ac_uC}1${ac_uD} -${ac_eA}HAVE_FCNTL_H${ac_eB}HAVE_FCNTL_H${ac_eC}1${ac_eD} -${ac_dA}HAVE_LIMITS_H${ac_dB}HAVE_LIMITS_H${ac_dC}1${ac_dD} -${ac_uA}HAVE_LIMITS_H${ac_uB}HAVE_LIMITS_H${ac_uC}1${ac_uD} -${ac_eA}HAVE_LIMITS_H${ac_eB}HAVE_LIMITS_H${ac_eC}1${ac_eD} -CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag <<CEOF -${ac_dA}HAVE_SGTTY_H${ac_dB}HAVE_SGTTY_H${ac_dC}1${ac_dD} -${ac_uA}HAVE_SGTTY_H${ac_uB}HAVE_SGTTY_H${ac_uC}1${ac_uD} -${ac_eA}HAVE_SGTTY_H${ac_eB}HAVE_SGTTY_H${ac_eC}1${ac_eD} -${ac_dA}HAVE_SYS_TIME_H${ac_dB}HAVE_SYS_TIME_H${ac_dC}1${ac_dD} -${ac_uA}HAVE_SYS_TIME_H${ac_uB}HAVE_SYS_TIME_H${ac_uC}1${ac_uD} -${ac_eA}HAVE_SYS_TIME_H${ac_eB}HAVE_SYS_TIME_H${ac_eC}1${ac_eD} -${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD} -${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD} -${ac_eA}HAVE_UNISTD_H${ac_eB}HAVE_UNISTD_H${ac_eC}1${ac_eD} -${ac_dA}RETSIGTYPE${ac_dB}RETSIGTYPE${ac_dC}void${ac_dD} -${ac_uA}RETSIGTYPE${ac_uB}RETSIGTYPE${ac_uC}void${ac_uD} -${ac_eA}RETSIGTYPE${ac_eB}RETSIGTYPE${ac_eC}void${ac_eD} -CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag <<CEOF -${ac_dA}TIME_WITH_SYS_TIME${ac_dB}TIME_WITH_SYS_TIME${ac_dC}1${ac_dD} -${ac_uA}TIME_WITH_SYS_TIME${ac_uB}TIME_WITH_SYS_TIME${ac_uC}1${ac_uD} -${ac_eA}TIME_WITH_SYS_TIME${ac_eB}TIME_WITH_SYS_TIME${ac_eC}1${ac_eD} -${ac_dA}HAVE_TZNAME${ac_dB}HAVE_TZNAME${ac_dC}1${ac_dD} -${ac_uA}HAVE_TZNAME${ac_uB}HAVE_TZNAME${ac_uC}1${ac_uD} -${ac_eA}HAVE_TZNAME${ac_eB}HAVE_TZNAME${ac_eC}1${ac_eD} -${ac_dA}USE_TIMEZONE${ac_dB}USE_TIMEZONE${ac_dC}1${ac_dD} -${ac_uA}USE_TIMEZONE${ac_uB}USE_TIMEZONE${ac_uC}1${ac_uD} -${ac_eA}USE_TIMEZONE${ac_eB}USE_TIMEZONE${ac_eC}1${ac_eD} -${ac_dA}RETSIGTYPE${ac_dB}RETSIGTYPE${ac_dC}void${ac_dD} -${ac_uA}RETSIGTYPE${ac_uB}RETSIGTYPE${ac_uC}void${ac_uD} -${ac_eA}RETSIGTYPE${ac_eB}RETSIGTYPE${ac_eC}void${ac_eD} -CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag <<CEOF -${ac_dA}HAVE_VPRINTF${ac_dB}HAVE_VPRINTF${ac_dC}1${ac_dD} -${ac_uA}HAVE_VPRINTF${ac_uB}HAVE_VPRINTF${ac_uC}1${ac_uD} -${ac_eA}HAVE_VPRINTF${ac_eB}HAVE_VPRINTF${ac_eC}1${ac_eD} -${ac_dA}HAVE_WAIT3${ac_dB}HAVE_WAIT3${ac_dC}1${ac_dD} -${ac_uA}HAVE_WAIT3${ac_uB}HAVE_WAIT3${ac_uC}1${ac_uD} -${ac_eA}HAVE_WAIT3${ac_eB}HAVE_WAIT3${ac_eC}1${ac_eD} -${ac_dA}HAVE_GETHOSTNAME${ac_dB}HAVE_GETHOSTNAME${ac_dC}1${ac_dD} -${ac_uA}HAVE_GETHOSTNAME${ac_uB}HAVE_GETHOSTNAME${ac_uC}1${ac_uD} -${ac_eA}HAVE_GETHOSTNAME${ac_eB}HAVE_GETHOSTNAME${ac_eC}1${ac_eD} -${ac_dA}HAVE_GETTIMEOFDAY${ac_dB}HAVE_GETTIMEOFDAY${ac_dC}1${ac_dD} -${ac_uA}HAVE_GETTIMEOFDAY${ac_uB}HAVE_GETTIMEOFDAY${ac_uC}1${ac_uD} -${ac_eA}HAVE_GETTIMEOFDAY${ac_eB}HAVE_GETTIMEOFDAY${ac_eC}1${ac_eD} -CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - cat > conftest.frag <<CEOF -${ac_dA}HAVE_SELECT${ac_dB}HAVE_SELECT${ac_dC}1${ac_dD} -${ac_uA}HAVE_SELECT${ac_uB}HAVE_SELECT${ac_uC}1${ac_uD} -${ac_eA}HAVE_SELECT${ac_eB}HAVE_SELECT${ac_eC}1${ac_eD} -${ac_dA}HAVE_SOCKET${ac_dB}HAVE_SOCKET${ac_dC}1${ac_dD} -${ac_uA}HAVE_SOCKET${ac_uB}HAVE_SOCKET${ac_uC}1${ac_uD} -${ac_eA}HAVE_SOCKET${ac_eB}HAVE_SOCKET${ac_eC}1${ac_eD} -${ac_dA}HAVE_STRERROR${ac_dB}HAVE_STRERROR${ac_dC}1${ac_dD} -${ac_uA}HAVE_STRERROR${ac_uB}HAVE_STRERROR${ac_uC}1${ac_uD} -${ac_eA}HAVE_STRERROR${ac_eB}HAVE_STRERROR${ac_eC}1${ac_eD} -s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% -CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in - - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then - echo "$ac_file is unchanged" - rm -f conftest.h - else - rm -f $ac_file - mv conftest.h $ac_file - fi -fi; done - - - -exit 0 diff --git a/apps/JAWS/clients/WebSTONE/src/config.sub b/apps/JAWS/clients/WebSTONE/src/config.sub deleted file mode 100755 index e67a800b515..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/config.sub +++ /dev/null @@ -1,867 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script, version 1.1. -# Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -if [ x$1 = x ] -then - echo Configuration name missing. 1>&2 - echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 - echo "or $0 ALIAS" 1>&2 - echo where ALIAS is a recognized configuration type. 1>&2 - exit 1 -fi - -# First pass through any local machine types. -case $1 in - *local*) - echo $1 - exit 0 - ;; - *) - ;; -esac - -# Separate what the user gave into CPU-COMPANY and OS (if any). -basic_machine=`echo $1 | sed 's/-[^-]*$//'` -if [ $basic_machine != $1 ] -then os=`echo $1 | sed 's/.*-/-/'` -else os=; fi - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp ) - os= - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - tahoe | i[345]86 | i860 | m68k | m68000 | m88k | ns32k | arm \ - | arme[lb] | pyramid \ - | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \ - | alpha | we32k | ns16k | clipper | sparclite | i370 | sh \ - | powerpc | powerpcle | sparc64 | 1750a | dsp16xx | mips64 | mipsel \ - | pdp11 | mips64el | mips64orion | mips64orionel \ - | sparc) - basic_machine=$basic_machine-unknown - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - vax-* | tahoe-* | i[345]86-* | i860-* | m68k-* | m68000-* | m88k-* \ - | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ - | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ - | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ - | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ - | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-cbm - ;; - amigados) - basic_machine=m68k-cbm - os=-amigados - ;; - amigaunix | amix) - basic_machine=m68k-cbm - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | ymp) - basic_machine=ymp-cray - os=-unicos - ;; - cray2) - basic_machine=cray2-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - os=-mvs - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[345]86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` - os=-sysv32 - ;; - i[345]86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` - os=-sysv4 - ;; - i[345]86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` - os=-sysv - ;; - i[345]86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'` - os=-solaris2 - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - miniframe) - basic_machine=m68000-convergent - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - np1) - basic_machine=np1-gould - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | p6) - # We don't have specific support for the Intel Pentium (p6) followon yet, so just call it a Pentium - basic_machine=i586-intel - ;; - pentium-* | p5-* | p6-*) - # We don't have specific support for the Intel Pentium (p6) followon yet, so just call it a Pentium - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - k5) - # We don't have specific support for AMD's K5 yet, so just call it a Pentium - basic_machine=i586-amd - ;; - nexen) - # We don't have specific support for Nexgen yet, so just call it a Pentium - basic_machine=i586-nexgen - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=rs6000-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - xmp) - basic_machine=xmp-cray - os=-unicos - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - mips) - basic_machine=mips-mips - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sparc) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -unixware* | svr4*) - os=-sysv4 - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[345]* \ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigados* | -msdos* | -newsos* | -unicos* | -aos* \ - | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \ - | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* ) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -ctix* | -uts*) - os=-sysv - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -xenix) - os=-xenix - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-semi) - os=-aout - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-ibm) - os=-aix - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigados - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -lynxos*) - vendor=lynx - ;; - -aix*) - vendor=ibm - ;; - -hpux*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxworks*) - vendor=wrs - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os diff --git a/apps/JAWS/clients/WebSTONE/src/configure b/apps/JAWS/clients/WebSTONE/src/configure deleted file mode 100755 index 8e1ad6e8369..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/configure +++ /dev/null @@ -1,2132 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.7 -# Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: -ac_default_prefix=bin - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.7" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LANG+set}" = set; then LANG=C; export LANG; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=webclient.c - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='echo $CPP $CPPFLAGS 1>&5; -$CPP $CPPFLAGS' -ac_compile='echo ${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5; -${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5 2>&5' -ac_link='echo ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5; -${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5 2>&5' - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - -PRODUCT=webstone -VERSION=2.0b4 -cat >> confdefs.h <<EOF -#define PRODUCT "$PRODUCT" -EOF - -cat >> confdefs.h <<EOF -#define VERSION "$VERSION" -EOF - - - - - -# set system type -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - - -# Do some error checking and defaulting for the host and target type. -# The inputs are: -# configure --host=HOST --target=TARGET --build=BUILD NONOPT -# -# The rules are: -# 1. You are not allowed to specify --host, --target, and nonopt at the -# same time. -# 2. Host defaults to nonopt. -# 3. If nonopt is not specified, then host defaults to the current host, -# as determined by config.guess. -# 4. Target and build default to nonopt. -# 5. If nonopt is not specified, then target and build default to host. - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -case $host---$target---$nonopt in -NONE---*---* | *---NONE---* | *---*---NONE) ;; -*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;; -esac - - -# Make sure we can run config.sub. -if $ac_config_sub sun4 >/dev/null 2>&1; then : -else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } -fi - -echo $ac_n "checking host system type""... $ac_c" 1>&6 - -host_alias=$host -case "$host_alias" in -NONE) - case $nonopt in - NONE) - if host_alias=`$ac_config_guess`; then : - else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } - fi ;; - *) host_alias=$nonopt ;; - esac ;; -esac - -host=`$ac_config_sub $host_alias` -host_cpu=`echo $host | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` -echo "$ac_t""$host" 1>&6 - -echo $ac_n "checking target system type""... $ac_c" 1>&6 - -target_alias=$target -case "$target_alias" in -NONE) - case $nonopt in - NONE) target_alias=$host_alias ;; - *) target_alias=$nonopt ;; - esac ;; -esac - -target=`$ac_config_sub $target_alias` -target_cpu=`echo $target | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` -target_vendor=`echo $target | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` -target_os=`echo $target | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` -echo "$ac_t""$target" 1>&6 - -echo $ac_n "checking build system type""... $ac_c" 1>&6 - -build_alias=$build -case "$build_alias" in -NONE) - case $nonopt in - NONE) build_alias=$host_alias ;; - *) build_alias=$nonopt ;; - esac ;; -esac - -build=`$ac_config_sub $build_alias` -build_cpu=`echo $build | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\1/'` -build_vendor=`echo $build | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\2/'` -build_os=`echo $build | sed 's/^\(.*\)-\(.*\)-\(.*\)$/\3/'` -echo "$ac_t""$build" 1>&6 - -test "$host_alias" != "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - - -# -# checks for programs -# -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_CC" && ac_cv_prog_CC="cc" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <<EOF -#ifdef __GNUC__ - yes; -#endif -EOF -if ${CC-cc} -E conftest.c 2>&5 | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 -if test $ac_cv_prog_gcc = yes; then - GCC=yes - if test "${CFLAGS+set}" != set; then - echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_prog_gcc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_gcc_g=yes -else - ac_cv_prog_gcc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_gcc_g" 1>&6 - if test $ac_cv_prog_gcc_g = yes; then - CFLAGS="-g -O" - else - CFLAGS="-O" - fi - fi -else - GCC= - test "${CFLAGS+set}" = set || CFLAGS="-g" -fi - -echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -set dummy ${MAKE-make}; ac_make=$2 -if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftestmake <<\EOF -all: - @echo 'ac_maketemp="${MAKE}"' -EOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftestmake -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$ac_t""yes" 1>&6 - SET_MAKE= -else - echo "$ac_t""no" 1>&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - -for ac_prog in mawk gawk nawk awk -do -# Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_AWK="$ac_prog" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -AWK="$ac_cv_prog_AWK" -if test -n "$AWK"; then - echo "$ac_t""$AWK" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -test -n "$AWK" && break -done - - - -# We use a path for perl so the #! line in bin/wscollect.pl will work. -# Extract the first word of "perl", so it can be a program name with args. -set dummy perl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - case "$PERL" in - /*) - ac_cv_path_PERL="$PERL" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_path_PERL="$ac_dir/$ac_word" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no" - ;; -esac -fi -PERL="$ac_cv_path_PERL" -if test -n "$PERL"; then - echo "$ac_t""$PERL" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - - -if test "$PERL" != no; then - PERL_SCRIPTS="bin/wscollect.pl" -else - echo "configure: warning: Some functions may work correctly" 1>&2 -fi - -# -# checks for libraries -# -# Replace `main' with a function in -lm: -echo $ac_n "checking for -lm""... $ac_c" 1>&6 -ac_lib_var=`echo m | tr '.-/+' '___p'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lm $LIBS" -cat > conftest.$ac_ext <<EOF -#line 832 "configure" -#include "confdefs.h" - -int main() { return 0; } -int t() { -floor() -; return 0; } -EOF -if eval $ac_link; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo m | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <<EOF -#define $ac_tr_lib 1 -EOF - - LIBS="-lm $LIBS" - -else - echo "$ac_t""no" 1>&6 -fi - -echo $ac_n "checking for -lcompat""... $ac_c" 1>&6 -ac_lib_var=`echo compat | tr '.-/+' '___p'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lcompat $LIBS" -cat > conftest.$ac_ext <<EOF -#line 872 "configure" -#include "confdefs.h" - -int main() { return 0; } -int t() { -rexec() -; return 0; } -EOF -if eval $ac_link; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo compat | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <<EOF -#define $ac_tr_lib 1 -EOF - - LIBS="-lcompat $LIBS" - -else - echo "$ac_t""no" 1>&6 -fi - -echo $ac_n "checking for -lucb""... $ac_c" 1>&6 -ac_lib_var=`echo ucb | tr '.-/+' '___p'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lucb $LIBS" -cat > conftest.$ac_ext <<EOF -#line 912 "configure" -#include "confdefs.h" - -int main() { return 0; } -int t() { -wait3() -; return 0; } -EOF -if eval $ac_link; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo ucb | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <<EOF -#define $ac_tr_lib 1 -EOF - - LIBS="-lucb $LIBS" - -else - echo "$ac_t""no" 1>&6 -fi - -echo $ac_n "checking for -lsocket""... $ac_c" 1>&6 -ac_lib_var=`echo socket | tr '.-/+' '___p'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lsocket -lnsl $LIBS" -cat > conftest.$ac_ext <<EOF -#line 952 "configure" -#include "confdefs.h" - -int main() { return 0; } -int t() { -connect() -; return 0; } -EOF -if eval $ac_link; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo socket | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <<EOF -#define $ac_tr_lib 1 -EOF - - LIBS="-lsocket $LIBS" - -else - echo "$ac_t""no" 1>&6 -fi - - -# -# checks for header files -# -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext <<EOF -#line 1003 "configure" -#include "confdefs.h" -#include <assert.h> -Syntax Error -EOF -eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext <<EOF -#line 1017 "configure" -#include "confdefs.h" -#include <assert.h> -Syntax Error -EOF -eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : -else - echo "$ac_err" >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - -# If we cannot run a trivial program, we must be cross compiling. -echo $ac_n "checking whether cross-compiling""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_c_cross'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_c_cross=yes -else -cat > conftest.$ac_ext <<EOF -#line 1051 "configure" -#include "confdefs.h" -main(){return(0);} -EOF -eval $ac_link -if test -s conftest && (./conftest; exit) 2>/dev/null; then - ac_cv_c_cross=no -else - ac_cv_c_cross=yes -fi -fi -rm -fr conftest* -fi - -echo "$ac_t""$ac_cv_c_cross" 1>&6 -cross_compiling=$ac_cv_c_cross - -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1073 "configure" -#include "confdefs.h" -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> -EOF -eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - ac_cv_header_stdc=yes -else - echo "$ac_err" >&5 - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext <<EOF -#line 1095 "configure" -#include "confdefs.h" -#include <string.h> -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext <<EOF -#line 1113 "configure" -#include "confdefs.h" -#include <stdlib.h> -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then - : -else -cat > conftest.$ac_ext <<EOF -#line 1134 "configure" -#include "confdefs.h" -#include <ctype.h> -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } - -EOF -eval $ac_link -if test -s conftest && (./conftest; exit) 2>/dev/null; then - : -else - ac_cv_header_stdc=no -fi -fi -rm -fr conftest* -fi -fi - -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1169 "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <sys/wait.h> -#ifndef WEXITSTATUS -#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) -#endif -#ifndef WIFEXITED -#define WIFEXITED(stat_val) (((stat_val) & 255) == 0) -#endif -int main() { return 0; } -int t() { -int s; -wait (&s); -s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; -; return 0; } -EOF -if eval $ac_compile; then - rm -rf conftest* - ac_cv_header_sys_wait_h=yes -else - rm -rf conftest* - ac_cv_header_sys_wait_h=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_header_sys_wait_h" 1>&6 -if test $ac_cv_header_sys_wait_h = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_SYS_WAIT_H 1 -EOF - -fi - -for ac_hdr in fcntl.h limits.h sgtty.h sys/time.h unistd.h -do -ac_safe=`echo "$ac_hdr" | tr './\055' '___'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1213 "configure" -#include "confdefs.h" -#include <$ac_hdr> -EOF -eval "$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | tr 'abcdefghijklmnopqrstuvwxyz./\055' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ___'` - cat >> confdefs.h <<EOF -#define $ac_tr_hdr 1 -EOF - -else - echo "$ac_t""no" 1>&6 -fi -done - - -# -# checks for typedefs, structures, and compiler characteristics -# -echo $ac_n "checking for working const""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1250 "configure" -#include "confdefs.h" - -int main() { return 0; } -int t() { - -/* Ultrix mips cc rejects this. */ -typedef int charset[2]; const charset x; -/* SunOS 4.1.1 cc rejects this. */ -char const *const *ccp; -char **p; -/* NEC SVR4.0.2 mips cc rejects this. */ -struct point {int x, y;}; -static struct point const zero = {0,0}; -/* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in an arm - of an if-expression whose if-part is not a constant expression */ -const char *g = "string"; -ccp = &g + (g ? g-g : 0); -/* HPUX 7.0 cc rejects these. */ -++ccp; -p = (char**) ccp; -ccp = (char const *const *) p; -{ /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; -} -{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; -} -{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; -} -{ /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; -} -{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; -} - -; return 0; } -EOF -if eval $ac_compile; then - rm -rf conftest* - ac_cv_c_const=yes -else - rm -rf conftest* - ac_cv_c_const=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_c_const" 1>&6 -if test $ac_cv_c_const = no; then - cat >> confdefs.h <<\EOF -#define const -EOF - -fi - -echo $ac_n "checking for size_t""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1324 "configure" -#include "confdefs.h" -#include <sys/types.h> -#if STDC_HEADERS -#include <stdlib.h> -#endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "size_t" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_size_t=yes -else - rm -rf conftest* - ac_cv_type_size_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_size_t" 1>&6 -if test $ac_cv_type_size_t = no; then - cat >> confdefs.h <<\EOF -#define size_t unsigned -EOF - -fi - -echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1355 "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <signal.h> -#ifdef signal -#undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif - -int main() { return 0; } -int t() { -int i; -; return 0; } -EOF -if eval $ac_compile; then - rm -rf conftest* - ac_cv_type_signal=void -else - rm -rf conftest* - ac_cv_type_signal=int -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_type_signal" 1>&6 -cat >> confdefs.h <<EOF -#define RETSIGTYPE $ac_cv_type_signal -EOF - - -echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1395 "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <sys/time.h> -#include <time.h> -int main() { return 0; } -int t() { -struct tm *tp; -; return 0; } -EOF -if eval $ac_compile; then - rm -rf conftest* - ac_cv_header_time=yes -else - rm -rf conftest* - ac_cv_header_time=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_header_time" 1>&6 -if test $ac_cv_header_time = yes; then - cat >> confdefs.h <<\EOF -#define TIME_WITH_SYS_TIME 1 -EOF - -fi - -echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1429 "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <time.h> -int main() { return 0; } -int t() { -struct tm *tp; tp->tm_sec; -; return 0; } -EOF -if eval $ac_compile; then - rm -rf conftest* - ac_cv_struct_tm=time.h -else - rm -rf conftest* - ac_cv_struct_tm=sys/time.h -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_struct_tm" 1>&6 -if test $ac_cv_struct_tm = sys/time.h; then - cat >> confdefs.h <<\EOF -#define TM_IN_SYS_TIME 1 -EOF - -fi - -echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1462 "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <$ac_cv_struct_tm> -int main() { return 0; } -int t() { -struct tm tm; tm.tm_zone; -; return 0; } -EOF -if eval $ac_compile; then - rm -rf conftest* - ac_cv_struct_tm_zone=yes -else - rm -rf conftest* - ac_cv_struct_tm_zone=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_struct_tm_zone" 1>&6 -if test "$ac_cv_struct_tm_zone" = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_TM_ZONE 1 -EOF - -else - echo $ac_n "checking for tzname""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1494 "configure" -#include "confdefs.h" -#include <time.h> -#ifndef tzname /* For SGI. */ -extern char *tzname[]; /* RS6000 and others reject char **tzname. */ -#endif -int main() { return 0; } -int t() { -atoi(*tzname); -; return 0; } -EOF -if eval $ac_link; then - rm -rf conftest* - ac_cv_var_tzname=yes -else - rm -rf conftest* - ac_cv_var_tzname=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_var_tzname" 1>&6 - if test $ac_cv_var_tzname = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_TZNAME 1 -EOF - - fi -fi - -cat > conftest.$ac_ext <<EOF -#line 1526 "configure" -#include "confdefs.h" -#include <sys/time.h> -int main() { return 0; } -int t() { -struct timeval thetime; struct timezone thezone; - gettimeofday(&thetime, &thezone); -; return 0; } -EOF -if eval $ac_compile; then - rm -rf conftest* - cat >> confdefs.h <<\EOF -#define USE_TIMEZONE 1 -EOF - -fi -rm -f conftest* - - -# -# checks for library functions -# -echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_func_memcmp'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_memcmp=no -else -cat > conftest.$ac_ext <<EOF -#line 1556 "configure" -#include "confdefs.h" - -main() -{ - char c0 = 0x40, c1 = 0x80, c2 = 0x81; - exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1); -} - -EOF -eval $ac_link -if test -s conftest && (./conftest; exit) 2>/dev/null; then - ac_cv_func_memcmp=yes -else - ac_cv_func_memcmp=no -fi -fi -rm -fr conftest* -fi - -echo "$ac_t""$ac_cv_func_memcmp" 1>&6 -test $ac_cv_func_memcmp = no && LIBOBJS="$LIBOBJS memcmp.o" - -echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1584 "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <signal.h> -#ifdef signal -#undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif - -int main() { return 0; } -int t() { -int i; -; return 0; } -EOF -if eval $ac_compile; then - rm -rf conftest* - ac_cv_type_signal=void -else - rm -rf conftest* - ac_cv_type_signal=int -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_type_signal" 1>&6 -cat >> confdefs.h <<EOF -#define RETSIGTYPE $ac_cv_type_signal -EOF - - -echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1624 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char vprintf(); below. */ -#include <assert.h> -/* Override any gcc2 internal prototype to avoid an error. */ -char vprintf(); - -int main() { return 0; } -int t() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_vprintf) || defined (__stub___vprintf) -choke me -#else -vprintf(); -#endif - -; return 0; } -EOF -if eval $ac_link; then - rm -rf conftest* - eval "ac_cv_func_vprintf=yes" -else - rm -rf conftest* - eval "ac_cv_func_vprintf=no" -fi -rm -f conftest* - -fi -if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_VPRINTF 1 -EOF - -else - echo "$ac_t""no" 1>&6 -fi - -if test "$ac_cv_func_vprintf" != yes; then -echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1672 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char _doprnt(); below. */ -#include <assert.h> -/* Override any gcc2 internal prototype to avoid an error. */ -char _doprnt(); - -int main() { return 0; } -int t() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub__doprnt) || defined (__stub____doprnt) -choke me -#else -_doprnt(); -#endif - -; return 0; } -EOF -if eval $ac_link; then - rm -rf conftest* - eval "ac_cv_func__doprnt=yes" -else - rm -rf conftest* - eval "ac_cv_func__doprnt=no" -fi -rm -f conftest* - -fi -if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_DOPRNT 1 -EOF - -else - echo "$ac_t""no" 1>&6 -fi - -fi - -echo $ac_n "checking for wait3 that fills in rusage""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_func_wait3'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_wait3=no -else -cat > conftest.$ac_ext <<EOF -#line 1724 "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <sys/time.h> -#include <sys/resource.h> -#include <stdio.h> -/* HP-UX has wait3 but does not fill in rusage at all. */ -main() { - struct rusage r; - int i; - /* Use a field that we can force nonzero -- - voluntary context switches. - For systems like NeXT and OSF/1 that don't set it, - also use the system CPU time. And page faults (I/O) for Linux. */ - r.ru_nvcsw = 0; - r.ru_stime.tv_sec = 0; - r.ru_stime.tv_usec = 0; - r.ru_majflt = r.ru_minflt = 0; - switch (fork()) { - case 0: /* Child. */ - sleep(1); /* Give up the CPU. */ - _exit(0); - case -1: _exit(0); /* What can we do? */ - default: /* Parent. */ - wait3(&i, 0, &r); - sleep(2); /* Avoid "text file busy" from rm on fast HP-UX machines. */ - exit(r.ru_nvcsw == 0 && r.ru_majflt == 0 && r.ru_minflt == 0 - && r.ru_stime.tv_sec == 0 && r.ru_stime.tv_usec == 0); - } -} -EOF -eval $ac_link -if test -s conftest && (./conftest; exit) 2>/dev/null; then - ac_cv_func_wait3=yes -else - ac_cv_func_wait3=no -fi -fi -rm -fr conftest* -fi - -echo "$ac_t""$ac_cv_func_wait3" 1>&6 -if test $ac_cv_func_wait3 = yes; then - cat >> confdefs.h <<\EOF -#define HAVE_WAIT3 1 -EOF - -fi - -for ac_func in gethostname gettimeofday select socket strerror -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1780 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func(); below. */ -#include <assert.h> -/* Override any gcc2 internal prototype to avoid an error. */ -char $ac_func(); - -int main() { return 0; } -int t() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if eval $ac_link; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* - -fi -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <<EOF -#define $ac_tr_func 1 -EOF - -else - echo "$ac_t""no" 1>&6 -fi -done - - -# -# checks for system services -# - -# -# all done -# -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - sed -n "s/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=\${\1='\2'}/p" \ - >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -DEFS=-DHAVE_CONFIG_H - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS <<EOF -#! /bin/sh -# Generated automatically by configure. -# Run this file to recreate the current configuration. -# This directory was configured as follows, -# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.7" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir - -trap 'rm -fr `echo "Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS <<EOF - -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@PRODUCT@%$PRODUCT%g -s%@VERSION@%$VERSION%g -s%@host@%$host%g -s%@host_alias@%$host_alias%g -s%@host_cpu@%$host_cpu%g -s%@host_vendor@%$host_vendor%g -s%@host_os@%$host_os%g -s%@target@%$target%g -s%@target_alias@%$target_alias%g -s%@target_cpu@%$target_cpu%g -s%@target_vendor@%$target_vendor%g -s%@target_os@%$target_os%g -s%@build@%$build%g -s%@build_alias@%$build_alias%g -s%@build_cpu@%$build_cpu%g -s%@build_vendor@%$build_vendor%g -s%@build_os@%$build_os%g -s%@CC@%$CC%g -s%@SET_MAKE@%$SET_MAKE%g -s%@AWK@%$AWK%g -s%@PERL@%$PERL%g -s%@PERL_SCRIPTS@%$PERL_SCRIPTS%g -s%@CPP@%$CPP%g -s%@LIBOBJS@%$LIBOBJS%g - -CEOF -EOF -cat >> $CONFIG_STATUS <<EOF - -CONFIG_FILES=\${CONFIG_FILES-"Makefile"} -EOF -cat >> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust relative srcdir, etc. for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -" -f conftest.subs $ac_given_srcdir/$ac_file_in > $ac_file -fi; done -rm -f conftest.subs - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' -ac_dC='\3' -ac_dD='%g' -# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='\([ ]\)%\1#\2define\3' -ac_uC=' ' -ac_uD='\4%g' -# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_eB='$%\1#\2define\3' -ac_eC=' ' -ac_eD='%g' - -CONFIG_HEADERS=${CONFIG_HEADERS-"config.h"} -for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then - # Support "outfile[:infile]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%.*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - echo creating $ac_file - - rm -f conftest.frag conftest.in conftest.out - cp $ac_given_srcdir/$ac_file_in conftest.in - -EOF - -# Transform confdefs.h into a sed script conftest.vals that substitutes -# the proper values into config.h.in to produce config.h. And first: -# Protect against being on the right side of a sed subst in config.status. -# Protect against being in an unquoted here document in config.status. -rm -f conftest.vals -cat > conftest.hdr <<\EOF -s/[\\&%]/\\&/g -s%[\\$`]%\\&%g -s%#define \([A-Za-z_][A-Za-z0-9_]*\) \(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp -s%ac_d%ac_u%gp -s%ac_u%ac_e%gp -EOF -sed -n -f conftest.hdr confdefs.h > conftest.vals -rm -f conftest.hdr - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >> conftest.vals <<\EOF -s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% -EOF - -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. -# Maximum number of lines to put in a single here document. -ac_max_here_lines=12 - -rm -f conftest.tail -while : -do - ac_lines=`grep -c . conftest.vals` - # grep -c gives empty output for an empty file on some AIX systems. - if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi - # Write a limited-size here document to conftest.frag. - echo ' cat > conftest.frag <<CEOF' >> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS - echo 'CEOF - sed -f conftest.frag conftest.in > conftest.out - rm -f conftest.in - mv conftest.out conftest.in -' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -cat >> $CONFIG_STATUS <<\EOF - rm -f conftest.frag conftest.h - echo "/* $ac_file. Generated automatically by configure. */" > conftest.h - cat conftest.in >> conftest.h - rm -f conftest.in - if cmp -s $ac_file conftest.h 2>/dev/null; then - echo "$ac_file is unchanged" - rm -f conftest.h - else - rm -f $ac_file - mv conftest.h $ac_file - fi -fi; done - - - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - -# -# end diff --git a/apps/JAWS/clients/WebSTONE/src/configure.in b/apps/JAWS/clients/WebSTONE/src/configure.in deleted file mode 100644 index 449a6a16cef..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/configure.in +++ /dev/null @@ -1,99 +0,0 @@ -# configure.in -# Configure template for WebStone -# Process this file with autoconf to produce a configure script. -# -# This file and all files contained in this directory are -# copyright 1995, Silicon Graphics, Inc. -# -# This software is provided without support and without any obligation on the -# part of Silicon Graphics, Inc. to assist in its use, correction, modification -# or enhancement. There is no guarantee that this software will be included in -# future software releases, and it probably will not be included. -# -# THIS SOFTWARE IS PROVIDED "AS IS" WITH NO WARRANTIES OF ANY KIND INCLUDING -# THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR -# PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. -# -# In no event will Silicon Graphics, Inc. be liable for any lost revenue or -# profits or other special, indirect and consequential damages, even if -# Silicon Graphics, Inc. has been advised of the possibility of such damages. - -AC_INIT(webclient.c) -AC_CONFIG_HEADER(config.h) -PRODUCT=webstone -VERSION=2.0b6 -AC_DEFINE_UNQUOTED(PRODUCT, "$PRODUCT") -AC_DEFINE_UNQUOTED(VERSION, "$VERSION") -AC_SUBST(PRODUCT) -AC_SUBST(VERSION) -AC_PREFIX_DEFAULT(bin) - -# set system type -AC_CANONICAL_SYSTEM - -# -# checks for programs -# -AC_PROG_CC -AC_PROG_MAKE_SET -AC_PROG_AWK - - -# We use a path for perl so the #! line in bin/wscollect.pl will work. -AC_PATH_PROG(PERL, perl, no) -AC_SUBST(PERL) -AC_SUBST(PERL_SCRIPTS) -if test "$PERL" != no; then - PERL_SCRIPTS="bin/wscollect.pl" -else - AC_MSG_WARN(Some functions may work correctly, since perl was not found) -fi - -# -# checks for libraries -# -# Replace `main' with a function in -lm: -AC_CHECK_LIB(m, floor) -AC_CHECK_LIB(compat, rexec) -AC_CHECK_LIB(ucb, wait3) -AC_CHECK_LIB(socket, connect, AC_SUBST(LIBS), , -lnsl) - -# -# checks for header files -# -AC_HEADER_STDC -AC_HEADER_SYS_WAIT -AC_CHECK_HEADERS(fcntl.h limits.h sgtty.h sys/time.h unistd.h) - -# -# checks for typedefs, structures, and compiler characteristics -# -AC_C_CONST -AC_TYPE_SIZE_T -AC_TYPE_SIGNAL -AC_HEADER_TIME -AC_STRUCT_TIMEZONE -AC_TRY_COMPILE([#include <sys/time.h>], - [struct timeval thetime; struct timezone thezone; - gettimeofday(&thetime, &thezone); ], - AC_DEFINE(USE_TIMEZONE), ) - -# -# checks for library functions -# -AC_FUNC_MEMCMP -AC_TYPE_SIGNAL -AC_FUNC_VPRINTF -AC_FUNC_WAIT3 -AC_CHECK_FUNCS(gethostname gettimeofday select socket strerror) - -# -# checks for system services -# - -# -# all done -# -AC_OUTPUT(Makefile) -# -# end diff --git a/apps/JAWS/clients/WebSTONE/src/debug.h b/apps/JAWS/clients/WebSTONE/src/debug.h deleted file mode 100644 index f7a3a0eaf74..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/debug.h +++ /dev/null @@ -1,17 +0,0 @@ -/************************************************************************** - $Header$ - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ -#ifndef __DEBUG_H__ - -#define D_PRINTF debug && fprintf(debugfile, -#define D_FLUSH );fflush(debugfile) - -#define __DEBUG_H__ -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/errexit.c b/apps/JAWS/clients/WebSTONE/src/errexit.c deleted file mode 100644 index 2d5a7de34f1..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/errexit.c +++ /dev/null @@ -1,105 +0,0 @@ -/************************************************************************** - * * - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ - -/* errexit call for general error handling */ - -#include <stdio.h> -#ifndef WIN32 -#include <errno.h> -#include <netdb.h> -#include <unistd.h> -#endif /* WIN32 */ -#include <stdarg.h> -#include <sys/types.h> - -#include "sysdep.h" -#include "bench.h" - -#ifdef HAVE_VPRINTF -#define VPRINTF(stderr, format, args) vfprintf((stderr), (format), (args)) -#else -#ifdef HAVE_DOPRNT -#define VPRINTF(stderr, format, args) _doprnt((format), (args), (stderr)) -#endif /* HAVE_DOPRNT */ -#endif /* HAVE_VPRINTF */ - -/* print an error message and exit 1 */ -void -errexit(const char *format, ...) -{ -va_list args; -char hostname[64] = ""; -pid_t PID; - - PID = getpid(); - gethostname(hostname, sizeof(hostname)); - fprintf(stderr, "%s PID %d: ", hostname, PID); - - va_start(args, format); - VPRINTF(stderr, format, args); - debug && VPRINTF(debugfile, format, args); - va_end(args); - fflush(stderr); - exit(1); -} -/* that's it */ - -/* print an error message and return -1 */ -int -returnerr(const char *format, ...) -{ -va_list args; -char hostname[64] = ""; -pid_t PID; - - PID = getpid(); - gethostname(hostname, sizeof(hostname)); - fprintf(stderr, "%s PID %d: ", hostname, PID); - - va_start(args, format); - VPRINTF(stderr, format, args); - debug && VPRINTF(debugfile, format, args); - va_end(args); - fflush(stderr); - debug && fflush(debugfile); - return(-1); -} -/* that's it */ - -/* print a debug message and then flush */ -int -d_printf(const char *format, ...) -{ -va_list args; - - va_start(args, format); - VPRINTF(debugfile, format, args); - va_end(args); - - fflush(debugfile); - return 0; -} -/* that's it */ - -/* returns the last network error as a string */ -char *neterrstr(void) { -static char buf[200]; - -#ifdef WIN32 - sprintf(buf, "WSAGetLastError() = %d", WSAGetLastError()); - WSASetLastError(0); -#else - sprintf(buf, "errno = %d: %s", errno, strerror(errno)); - errno = 0; -#endif /* WIN32 */ - - return buf; -} diff --git a/apps/JAWS/clients/WebSTONE/src/gendata/genrand.mak b/apps/JAWS/clients/WebSTONE/src/gendata/genrand.mak deleted file mode 100755 index 6202df261d1..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/gendata/genrand.mak +++ /dev/null @@ -1,227 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Format Version 4.10
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-!IF "$(CFG)" == ""
-CFG=genrand - Win32 Debug
-!MESSAGE No configuration specified. Defaulting to genrand - Win32 Debug.
-!ENDIF
-
-!IF "$(CFG)" != "genrand - Win32 Release" && "$(CFG)" !=\
- "genrand - 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 "genrand.mak" CFG="genrand - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "genrand - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "genrand - 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 "genrand - Win32 Debug"
-RSC=rc.exe
-CPP=cl.exe
-
-!IF "$(CFG)" == "genrand - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "WinRel"
-# PROP BASE Intermediate_Dir "WinRel"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "WinRel"
-# PROP Intermediate_Dir "WinRel"
-# PROP Target_Dir ""
-OUTDIR=.\WinRel
-INTDIR=.\WinRel
-
-ALL : ".\WinRel\genrand.exe"
-
-CLEAN :
- -@erase ".\WinRel\genrand.exe"
- -@erase ".\WinRel\genrand.obj"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
- /Fp"$(INTDIR)/genrand.pch" /YX /Fo"$(INTDIR)/" /c
-CPP_OBJS=.\WinRel/
-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)/genrand.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 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=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)/genrand.pdb" /machine:I386 /out:"$(OUTDIR)/genrand.exe"
-LINK32_OBJS= \
- ".\WinRel\genrand.obj"
-
-".\WinRel\genrand.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "genrand - 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 "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-OUTDIR=.\Debug
-INTDIR=.\Debug
-
-ALL : ".\Debug\genrand.exe" ".\Debug\genrand.bsc"
-
-CLEAN :
- -@erase ".\Debug\genrand.bsc"
- -@erase ".\Debug\genrand.exe"
- -@erase ".\Debug\genrand.ilk"
- -@erase ".\Debug\genrand.obj"
- -@erase ".\Debug\genrand.pdb"
- -@erase ".\Debug\genrand.sbr"
- -@erase ".\Debug\vc40.idb"
- -@erase ".\Debug\vc40.pdb"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FR /YX /c
-CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\
- /FR"$(INTDIR)/" /Fp"$(INTDIR)/genrand.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/"\
- /c
-CPP_OBJS=.\Debug/
-CPP_SBRS=.\Debug/
-# 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)/genrand.bsc"
-BSC32_SBRS= \
- ".\Debug\genrand.sbr"
-
-".\Debug\genrand.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(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 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=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)/genrand.pdb" /debug /machine:I386 /out:"$(OUTDIR)/genrand.exe"
-LINK32_OBJS= \
- ".\Debug\genrand.obj"
-
-".\Debug\genrand.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 "genrand - Win32 Release"
-# Name "genrand - Win32 Debug"
-
-!IF "$(CFG)" == "genrand - Win32 Release"
-
-!ELSEIF "$(CFG)" == "genrand - Win32 Debug"
-
-!ENDIF
-
-################################################################################
-# Begin Source File
-
-SOURCE=\stone.jim\webstone.src\src\genrand.c
-DEP_CPP_GENRA=\
- "..\sysdep.h"\
- {$(INCLUDE)}"\sys\stat.h"\
- {$(INCLUDE)}"\sys\types.h"\
-
-NODEP_CPP_GENRA=\
- "..\config.h"\
-
-
-!IF "$(CFG)" == "genrand - Win32 Release"
-
-
-".\WinRel\genrand.obj" : $(SOURCE) $(DEP_CPP_GENRA) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "genrand - Win32 Debug"
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-".\Debug\genrand.obj" : $(SOURCE) $(DEP_CPP_GENRA) "$(INTDIR)"
- $(BuildCmds)
-
-".\Debug\genrand.sbr" : $(SOURCE) $(DEP_CPP_GENRA) "$(INTDIR)"
- $(BuildCmds)
-
-!ENDIF
-
-# End Source File
-# End Target
-# End Project
-################################################################################
diff --git a/apps/JAWS/clients/WebSTONE/src/genrand.c b/apps/JAWS/clients/WebSTONE/src/genrand.c deleted file mode 100644 index 3aad47794fb..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/genrand.c +++ /dev/null @@ -1,59 +0,0 @@ -/************************************************************************** - * * - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ -#include <stdio.h> -#include <fcntl.h> -#include <math.h> - -#include <stdlib.h> -#include <sys/types.h> -#include <sys/stat.h> -#include "sysdep.h" - -void -main(const int argc, char* argv[]) -{ - FILE* file; - int i; - int my_random; - int size; - char *cp; - - if (argc != 3) { - printf("usage: %s file_size_in_bytes[K|M] name\n", argv[0]); - exit(2); - } - - if ((file = fopen(argv[2], "w")) == NULL) { - perror("fopen"); - exit(1); - } - - size = atoi(argv[1]); - for (cp = argv[1]; *cp; cp++) { - switch(*cp) { - case 'k': - case 'K': - size *= 1024; - break; - case 'm': - case 'M': - size *= 1024*1024; - break; - } - } - - for (i = 0; i < size; i++) { - my_random = ((RANDOM() % 94) + 33); - fputc((char)my_random, file); - } - - fclose(file); -} diff --git a/apps/JAWS/clients/WebSTONE/src/get.c b/apps/JAWS/clients/WebSTONE/src/get.c deleted file mode 100644 index 26b9bca4a1e..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/get.c +++ /dev/null @@ -1,317 +0,0 @@ -/************************************************************************** - * * - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ - -/* THIS IS WHERE WE GO OUT AND FETCH A URL */ - -#include <stdio.h> -#include <errno.h> - -#ifndef WIN32 -#include <sys/types.h> -#include <sys/errno.h> -#include <sys/socket.h> -#include <sys/param.h> -#include <netinet/in.h> -#include <netdb.h> -#endif /* WIN32 */ - -#include <string.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#ifdef SUNOS -#include <unistd.h> -#endif -#include <ctype.h> - -#ifdef WIN32 -#include <io.h> -#include <windows.h> -#include <winsock.h> -#endif /* WIN32 */ - -#include "sysdep.h" -#include "bench.h" - -#define ACCEPT_COMMAND "Accept: */* HTTP/1.0\r\n\r\n" -#define ACCEPT_COMMAND_LEN ((int)strlen(ACCEPT_COMMAND)) -#define MAXCOMMANDLEN 256 -#define HEADERBUFSIZ (8*1024) - -#define UPPER(c) (((c) >= 'a' && (c) <= 'z') ? (c) + 'A' - 'a' : (c)) - -/* compare two strings with max length, ignoring case */ -int mystrincmp(const char *str1, const char *str2, int len) { -register int diff; - - while (*str1 && *str2 && len--) { - if (diff = UPPER(*str1) - UPPER(*str2)) - return diff < 0 ? -1 : 1; - str1++; - str2++; - } - return 0; -} - -int -get(char *loc, NETPORT port, char *url, rqst_timer_t *timer) -{ - SOCKET sock = BADSOCKET_VALUE; - int writelen; - int bytesread; - int totalbytesread; - int headerlen; - int bodylength; - int contentlength = 0; - int outputfile = -1; - int status; - char getcommand[MAXCOMMANDLEN]; - char headerbuffer[HEADERBUFSIZ+1]; - char *offset; - char outputfilename[MAXPATHLEN]; - char version[100]; - int count; - -/*#define ABORTIVE_CLOSE 1*/ -#ifdef ABORTIVE_CLOSE -#error don't enable this option - struct linger { - int l_onoff; - int l_linger; - } linger_opt; -#endif /* ABORTIVE_CLOSE */ - - /* can you really get an error from gettimeofday?? */ - if(GETTIMEOFDAY(&timer->entertime, &timer->entertimezone) != 0) - { - returnerr("Error retrieving entertime\n"); - goto error; - } - timer->valid = 1; - - if(GETTIMEOFDAY(&timer->beforeconnect, &timer->beforeconnectzone) != 0) - { - returnerr("Error retrieving beforeconnect\n"); - goto error; - } - - sock = connectsock(loc, port, "tcp"); - if (BADSOCKET(sock)) - { - D_PRINTF( "Call to connectsock returned %d (%s)\n", sock, neterrstr() ); - returnerr("Couldn't connect to WWW server: %s\n", neterrstr()); - goto error; - } - -#ifdef ABORTIVE_CLOSE -#error don't enable this option - /* set up for abortive close */ - linger_opt.l_onoff = 1; - linger_opt.l_linger = 0; - if (setsockopt(sock, SOL_SOCKET, SO_LINGER, - (char *) &linger_opt, sizeof(linger_opt)) < 0) { - fprintf(stderr, "Can't set sockopt SO_LINGER"); - returnerr("Couldn't set SO_LINGER = 0\n"); - goto error; - } -#endif /* ABORTIVE_CLOSE */ - - if(GETTIMEOFDAY(&timer->afterconnect, &timer->afterconnectzone) != 0) - { - NETCLOSE(sock); - GETTIMEOFDAY(&timer->exittime, &timer->exittimezone); - returnerr("Error retrieving afterconnect\n"); - goto error; - } - - /* - * SEND THE GET AND THE ACCEPT. - */ - sprintf(getcommand, "GET %s HTTP/1.0\r\n%s", url, - ACCEPT_COMMAND); - D_PRINTF( "Writing to server: %s\n", getcommand ); - writelen = strlen(getcommand); - status = NETWRITE(sock, getcommand, writelen); - if(status != writelen) - { - returnerr("Error sending command line to server: %s\n", - neterrstr()); - goto error; - } - /* - * WE HAVE NOW SENT THE REQUEST SUCCESSFULLY. - * WAIT FOR THE REPLY AND FIND THE HEADER - */ - - if(GETTIMEOFDAY(&timer->beforeheader, &timer->beforeheaderzone) != 0) - { - returnerr("Error retrieving beforeheader\n"); - goto error; - } - - /* read the header and part of the file */ - totalbytesread = 0; - headerlen = 0; - while (totalbytesread < HEADERBUFSIZ) - { - bytesread = NETREAD(sock, headerbuffer+totalbytesread, HEADERBUFSIZ-totalbytesread); - if (BADSOCKET(bytesread)) - { - D_PRINTF( "Did not receive full header\n" ); - D_PRINTF( "NETREAD returned %d\n", bytesread ); - returnerr("Did not receive full header: %s\n", - neterrstr()); - goto error; - } - totalbytesread += bytesread; - - /* search for end of header */ - headerbuffer[totalbytesread] = 0; - if (offset = strstr(headerbuffer, "\n\n")) { - headerlen = offset - headerbuffer + 2; - break; - } else if (offset = strstr(headerbuffer, "\n\r\n")) { - headerlen = offset - headerbuffer + 3; - break; - } - } - - if (headerlen == 0) { - returnerr("Can't find the end of the header in \"%s\"\n", headerbuffer); - goto error; - } - - /* get and check status code from the first line of the header */ - count = sscanf(headerbuffer, "HTTP/%s %d", version, &status); - if (count != 2) { - returnerr("Bad status line in get(): %s\n", headerbuffer); - goto error; - } - if (status < 200 || status > 300) { - returnerr("Bad status (%d) in get() for url %s\n", status, url); - goto error; - } - - /* get the content length line from the header */ - offset = headerbuffer; - while (offset < headerbuffer+headerlen && *offset) { - if (*offset++ != '\n') - continue; - - if (mystrincmp(offset, CONTENT_LENGTH_STRING, strlen(CONTENT_LENGTH_STRING)) == 0) { - sscanf(offset+strlen(CONTENT_LENGTH_STRING), "%d", &contentlength); - D_PRINTF( "Content-Length: %d\n", contentlength ); - } - } - - if(GETTIMEOFDAY(&timer->afterheader, &timer->afterheaderzone) != 0) - { - returnerr("Error retrieving afterheader\n"); - goto error; - } - - if(savefile) - { - sprintf(outputfilename,"/tmp/webstone.data.%d", (int)getpid()); - if((outputfile = open(outputfilename,(O_WRONLY|O_CREAT),0777)) < 0) - { - D_PRINTF( "outputfile %d %d\n", outputfile, errno ); - returnerr("Error saving file: %s\n", strerror(errno)); - goto error; - } - lseek(outputfile,1,SEEK_END); /* this is odd... JEF */ - - /* if we have part of the file already, save that part */ - if(totalbytesread > headerlen) - { - write(outputfile, headerbuffer+headerlen, totalbytesread-headerlen); - } - } - - /* read the body of the file */ - do - { - bytesread = NETREAD(sock, headerbuffer, HEADERBUFSIZ); - D_PRINTF( "Read %d bytes from socket %d\n", bytesread, sock ); - - if (BADSOCKET(bytesread)) - { - D_PRINTF( "Read returns %d, error: %s\n", bytesread, - neterrstr() ); - returnerr("Error during read of page body. Read " - "returns %d on socket %d, error: %s\n", - bytesread, sock, neterrstr()); - goto error; - } - - totalbytesread += bytesread; - - if (outputfile != -1 && bytesread) - { - write(outputfile, headerbuffer, bytesread); - } - - } while (bytesread); - - /* done reading body */ - if ( contentlength && (totalbytesread - headerlen) != contentlength) - { - D_PRINTF( "Warning: file length (%d) doesn't match Content-length (%d)\n", - totalbytesread - headerlen, contentlength); - } - - bodylength = totalbytesread - headerlen; - - if(GETTIMEOFDAY(&timer->afterbody, &timer->afterbodyzone) != 0) - { - returnerr("Error retrieving afterbody\n"); - goto error; - } - - NETCLOSE(sock); - if (outputfile != -1) - { - close(outputfile); - } - - D_PRINTF( "Read %d bytes, %d of that being body\n", - totalbytesread, bodylength ); - - if(GETTIMEOFDAY(&timer->exittime, &timer->exittimezone) != 0) - { - D_PRINTF( "Error retrieving exit time: %s\n", strerror(errno) ); - returnerr("Error retrieving exit time\n"); - goto error; - } - timer->valid = 2; - timer->totalbytes = totalbytesread; - timer->bodybytes = bodylength; - - D_PRINTF( "get returning totalbytes %d body %d valid %d\n", - timer->totalbytes, timer->bodybytes, timer->valid ); - - D_PRINTF( "get returning start %d, end %d\n", - timer->entertime.tv_sec, timer->exittime.tv_sec ); - - D_PRINTF( "get returning connect %d, request %d, header %d, body %d\n", - timer->afterconnect.tv_sec, timer->beforeheader.tv_sec, - timer->afterheader.tv_sec, timer->afterbody.tv_sec ); - - return 0; - -error: - if (!BADSOCKET(sock)) - NETCLOSE(sock); - if (outputfile != -1) - close(outputfile); - GETTIMEOFDAY(&timer->exittime, &timer->exittimezone); /* needed? */ - return -1; -} diff --git a/apps/JAWS/clients/WebSTONE/src/get.h b/apps/JAWS/clients/WebSTONE/src/get.h deleted file mode 100644 index 3f9fb7a1e76..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/get.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef __GET_H__ -#define __GET_H__ -/************************************************************************** - $Header$ - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs where * - * deveolped by SGI for public use. If anychanges are made to this code * - * please try to get the changes back to the author. Feel free to make * - * modfications and changes to the code and release it. * - * * - **************************************************************************/ - -extern int get(char *loc, int port, char *url, rqst_timer_t *timer); - -#endif /* !__GET_H__ */ diff --git a/apps/JAWS/clients/WebSTONE/src/getopt.c b/apps/JAWS/clients/WebSTONE/src/getopt.c deleted file mode 100644 index db2b6c6b91f..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/getopt.c +++ /dev/null @@ -1,66 +0,0 @@ -/* this is a public domain version of getopt */ -/* FTP Site: ftp.uu.net/pub/OS/unix/bsd-sources/lib/librpc/etc/getopt.c */ - -#include <stdio.h> -#include <string.h> - -#define MYNULL 0 -#define ERR(s, c) if(opterr){\ - extern size_t strlen();\ - extern int write();\ - char errbuf[2];\ - errbuf[0] = c; errbuf[1] = '\n';\ - (void) write(2, argv[0], strlen(argv[0]));\ - (void) write(2, s, strlen(s));\ - (void) write(2, errbuf, 2);} - -int opterr = 1; -int optind = 1; -int optopt; -char *optarg; - -int -getopt(argc, argv, opts) -int argc; -char **argv, *opts; -{ - static int sp = 1; - register int c; - register char *cp; - - if(sp == 1) - if(optind >= argc || - argv[optind][0] != '-' || argv[optind][1] == '\0') - return(EOF); - else if(strcmp(argv[optind], "--") == MYNULL) { - optind++; - return(EOF); - } - optopt = c = argv[optind][sp]; - if(c == ':' || (cp=strchr(opts, c)) == NULL) { - ERR(": unknown option, -", c); - if(argv[optind][++sp] == '\0') { - optind++; - sp = 1; - } - return('?'); - } - if(*++cp == ':') { - if(argv[optind][sp+1] != '\0') - optarg = &argv[optind++][sp+1]; - else if(++optind >= argc) { - ERR(": argument missing for -", c); - sp = 1; - return('?'); - } else - optarg = argv[optind++]; - sp = 1; - } else { - if(argv[optind][++sp] == '\0') { - sp = 1; - optind++; - } - optarg = NULL; - } - return(c); -} diff --git a/apps/JAWS/clients/WebSTONE/src/gettimeofday.c b/apps/JAWS/clients/WebSTONE/src/gettimeofday.c deleted file mode 100644 index 7d5614b8189..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/gettimeofday.c +++ /dev/null @@ -1,56 +0,0 @@ - -/* - * This file defines functions that are required for unix compatibility. - * - * These functions are not available in the Microsoft C/C++ Run Time - * and the Win32 API. - * - * The following functions list may not be complete - * - * FUNCTIONS: - * SHARED _gettimeofday - * - */ - - -#include <windows.h> -#include <errno.h> -#include <winsock.h> /* For definition of "timeval" structure */ -#include <sys/timeb.h> /* For prototype of "_ftime()" */ - - -/* - * gettimeofday() -- gets the current time in elapsed seconds and - * microsends since GMT Jan 1, 1970. - * - * ARGUMENTS: - Pointer to a timeval struct to return the time into - * - * RETURN CODES: - 0 on success - * -1 on failure - */ -int gettimeofday(curTimeP) - struct timeval *curTimeP; -{ -struct _timeb localTime; - - if (curTimeP == (struct timeval *) NULL) { - errno = EFAULT; - return (-1); - } - - /* - * Compute the elapsed time since Jan 1, 1970 by first - * obtaining the elapsed time from the system using the - * _ftime(..) call and then convert to the "timeval" - * equivalent. - */ - - _ftime(&localTime); - - curTimeP->tv_sec = localTime.time + localTime.timezone; - curTimeP->tv_usec = localTime.millitm * 1000; - - return(0); -} - - diff --git a/apps/JAWS/clients/WebSTONE/src/install-sh b/apps/JAWS/clients/WebSTONE/src/install-sh deleted file mode 100755 index 89fc9b098b8..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/install-sh +++ /dev/null @@ -1,238 +0,0 @@ -#! /bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. -# - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -tranformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/apps/JAWS/clients/WebSTONE/src/logfile27859 b/apps/JAWS/clients/WebSTONE/src/logfile27859 deleted file mode 100644 index a65984d6f9a..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/logfile27859 +++ /dev/null @@ -1,9 +0,0 @@ - entertime 867794927.279188 - beforeconnect 867794927.279189 - afterconnect 867794927.280504 - beforeheader 867794927.280604 - afterheader 867794927.299170 - afterbody 867794932.215967 - exittime 867794932.216306 - total bytes 5243057 - body bytes 5242880 diff --git a/apps/JAWS/clients/WebSTONE/src/master/webmaster.mak b/apps/JAWS/clients/WebSTONE/src/master/webmaster.mak deleted file mode 100755 index 354ce87ee86..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/master/webmaster.mak +++ /dev/null @@ -1,476 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-!IF "$(CFG)" == ""
-CFG=Webmaster - Win32 Debug
-!MESSAGE No configuration specified. Defaulting to Webmaster - Win32 Debug.
-!ENDIF
-
-!IF "$(CFG)" != "Webmaster - Win32 Release" && "$(CFG)" !=\
- "Webmaster - 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 "webmaster.mak" CFG="Webmaster - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "Webmaster - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "Webmaster - 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 "Webmaster - Win32 Debug"
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "Webmaster - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "WinRel"
-# PROP BASE Intermediate_Dir "WinRel"
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "WinRel"
-# PROP Intermediate_Dir "WinRel"
-OUTDIR=.\WinRel
-INTDIR=.\WinRel
-
-ALL : "$(OUTDIR)\webmaster.exe" "$(OUTDIR)\webmaster.bsc"
-
-CLEAN :
- -@erase "$(INTDIR)\bench.obj"
- -@erase "$(INTDIR)\bench.sbr"
- -@erase "$(INTDIR)\errexit.obj"
- -@erase "$(INTDIR)\errexit.sbr"
- -@erase "$(INTDIR)\getopt.obj"
- -@erase "$(INTDIR)\getopt.sbr"
- -@erase "$(INTDIR)\gettimeofday.obj"
- -@erase "$(INTDIR)\gettimeofday.sbr"
- -@erase "$(INTDIR)\parse_file_list.obj"
- -@erase "$(INTDIR)\parse_file_list.sbr"
- -@erase "$(INTDIR)\rexec.obj"
- -@erase "$(INTDIR)\rexec.sbr"
- -@erase "$(INTDIR)\statistics.obj"
- -@erase "$(INTDIR)\statistics.sbr"
- -@erase "$(INTDIR)\sysdep.obj"
- -@erase "$(INTDIR)\sysdep.sbr"
- -@erase "$(INTDIR)\timefunc.obj"
- -@erase "$(INTDIR)\timefunc.sbr"
- -@erase "$(INTDIR)\webmaster.obj"
- -@erase "$(INTDIR)\webmaster.sbr"
- -@erase "$(OUTDIR)\webmaster.bsc"
- -@erase "$(OUTDIR)\webmaster.exe"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FR /YX /c
-# ADD CPP /nologo /MTd /W3 /GX /O2 /I "WIN32" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FR /YX /c
-CPP_PROJ=/nologo /MTd /W3 /GX /O2 /I "WIN32" /D "WIN32" /D "NDEBUG" /D\
- "_CONSOLE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/webmaster.pch" /YX /Fo"$(INTDIR)/" /c
-CPP_OBJS=.\WinRel/
-CPP_SBRS=.\WinRel/
-# 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)/webmaster.bsc"
-BSC32_SBRS= \
- "$(INTDIR)\bench.sbr" \
- "$(INTDIR)\errexit.sbr" \
- "$(INTDIR)\getopt.sbr" \
- "$(INTDIR)\gettimeofday.sbr" \
- "$(INTDIR)\parse_file_list.sbr" \
- "$(INTDIR)\rexec.sbr" \
- "$(INTDIR)\statistics.sbr" \
- "$(INTDIR)\sysdep.sbr" \
- "$(INTDIR)\timefunc.sbr" \
- "$(INTDIR)\webmaster.sbr"
-
-"$(OUTDIR)\webmaster.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(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 wsock32.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=wsock32.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)/webmaster.pdb" /machine:I386 /out:"$(OUTDIR)/webmaster.exe"
-LINK32_OBJS= \
- "$(INTDIR)\bench.obj" \
- "$(INTDIR)\errexit.obj" \
- "$(INTDIR)\getopt.obj" \
- "$(INTDIR)\gettimeofday.obj" \
- "$(INTDIR)\parse_file_list.obj" \
- "$(INTDIR)\rexec.obj" \
- "$(INTDIR)\statistics.obj" \
- "$(INTDIR)\sysdep.obj" \
- "$(INTDIR)\timefunc.obj" \
- "$(INTDIR)\webmaster.obj"
-
-"$(OUTDIR)\webmaster.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "Webmaster - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "WinDebug"
-# PROP BASE Intermediate_Dir "WinDebug"
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "WinDebug"
-# PROP Intermediate_Dir "WinDebug"
-OUTDIR=.\WinDebug
-INTDIR=.\WinDebug
-
-ALL : "$(OUTDIR)\webmaster.exe" "$(OUTDIR)\webmaster.bsc"
-
-CLEAN :
- -@erase "$(INTDIR)\bench.obj"
- -@erase "$(INTDIR)\bench.sbr"
- -@erase "$(INTDIR)\errexit.obj"
- -@erase "$(INTDIR)\errexit.sbr"
- -@erase "$(INTDIR)\getopt.obj"
- -@erase "$(INTDIR)\getopt.sbr"
- -@erase "$(INTDIR)\gettimeofday.obj"
- -@erase "$(INTDIR)\gettimeofday.sbr"
- -@erase "$(INTDIR)\parse_file_list.obj"
- -@erase "$(INTDIR)\parse_file_list.sbr"
- -@erase "$(INTDIR)\rexec.obj"
- -@erase "$(INTDIR)\rexec.sbr"
- -@erase "$(INTDIR)\statistics.obj"
- -@erase "$(INTDIR)\statistics.sbr"
- -@erase "$(INTDIR)\sysdep.obj"
- -@erase "$(INTDIR)\sysdep.sbr"
- -@erase "$(INTDIR)\timefunc.obj"
- -@erase "$(INTDIR)\timefunc.sbr"
- -@erase "$(INTDIR)\vc40.idb"
- -@erase "$(INTDIR)\vc40.pdb"
- -@erase "$(INTDIR)\webmaster.obj"
- -@erase "$(INTDIR)\webmaster.sbr"
- -@erase "$(OUTDIR)\webmaster.bsc"
- -@erase "$(OUTDIR)\webmaster.exe"
- -@erase "$(OUTDIR)\webmaster.ilk"
- -@erase "$(OUTDIR)\webmaster.pdb"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-# ADD BASE CPP /nologo /W3 /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FR /YX /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "WIN32" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FR /YX /c
-CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /I "WIN32" /D "WIN32" /D "_DEBUG" /D\
- "_CONSOLE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/webmaster.pch" /YX /Fo"$(INTDIR)/"\
- /Fd"$(INTDIR)/" /c
-CPP_OBJS=.\WinDebug/
-CPP_SBRS=.\WinDebug/
-# 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)/webmaster.bsc"
-BSC32_SBRS= \
- "$(INTDIR)\bench.sbr" \
- "$(INTDIR)\errexit.sbr" \
- "$(INTDIR)\getopt.sbr" \
- "$(INTDIR)\gettimeofday.sbr" \
- "$(INTDIR)\parse_file_list.sbr" \
- "$(INTDIR)\rexec.sbr" \
- "$(INTDIR)\statistics.sbr" \
- "$(INTDIR)\sysdep.sbr" \
- "$(INTDIR)\timefunc.sbr" \
- "$(INTDIR)\webmaster.sbr"
-
-"$(OUTDIR)\webmaster.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(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 wsock32.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
-# SUBTRACT LINK32 /pdb:none
-LINK32_FLAGS=wsock32.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)/webmaster.pdb" /debug /machine:I386\
- /out:"$(OUTDIR)/webmaster.exe"
-LINK32_OBJS= \
- "$(INTDIR)\bench.obj" \
- "$(INTDIR)\errexit.obj" \
- "$(INTDIR)\getopt.obj" \
- "$(INTDIR)\gettimeofday.obj" \
- "$(INTDIR)\parse_file_list.obj" \
- "$(INTDIR)\rexec.obj" \
- "$(INTDIR)\statistics.obj" \
- "$(INTDIR)\sysdep.obj" \
- "$(INTDIR)\timefunc.obj" \
- "$(INTDIR)\webmaster.obj"
-
-"$(OUTDIR)\webmaster.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 "Webmaster - Win32 Release"
-# Name "Webmaster - Win32 Debug"
-
-!IF "$(CFG)" == "Webmaster - Win32 Release"
-
-!ELSEIF "$(CFG)" == "Webmaster - Win32 Debug"
-
-!ENDIF
-
-################################################################################
-# Begin Source File
-
-SOURCE=..\bench.c
-DEP_CPP_BENCH=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
- {$(INCLUDE)}"\sys\TYPES.H"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\bench.obj" : $(SOURCE) $(DEP_CPP_BENCH) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\bench.sbr" : $(SOURCE) $(DEP_CPP_BENCH) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\errexit.c
-DEP_CPP_ERREX=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
- {$(INCLUDE)}"\sys\TYPES.H"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\errexit.obj" : $(SOURCE) $(DEP_CPP_ERREX) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\errexit.sbr" : $(SOURCE) $(DEP_CPP_ERREX) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\webmaster.c
-DEP_CPP_WEBMA=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
- {$(INCLUDE)}"\sys\TYPES.H"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\webmaster.obj" : $(SOURCE) $(DEP_CPP_WEBMA) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\webmaster.sbr" : $(SOURCE) $(DEP_CPP_WEBMA) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\timefunc.c
-DEP_CPP_TIMEF=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\timefunc.obj" : $(SOURCE) $(DEP_CPP_TIMEF) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\timefunc.sbr" : $(SOURCE) $(DEP_CPP_TIMEF) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\sysdep.c
-DEP_CPP_SYSDE=\
- "..\config.h"\
- "..\sysdep.h"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\sysdep.obj" : $(SOURCE) $(DEP_CPP_SYSDE) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\sysdep.sbr" : $(SOURCE) $(DEP_CPP_SYSDE) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\statistics.c
-DEP_CPP_STATI=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\statistics.obj" : $(SOURCE) $(DEP_CPP_STATI) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\statistics.sbr" : $(SOURCE) $(DEP_CPP_STATI) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\rexec.c
-DEP_CPP_REXEC=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\rexec.obj" : $(SOURCE) $(DEP_CPP_REXEC) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\rexec.sbr" : $(SOURCE) $(DEP_CPP_REXEC) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=..\getopt.c
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\getopt.sbr" : $(SOURCE) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=\nanbor\ACE_wrappers\apps\JAWS\clients\WebSTONE\src\parse_file_list.c
-DEP_CPP_PARSE=\
- "..\bench.h"\
- "..\config.h"\
- "..\sysdep.h"\
- {$(INCLUDE)}"\sys\TYPES.H"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\parse_file_list.obj" : $(SOURCE) $(DEP_CPP_PARSE) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\parse_file_list.sbr" : $(SOURCE) $(DEP_CPP_PARSE) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=\nanbor\ACE_wrappers\apps\JAWS\clients\WebSTONE\src\gettimeofday.c
-DEP_CPP_GETTI=\
- {$(INCLUDE)}"\sys\timeb.h"\
-
-
-BuildCmds= \
- $(CPP) $(CPP_PROJ) $(SOURCE) \
-
-
-"$(INTDIR)\gettimeofday.obj" : $(SOURCE) $(DEP_CPP_GETTI) "$(INTDIR)"
- $(BuildCmds)
-
-"$(INTDIR)\gettimeofday.sbr" : $(SOURCE) $(DEP_CPP_GETTI) "$(INTDIR)"
- $(BuildCmds)
-
-# End Source File
-# End Target
-# End Project
-################################################################################
diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/buffer.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/buffer.h deleted file mode 100644 index 0ceb060d766..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/buffer.h +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * buffer.h: For performing buffered I/O on a file or socket descriptor. - * - * This is an abstraction to allow I/O to be performed regardless of the - * current system. That way, an integer file descriptor can be used under - * UNIX but a stdio FILE structure could be used on systems which don't - * support that or don't support it as efficiently. - * - * Two abstractions are defined: A file buffer, and a network buffer. A - * distinction is made so that mmap() can be used on files (but is not - * required). Also, the file buffer takes a file name as the object to - * open instead of a file descriptor. A lot of the network buffering - * is almost an exact duplicate of the non-mmap file buffering. - * - * If an error occurs, system-independent means to obtain an error string - * are also provided. However, if the underlying system is UNIX the error - * may not be accurate in a threaded environment. - * - * Rob McCool - * - */ - - -#ifndef BUFFER_H -#define BUFFER_H - -#ifdef XP_WIN32 -#include <nt/ntbuffer.h> -#else - - -/* - * We need certain system specific functions and symbols. - */ - -#include "file.h" -#include "net.h" - -/* - * Requires that the macro MALLOC be set to a "safe" malloc that will - * exit if no memory is available. If not under MCC httpd, define MALLOC - * to be the real malloc and play with fire, or make your own function. - */ - -#include "../netsite.h" - -#ifdef FILE_UNIX_MMAP -#include <sys/types.h> /* caddr_t */ -#endif - - -/* ------------------------------ Structures ------------------------------ */ - -#ifdef FILE_UNIX_MMAP -typedef struct { - SYS_FILE fd; - caddr_t fp; - int len; - - char *inbuf; /* for buffer_grab */ - int cursize; - - int pos; - char *errmsg; -} filebuf; - -#else - -typedef struct { - SYS_FILE fd; - - int pos, cursize, maxsize; - char *inbuf; - char *errmsg; -} filebuf; - -#endif - -typedef struct { - SYS_NETFD sd; - - int pos, cursize, maxsize, rdtimeout; - char *inbuf; - char *errmsg; -} netbuf; - - -/* -------------------------------- Macros -------------------------------- */ - - -/* - * netbuf_getc gets a character from the given network buffer and returns - * it. (as an integer). - * - * It will return (int) IO_ERROR for an error and (int) IO_EOF for - * an error condition or EOF respectively. - */ - -#define netbuf_getc(b) \ - ((b)->pos != (b)->cursize ? (int)((b)->inbuf[(b)->pos++]) : netbuf_next(b,1)) - -#ifdef FILE_UNIX_MMAP -#define filebuf_getc(b) ((b)->pos == (b)->len ? IO_EOF : (b)->fp[(b)->pos++]) -#else -#define filebuf_getc(b) \ - ((b)->pos != (b)->cursize ? (int)((b)->inbuf[(b)->pos++]) : filebuf_next(b,1)) -#endif - - -/* - * buffer_error returns the last error that occurred with buffer. Don't use - * this unless you know an error occurred. Independent of network/file type. - */ - -#define buffer_error(b) ((b)->errmsg) - -/* - * buffer_flush flushes any data after the current pos to the file - * descriptor fd. Regardless of buffer type. - */ - -#define buffer_flush(buf,fd) \ - system_write(fd,&(buf)->inbuf[(buf)->pos], (buf)->cursize - (buf)->pos) - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * buffer_open opens a new buffer reading the specified file, with an I/O - * buffer of size sz, and returns a new buffer structure which will hold - * the data. - * - * If FILE_UNIX_MMAP is defined, this may return NULL. If it does, check - * system_errmsg to get a message about the error. - */ - -filebuf *filebuf_open(SYS_FILE fd, int sz); -netbuf *netbuf_open(SYS_NETFD sd, int sz); - -/* - * filebuf_open_nostat is a convenience function for mmap() buffer opens, - * if you happen to have the stat structure already. - */ - -#ifdef FILE_UNIX_MMAP -#include <sys/stat.h> -filebuf *filebuf_open_nostat(SYS_FILE fd, int sz, struct stat *finfo); - -#else -#define filebuf_open_nostat(fd,sz,finfo) filebuf_open(fd,sz) -#endif - -/* - * buffer_next loads size more bytes into the given buffer and returns the - * first one, or BUFFER_EOF on EOF and BUFFER_ERROR on error. - */ - -int filebuf_next(filebuf *buf, int advance); -int netbuf_next(netbuf *buf, int advance); - -/* - * buffer_close deallocates a buffer and closes its associated files - * (does not close a network socket). - */ - -void filebuf_close(filebuf *buf); -void netbuf_close(netbuf *buf); - -/* - * buffer_grab will set the buffer's inbuf array to an array of sz bytes - * from the buffer's associated object. It returns the number of bytes - * actually read (between 1 and sz). It returns IO_EOF upon EOF or IO_ERROR - * upon error. The cursize entry of the structure will reflect the size - * of the iobuf array. - * - * The buffer will take care of allocation and deallocation of this array. - */ - -int filebuf_grab(filebuf *buf, int sz); -int netbuf_grab(netbuf *buf, int sz); - - -/* - * netbuf_buf2sd will send n bytes from the (probably previously read) - * buffer and send them to sd. If sd is -1, they are discarded. If n is - * -1, it will continue until EOF is recieved. Returns IO_ERROR on error - * and the number of bytes sent any other time. - */ - -int netbuf_buf2sd(netbuf *buf, SYS_NETFD sd, int len); - -/* - * filebuf_buf2sd assumes that nothing has been read from the filebuf, - * and just sends the file out to the given socket. Returns IO_ERROR on error - * and the number of bytes sent otherwise. - * - * Does not currently support you having read from the buffer previously. This - * can be changed transparently. - */ - -int filebuf_buf2sd(filebuf *buf, SYS_NETFD sd); - -#endif -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/cinfo.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/cinfo.h deleted file mode 100644 index 543147104a2..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/cinfo.h +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * cinfo.h: Content Information for a file, i.e. its type, etc. - * - * See cinfo.c for dependency information. - * - * Rob McCool - */ - - - -#ifndef CINFO_H -#define CINFO_H - - - -/* ------------------------------ Constants ------------------------------- */ - - -/* - * This will be the first string in the file, followed by x.x version - * where x is an integer. - * - * Updated due to trendy name change - */ - -#define MCC_MT_MAGIC "#--Mosaic Communications Corporation MIME Information" -#define MCC_MT_MAGIC_LEN 53 -#define NCC_MT_MAGIC "#--Netscape Communications Corporation MIME Information" -#define NCC_MT_MAGIC_LEN 55 - -/* The character which separates extensions with cinfo_find */ - -#define CINFO_SEPARATOR '.' - -/* The maximum length of a line in this file */ - -#define CINFO_MAX_LEN 1024 - -/* The hash function for the database. Hashed on extension. */ -#include <ctype.h> -#define CINFO_HASH(s) (isalpha(s[0]) ? tolower(s[0]) - 'a' : 26) - -/* The hash table size for that function */ -#define CINFO_HASHSIZE 27 - - -/* ------------------------------ Structures ------------------------------ */ - - -/* - * The ContentInfo structure. - * - * Currently, we support the following attributes: - * - * 1. Type: This identifies what kind of data is in the file. - * 2. Encoding: Identifies any compression or otherwise content-independent - * transformation which has been applied to the file (uuencode, etc.) - * 3. Language: Identifies the language a text document is in. - * 4. Description: A text string describing the file. - * 5. Viewer: The program to use to view the file. - * - * Multiple items are separated with a comma, e.g. - * encoding="x-gzip, x-uuencode" - */ - -typedef struct { - char *type; - char *encoding; - char *language; -} cinfo; - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * cinfo_init initializes the content info system. Call this before - * cinfo_merge. - */ - -void cinfo_init(void); - -/* - * cinfo_terminate frees the database for shutdown. - */ - -void cinfo_terminate(void); - -/* - * cinfo_merge merges the contents of the given filename with the current - * cinfo database. It returns NULL upon success and a string (which you - * must deallocate) upon error. - */ - -char *cinfo_merge(char *fn); - - -/* - * cinfo_find finds any content information for the given uri. The file name - * is the string following the last / in the uri. Multiple extensions are - * separated by CINFO_SEPARATOR. You may pass in a filename instead of uri. - * - * Returns a newly allocated cinfo structure with the information it - * finds. The elements of this structure are coming right out of the types - * database and so if you change it or want to keep it around for long you - * should strdup it. You should free only the structure itself when finished - * with it. - * - * If there is no information for any one of the extensions it - * finds, it will ignore that extension. If it cannot find information for - * any of the extensions, it will return NULL. - */ - -cinfo *cinfo_find(char *uri); - -/* - * cinfo_lookup finds the information about the given content-type, and - * returns a cinfo structure so you can look up description and icon. - */ - -cinfo *cinfo_lookup(char *type); - -/* - * cinfo_dump_database dumps the current database to the given file desc. - */ - -#include <stdio.h> -void cinfo_dump_database(FILE *dump); - - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/crit.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/crit.h deleted file mode 100644 index 04954857c0c..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/crit.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * crit.h: Critical section abstraction. Used in threaded servers to protect - * areas where two threads can interfere with each other. - * - * Condvars are condition variables that are used for thread-thread - * synchronization. - * - * Rob McCool - */ - -#ifndef CRIT_H -#define CRIT_H - - -#ifdef USE_NSPR -#include <nspr/prmon.h> -typedef PRMonitor* CRITICAL; -#else -typedef void *CRITICAL; -#endif - -/* - * crit_init creates and returns a new critical section variable. At the - * time of creation no one has entered it. - */ -#ifdef USE_NSPR -#define crit_init() PR_NewMonitor(0) -#else -#define crit_init() (NULL) -#endif - -/* - * crit_enter enters a critical section. If someone is already in the - * section, the calling thread is blocked until that thread exits. - */ -#ifdef USE_NSPR -#define crit_enter(id) PR_EnterMonitor(id) -#else -#define crit_enter(id) (0) -#endif - -/* - * crit_exit exits a critical section. If another thread is blocked waiting - * to enter, it will be unblocked and given ownership of the section. - */ -#ifdef USE_NSPR -#define crit_exit(id) PR_ExitMonitor(id) -#else -#define crit_exit(id) (0) -#endif - -/* - * crit_terminate removes a previously allocated critical section variable. - */ -#ifdef USE_NSPR -#define crit_terminate(id) PR_DestroyMonitor(id) -#else -#define crit_terminate(id) (0) -#endif - - -#ifdef USE_NSPR -typedef PRMonitor* CONDVAR; -#else -typedef void* CONDVAR; -#endif - -/* - * condvar_init initializes and returns a new condition variable. You - * must provide a critical section to be associated with this condition - * variable. - */ -#ifdef USE_NSPR -#define condvar_init(crit) (crit) -#else -#define condvar_init(crit) (crit) -#endif - -/* - * condvar_wait blocks on the given condition variable. The calling thread - * will be blocked until another thread calls condvar_notify on this variable. - * The caller must have entered the critical section associated with this - * condition variable prior to waiting for it. - */ -#ifdef USE_NSPR -#define condvar_wait(cv) (PR_Wait(cv, LL_MAXINT)) -#else -#define condvar_wait(cv) (0) -#endif - -/* - * condvar_notify awakens any threads blocked on the given condition - * variable. The caller must have entered the critical section associated - * with this variable first. - */ -#ifdef USE_NSPR -#define condvar_notify(cv) (PR_Notify(cv)) -#else -#define condvar_notify(cv) (0) -#endif - -/* - * condvar_terminate frees the given previously allocated condition variable - */ -#ifdef USE_NSPR -#define condvar_terminate(cv) (0) -#else -#define condvar_terminate(cv) (0) -#endif - - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/daemon.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/daemon.h deleted file mode 100644 index 24b44ad0cd0..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/daemon.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * daemon.h: Things related to the accepting connections - * - * Rob McCool - */ - - -#ifndef DAEMON_H -#define DAEMON_H - -#ifdef XP_WIN32 -#include <nt/ntdaemon.h> -#else - -#include "net.h" -#include "session.h" - -#include <pwd.h> /* struct passwd */ - - -/* ------------------------------- Defines -------------------------------- */ - - -#define child_exit exit - - -/* Codes for child_status */ -#define CHILD_EMPTY_SLOT 0xfe -#define CHILD_AWAIT_CONNECT 0xff -#define CHILD_PROCESSING 0x00 -#define CHILD_READING 0x01 -#define CHILD_WRITING 0x02 -#define CHILD_RESOLVING 0x03 - - -typedef struct { - char *ipstr; - int port; - struct passwd *pw; - char *chr; - char *pidfn; - void (*rcback)(int); -#if defined(DAEMON_UNIX_POOL) || defined(DAEMON_UNIX_MOBRULE) - int maxprocs, minprocs, proclife; -#endif -#ifdef NET_SSL - char *secure_keyfn; - char *secure_certfn; - char *secure_dongle; - int secure_auth; - int secure_session_timeout; - int security; -#endif -} daemon_s; - - -/* ------------------------------ Prototypes ------------------------------ */ - -#ifdef MCC_PROXY -/* A unique serial number assigned to each child. */ -extern int child_serial; -#endif - -/* - * daemon_run accepts whether or not it should detach from its parent process, - * and a daemon structure as its arguments. The daemon structure contains - * a port number, a root directory to chroot to (can be NULL), a filename to - * log the daemon pid to (can be NULL). daemon_run never returns. - * - * child_callback is a function which will be called every time a new - * connection is recieved. Session is a new session ID. - * - * rcback is a function which is a restart function: When SIGHUP is received, - * this function will be called. You may give SIG_DFL if you don't want to - * support restarting. The rcback will be passed SIGHUP. - * - * pw is the passwd entry to run the daemon as. If the effective user id is - * root, daemon_run will try to set its uid and gid to the user pointed - * to by this structure. You may pass NULL. - */ - -void daemon_run(int det, void (*child_callback)(Session *), daemon_s *d); - -/* - * fork is a wrapper for the system's fork function. This closes the listen - * socket for the mob. This also makes sure that a threaded daemon only gets - * the calling thread and not all of them. - */ - -pid_t child_fork(void); - - -/* - * Set status to the given code for statistics reporting - */ - -#ifdef DAEMON_STATS -void child_status(int code); -#else -#define child_status(code) (void)(code) -#endif - - -#endif -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/dll.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/dll.h deleted file mode 100644 index 0a3edb0633e..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/dll.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * dll.h: Handle dynamically linked libraries - * - * Rob McCool - */ - -#ifndef _DLL_H -#define _DLL_H - -#include "systems.h" - -#if defined(DLL_CAPABLE) - -/* --------------------------- Data structures ---------------------------- */ - - -#if defined(USE_NSPR) -#include <nspr/prlink.h> -typedef int DLHANDLE; - -#elif defined(DLL_DLOPEN) -#include <dlfcn.h> -typedef void *DLHANDLE; /* DLOPEN */ - -#elif defined(DLL_HPSHL) -#include <dl.h> -typedef shl_t DLHANDLE; /* HP_SHL */ - -#elif defined(DLL_WIN32) -typedef HINSTANCE DLHANDLE; /* WIN32 */ -#endif - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * dll_open loads the library at the given path into memory, and returns - * a handle to be used in later calls to dll_findsym and dll_close. - */ -#if defined(USE_NSPR) -#define dll_open(libfn) PR_LoadLibrary(libfn) - -#elif defined(DLL_DLOPEN) -#define dll_open(libfn) dlopen(libfn, DLL_DLOPEN_FLAGS) - -#elif defined(DLL_HPSHL) -#define dll_open(libfn) shl_load((libfn), BIND_IMMEDIATE, NULL) - -#elif defined(DLL_WIN32) -DLHANDLE dll_open(char *libfn); -#endif - - -/* - * dll_findsym looks for a symbol with the given name in the library - * pointed to by the given handle. Returns a pointer to the named function. - */ - -#if defined(USE_NSPR) -#define dll_findsym(dlp, name) PR_FindSymbol(name) - -#elif defined(DLL_DLOPEN) -#define dll_findsym(dlp, name) dlsym(dlp, name) - -#elif defined(DLL_HPSHL) -void *dll_findsym(DLHANDLE dlp, char *name); - -#elif defined(DLL_WIN32) -#define dll_findsym(dlp, name) GetProcAddress(dlp, name) -#endif - - -/* - * dll_error returns a string describing the last error on the given handle - */ -#if defined(USE_NSPR) -#define dll_error(dlp) system_errmsg(0) - -#elif defined(DLL_DLOPEN) -#define dll_error(dlp) dlerror() - -#elif defined(DLL_HPSHL) -#define dll_error(dlp) system_errmsg(0) - -#elif defined(DLL_WIN32) -#define dll_error(dlp) system_errmsg(0) -#endif - - -/* - * dll_close closes the previously opened library given by handle - */ -#if defined(USE_NSPR) -int dll_close(void *arg); - -#elif defined(DLL_DLOPEN) -#define dll_close dlclose - -#elif defined (DLL_HPSHL) -#define dll_close shl_unload - -#elif defined(DLL_WIN32) -#define dll_close FreeLibrary -#endif - - -#endif /* DLL_CAPABLE */ -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/ereport.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/ereport.h deleted file mode 100644 index c10c6ab86b5..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/ereport.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * ereport.h: Records transactions, reports errors to administrators, etc. - * - * Rob McCool - */ - - -#ifndef EREPORT_H -#define EREPORT_H - - -#include "../base/session.h" /* Session structure */ -#ifdef XP_UNIX -#include <pwd.h> /* struct passwd */ -#endif /* XP_UNIX */ - - -/* ------------------------------ Constants ------------------------------- */ - - -/* - * The maximum length of an error message. NOT RUN-TIME CHECKED - */ - -#define MAX_ERROR_LEN 8192 - -/* A warning is a minor mishap, such as a 404 being issued. */ -#define LOG_WARN 0 - -/* - * A misconfig is when there is a syntax error or permission violation in - * a config. file. - */ -#define LOG_MISCONFIG 1 - -/* - * Security warnings are issued when authentication fails, or a host is - * given a 403 return code. - */ -#define LOG_SECURITY 2 - -/* - * A failure is when a request could not be fulfilled due to an internal - * problem, such as a CGI script exiting prematurely, or a filesystem - * permissions problem. - */ -#define LOG_FAILURE 3 - -/* - * A catastrophe is a fatal server error such as running out of - * memory or processes, or a system call failing, or even a server crash. - * The server child cannot recover from a catastrophe. - */ -#define LOG_CATASTROPHE 4 - -/* - * Informational message, of no concern. - */ -#define LOG_INFORM 5 - -/* - * The time format to use in the error log - */ - -#define ERR_TIMEFMT "[%d/%b/%Y:%H:%M:%S]" - - -/* The fd you will get if you are reporting errors to SYSLOG */ - -#define ERRORS_TO_SYSLOG -1 - - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * ereport logs an error of the given degree and formats the arguments with - * the printf() style fmt. Returns whether the log was successful. Records - * the current date. - */ - -int ereport(int degree, char *fmt, ...); - -/* - * ereport_init initializes the error logging subsystem and opens the static - * file descriptors. It returns NULL upon success and an error string upon - * error. If a userpw is given, the logs will be chowned to that user. - * - * email is the address of a person to mail upon catastrophic error. It - * can be NULL if no e-mail is desired. ereport_init will not duplicate - * its own copy of this string; you must make sure it stays around and free - * it when you shut down the server. - */ - -char *ereport_init(char *err_fn, char *email, struct passwd *pw); - -/* - * log_terminate closes the error and common log file descriptors. - */ -void ereport_terminate(void); - -/* For restarts */ -SYS_FILE ereport_getfd(void); - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/eventlog.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/eventlog.h deleted file mode 100644 index 8218f875075..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/eventlog.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -// EVENTLOG.H -// -// This file contains the defines that make NT an installable service. -// -// 1/12/95 aruna -// - -// Functions in eventlog.c - -VOID InitializeAdminLogging(PCHAR ServiceName, PCHAR MessageFile); -VOID InitializeHttpdLogging(PCHAR ServiceName, PCHAR MessageFile); -VOID InitializeHttpsLogging(PCHAR ServiceName, PCHAR MessageFile); - -VOID TerminateAdminLogging(); -VOID TerminateHttpdLogging(); -VOID TerminateHttpsLogging(); - -VOID LogErrorEvent(PCHAR ServiceName, WORD fwEventType, WORD fwCategory, DWORD IDEvent, - LPTSTR chMsg, LPTSTR lpszMsg); - -// Functions in error.c - -VOID ReportError(PCHAR ErrorMsg); - -BOOL CALLBACK ErrorDialogProc( - HWND hDlg, - UINT message, - WPARAM wParam, - LPARAM lParam - ); - - - - - - - - - - - - - - - diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h deleted file mode 100644 index f0efb1ee582..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/file.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * file.h: system specific functions for reading/writing files - * - * Rob McCool - */ - - -#ifndef FILE_H -#define FILE_H - -#ifdef XP_WIN32 -#include <nt/ntfile.h> -#else - - -#include "netsite.h" -#include "systems.h" - - -/* - * I cheat: These are set up such that system_read can be a macro for read - * under UNIX. IO_OKAY is anything positive. - */ - -#define IO_OKAY 1 -#define IO_ERROR -1 -#define IO_EOF 0 - - -#ifdef FILE_STDIO -#include <stdio.h> - -#elif defined(FILE_UNIX) -#include <sys/types.h> -#include <sys/file.h> -#include <fcntl.h> -#include <unistd.h> -#endif - - -/* -------------------------- File related defs --------------------------- */ - - -/* The disk page size on this machine. */ -#define FILE_BUFFERSIZE 4096 - - -/* - * The fd data type for this system. - */ - -#if defined(FILE_STDIO) -typedef FILE* SYS_FILE; -#define SYS_ERROR_FD NULL -#define SYS_STDERR stderr - -#elif defined(FILE_UNIX) -typedef int SYS_FILE; -#define SYS_ERROR_FD -1 -#define SYS_STDERR STDERR_FILENO - -#else -#error "undefined file typing for current system" -#endif - -#ifdef XP_UNIX -#define FILE_PATHSEP '/' -#define FILE_PARENT "../" - -#define system_chdir chdir -#endif - - -/* - * system_fread reads sz bytes from fd into to buf, return number of bytes - * read, or IO_EOF if EOF, or IO_ERROR if error. - */ - -#if defined(FILE_STDIO) -int system_fread(SYS_FILE fd, char *buf, int sz); - -#elif defined(FILE_UNIX) -#define system_fread(fd,buf,sz) read(fd,buf,sz) - -#endif - -/* - * system_fopenRO opens a given file for reading only - * system_fopenWA opens a given file for writing, appending new output - */ - -#if defined(FILE_STDIO) -#define system_fopenRO(path) fopen(path,"r") -#define system_fopenWA(path) fopen(path,"a") -#define system_fopenRW(path) fopen(path,"w") - -#elif defined(FILE_UNIX) -#define system_fopenRO(path) open(path, O_RDONLY) -#define system_fopenWA(path) \ - open(path, O_RDWR | O_CREAT | O_APPEND, 0644) -#define system_fopenRW(path) \ - open(path, O_RDWR | O_CREAT, 0644) - -#endif - - -/* - * system_fclose closes the file fd - */ - -#if defined(FILE_STDIO) -#define system_fclose(fd) fclose(fd) - -#elif defined(FILE_UNIX) -#define system_fclose(fd) close(fd) -#endif - -/* - * This call stops core dumps in a portable way. Returns -1 on error. - */ - -int system_nocoredumps(void); - - -#if defined(FILE_STDIO) -#define system_lseek fseek - -#elif defined(FILE_UNIX) -#define system_lseek lseek - -#endif - -/* - * system_write writes sz bytes from buf to fd. The handler function should - * handle partial writes and anything else like that. Returns IO_* - */ - -int system_fwrite(SYS_FILE fd,char *buf,int sz); - -/* - * system_fwrite_atomic locks the given fd before writing to it. This avoids - * interference between simultaneous writes. Returns IO_* - */ - -int system_fwrite_atomic(SYS_FILE fd, char *buf, int sz); - -/* - * system_errmsg returns the last error that occured while processing file - * descriptor fd. fd does not have to be specified (if the error is a global - * such as in UNIX systems). PPS: Rob is a halfwit. This parameter is useless. - */ - -#ifndef FILE_WIN32 -#include <errno.h> - -extern char *sys_errlist[]; -#define file_notfound() (errno == ENOENT) -#define system_errmsg(fd) (sys_errlist[errno]) -#endif - - -/* - * flock locks a file against interference from other processes - * ulock unlocks it. - */ -#ifdef BSD_FLOCK -#include <sys/file.h> -#define system_initlock(fd) (0) -#define system_flock(fd) flock(fd, LOCK_EX) -#define system_ulock(fd) flock(fd, LOCK_UN) - -#elif defined(FILE_UNIX) -#include <unistd.h> -#define system_initlock(fd) (0) -#define system_flock(fd) lockf(fd, F_LOCK, 0) -#define system_ulock(fd) lockf(fd, F_ULOCK, 0) - -#endif - - -/* - * unix2local converts a unix-style pathname to a local one - */ - -#ifdef XP_UNIX -#define file_unix2local(path,p2) strcpy(p2,path) -#endif - -/* -------------------------- Dir related defs ---------------------------- */ - - -#ifdef XP_UNIX -#include <dirent.h> -typedef DIR* SYS_DIR; -typedef struct dirent SYS_DIRENT; -#define dir_open opendir -#define dir_read readdir -#define dir_close closedir - -#endif -#endif -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/minissl.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/minissl.h deleted file mode 100644 index 1a00323cecc..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/minissl.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - - -/* Prototypes for SSL I/O functions */ -extern int SSL_Close(int); -extern int SSL_Socket(int, int, int); -extern int SSL_GetSockOpt(int, int, int, void *, int *); -extern int SSL_SetSockOpt(int, int, int, const void *, int); -extern int SSL_Bind(int, const void *, int); -extern int SSL_Listen(int, int); -extern int SSL_Accept(int, void *, int *); -extern int SSL_Read(int, void *, int); -extern int SSL_Write(int, const void *, int); -extern int SSL_GetPeerName(int, void *, int *); diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/net.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/net.h deleted file mode 100644 index 0454ac69c84..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/net.h +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * net.h: system specific networking definitions - * - * Rob McCool - */ - - -#ifndef NET_H -#define NET_H - -#include "systems.h" - -#include "file.h" /* for client file descriptors */ - -#include "pblock.h" /* for client data block */ - - -/* This should be a user-given parameter later */ -#define NET_BUFFERSIZE 8192 -/* So should this. */ -#define NET_READ_TIMEOUT 120 -#define NET_WRITE_TIMEOUT 300 - -#define SSL_HANDSHAKE_TIMEOUT 300 - -#if defined(NET_SOCKETS) || defined(NET_SSL) - -#ifdef NET_WINSOCK -#include <winsock.h> -#else /* XP_UNIX */ -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> /* sockaddr and in_addr */ -#include <arpa/inet.h> /* inet_ntoa */ -#include <netdb.h> /* hostent stuff */ -#endif /* NET_WINSOCK */ - -#ifdef NET_SSL -#include "minissl.h" -#endif - - -/* -------------------------------- Global -------------------------------- */ - -extern int net_enabledns; - - - -/* ------------------------------ Data types ------------------------------ */ - - -#ifdef NET_WINSOCK -typedef SOCKET SYS_NETFD; -#else /* XP_UNIX */ -typedef int SYS_NETFD; -#endif /* NET_WINSOCK */ - -#define SYS_NET_ERRORFD -1 - - -/* -------------------------------- Macros -------------------------------- */ - - -/* These may be different for non-UNIX systems. */ - - -#ifndef NET_SSL -#define net_socket socket -#define net_setsockopt setsockopt -#define net_getsockopt getsockopt -#define net_listen listen -#define net_select select -#define net_getpeername getpeername - -#ifndef NET_WINSOCK -#define net_close(sd) close(sd) -#define net_bind bind -#else /* NET_WINSOCK */ -#define net_close(sd) closesocket(sd) -#define system_netbind bind -int net_bind(SYS_NETFD s, const struct sockaddr *name, int namelen); -#endif /* NET_WINSOCK */ - -#ifdef DAEMON_NEEDS_SEMAPHORE -#define net_accept net_semaccept -#else /* ! DAEMON_NEEDS_SEMAPHORE */ -#define net_accept accept -#endif /* DAEMON_NEEDS_SEMAPHORE */ - -#else /* NET_SSL */ -#define net_close(sd) SSL_Close(sd) -#define net_socket SSL_Socket -#define net_setsockopt SSL_SetSockOpt -#define net_getsockopt SSL_GetSockOpt - -#ifdef XP_UNIX -#define net_bind SSL_Bind -#else /* WIN32 */ -#define system_netbind SSL_Bind -int net_bind(SYS_NETFD s, const struct sockaddr *name, int namelen); -#endif /* XP_UNIX */ - -#define net_listen SSL_Listen -#define net_select select /* !!! */ -#define net_getpeername SSL_GetPeerName -#define net_accept SSL_Accept -#endif /* ! NET_SSL */ - - -/* Users should never call the system_net* functions. */ -#ifdef NET_SSL -#define system_netread(sd, buf, sz) SSL_Read(sd, buf, sz) -#define system_netwrite SSL_Write -#else /* ! NET_SSL */ - -#if !defined(NET_WINSOCK) -#define system_netread(sd, buf, sz) read(sd, buf, sz) -#define system_netwrite write -#else /* NET_WINSOCK */ -#define system_netread(sd, buf, sz) recv(sd, buf, sz, 0) -#define system_netwrite(sd, buf, sz) send(sd, buf, sz, 0) -#endif /* ! NET_WINSOCK */ - -#endif /* NET_SSL */ - -int net_read(SYS_NETFD sd, char *buf, int sz, int timeout); -int net_write(SYS_NETFD sd, char *buf, int sz); - -#ifdef DAEMON_NEEDS_SEMAPHORE -int net_semaccept_init(int port); -int net_semaccept(int s, struct sockaddr *addr, int *addrlen); -void net_semaccept_terminate(void); -#endif - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * net_find_fqdn looks through the given hostent structure trying to find - * a FQDN for the host. If it finds none, it returns NULL. Otherwise, it - * returns a newly allocated copy of that string. - */ - -char *net_find_fqdn(struct hostent *p); - -/* - * net_ip2host transforms the given textual IP number into a FQDN. If it - * can't find a FQDN, it will return what it can get. Otherwise, NULL. - * - * verify is whether or not the function should verify the hostname it - * gets. This takes an extra query but is safer for use in access control. - */ - -char *net_ip2host(char *ip, int verify); - -/* - * net_sendmail sends mail to the specified recipient with the given subject - * and message. Currently uses external programs. - */ - -int net_sendmail(char *to, char *subject, char *msg); - -#endif -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nodelock.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nodelock.h deleted file mode 100644 index c69c553a2a4..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nodelock.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * nodelock.h: licensing stuff - */ - -#ifndef _NODELOCK_H -#define _NODELOCK_H - -/* - * Do the initial IP address check and expiration date check. Reads a file - * from admin/config, as #define'd. - * - * Returns 1 on error, 0 on AOK. - */ - -int node_init(void); - -/* - * Check the expiration date against The Now. - * - * Returns 1 on error, 0 on AOK. - */ - -int node_check(void); - -/* - * So how we doin, license - * - * Returns 1 on error, 0 on AOK - */ -int node_status(void); - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nterrors.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nterrors.h deleted file mode 100644 index 7c85116faee..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/nterrors.h +++ /dev/null @@ -1,736 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* DO NOT EDIT THIS FILE - it is automatically generated */ - -struct _NtError { - int ErrorNumber; - char *ErrorString; - struct _NtError *next; -} ; - -typedef struct _NtError NtError; - -NtError NtErrorStrings[] = { -{ 0 , "ERROR_SUCCESS" }, -{ 0 , "NO_ERROR" }, -{ 1 , "ERROR_INVALID_FUNCTION" }, -{ 2 , "ERROR_FILE_NOT_FOUND" }, -{ 3 , "ERROR_PATH_NOT_FOUND" }, -{ 4 , "ERROR_TOO_MANY_OPEN_FILES" }, -{ 5 , "ERROR_ACCESS_DENIED" }, -{ 6 , "ERROR_INVALID_HANDLE" }, -{ 7 , "ERROR_ARENA_TRASHED" }, -{ 8 , "ERROR_NOT_ENOUGH_MEMORY" }, -{ 9 , "ERROR_INVALID_BLOCK" }, -{ 10 , "ERROR_BAD_ENVIRONMENT" }, -{ 11 , "ERROR_BAD_FORMAT" }, -{ 12 , "ERROR_INVALID_ACCESS" }, -{ 13 , "ERROR_INVALID_DATA" }, -{ 14 , "ERROR_OUTOFMEMORY" }, -{ 15 , "ERROR_INVALID_DRIVE" }, -{ 16 , "ERROR_CURRENT_DIRECTORY" }, -{ 17 , "ERROR_NOT_SAME_DEVICE" }, -{ 18 , "ERROR_NO_MORE_FILES" }, -{ 19 , "ERROR_WRITE_PROTECT" }, -{ 20 , "ERROR_BAD_UNIT" }, -{ 21 , "ERROR_NOT_READY" }, -{ 22 , "ERROR_BAD_COMMAND" }, -{ 23 , "ERROR_CRC" }, -{ 24 , "ERROR_BAD_LENGTH" }, -{ 25 , "ERROR_SEEK" }, -{ 26 , "ERROR_NOT_DOS_DISK" }, -{ 27 , "ERROR_SECTOR_NOT_FOUND" }, -{ 28 , "ERROR_OUT_OF_PAPER" }, -{ 29 , "ERROR_WRITE_FAULT" }, -{ 30 , "ERROR_READ_FAULT" }, -{ 31 , "ERROR_GEN_FAILURE" }, -{ 32 , "ERROR_SHARING_VIOLATION" }, -{ 33 , "ERROR_LOCK_VIOLATION" }, -{ 34 , "ERROR_WRONG_DISK" }, -{ 36 , "ERROR_SHARING_BUFFER_EXCEEDED" }, -{ 38 , "ERROR_HANDLE_EOF" }, -{ 39 , "ERROR_HANDLE_DISK_FULL" }, -{ 50 , "ERROR_NOT_SUPPORTED" }, -{ 51 , "ERROR_REM_NOT_LIST" }, -{ 52 , "ERROR_DUP_NAME" }, -{ 53 , "ERROR_BAD_NETPATH" }, -{ 54 , "ERROR_NETWORK_BUSY" }, -{ 55 , "ERROR_DEV_NOT_EXIST" }, -{ 56 , "ERROR_TOO_MANY_CMDS" }, -{ 57 , "ERROR_ADAP_HDW_ERR" }, -{ 58 , "ERROR_BAD_NET_RESP" }, -{ 59 , "ERROR_UNEXP_NET_ERR" }, -{ 60 , "ERROR_BAD_REM_ADAP" }, -{ 61 , "ERROR_PRINTQ_FULL" }, -{ 62 , "ERROR_NO_SPOOL_SPACE" }, -{ 63 , "ERROR_PRINT_CANCELLED" }, -{ 64 , "ERROR_NETNAME_DELETED" }, -{ 65 , "ERROR_NETWORK_ACCESS_DENIED" }, -{ 66 , "ERROR_BAD_DEV_TYPE" }, -{ 67 , "ERROR_BAD_NET_NAME" }, -{ 68 , "ERROR_TOO_MANY_NAMES" }, -{ 69 , "ERROR_TOO_MANY_SESS" }, -{ 70 , "ERROR_SHARING_PAUSED" }, -{ 71 , "ERROR_REQ_NOT_ACCEP" }, -{ 72 , "ERROR_REDIR_PAUSED" }, -{ 80 , "ERROR_FILE_EXISTS" }, -{ 82 , "ERROR_CANNOT_MAKE" }, -{ 83 , "ERROR_FAIL_I24" }, -{ 84 , "ERROR_OUT_OF_STRUCTURES" }, -{ 85 , "ERROR_ALREADY_ASSIGNED" }, -{ 86 , "ERROR_INVALID_PASSWORD" }, -{ 87 , "ERROR_INVALID_PARAMETER" }, -{ 88 , "ERROR_NET_WRITE_FAULT" }, -{ 89 , "ERROR_NO_PROC_SLOTS" }, -{ 100 , "ERROR_TOO_MANY_SEMAPHORES" }, -{ 101 , "ERROR_EXCL_SEM_ALREADY_OWNED" }, -{ 102 , "ERROR_SEM_IS_SET" }, -{ 103 , "ERROR_TOO_MANY_SEM_REQUESTS" }, -{ 104 , "ERROR_INVALID_AT_INTERRUPT_TIME" }, -{ 105 , "ERROR_SEM_OWNER_DIED" }, -{ 106 , "ERROR_SEM_USER_LIMIT" }, -{ 107 , "ERROR_DISK_CHANGE" }, -{ 108 , "ERROR_DRIVE_LOCKED" }, -{ 109 , "ERROR_BROKEN_PIPE" }, -{ 110 , "ERROR_OPEN_FAILED" }, -{ 111 , "ERROR_BUFFER_OVERFLOW" }, -{ 112 , "ERROR_DISK_FULL" }, -{ 113 , "ERROR_NO_MORE_SEARCH_HANDLES" }, -{ 114 , "ERROR_INVALID_TARGET_HANDLE" }, -{ 117 , "ERROR_INVALID_CATEGORY" }, -{ 118 , "ERROR_INVALID_VERIFY_SWITCH" }, -{ 119 , "ERROR_BAD_DRIVER_LEVEL" }, -{ 120 , "ERROR_CALL_NOT_IMPLEMENTED" }, -{ 121 , "ERROR_SEM_TIMEOUT" }, -{ 122 , "ERROR_INSUFFICIENT_BUFFER" }, -{ 123 , "ERROR_INVALID_NAME" }, -{ 124 , "ERROR_INVALID_LEVEL" }, -{ 125 , "ERROR_NO_VOLUME_LABEL" }, -{ 126 , "ERROR_MOD_NOT_FOUND" }, -{ 127 , "ERROR_PROC_NOT_FOUND" }, -{ 128 , "ERROR_WAIT_NO_CHILDREN" }, -{ 129 , "ERROR_CHILD_NOT_COMPLETE" }, -{ 130 , "ERROR_DIRECT_ACCESS_HANDLE" }, -{ 131 , "ERROR_NEGATIVE_SEEK" }, -{ 132 , "ERROR_SEEK_ON_DEVICE" }, -{ 133 , "ERROR_IS_JOIN_TARGET" }, -{ 134 , "ERROR_IS_JOINED" }, -{ 135 , "ERROR_IS_SUBSTED" }, -{ 136 , "ERROR_NOT_JOINED" }, -{ 137 , "ERROR_NOT_SUBSTED" }, -{ 138 , "ERROR_JOIN_TO_JOIN" }, -{ 139 , "ERROR_SUBST_TO_SUBST" }, -{ 140 , "ERROR_JOIN_TO_SUBST" }, -{ 141 , "ERROR_SUBST_TO_JOIN" }, -{ 142 , "ERROR_BUSY_DRIVE" }, -{ 143 , "ERROR_SAME_DRIVE" }, -{ 144 , "ERROR_DIR_NOT_ROOT" }, -{ 145 , "ERROR_DIR_NOT_EMPTY" }, -{ 146 , "ERROR_IS_SUBST_PATH" }, -{ 147 , "ERROR_IS_JOIN_PATH" }, -{ 148 , "ERROR_PATH_BUSY" }, -{ 149 , "ERROR_IS_SUBST_TARGET" }, -{ 150 , "ERROR_SYSTEM_TRACE" }, -{ 151 , "ERROR_INVALID_EVENT_COUNT" }, -{ 152 , "ERROR_TOO_MANY_MUXWAITERS" }, -{ 153 , "ERROR_INVALID_LIST_FORMAT" }, -{ 154 , "ERROR_LABEL_TOO_LONG" }, -{ 155 , "ERROR_TOO_MANY_TCBS" }, -{ 156 , "ERROR_SIGNAL_REFUSED" }, -{ 157 , "ERROR_DISCARDED" }, -{ 158 , "ERROR_NOT_LOCKED" }, -{ 159 , "ERROR_BAD_THREADID_ADDR" }, -{ 160 , "ERROR_BAD_ARGUMENTS" }, -{ 161 , "ERROR_BAD_PATHNAME" }, -{ 162 , "ERROR_SIGNAL_PENDING" }, -{ 164 , "ERROR_MAX_THRDS_REACHED" }, -{ 167 , "ERROR_LOCK_FAILED" }, -{ 170 , "ERROR_BUSY" }, -{ 173 , "ERROR_CANCEL_VIOLATION" }, -{ 174 , "ERROR_ATOMIC_LOCKS_NOT_SUPPORTED" }, -{ 180 , "ERROR_INVALID_SEGMENT_NUMBER" }, -{ 182 , "ERROR_INVALID_ORDINAL" }, -{ 183 , "ERROR_ALREADY_EXISTS" }, -{ 186 , "ERROR_INVALID_FLAG_NUMBER" }, -{ 187 , "ERROR_SEM_NOT_FOUND" }, -{ 188 , "ERROR_INVALID_STARTING_CODESEG" }, -{ 189 , "ERROR_INVALID_STACKSEG" }, -{ 190 , "ERROR_INVALID_MODULETYPE" }, -{ 191 , "ERROR_INVALID_EXE_SIGNATURE" }, -{ 192 , "ERROR_EXE_MARKED_INVALID" }, -{ 193 , "ERROR_BAD_EXE_FORMAT" }, -{ 194 , "ERROR_ITERATED_DATA_EXCEEDS_64k" }, -{ 195 , "ERROR_INVALID_MINALLOCSIZE" }, -{ 196 , "ERROR_DYNLINK_FROM_INVALID_RING" }, -{ 197 , "ERROR_IOPL_NOT_ENABLED" }, -{ 198 , "ERROR_INVALID_SEGDPL" }, -{ 199 , "ERROR_AUTODATASEG_EXCEEDS_64k" }, -{ 200 , "ERROR_RING2SEG_MUST_BE_MOVABLE" }, -{ 201 , "ERROR_RELOC_CHAIN_XEEDS_SEGLIM" }, -{ 202 , "ERROR_INFLOOP_IN_RELOC_CHAIN" }, -{ 203 , "ERROR_ENVVAR_NOT_FOUND" }, -{ 205 , "ERROR_NO_SIGNAL_SENT" }, -{ 206 , "ERROR_FILENAME_EXCED_RANGE" }, -{ 207 , "ERROR_RING2_STACK_IN_USE" }, -{ 208 , "ERROR_META_EXPANSION_TOO_LONG" }, -{ 209 , "ERROR_INVALID_SIGNAL_NUMBER" }, -{ 210 , "ERROR_THREAD_1_INACTIVE" }, -{ 212 , "ERROR_LOCKED" }, -{ 214 , "ERROR_TOO_MANY_MODULES" }, -{ 215 , "ERROR_NESTING_NOT_ALLOWED" }, -{ 230 , "ERROR_BAD_PIPE" }, -{ 231 , "ERROR_PIPE_BUSY" }, -{ 232 , "ERROR_NO_DATA" }, -{ 233 , "ERROR_PIPE_NOT_CONNECTED" }, -{ 234 , "ERROR_MORE_DATA" }, -{ 240 , "ERROR_VC_DISCONNECTED" }, -{ 254 , "ERROR_INVALID_EA_NAME" }, -{ 255 , "ERROR_EA_LIST_INCONSISTENT" }, -{ 259 , "ERROR_NO_MORE_ITEMS" }, -{ 266 , "ERROR_CANNOT_COPY" }, -{ 267 , "ERROR_DIRECTORY" }, -{ 275 , "ERROR_EAS_DIDNT_FIT" }, -{ 276 , "ERROR_EA_FILE_CORRUPT" }, -{ 277 , "ERROR_EA_TABLE_FULL" }, -{ 278 , "ERROR_INVALID_EA_HANDLE" }, -{ 282 , "ERROR_EAS_NOT_SUPPORTED" }, -{ 288 , "ERROR_NOT_OWNER" }, -{ 298 , "ERROR_TOO_MANY_POSTS" }, -{ 299 , "ERROR_PARTIAL_COPY" }, -{ 317 , "ERROR_MR_MID_NOT_FOUND" }, -{ 487 , "ERROR_INVALID_ADDRESS" }, -{ 534 , "ERROR_ARITHMETIC_OVERFLOW" }, -{ 535 , "ERROR_PIPE_CONNECTED" }, -{ 536 , "ERROR_PIPE_LISTENING" }, -{ 994 , "ERROR_EA_ACCESS_DENIED" }, -{ 995 , "ERROR_OPERATION_ABORTED" }, -{ 996 , "ERROR_IO_INCOMPLETE" }, -{ 997 , "ERROR_IO_PENDING" }, -{ 998 , "ERROR_NOACCESS" }, -{ 999 , "ERROR_SWAPERROR" }, -{ 1001 , "ERROR_STACK_OVERFLOW" }, -{ 1002 , "ERROR_INVALID_MESSAGE" }, -{ 1003 , "ERROR_CAN_NOT_COMPLETE" }, -{ 1004 , "ERROR_INVALID_FLAGS" }, -{ 1005 , "ERROR_UNRECOGNIZED_VOLUME" }, -{ 1006 , "ERROR_FILE_INVALID" }, -{ 1007 , "ERROR_FULLSCREEN_MODE" }, -{ 1008 , "ERROR_NO_TOKEN" }, -{ 1009 , "ERROR_BADDB" }, -{ 1010 , "ERROR_BADKEY" }, -{ 1011 , "ERROR_CANTOPEN" }, -{ 1012 , "ERROR_CANTREAD" }, -{ 1013 , "ERROR_CANTWRITE" }, -{ 1014 , "ERROR_REGISTRY_RECOVERED" }, -{ 1015 , "ERROR_REGISTRY_CORRUPT" }, -{ 1016 , "ERROR_REGISTRY_IO_FAILED" }, -{ 1017 , "ERROR_NOT_REGISTRY_FILE" }, -{ 1018 , "ERROR_KEY_DELETED" }, -{ 1019 , "ERROR_NO_LOG_SPACE" }, -{ 1020 , "ERROR_KEY_HAS_CHILDREN" }, -{ 1021 , "ERROR_CHILD_MUST_BE_VOLATILE" }, -{ 1022 , "ERROR_NOTIFY_ENUM_DIR" }, -{ 1051 , "ERROR_DEPENDENT_SERVICES_RUNNING" }, -{ 1052 , "ERROR_INVALID_SERVICE_CONTROL" }, -{ 1053 , "ERROR_SERVICE_REQUEST_TIMEOUT" }, -{ 1054 , "ERROR_SERVICE_NO_THREAD" }, -{ 1055 , "ERROR_SERVICE_DATABASE_LOCKED" }, -{ 1056 , "ERROR_SERVICE_ALREADY_RUNNING" }, -{ 1057 , "ERROR_INVALID_SERVICE_ACCOUNT" }, -{ 1058 , "ERROR_SERVICE_DISABLED" }, -{ 1059 , "ERROR_CIRCULAR_DEPENDENCY" }, -{ 1060 , "ERROR_SERVICE_DOES_NOT_EXIST" }, -{ 1061 , "ERROR_SERVICE_CANNOT_ACCEPT_CTRL" }, -{ 1062 , "ERROR_SERVICE_NOT_ACTIVE" }, -{ 1063 , "ERROR_FAILED_SERVICE_CONTROLLER_CONNECT" }, -{ 1064 , "ERROR_EXCEPTION_IN_SERVICE" }, -{ 1065 , "ERROR_DATABASE_DOES_NOT_EXIST" }, -{ 1066 , "ERROR_SERVICE_SPECIFIC_ERROR" }, -{ 1067 , "ERROR_PROCESS_ABORTED" }, -{ 1068 , "ERROR_SERVICE_DEPENDENCY_FAIL" }, -{ 1069 , "ERROR_SERVICE_LOGON_FAILED" }, -{ 1070 , "ERROR_SERVICE_START_HANG" }, -{ 1071 , "ERROR_INVALID_SERVICE_LOCK" }, -{ 1072 , "ERROR_SERVICE_MARKED_FOR_DELETE" }, -{ 1073 , "ERROR_SERVICE_EXISTS" }, -{ 1074 , "ERROR_ALREADY_RUNNING_LKG" }, -{ 1075 , "ERROR_SERVICE_DEPENDENCY_DELETED" }, -{ 1076 , "ERROR_BOOT_ALREADY_ACCEPTED" }, -{ 1077 , "ERROR_SERVICE_NEVER_STARTED" }, -{ 1078 , "ERROR_DUPLICATE_SERVICE_NAME" }, -{ 1100 , "ERROR_END_OF_MEDIA" }, -{ 1101 , "ERROR_FILEMARK_DETECTED" }, -{ 1102 , "ERROR_BEGINNING_OF_MEDIA" }, -{ 1103 , "ERROR_SETMARK_DETECTED" }, -{ 1104 , "ERROR_NO_DATA_DETECTED" }, -{ 1105 , "ERROR_PARTITION_FAILURE" }, -{ 1106 , "ERROR_INVALID_BLOCK_LENGTH" }, -{ 1107 , "ERROR_DEVICE_NOT_PARTITIONED" }, -{ 1108 , "ERROR_UNABLE_TO_LOCK_MEDIA" }, -{ 1109 , "ERROR_UNABLE_TO_UNLOAD_MEDIA" }, -{ 1110 , "ERROR_MEDIA_CHANGED" }, -{ 1111 , "ERROR_BUS_RESET" }, -{ 1112 , "ERROR_NO_MEDIA_IN_DRIVE" }, -{ 1113 , "ERROR_NO_UNICODE_TRANSLATION" }, -{ 1114 , "ERROR_DLL_INIT_FAILED" }, -{ 1115 , "ERROR_SHUTDOWN_IN_PROGRESS" }, -{ 1116 , "ERROR_NO_SHUTDOWN_IN_PROGRESS" }, -{ 1117 , "ERROR_IO_DEVICE" }, -{ 1118 , "ERROR_SERIAL_NO_DEVICE" }, -{ 1119 , "ERROR_IRQ_BUSY" }, -{ 1120 , "ERROR_MORE_WRITES" }, -{ 1121 , "ERROR_COUNTER_TIMEOUT" }, -{ 1122 , "ERROR_FLOPPY_ID_MARK_NOT_FOUND" }, -{ 1123 , "ERROR_FLOPPY_WRONG_CYLINDER" }, -{ 1124 , "ERROR_FLOPPY_UNKNOWN_ERROR" }, -{ 1125 , "ERROR_FLOPPY_BAD_REGISTERS" }, -{ 1126 , "ERROR_DISK_RECALIBRATE_FAILED" }, -{ 1127 , "ERROR_DISK_OPERATION_FAILED" }, -{ 1128 , "ERROR_DISK_RESET_FAILED" }, -{ 1129 , "ERROR_EOM_OVERFLOW" }, -{ 1130 , "ERROR_NOT_ENOUGH_SERVER_MEMORY" }, -{ 1131 , "ERROR_POSSIBLE_DEADLOCK" }, -{ 1132 , "ERROR_MAPPED_ALIGNMENT" }, -{ 1140 , "ERROR_SET_POWER_STATE_VETOED" }, -{ 1141 , "ERROR_SET_POWER_STATE_FAILED" }, -{ 1150 , "ERROR_OLD_WIN_VERSION" }, -{ 1151 , "ERROR_APP_WRONG_OS" }, -{ 1152 , "ERROR_SINGLE_INSTANCE_APP" }, -{ 1153 , "ERROR_RMODE_APP" }, -{ 1154 , "ERROR_INVALID_DLL" }, -{ 1155 , "ERROR_NO_ASSOCIATION" }, -{ 1156 , "ERROR_DDE_FAIL" }, -{ 1157 , "ERROR_DLL_NOT_FOUND" }, -{ 2202 , "ERROR_BAD_USERNAME" }, -{ 2250 , "ERROR_NOT_CONNECTED" }, -{ 2401 , "ERROR_OPEN_FILES" }, -{ 2402 , "ERROR_ACTIVE_CONNECTIONS" }, -{ 2404 , "ERROR_DEVICE_IN_USE" }, -{ 1200 , "ERROR_BAD_DEVICE" }, -{ 1201 , "ERROR_CONNECTION_UNAVAIL" }, -{ 1202 , "ERROR_DEVICE_ALREADY_REMEMBERED" }, -{ 1203 , "ERROR_NO_NET_OR_BAD_PATH" }, -{ 1204 , "ERROR_BAD_PROVIDER" }, -{ 1205 , "ERROR_CANNOT_OPEN_PROFILE" }, -{ 1206 , "ERROR_BAD_PROFILE" }, -{ 1207 , "ERROR_NOT_CONTAINER" }, -{ 1208 , "ERROR_EXTENDED_ERROR" }, -{ 1209 , "ERROR_INVALID_GROUPNAME" }, -{ 1210 , "ERROR_INVALID_COMPUTERNAME" }, -{ 1211 , "ERROR_INVALID_EVENTNAME" }, -{ 1212 , "ERROR_INVALID_DOMAINNAME" }, -{ 1213 , "ERROR_INVALID_SERVICENAME" }, -{ 1214 , "ERROR_INVALID_NETNAME" }, -{ 1215 , "ERROR_INVALID_SHARENAME" }, -{ 1216 , "ERROR_INVALID_PASSWORDNAME" }, -{ 1217 , "ERROR_INVALID_MESSAGENAME" }, -{ 1218 , "ERROR_INVALID_MESSAGEDEST" }, -{ 1219 , "ERROR_SESSION_CREDENTIAL_CONFLICT" }, -{ 1220 , "ERROR_REMOTE_SESSION_LIMIT_EXCEEDED" }, -{ 1221 , "ERROR_DUP_DOMAINNAME" }, -{ 1222 , "ERROR_NO_NETWORK" }, -{ 1223 , "ERROR_CANCELLED" }, -{ 1224 , "ERROR_USER_MAPPED_FILE" }, -{ 1225 , "ERROR_CONNECTION_REFUSED" }, -{ 1226 , "ERROR_GRACEFUL_DISCONNECT" }, -{ 1227 , "ERROR_ADDRESS_ALREADY_ASSOCIATED" }, -{ 1228 , "ERROR_ADDRESS_NOT_ASSOCIATED" }, -{ 1229 , "ERROR_CONNECTION_INVALID" }, -{ 1230 , "ERROR_CONNECTION_ACTIVE" }, -{ 1231 , "ERROR_NETWORK_UNREACHABLE" }, -{ 1232 , "ERROR_HOST_UNREACHABLE" }, -{ 1233 , "ERROR_PROTOCOL_UNREACHABLE" }, -{ 1234 , "ERROR_PORT_UNREACHABLE" }, -{ 1235 , "ERROR_REQUEST_ABORTED" }, -{ 1236 , "ERROR_CONNECTION_ABORTED" }, -{ 1237 , "ERROR_RETRY" }, -{ 1238 , "ERROR_CONNECTION_COUNT_LIMIT" }, -{ 1239 , "ERROR_LOGIN_TIME_RESTRICTION" }, -{ 1240 , "ERROR_LOGIN_WKSTA_RESTRICTION" }, -{ 1241 , "ERROR_INCORRECT_ADDRESS" }, -{ 1242 , "ERROR_ALREADY_REGISTERED" }, -{ 1243 , "ERROR_SERVICE_NOT_FOUND" }, -{ 1244 , "ERROR_NOT_AUTHENTICATED" }, -{ 1245 , "ERROR_NOT_LOGGED_ON" }, -{ 1246 , "ERROR_CONTINUE" }, -{ 1247 , "ERROR_ALREADY_INITIALIZED" }, -{ 1248 , "ERROR_NO_MORE_DEVICES" }, -{ 1300 , "ERROR_NOT_ALL_ASSIGNED" }, -{ 1301 , "ERROR_SOME_NOT_MAPPED" }, -{ 1302 , "ERROR_NO_QUOTAS_FOR_ACCOUNT" }, -{ 1303 , "ERROR_LOCAL_USER_SESSION_KEY" }, -{ 1304 , "ERROR_NULL_LM_PASSWORD" }, -{ 1305 , "ERROR_UNKNOWN_REVISION" }, -{ 1306 , "ERROR_REVISION_MISMATCH" }, -{ 1307 , "ERROR_INVALID_OWNER" }, -{ 1308 , "ERROR_INVALID_PRIMARY_GROUP" }, -{ 1309 , "ERROR_NO_IMPERSONATION_TOKEN" }, -{ 1310 , "ERROR_CANT_DISABLE_MANDATORY" }, -{ 1311 , "ERROR_NO_LOGON_SERVERS" }, -{ 1312 , "ERROR_NO_SUCH_LOGON_SESSION" }, -{ 1313 , "ERROR_NO_SUCH_PRIVILEGE" }, -{ 1314 , "ERROR_PRIVILEGE_NOT_HELD" }, -{ 1315 , "ERROR_INVALID_ACCOUNT_NAME" }, -{ 1316 , "ERROR_USER_EXISTS" }, -{ 1317 , "ERROR_NO_SUCH_USER" }, -{ 1318 , "ERROR_GROUP_EXISTS" }, -{ 1319 , "ERROR_NO_SUCH_GROUP" }, -{ 1320 , "ERROR_MEMBER_IN_GROUP" }, -{ 1321 , "ERROR_MEMBER_NOT_IN_GROUP" }, -{ 1322 , "ERROR_LAST_ADMIN" }, -{ 1323 , "ERROR_WRONG_PASSWORD" }, -{ 1324 , "ERROR_ILL_FORMED_PASSWORD" }, -{ 1325 , "ERROR_PASSWORD_RESTRICTION" }, -{ 1326 , "ERROR_LOGON_FAILURE" }, -{ 1327 , "ERROR_ACCOUNT_RESTRICTION" }, -{ 1328 , "ERROR_INVALID_LOGON_HOURS" }, -{ 1329 , "ERROR_INVALID_WORKSTATION" }, -{ 1330 , "ERROR_PASSWORD_EXPIRED" }, -{ 1331 , "ERROR_ACCOUNT_DISABLED" }, -{ 1332 , "ERROR_NONE_MAPPED" }, -{ 1333 , "ERROR_TOO_MANY_LUIDS_REQUESTED" }, -{ 1334 , "ERROR_LUIDS_EXHAUSTED" }, -{ 1335 , "ERROR_INVALID_SUB_AUTHORITY" }, -{ 1336 , "ERROR_INVALID_ACL" }, -{ 1337 , "ERROR_INVALID_SID" }, -{ 1338 , "ERROR_INVALID_SECURITY_DESCR" }, -{ 1340 , "ERROR_BAD_INHERITANCE_ACL" }, -{ 1341 , "ERROR_SERVER_DISABLED" }, -{ 1342 , "ERROR_SERVER_NOT_DISABLED" }, -{ 1343 , "ERROR_INVALID_ID_AUTHORITY" }, -{ 1344 , "ERROR_ALLOTTED_SPACE_EXCEEDED" }, -{ 1345 , "ERROR_INVALID_GROUP_ATTRIBUTES" }, -{ 1346 , "ERROR_BAD_IMPERSONATION_LEVEL" }, -{ 1347 , "ERROR_CANT_OPEN_ANONYMOUS" }, -{ 1348 , "ERROR_BAD_VALIDATION_CLASS" }, -{ 1349 , "ERROR_BAD_TOKEN_TYPE" }, -{ 1350 , "ERROR_NO_SECURITY_ON_OBJECT" }, -{ 1351 , "ERROR_CANT_ACCESS_DOMAIN_INFO" }, -{ 1352 , "ERROR_INVALID_SERVER_STATE" }, -{ 1353 , "ERROR_INVALID_DOMAIN_STATE" }, -{ 1354 , "ERROR_INVALID_DOMAIN_ROLE" }, -{ 1355 , "ERROR_NO_SUCH_DOMAIN" }, -{ 1356 , "ERROR_DOMAIN_EXISTS" }, -{ 1357 , "ERROR_DOMAIN_LIMIT_EXCEEDED" }, -{ 1358 , "ERROR_INTERNAL_DB_CORRUPTION" }, -{ 1359 , "ERROR_INTERNAL_ERROR" }, -{ 1360 , "ERROR_GENERIC_NOT_MAPPED" }, -{ 1361 , "ERROR_BAD_DESCRIPTOR_FORMAT" }, -{ 1362 , "ERROR_NOT_LOGON_PROCESS" }, -{ 1363 , "ERROR_LOGON_SESSION_EXISTS" }, -{ 1364 , "ERROR_NO_SUCH_PACKAGE" }, -{ 1365 , "ERROR_BAD_LOGON_SESSION_STATE" }, -{ 1366 , "ERROR_LOGON_SESSION_COLLISION" }, -{ 1367 , "ERROR_INVALID_LOGON_TYPE" }, -{ 1368 , "ERROR_CANNOT_IMPERSONATE" }, -{ 1369 , "ERROR_RXACT_INVALID_STATE" }, -{ 1370 , "ERROR_RXACT_COMMIT_FAILURE" }, -{ 1371 , "ERROR_SPECIAL_ACCOUNT" }, -{ 1372 , "ERROR_SPECIAL_GROUP" }, -{ 1373 , "ERROR_SPECIAL_USER" }, -{ 1374 , "ERROR_MEMBERS_PRIMARY_GROUP" }, -{ 1375 , "ERROR_TOKEN_ALREADY_IN_USE" }, -{ 1376 , "ERROR_NO_SUCH_ALIAS" }, -{ 1377 , "ERROR_MEMBER_NOT_IN_ALIAS" }, -{ 1378 , "ERROR_MEMBER_IN_ALIAS" }, -{ 1379 , "ERROR_ALIAS_EXISTS" }, -{ 1380 , "ERROR_LOGON_NOT_GRANTED" }, -{ 1381 , "ERROR_TOO_MANY_SECRETS" }, -{ 1382 , "ERROR_SECRET_TOO_LONG" }, -{ 1383 , "ERROR_INTERNAL_DB_ERROR" }, -{ 1384 , "ERROR_TOO_MANY_CONTEXT_IDS" }, -{ 1385 , "ERROR_LOGON_TYPE_NOT_GRANTED" }, -{ 1386 , "ERROR_NT_CROSS_ENCRYPTION_REQUIRED" }, -{ 1387 , "ERROR_NO_SUCH_MEMBER" }, -{ 1388 , "ERROR_INVALID_MEMBER" }, -{ 1389 , "ERROR_TOO_MANY_SIDS" }, -{ 1390 , "ERROR_LM_CROSS_ENCRYPTION_REQUIRED" }, -{ 1391 , "ERROR_NO_INHERITANCE" }, -{ 1392 , "ERROR_FILE_CORRUPT" }, -{ 1393 , "ERROR_DISK_CORRUPT" }, -{ 1394 , "ERROR_NO_USER_SESSION_KEY" }, -{ 1395 , "ERROR_LICENSE_QUOTA_EXCEEDED" }, -{ 1400 , "ERROR_INVALID_WINDOW_HANDLE" }, -{ 1401 , "ERROR_INVALID_MENU_HANDLE" }, -{ 1402 , "ERROR_INVALID_CURSOR_HANDLE" }, -{ 1403 , "ERROR_INVALID_ACCEL_HANDLE" }, -{ 1404 , "ERROR_INVALID_HOOK_HANDLE" }, -{ 1405 , "ERROR_INVALID_DWP_HANDLE" }, -{ 1406 , "ERROR_TLW_WITH_WSCHILD" }, -{ 1407 , "ERROR_CANNOT_FIND_WND_CLASS" }, -{ 1408 , "ERROR_WINDOW_OF_OTHER_THREAD" }, -{ 1409 , "ERROR_HOTKEY_ALREADY_REGISTERED" }, -{ 1410 , "ERROR_CLASS_ALREADY_EXISTS" }, -{ 1411 , "ERROR_CLASS_DOES_NOT_EXIST" }, -{ 1412 , "ERROR_CLASS_HAS_WINDOWS" }, -{ 1413 , "ERROR_INVALID_INDEX" }, -{ 1414 , "ERROR_INVALID_ICON_HANDLE" }, -{ 1415 , "ERROR_PRIVATE_DIALOG_INDEX" }, -{ 1416 , "ERROR_LISTBOX_ID_NOT_FOUND" }, -{ 1417 , "ERROR_NO_WILDCARD_CHARACTERS" }, -{ 1418 , "ERROR_CLIPBOARD_NOT_OPEN" }, -{ 1419 , "ERROR_HOTKEY_NOT_REGISTERED" }, -{ 1420 , "ERROR_WINDOW_NOT_DIALOG" }, -{ 1421 , "ERROR_CONTROL_ID_NOT_FOUND" }, -{ 1422 , "ERROR_INVALID_COMBOBOX_MESSAGE" }, -{ 1423 , "ERROR_WINDOW_NOT_COMBOBOX" }, -{ 1424 , "ERROR_INVALID_EDIT_HEIGHT" }, -{ 1425 , "ERROR_DC_NOT_FOUND" }, -{ 1426 , "ERROR_INVALID_HOOK_FILTER" }, -{ 1427 , "ERROR_INVALID_FILTER_PROC" }, -{ 1428 , "ERROR_HOOK_NEEDS_HMOD" }, -{ 1429 , "ERROR_GLOBAL_ONLY_HOOK" }, -{ 1430 , "ERROR_JOURNAL_HOOK_SET" }, -{ 1431 , "ERROR_HOOK_NOT_INSTALLED" }, -{ 1432 , "ERROR_INVALID_LB_MESSAGE" }, -{ 1433 , "ERROR_SETCOUNT_ON_BAD_LB" }, -{ 1434 , "ERROR_LB_WITHOUT_TABSTOPS" }, -{ 1435 , "ERROR_DESTROY_OBJECT_OF_OTHER_THREAD" }, -{ 1436 , "ERROR_CHILD_WINDOW_MENU" }, -{ 1437 , "ERROR_NO_SYSTEM_MENU" }, -{ 1438 , "ERROR_INVALID_MSGBOX_STYLE" }, -{ 1439 , "ERROR_INVALID_SPI_VALUE" }, -{ 1440 , "ERROR_SCREEN_ALREADY_LOCKED" }, -{ 1441 , "ERROR_HWNDS_HAVE_DIFF_PARENT" }, -{ 1442 , "ERROR_NOT_CHILD_WINDOW" }, -{ 1443 , "ERROR_INVALID_GW_COMMAND" }, -{ 1444 , "ERROR_INVALID_THREAD_ID" }, -{ 1445 , "ERROR_NON_MDICHILD_WINDOW" }, -{ 1446 , "ERROR_POPUP_ALREADY_ACTIVE" }, -{ 1447 , "ERROR_NO_SCROLLBARS" }, -{ 1448 , "ERROR_INVALID_SCROLLBAR_RANGE" }, -{ 1449 , "ERROR_INVALID_SHOWWIN_COMMAND" }, -{ 1450 , "ERROR_NO_SYSTEM_RESOURCES" }, -{ 1451 , "ERROR_NONPAGED_SYSTEM_RESOURCES" }, -{ 1452 , "ERROR_PAGED_SYSTEM_RESOURCES" }, -{ 1453 , "ERROR_WORKING_SET_QUOTA" }, -{ 1454 , "ERROR_PAGEFILE_QUOTA" }, -{ 1455 , "ERROR_COMMITMENT_LIMIT" }, -{ 1456 , "ERROR_MENU_ITEM_NOT_FOUND" }, -{ 1500 , "ERROR_EVENTLOG_FILE_CORRUPT" }, -{ 1501 , "ERROR_EVENTLOG_CANT_START" }, -{ 1502 , "ERROR_LOG_FILE_FULL" }, -{ 1503 , "ERROR_EVENTLOG_FILE_CHANGED" }, -{ 1700 , "RPC_S_INVALID_STRING_BINDING" }, -{ 1701 , "RPC_S_WRONG_KIND_OF_BINDING" }, -{ 1702 , "RPC_S_INVALID_BINDING" }, -{ 1703 , "RPC_S_PROTSEQ_NOT_SUPPORTED" }, -{ 1704 , "RPC_S_INVALID_RPC_PROTSEQ" }, -{ 1705 , "RPC_S_INVALID_STRING_UUID" }, -{ 1706 , "RPC_S_INVALID_ENDPOINT_FORMAT" }, -{ 1707 , "RPC_S_INVALID_NET_ADDR" }, -{ 1708 , "RPC_S_NO_ENDPOINT_FOUND" }, -{ 1709 , "RPC_S_INVALID_TIMEOUT" }, -{ 1710 , "RPC_S_OBJECT_NOT_FOUND" }, -{ 1711 , "RPC_S_ALREADY_REGISTERED" }, -{ 1712 , "RPC_S_TYPE_ALREADY_REGISTERED" }, -{ 1713 , "RPC_S_ALREADY_LISTENING" }, -{ 1714 , "RPC_S_NO_PROTSEQS_REGISTERED" }, -{ 1715 , "RPC_S_NOT_LISTENING" }, -{ 1716 , "RPC_S_UNKNOWN_MGR_TYPE" }, -{ 1717 , "RPC_S_UNKNOWN_IF" }, -{ 1718 , "RPC_S_NO_BINDINGS" }, -{ 1719 , "RPC_S_NO_PROTSEQS" }, -{ 1720 , "RPC_S_CANT_CREATE_ENDPOINT" }, -{ 1721 , "RPC_S_OUT_OF_RESOURCES" }, -{ 1722 , "RPC_S_SERVER_UNAVAILABLE" }, -{ 1723 , "RPC_S_SERVER_TOO_BUSY" }, -{ 1724 , "RPC_S_INVALID_NETWORK_OPTIONS" }, -{ 1725 , "RPC_S_NO_CALL_ACTIVE" }, -{ 1726 , "RPC_S_CALL_FAILED" }, -{ 1727 , "RPC_S_CALL_FAILED_DNE" }, -{ 1728 , "RPC_S_PROTOCOL_ERROR" }, -{ 1730 , "RPC_S_UNSUPPORTED_TRANS_SYN" }, -{ 1732 , "RPC_S_UNSUPPORTED_TYPE" }, -{ 1733 , "RPC_S_INVALID_TAG" }, -{ 1734 , "RPC_S_INVALID_BOUND" }, -{ 1735 , "RPC_S_NO_ENTRY_NAME" }, -{ 1736 , "RPC_S_INVALID_NAME_SYNTAX" }, -{ 1737 , "RPC_S_UNSUPPORTED_NAME_SYNTAX" }, -{ 1739 , "RPC_S_UUID_NO_ADDRESS" }, -{ 1740 , "RPC_S_DUPLICATE_ENDPOINT" }, -{ 1741 , "RPC_S_UNKNOWN_AUTHN_TYPE" }, -{ 1742 , "RPC_S_MAX_CALLS_TOO_SMALL" }, -{ 1743 , "RPC_S_STRING_TOO_LONG" }, -{ 1744 , "RPC_S_PROTSEQ_NOT_FOUND" }, -{ 1745 , "RPC_S_PROCNUM_OUT_OF_RANGE" }, -{ 1746 , "RPC_S_BINDING_HAS_NO_AUTH" }, -{ 1747 , "RPC_S_UNKNOWN_AUTHN_SERVICE" }, -{ 1748 , "RPC_S_UNKNOWN_AUTHN_LEVEL" }, -{ 1749 , "RPC_S_INVALID_AUTH_IDENTITY" }, -{ 1750 , "RPC_S_UNKNOWN_AUTHZ_SERVICE" }, -{ 1751 , "EPT_S_INVALID_ENTRY" }, -{ 1752 , "EPT_S_CANT_PERFORM_OP" }, -{ 1753 , "EPT_S_NOT_REGISTERED" }, -{ 1754 , "RPC_S_NOTHING_TO_EXPORT" }, -{ 1755 , "RPC_S_INCOMPLETE_NAME" }, -{ 1756 , "RPC_S_INVALID_VERS_OPTION" }, -{ 1757 , "RPC_S_NO_MORE_MEMBERS" }, -{ 1758 , "RPC_S_NOT_ALL_OBJS_UNEXPORTED" }, -{ 1759 , "RPC_S_INTERFACE_NOT_FOUND" }, -{ 1760 , "RPC_S_ENTRY_ALREADY_EXISTS" }, -{ 1761 , "RPC_S_ENTRY_NOT_FOUND" }, -{ 1762 , "RPC_S_NAME_SERVICE_UNAVAILABLE" }, -{ 1763 , "RPC_S_INVALID_NAF_ID" }, -{ 1764 , "RPC_S_CANNOT_SUPPORT" }, -{ 1765 , "RPC_S_NO_CONTEXT_AVAILABLE" }, -{ 1766 , "RPC_S_INTERNAL_ERROR" }, -{ 1767 , "RPC_S_ZERO_DIVIDE" }, -{ 1768 , "RPC_S_ADDRESS_ERROR" }, -{ 1769 , "RPC_S_FP_DIV_ZERO" }, -{ 1770 , "RPC_S_FP_UNDERFLOW" }, -{ 1771 , "RPC_S_FP_OVERFLOW" }, -{ 1772 , "RPC_X_NO_MORE_ENTRIES" }, -{ 1773 , "RPC_X_SS_CHAR_TRANS_OPEN_FAIL" }, -{ 1774 , "RPC_X_SS_CHAR_TRANS_SHORT_FILE" }, -{ 1775 , "RPC_X_SS_IN_NULL_CONTEXT" }, -{ 1777 , "RPC_X_SS_CONTEXT_DAMAGED" }, -{ 1778 , "RPC_X_SS_HANDLES_MISMATCH" }, -{ 1779 , "RPC_X_SS_CANNOT_GET_CALL_HANDLE" }, -{ 1780 , "RPC_X_NULL_REF_POINTER" }, -{ 1781 , "RPC_X_ENUM_VALUE_OUT_OF_RANGE" }, -{ 1782 , "RPC_X_BYTE_COUNT_TOO_SMALL" }, -{ 1783 , "RPC_X_BAD_STUB_DATA" }, -{ 1784 , "ERROR_INVALID_USER_BUFFER" }, -{ 1785 , "ERROR_UNRECOGNIZED_MEDIA" }, -{ 1786 , "ERROR_NO_TRUST_LSA_SECRET" }, -{ 1787 , "ERROR_NO_TRUST_SAM_ACCOUNT" }, -{ 1788 , "ERROR_TRUSTED_DOMAIN_FAILURE" }, -{ 1789 , "ERROR_TRUSTED_RELATIONSHIP_FAILURE" }, -{ 1790 , "ERROR_TRUST_FAILURE" }, -{ 1791 , "RPC_S_CALL_IN_PROGRESS" }, -{ 1792 , "ERROR_NETLOGON_NOT_STARTED" }, -{ 1793 , "ERROR_ACCOUNT_EXPIRED" }, -{ 1794 , "ERROR_REDIRECTOR_HAS_OPEN_HANDLES" }, -{ 1795 , "ERROR_PRINTER_DRIVER_ALREADY_INSTALLED" }, -{ 1796 , "ERROR_UNKNOWN_PORT" }, -{ 1797 , "ERROR_UNKNOWN_PRINTER_DRIVER" }, -{ 1798 , "ERROR_UNKNOWN_PRINTPROCESSOR" }, -{ 1799 , "ERROR_INVALID_SEPARATOR_FILE" }, -{ 1800 , "ERROR_INVALID_PRIORITY" }, -{ 1801 , "ERROR_INVALID_PRINTER_NAME" }, -{ 1802 , "ERROR_PRINTER_ALREADY_EXISTS" }, -{ 1803 , "ERROR_INVALID_PRINTER_COMMAND" }, -{ 1804 , "ERROR_INVALID_DATATYPE" }, -{ 1805 , "ERROR_INVALID_ENVIRONMENT" }, -{ 1806 , "RPC_S_NO_MORE_BINDINGS" }, -{ 1807 , "ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT" }, -{ 1808 , "ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT" }, -{ 1809 , "ERROR_NOLOGON_SERVER_TRUST_ACCOUNT" }, -{ 1810 , "ERROR_DOMAIN_TRUST_INCONSISTENT" }, -{ 1811 , "ERROR_SERVER_HAS_OPEN_HANDLES" }, -{ 1812 , "ERROR_RESOURCE_DATA_NOT_FOUND" }, -{ 1813 , "ERROR_RESOURCE_TYPE_NOT_FOUND" }, -{ 1814 , "ERROR_RESOURCE_NAME_NOT_FOUND" }, -{ 1815 , "ERROR_RESOURCE_LANG_NOT_FOUND" }, -{ 1816 , "ERROR_NOT_ENOUGH_QUOTA" }, -{ 1817 , "RPC_S_NO_INTERFACES" }, -{ 1818 , "RPC_S_CALL_CANCELLED" }, -{ 1819 , "RPC_S_BINDING_INCOMPLETE" }, -{ 1820 , "RPC_S_COMM_FAILURE" }, -{ 1821 , "RPC_S_UNSUPPORTED_AUTHN_LEVEL" }, -{ 1822 , "RPC_S_NO_PRINC_NAME" }, -{ 1823 , "RPC_S_NOT_RPC_ERROR" }, -{ 1824 , "RPC_S_UUID_LOCAL_ONLY" }, -{ 1825 , "RPC_S_SEC_PKG_ERROR" }, -{ 1826 , "RPC_S_NOT_CANCELLED" }, -{ 1827 , "RPC_X_INVALID_ES_ACTION" }, -{ 1828 , "RPC_X_WRONG_ES_VERSION" }, -{ 1829 , "RPC_X_WRONG_STUB_VERSION" }, -{ 1898 , "RPC_S_GROUP_MEMBER_NOT_FOUND" }, -{ 1899 , "EPT_S_CANT_CREATE" }, -{ 1900 , "RPC_S_INVALID_OBJECT" }, -{ 1901 , "ERROR_INVALID_TIME" }, -{ 1902 , "ERROR_INVALID_FORM_NAME" }, -{ 1903 , "ERROR_INVALID_FORM_SIZE" }, -{ 1904 , "ERROR_ALREADY_WAITING" }, -{ 1905 , "ERROR_PRINTER_DELETED" }, -{ 1906 , "ERROR_INVALID_PRINTER_STATE" }, -{ 1907 , "ERROR_PASSWORD_MUST_CHANGE" }, -{ 1908 , "ERROR_DOMAIN_CONTROLLER_NOT_FOUND" }, -{ 1909 , "ERROR_ACCOUNT_LOCKED_OUT" }, -{ 6118 , "ERROR_NO_BROWSER_SERVERS_FOUND" }, -{ 2000 , "ERROR_INVALID_PIXEL_FORMAT" }, -{ 2001 , "ERROR_BAD_DRIVER" }, -{ 2002 , "ERROR_INVALID_WINDOW_STYLE" }, -{ 2003 , "ERROR_METAFILE_NOT_SUPPORTED" }, -{ 2004 , "ERROR_TRANSFORM_NOT_SUPPORTED" }, -{ 2005 , "ERROR_CLIPPING_NOT_SUPPORTED" }, -{ 3000 , "ERROR_UNKNOWN_PRINT_MONITOR" }, -{ 3001 , "ERROR_PRINTER_DRIVER_IN_USE" }, -{ 3002 , "ERROR_SPOOL_FILE_NOT_FOUND" }, -{ 3003 , "ERROR_SPL_NO_STARTDOC" }, -{ 3004 , "ERROR_SPL_NO_ADDJOB" }, -{ 3005 , "ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED" }, -{ 3006 , "ERROR_PRINT_MONITOR_ALREADY_INSTALLED" }, -{ 4000 , "ERROR_WINS_INTERNAL" }, -{ 4001 , "ERROR_CAN_NOT_DEL_LOCAL_WINS" }, -{ 4002 , "ERROR_STATIC_INIT" }, -{ 4003 , "ERROR_INC_BACKUP" }, -{ 4004 , "ERROR_FULL_BACKUP" }, -{ 4005 , "ERROR_REC_NON_EXISTENT" }, -{ 4006 , "ERROR_RPL_NOT_ALLOWED" }, -{ 10004 , "WSAEINTR" }, -{ 10009 , "WSAEBADF" }, -{ 10013 , "WSAEACCES" }, -{ 10014 , "WSAEFAULT" }, -{ 10022 , "WSAEINVAL" }, -{ 10024 , "WSAEMFILE" }, -{ 10035 , "WSAEWOULDBLOCK" }, -{ 10036 , "WSAEINPROGRESS" }, -{ 10037 , "WSAEALREADY" }, -{ 10038 , "WSAENOTSOCK" }, -{ 10039 , "WSAEDESTADDRREQ" }, -{ 10040 , "WSAEMSGSIZE" }, -{ 10041 , "WSAEPROTOTYPE" }, -{ 10042 , "WSAENOPROTOOPT" }, -{ 10043 , "WSAEPROTONOSUPPORT" }, -{ 10044 , "WSAESOCKTNOSUPPORT" }, -{ 10045 , "WSAEOPNOTSUPP" }, -{ 10046 , "WSAEPFNOSUPPORT" }, -{ 10047 , "WSAEAFNOSUPPORT" }, -{ 10048 , "WSAEADDRINUSE" }, -{ 10049 , "WSAEADDRNOTAVAIL" }, -{ 10050 , "WSAENETDOWN" }, -{ 10051 , "WSAENETUNREACH" }, -{ 10052 , "WSAENETRESET" }, -{ 10053 , "WSAECONNABORTED" }, -{ 10054 , "WSAECONNRESET" }, -{ 10055 , "WSAENOBUFS" }, -{ 10056 , "WSAEISCONN" }, -{ 10057 , "WSAENOTCONN" }, -{ 10058 , "WSAESHUTDOWN" }, -{ 10059 , "WSAETOOMANYREFS" }, -{ 10060 , "WSAETIMEDOUT" }, -{ 10061 , "WSAECONNREFUSED" }, -{ 10062 , "WSAELOOP" }, -{ 10063 , "WSAENAMETOOLONG" }, -{ 10064 , "WSAEHOSTDOWN" }, -{ 10065 , "WSAEHOSTUNREACH" }, -{ 10066 , "WSAENOTEMPTY" }, -{ 10067 , "WSAEPROCLIM" }, -{ 10068 , "WSAEUSERS" }, -{ 10069 , "WSAEDQUOT" }, -{ 10070 , "WSAESTALE" }, -{ 10071 , "WSAEREMOTE" }, -{ 10101 , "WSAEDISCON" }, -{ 10091 , "WSASYSNOTREADY" }, -{ 10092 , "WSAVERNOTSUPPORTED" }, -{ 10093 , "WSANOTINITIALISED" }, -{ 11001 , "WSAHOST_NOT_FOUND" }, -{ 11002 , "WSATRY_AGAIN" }, -{ 11003 , "WSANO_RECOVERY" }, -{ 11004 , "WSANO_DATA" }, -{ 0, NULL } -}; diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/objndx.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/objndx.h deleted file mode 100644 index 7fb14eecf06..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/objndx.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -#ifndef __objndx_h -#define __objndx_h - -/* Define maximum length of object name strings */ -#define OBJNDXNAMLEN 16 - -/* Functions in objndx.c */ -extern void * objndx_create(int size, void (*freefunc)(void *)); -extern char * objndx_register(void * objndx, void * objptr, char * namebuf); -extern void * objndx_lookup(void * objndx, char * objname); -extern void * objndx_remove(void * objndx, char * objname); -extern void objndx_destroy(void * objndx); - -#endif /* __objndx_h */ diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/pblock.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/pblock.h deleted file mode 100644 index e2d3642a611..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/pblock.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * pblock.h: Header for Parameter Block handling functions - * - * - * A parameter block is a set of name=value pairs which are generally used - * as parameters, but can be anything. They are kept in a hash table for - * reasonable speed, but if you are doing any intensive modification or - * access of them you should probably make a local copy of each parameter - * while working. - * - * When creating a pblock, you specify the hash table size for that pblock. - * You should set this size larger if you know that many items will be in - * that pblock, and smaller if only a few will be used or if speed is not - * a concern. - * - * The hashing function is very simple right now, and only looks at the - * first character of name. - * - * Rob McCool - * - */ - -#ifndef PBLOCK_H -#define PBLOCK_H - -/* - * Requires that the macros MALLOC and STRDUP be set to "safe" versions that - * will exit if no memory is available. If not under MCC httpd, define - * them to be the real functions and play with fire, or make your own - * function. - */ - -#include "../netsite.h" - -#include <ctype.h> /* isspace */ -#include <stdio.h> /* sprintf */ -#include <string.h> /* strlen, strcmp */ - - -/* ------------------------------ Structures ------------------------------ */ - - -typedef struct { - char *name,*value; -} pb_param; - -struct pb_entry { - pb_param *param; - struct pb_entry *next; -}; - -typedef struct { - int hsize; - struct pb_entry **ht; -} pblock; - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * param_create creates a parameter with the given name and value. If name - * and value are non-NULL, they are copied and placed into the new pb_param - * struct. - */ - -pb_param *param_create(char *name, char *value); - -/* - * param_free frees a given parameter if it's non-NULL, and returns 1 if - * p was non-NULL, and 0 if p was NULL. - * - * Useful for error checking pblock_remove. - */ - -int param_free(pb_param *pp); - -/* - * pblock_create creates a new pblock with hash table size n. - * - * It returns the newly allocated pblock. - */ - -pblock *pblock_create(int n); - -/* - * pblock_free frees the given pblock and any entries inside it. - * - * If you want to save anything in a pblock, remove its entities with - * pblock_remove first and save the pointers you get. - */ - -void pblock_free(pblock *pb); - -/* - * pblock_find finds the entry with the given name in pblock pb. - * - * If it is successful, it returns the param block. If not, it returns NULL. - */ - -#define pblock_find(name, pb) (_pblock_fr(name,pb,0)) - -/* - * pblock_findval finds the entry with the given name in pblock pb, and - * returns its value, otherwise returns NULL. - */ - -char *pblock_findval(char *name, pblock *pb); - -/* - * pblock_remove behaves exactly like pblock_find, but removes the given - * entry from pb. - */ - -#define pblock_remove(name, pb) (_pblock_fr(name,pb,1)) - -/* - * pblock_nvinsert creates a new parameter with the given name and value - * and inserts it into pblock pb. The name and value in the parameter are - * also newly allocated. Returns the pb_param it allocated (in case you - * need it). - * - * pblock_nninsert inserts a numerical value. - */ - -pb_param *pblock_nvinsert(char *name, char *value, pblock *pb); -pb_param *pblock_nninsert(char *name, int value, pblock *pb); - -/* - * pblock_pinsert inserts a pb_param into a pblock. - */ - -void pblock_pinsert(pb_param *pp, pblock *pb); - -/* - * pblock_str2pblock scans the given string str for parameter pairs - * name=value, or name="value". Any \ must be followed by a literal - * character. If a string value is found, with no unescaped = signs, it - * will be added with the name 1, 2, 3, etc. depending on whether it was - * first, second, third, etc. in the stream (zero doesn't count). - * - * Returns the number of parameters added to the table, or -1 upon error. - */ - -int pblock_str2pblock(char *str, pblock *pb); - -/* - * pblock_pblock2str places all of the parameters in the given pblock - * into the given string (NULL if it needs creation). It will re-allocate - * more space for the string. Each parameter is separated by a space and of - * the form name="value" - */ - -char *pblock_pblock2str(pblock *pb, char *str); - -/* - * pblock_copy copies the entries in the given source pblock to the - * destination one. The entries are newly allocated so that the original - * pblock may be freed or the new one changed without affecting the other. - */ - -void pblock_copy(pblock *src, pblock *dst); - -/* - * pblock_pb2env copies the given pblock into the given environment, with - * one new env entry for each name/value pair in the pblock. - */ - -char **pblock_pb2env(pblock *pb, char **env); - - -/* --------------------------- Internal things ---------------------------- */ - - -pb_param *_pblock_fr(char *name, pblock *pb, int remove); - - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/sem.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/sem.h deleted file mode 100644 index c6ea65b834b..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/sem.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * sem.h: Attempt to provide multi-process semaphores across platforms - * - * Rob McCool - */ - - -#ifndef SEM_H -#define SEM_H - -#include "systems.h" - - -/* All of the implementations currently use int as the semaphore type */ -#ifdef SEM_WIN32 -typedef HANDLE SEMAPHORE; -#define SEM_ERROR NULL -/* That oughta hold them (I hope) */ -#define SEM_MAXVALUE 32767 - -#else /* ! SEM_WIN32 */ -typedef int SEMAPHORE; -#define SEM_ERROR -1 -#endif /* SEM_WIN32 */ - -/* - * sem_init creates a semaphore using the given name and unique - * identification number. filename should be a file accessible to the - * process. Returns SEM_ERROR on error. - */ - -SEMAPHORE sem_init(char *name, int number); - -/* - * sem_terminate de-allocates the given semaphore. - */ - -void sem_terminate(SEMAPHORE id); - -/* - * sem_grab attempts to gain exclusive access to the given semaphore. If - * it can't get it, the caller will block. Returns -1 on error. - */ - -int sem_grab(SEMAPHORE id); - -/* - * sem_release releases this process's exclusive control over the given - * semaphore. Returns -1 on error. - */ - -int sem_release(SEMAPHORE id); - - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/session.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/session.h deleted file mode 100644 index c404dfa5a8c..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/session.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * session.h: Deals with virtual sessions - * - * A session is the time between when a client connects and when it - * disconnects. Several requests may be handled in one session. - * - * Rob McCool - */ - - -#ifndef SESSION_H -#define SESSION_H - - -#include "../netsite.h" /* MALLOC etc */ -#include "net.h" /* dns-related stuff */ -#include "buffer.h" /* netbuf */ - - -/* ------------------------------ Structures ------------------------------ */ - - - -#define SESSION_HASHSIZE 5 - - -typedef struct { - /* Client-specific information */ - pblock *client; - - SYS_NETFD csd; - netbuf *inbuf; - - struct in_addr iaddr; -} Session; - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * session_create creates a new request structure for the client with the - * given socket descriptor and sockaddr. - */ - -Session *session_create(SYS_NETFD csd, struct sockaddr_in *sac); - -/* - * session_free frees the given session - */ - -void session_free(Session *sn); - -/* - * session_dns returns the DNS hostname of the client of this session, - * and inserts it into the client pblock. Returns NULL if unavailable. - */ - -#define session_dns(sn) session_dns_lookup(sn, 0) - -/* - * session_maxdns looks up a hostname from an IP address, and then verifies - * that the host is really who they claim to be. - */ - -#define session_maxdns(sn) session_dns_lookup(sn, 1) - -char *session_dns_lookup(Session *sn, int verify); - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shexp.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shexp.h deleted file mode 100644 index 38b7e4982aa..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shexp.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * shexp.h: Defines and prototypes for shell exp. match routines - * - * - * This routine will match a string with a shell expression. The expressions - * accepted are based loosely on the expressions accepted by zsh. - * - * o * matches anything - * o ? matches one character - * o \ will escape a special character - * o $ matches the end of the string - * o [abc] matches one occurence of a, b, or c. The only character that needs - * to be escaped in this is ], all others are not special. - * o [a-z] matches any character between a and z - * o [^az] matches any character except a or z - * o ~ followed by another shell expression will remove any pattern - * matching the shell expression from the match list - * o (foo|bar) will match either the substring foo, or the substring bar. - * These can be shell expressions as well. - * - * The public interface to these routines is documented below. - * - * Rob McCool - * - */ - -#ifndef SHEXP_H -#define SHEXP_H - -/* - * Requires that the macro MALLOC be set to a "safe" malloc that will - * exit if no memory is available. If not under MCC httpd, define MALLOC - * to be the real malloc and play with fire, or make your own function. - */ - -#include "../netsite.h" - -#include <ctype.h> /* isalnum */ -#include <string.h> /* strlen */ - - - -/* --------------------------- Public routines ---------------------------- */ - - -/* - * shexp_valid takes a shell expression exp as input. It returns: - * - * NON_SXP if exp is a standard string - * INVALID_SXP if exp is a shell expression, but invalid - * VALID_SXP if exp is a valid shell expression - */ - -#define NON_SXP -1 -#define INVALID_SXP -2 -#define VALID_SXP 1 - -int shexp_valid(char *exp); - -/* - * shexp_match - * - * Takes a prevalidated shell expression exp, and a string str. - * - * Returns 0 on match and 1 on non-match. - */ - -int shexp_match(char *str, char *exp); - - -/* - * shexp_cmp - * - * Same as above, but validates the exp first. 0 on match, 1 on non-match, - * -1 on invalid exp. shexp_casecmp does the same thing but is case - * insensitive. - */ - -int shexp_cmp(char *str, char *exp); -int shexp_casecmp(char *str, char *exp); - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h deleted file mode 100644 index ec536cf4d9c..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/shmem.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * shmem.h: Portable abstraction for memory shared among a server's workers - * - * Rob McCool - */ - - -#ifndef _SHMEM_H -#define _SHMEM_H - -#include "netsite.h" -#include "systems.h" - - -/* --------------------------- Data structures ---------------------------- */ - - -#if defined (SHMEM_UNIX_MMAP) || defined (SHMEM_WIN32_MMAP) -#include "file.h" /* SYS_FILE */ - -typedef struct { - void *data; /* the data */ -#ifdef SHMEM_WIN32_MMAP - HANDLE fdmap; -#endif /* SHMEM_WIN32_MMAP */ - int size; /* the maximum length of the data */ - - char *name; /* internal use: filename to unlink if exposed */ - SYS_FILE fd; /* internal use: file descriptor for region */ -} shmem_s; - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * shmem_alloc allocates a region of shared memory of the given size, using - * the given name to avoid conflicts between multiple regions within the - * program. The region will not be automatically grown if its boundaries - * are over-run, use shmem_realloc for that. - * - * If expose is non-zero and the underlying system supports it, the - * file used to create the shared region will be visible to other processes - * running on the system. - * - * name should be unique to the program which calls this routine, otherwise - * conflicts will arise. - * - * Returns a new shared memory region, with the data element being a - * pointer to the shared memory. This function must be called before any - * daemon workers are spawned, in order for the handle to the shared region - * to be inherited by the children. - * - * Because of the requirement that the region must be inherited by the - * children, the region cannot be re-allocated with a larger size when - * necessary. - */ -shmem_s *shmem_alloc(char *name, int size, int expose); - - -/* - * shmem_free de-allocates the specified region of shared memory. - */ -void shmem_free(shmem_s *region); - -#endif /* SHMEM_UNIX_MMAP || SHMEM_WIN32_MMAP */ - - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systems.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systems.h deleted file mode 100644 index b54f085e6a9..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systems.h +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * systems.h: Lists of defines for systems - * - * This sets what general flavor the system is (UNIX, etc.), - * and defines what extra functions your particular system needs. - */ - - -#ifndef SYSTEMS_H -#define SYSTEMS_H - -#include <string.h> - - -#define DAEMON_ANY -#define DAEMON_LISTEN_SIZE 128 -#ifndef MCC_ADMSERV -#define DAEMON_STATS -#endif - -/* Linux is not currently supported */ -#ifdef linux - -#define FILE_UNIX -#undef FILE_STDIO -#undef DAEMON_UNIX_FORK -#undef DAEMON_UNIX_POOL -#define DAEMON_UNIX_MOBRULE -#undef DAEMON_STATS -#define BSD_FLOCK -#define BSD_RLIMIT -#define NET_SOCKETS -#define FILE_UNIX_MMAP -#define FILE_MMAP_FLAGS (MAP_FILE | MAP_PRIVATE) -#undef BSD_SIGNALS - -#undef NEED_CRYPT_PROTO -#undef AUTH_DBM -#define SEM_FLOCK - - -#define ZERO(ptr,len) memset(ptr,0,len) - -#elif defined(BSDI) - -#define FILE_UNIX -#define DAEMON_UNIX_MOBRULE -#define BSD_FLOCK -#define BSD_RLIMIT -#define NET_SOCKETS -#define FILE_UNIX_MMAP -#define FILE_MMAP_FLAGS (MAP_FILE | MAP_PRIVATE) -#define BSD_SIGNALS -#define BSD_TIME -#define BSD_MAIL -#undef NEED_CRYPT_PROTO -#define AUTH_DBM -#define SEM_FLOCK - -#define ZERO(ptr,len) memset(ptr,0,len) - -#elif defined(SOLARIS) - -#define FILE_UNIX -#undef FILE_STDIO -#define DAEMON_UNIX_MOBRULE -#define DAEMON_NEEDS_SEMAPHORE -#define NET_SOCKETS -#define FILE_UNIX_MMAP -#define FILE_MMAP_FLAGS MAP_PRIVATE -#undef BSD_SIGNALS -#define BSD_RLIMIT -#define NEED_CRYPT_H -#define AUTH_DBM -/* The Solaris routines return ENOSPC when too many semaphores are SEM_UNDO. */ -#define SEM_FLOCK -#define DLL_CAPABLE -#define DLL_DLOPEN - -#define ZERO(ptr,len) memset(ptr,0,len) - -#elif defined(SUNOS4) - -#define BSD_SIGNALS -#define BSD_TIME -#define BSD_MAIL -#define BSD_FLOCK -#define BSD_RLIMIT -#define FILE_UNIX -#undef FILE_STDIO -#define DAEMON_UNIX_MOBRULE -#define NET_SOCKETS -#define FILE_UNIX_MMAP -#define FILE_MMAP_FLAGS MAP_PRIVATE -#undef NEED_CRYPT_H -#define NEED_CRYPT_PROTO -#define AUTH_DBM -#define SEM_FLOCK -#define ZERO(ptr,len) memset(ptr,0,len) -#define DLL_CAPABLE -#define DLL_DLOPEN - -#elif defined(OSF1) - -#undef BSD_SIGNALS -#define BSD_TIME -#define BSD_FLOCK -#define BSD_RLIMIT -#define FILE_UNIX -#undef FILE_STDIO -#define DAEMON_UNIX_MOBRULE -#define DAEMON_NEEDS_SEMAPHORE -#define NET_SOCKETS -#define FILE_UNIX_MMAP -#define FILE_MMAP_FLAGS MAP_PRIVATE -#define AUTH_DBM -#define SEM_FLOCK -#define ZERO(ptr,len) memset(ptr,0,len) -#define DLL_CAPABLE -#define DLL_DLOPEN - -#elif defined(AIX) - -#define FILE_UNIX -#undef FILE_STDIO -#undef DAEMON_UNIX_FORK -#undef DAEMON_UNIX_POOL -#define DAEMON_UNIX_MOBRULE -#define DAEMON_NEEDS_SEMAPHORE -#define NET_SOCKETS -#define FILE_UNIX_MMAP -#define FILE_MMAP_FLAGS MAP_PRIVATE -#undef BSD_SIGNALS -#define BSD_RLIMIT -#undef NEED_CRYPT_H -#define AUTH_DBM -#define SEM_FLOCK -#define ZERO(ptr,len) memset(ptr,0,len) -#define DLL_CAPABLE -#define DLL_DLOPEN - -#elif defined(HPUX) - -#define FILE_UNIX -#undef FILE_STDIO -#define DAEMON_UNIX_MOBRULE -#define DAEMON_NEEDS_SEMAPHORE -#define NET_SOCKETS -#define FILE_UNIX_MMAP -#define FILE_MMAP_FLAGS MAP_PRIVATE -#undef BSD_SIGNALS -#undef BSD_RLIMIT -#undef NEED_CRYPT_H -#define AUTH_DBM -#define SEM_FLOCK -#define ZERO(ptr,len) memset(ptr,0,len) -#define DLL_CAPABLE -#define DLL_HPSHL - -#elif defined (IRIX) - -#define FILE_UNIX -#undef FILE_STDIO -#undef DAEMON_UNIX_FORK -#undef DAEMON_UNIX_POOL -#define DAEMON_UNIX_MOBRULE -#define DLL_CAPABLE -#define DLL_DLOPEN -#define NET_SOCKETS -#define FILE_UNIX_MMAP -#define FILE_MMAP_FLAGS MAP_PRIVATE -#undef BSD_SIGNALS -#define BSD_RLIMIT -#define NEED_CRYPT_H -#define AUTH_DBM -#define SEM_FLOCK -#define ZERO(ptr,len) memset(ptr,0,len) - -#else /* Windows NT */ - -#include <wtypes.h> -#include <winbase.h> - -typedef void* PASSWD; - -#define FILE_WIN32 -#define NET_SOCKETS -#define NET_WINSOCK -#define DAEMON_WIN32 -#undef AUTH_DBM -#define ZERO(ptr, len) ZeroMemory(ptr, len) -#define SEM_WIN32 -#define DLL_CAPABLE -#define DLL_WIN32 -#define NO_NODELOCK /* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagh */ - -/* The stat call under NT doesn't define these macros */ -#define S_ISDIR(mode) ((mode&S_IFMT) == S_IFDIR) -#define S_ISREG(mode) ((mode&S_IFMT) == S_IFREG) - -#define strcasecmp util_strcasecmp -#define strncasecmp util_strncasecmp -int util_strcasecmp(const char *s1, const char *s2); -int util_strncasecmp(const char *s1, const char *s2, int n); -#endif /* Windows NT */ - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systhr.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systhr.h deleted file mode 100644 index 81e101076f9..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/systhr.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * systhr.h: Abstracted threading mechanisms - * - * Rob McCool - */ - -#ifndef _SYSTHR_H -#define _SYSTHR_H - -#include "netsite.h" -#include "systems.h" - -#ifdef THREAD_ANY - -#ifdef USE_NSPR -#include <nspr/prthread.h> -#include <nspr/prglobal.h> - -typedef PRThread* SYS_THREAD; -#endif - -#ifdef THREAD_WIN32 -#include <nspr/prthread.h> -#include <nspr/prglobal.h> -#include <process.h> -typedef struct { - HANDLE hand; - DWORD id; -} sys_thread_s; -typedef sys_thread_s *SYS_THREAD; -#endif - -/* - * systhread_start creates a thread with the given priority, will allocate - * a stack of stksz bytes, and calls fn with arg as its argument. stksz - * of zero will allocate a default stack size. - * - * XXX Priorities are system dependent - */ - -SYS_THREAD systhread_start(int prio, int stksz, void (*fn)(void *), void *arg); - -/* - * systhread_current returns a pointer to the current thread. - */ -#ifdef USE_NSPR -#define systhread_current() PR_CurrentThread() -#elif defined(THREAD_WIN32) -#define systhread_current() GetCurrentThreadId() -#endif - -/* - * systhread_attach makes an existing thread an NSPR thread. Currently this - * is used only in NT. - */ - -SYS_THREAD systhread_attach(); - -/* - * systhread_terminate terminates the thread that is passed in. - */ -void systhread_terminate(SYS_THREAD thr); - - -/* - * systhread_sleep puts the calling thread to sleep for the given number - * of milliseconds. - */ -void systhread_sleep(int milliseconds); - -/* - * systhread_init initializes the threading system. name is a name for the - * program for debugging. - */ -void systhread_init(char *name); - -/* - * systhread_timerset starts or re-sets the interrupt timer for a thread - * system. This should be considered a suggestion as most systems don't allow - * the timer interval to be changed. - */ -#ifdef THREAD_NSPR_USER -#define systhread_timerset(usec) PR_StartEvents(usec) - -#elif defined(USE_NSPR) -#define systhread_timerset(usec) (void)(usec) - -#elif defined(THREAD_WIN32) -#define systhread_timerset(usec) (void)(usec) -#endif - - -/* - * newkey allocates a new integer id for thread-private data. Use this - * key to identify a variable which you want to appear differently - * between threads, and then use setdata to associate a value with this - * key for each thread. - */ -int systhread_newkey(void); - -/* - * Get data that has been previously associated with key in this thread. - * Returns NULL if setkey has not been called with this key by this - * thread previously, or the data that was previously used with setkey - * by this thread with this key. - */ -void *systhread_getdata(int key); - -/* - * Associate data with the given key number in this thread. - */ -void systhread_setdata(int key, void *data); - -#endif -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h deleted file mode 100644 index cf2f1c0764d..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/base/util.h +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * util.h: A hodge podge of utility functions and standard functions which - * are unavailable on certain systems - * - * Rob McCool - */ - - -#ifndef HTTPD_UTIL_H -#define HTTPD_UTIL_H - -#include "buffer.h" /* filebuf for getline */ - -#include <time.h> /* struct tm */ - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * getline scans in buf until it finds a LF or CRLF, storing the string in - * l. It will terminate the string and return: - * - * 0 when done, with the scanned line (minus CR or LF) in l - * 1 upon EOF, with the scanned line (minus CR or LF) in l - * -1 on error with the error description in l (uses lineno for information) - */ - -int util_getline(filebuf *buf, int lineno, int maxlen, char *l); - - -/* - * can_exec returns 1 if you can execute the file described by finfo, and - * 0 if you can't. - */ - -#ifdef XP_UNIX -#include <sys/stat.h> -#include <sys/types.h> - -int util_can_exec(struct stat *finfo, uid_t uid, gid_t gid); - -#endif /* XP_UNIX */ -/* - * env_create creates a new environment with the given env, with n new - * entries, and places the current position that you should add your - * entries with at pos. - * - * If env is NULL, it will allocate a new one. If not, it will reallocate - * that one. - */ - -char **util_env_create(char **env, int n, int *pos); - -/* - * util_env_str allocates a string from the given name and value and - * returns it. It does not check for things like = signs in name. - */ - -char *util_env_str(char *name, char *value); - -/* - * env_replace replaces the occurrence of the given variable with the - * value you give. - */ - -void util_env_replace(char **env, char *name, char *value); - -/* - * util_env_free frees an environment. - */ - -void util_env_free(char **env); - -/* - * util_env_find looks through env for the named string. Returns the - * corresponding value if the named string is found, or NULL if not. - */ -char *util_env_find(char **env, char *name); - - -/* - * hostname gets the local hostname. Returns NULL if it can't find a FQDN. - * You are free to realloc or free this string. - */ - -char *util_hostname(void); - - -/* - * chdir2path changes the current directory to the one that the file - * path is in. path should point to a file. Caveat: path must be a writable - * string. It won't get modified permanently. - */ - -int util_chdir2path(char *path); - -/* - * is_mozilla checks if the given user-agent is mozilla, of at least - * the given major and minor revisions. These are strings to avoid - * ambiguities like 1.56 > 1.5 - */ - -int util_is_mozilla(char *ua, char *major, char *minor); - -/* - * is_url will return 1 if the given string seems to be a URL, or will - * return 0 otherwise. - * - * Because of stupid news URLs, this will return 1 if the string has - * all alphabetic characters up to the first colon and will not check for - * the double slash. - */ - -int util_is_url(char *url); - -/* - * util_later_than checks the date in the string ims, and if that date is - * later than or equal to the one in the tm struct lms, then it returns 1. - * - * Handles RFC 822, 850, and ctime formats. - */ - -int util_later_than(struct tm *lms, char *ims); - - -/* - * util_uri_is_evil returns 1 if a URL has ../ or // in it. - */ -int util_uri_is_evil(char *t); - -/* - * util_uri_parse gets rid of /../, /./, and //. - * - * Assumes that either the string starts with a /, or the string will - * not .. right off of its beginning. As such, ../foo.gif will - * not be changed, although /../foo.gif will become /foo.gif. - */ - -void util_uri_parse(char *uri); - -/* - * util_uri_unescape unescapes the given URI in place (% conversions only). - */ - -void util_uri_unescape(char *s); - -/* - * util_uri_escape escapes any nasty chars in s and copies the string into d. - * If d is NULL, it will allocate and return a properly sized string. - * Warning: does not check bounds on a given d. - * - * util_url_escape does the same thing but does it for a url, i.e. ?:+ is - * not escaped. - */ - -char *util_uri_escape(char *d, char *s); -char *util_url_escape(char *d, char *s); - -/* - * util_sh_escape places a \ in front of any shell-special characters. - * Returns a newly-allocated copy of the string. - */ - -char *util_sh_escape(char *s); - -/* - * util_itoa converts the given integer to a string into a. - */ - -int util_itoa(int i, char *a); - -/* - * util_vsprintf and util_sprintf are simplified clones of the System V - * vsprintf and sprintf routines. - * - * Returns the number of characters printed. Only handles %d and %s, - * does not handle any width or precision. - */ - -#include <stdarg.h> - -int util_vsprintf(char *s, register char *fmt, va_list args); -int util_sprintf(char *s, char *fmt, ...); - -/* These routines perform bounds checks. */ -int util_vsnprintf(char *s, int n, register char *fmt, va_list args); -int util_snprintf(char *s, int n, char *fmt, ...); - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/conf.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/conf.h deleted file mode 100644 index ec632f2d84b..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/conf.h +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * conf.h: Deals with the server configuration file. - * - * Object configuration is an entirely different matter. This deals with - * things like what port the server runs on, how many children it spawns, - * and other server-related issues. Information related configuration is - * handled by the object conf. - * - * Rob McCool - */ - - -#ifndef CONF_H -#define CONF_H - -#ifdef XP_WIN32 -#include <nt/ntconf.h> -#else - -#include "netsite.h" -#include "frame/objset.h" -#include "base/daemon.h" /* daemon struct */ - -#include <pwd.h> /* struct passwd */ - -/* ------------------------------ Constants ------------------------------- */ - - -/* The longest line in the configuration file */ -#define CONF_MAXLEN 16384 - -#define LF 10 -#define CR 13 - - -#if defined(DAEMON_ANY) -#ifdef MCC_PROXY -#define DEFAULT_PORT 8080 -#else -#define DEFAULT_PORT 80 -#endif -#endif - -#if defined(DAEMON_UNIX_POOL) || defined(DAEMON_UNIX_MOBRULE) -#define DEFAULT_POOL_MAX 50 -#endif - - - -/* ------------------------------- Globals -------------------------------- */ - - -#ifndef CONF_C - -/* - * These server parameters are made global because they really don't - * belong anywhere else. - */ - -#if defined(DAEMON_ANY) - -#include <sys/types.h> - -/* What port we listen to */ -extern int port; - -/* What address to bind to */ -extern char *addr; - -/* User to run as */ -extern struct passwd *userpw; - -/* Directory to chroot to */ -extern char *chr; - -/* Where to log our pid to */ -extern char *pidfn; - -#if defined(DAEMON_UNIX_POOL) || defined(DAEMON_UNIX_MOBRULE) -/* The maximum number of processes to keep in the pool */ -extern int pool_max; -/* The minimum number of processes to keep in the pool */ -extern int pool_min; -/* The maximum number of requests each process should handle. -1=default */ -extern int pool_life; -#endif - -#ifdef NET_SSL -extern char *secure_keyfn; -extern char *secure_certfn; -extern char *secure_dongle; -extern int security_active; -extern int secure_auth; -extern int security_session_timeout; -#endif - -#endif - -/* The server's hostname as should be reported in self-ref URLs */ -extern char *server_hostname; - -/* The main object from which all are derived */ -extern char *root_object; - -/* The object set the administrator has asked us to load */ -extern httpd_objset *std_os; - -/* The main error log, where all errors are logged */ -extern char *master_error_log; - -/* The e-mail address of someone to mail upon catastrophic error */ -extern char *admin_email; - -#endif - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * conf_init reads the given configuration file and sets any non-default - * parameters to their given setting. - */ - -char *conf_init(char *cfn); - -/* - * conf_terminate frees any data the conf routines may be holding. - */ - -void conf_terminate(void); - - -/* - * conf_vars2daemon transfers these globals to a daemon structure - */ -void conf_vars2daemon(daemon_s *d); - -#endif -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/dnfilter.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/dnfilter.h deleted file mode 100644 index 3904af7b37c..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/dnfilter.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -#ifndef __dnfilter_h -#define __dnfilter_h - -/* Error codes */ -#define DNFERR_MAX (-1) /* maximum error code */ -#define DNFERR_MALLOC (-1) /* insufficient memory */ -#define DNFERR_FOPEN (-2) /* file open error */ -#define DNFERR_FILEIO (-3) /* file I/O error */ -#define DNFERR_DUPSPEC (-4) /* duplicate filter specification */ -#define DNFERR_INTERR (-5) /* internal error (bug) */ -#define DNFERR_SYNTAX (-6) /* syntax error in filter file */ -#define DNFERR_MIN (-6) /* minimum error code */ - -/* This is used to return error information from dns_filter_setup() */ -typedef struct DNSFilterErr_s DNSFilterErr_t; -struct DNSFilterErr_s { - int errNo; /* DNFERR_xxxx error code */ - int lineno; /* file line number, if applicable */ - char * filename; /* filename, if applicable */ - char * errstr; /* error text, if any */ -}; - -/* Data and functions in dnfilter.c */ -extern void * dnf_objndx; -extern void dns_filter_destroy(void * dnfptr); -extern int dns_filter_setup(pblock * client, DNSFilterErr_t * reterr); -extern int dns_filter_check(pblock * client, char * cdns); - -#endif /* __dnfilter_h */ diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/func.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/func.h deleted file mode 100644 index 45383c76d23..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/func.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * func.h: Handles the function hash table - * - * httpd uses a table of internal functions hashed by a name string such that - * users can reference specific functions from the configuration files. - * - * Any function referenced by configuration files will be passed a - * parameter, a Request structure. The functions do not return anything. - * - * Rob McCool - */ - -#ifndef FUNC_H -#define FUNC_H - - -#include "netsite.h" -#include "base/pblock.h" -#include "base/session.h" /* Session structure */ -#include "frame/req.h" /* Request structure */ - - -/* -------------------------- Structure and Type -------------------------- */ - - -/* - * FuncPtr is a pointer to our kind of functions - */ - -typedef int Func(pblock *, Session *, Request *); -typedef Func *FuncPtr; - -/* - * FuncStruct is a structure used in the static declaration of the - * functions. This static declaration is parsed into a hash table at - * startup. You should initialize the next entry to NULL. - */ - -struct FuncStruct { - char *name; - FuncPtr func; - struct FuncStruct *next; -}; - - -/* --------------------------- Hash definitions --------------------------- */ - - -/* - * This is a primitive hash function. Once more is known about the names of - * the functions, this will be optimized. - */ - -#define NUM_HASH 20 -#define FUNC_HASH(s) (s[0] % NUM_HASH) - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * func_init reads the static FuncStruct arrays and creates the global - * function table from them. - * - * func_init will only read from the static arrays defined in func.c. - */ - -void func_init(void); - -/* - * func_find returns a pointer to the function named name, or NULL if none - * exists. - */ - -FuncPtr func_find(char *name); - -/* - * func_exec will try to execute the function whose name is the "fn" entry - * in the given pblock. If name is not found, it will log a misconfig of - * missing fn parameter. If it can't find it, it will log that. In these - * cases it will return REQ_ABORTED. Otherwise, it will return what the - * function being executed returns. - */ - -int func_exec(pblock *pb, Session *sn, Request *rq); - -/* - * func_insert dynamically inserts a named function into the server's - * table of functions. Returns the FuncStruct it keeps in internal - * databases, because on server restart you are responsible for freeing - * (or not) its contents. - */ - -struct FuncStruct *func_insert(char *name, FuncPtr fn); - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/http.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/http.h deleted file mode 100644 index bc23879ebe8..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/http.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * http.h: Deals with HTTP-related issues - * - * Rob McCool - */ - - -#ifndef HTTP_H -#define HTTP_H - - -#include "netsite.h" -#include "base/session.h" -#include "base/pblock.h" - -#include "frame/req.h" /* REQ_MAX_LINE, Request structure */ - -/* ------------------------------ Constants ------------------------------- */ - - -#define HTTP_DATE_LEN 128 -#define HTTP_DATE_FMT "%A, %d-%b-%y %T GMT" - - -/* The maximum number of RFC-822 headers we'll allow */ -/* This would be smaller if a certain browser wasn't so damn stupid. */ -#define HTTP_MAX_HEADERS 200 - -/* Whether or not we should read the headers for if-modified-since */ -#define HTTP_DO_IMS -#define HTTP_ALWAYS_LOADHDRS - -/* HTTP status codes */ - -#define PROTOCOL_OK 200 -#define PROTOCOL_NO_RESPONSE 204 -#define PROTOCOL_REDIRECT 302 -#define PROTOCOL_NOT_MODIFIED 304 -#define PROTOCOL_BAD_REQUEST 400 -#define PROTOCOL_UNAUTHORIZED 401 -#define PROTOCOL_FORBIDDEN 403 -#define PROTOCOL_NOT_FOUND 404 -#define PROTOCOL_PROXY_UNAUTHORIZED 407 -#define PROTOCOL_SERVER_ERROR 500 -#define PROTOCOL_NOT_IMPLEMENTED 501 - - -#ifdef NET_SSL -#define HTTPS_PORT 443 -#define HTTPS_URL "https" -#endif -#define HTTP_PORT 80 -#define HTTP_URL "http" - -/* -------------------------- http_scan_headers --------------------------- */ - - -/* - * parses the first line of an HTTP request - */ - -#define protocol_parse_request http_parse_request -int http_parse_request(char *t, Request *rq, Session *sn); - -/* - * Scans HTTP headers from the given netbuf, and places them in headers. - * If netbuf is NULL, the session's inbuf is used. - * - * Folded lines are joined and the linefeed removed (but not the whitespace). - * If there are any repeat headers they are joined and the two field bodies - * separated by a comma and space. - * - * t should be a string of length REQ_MAX_LINE. This is a convenience to - * req.c so that we don't use too much runtime stack. - * - * Session is an optional parameter. Use NULL if you wish. It's used for - * error logs. - */ - -#define protocol_scan_headers http_scan_headers -int http_scan_headers(Session *sn, netbuf *buf, char *t, pblock *headers); - - -/* - * Starts the HTTP response. If HTTP/0.9, does nothing. If 1.0, sends header. - * If this returns REQ_NOACTION, the method was head and no body should be - * sent. Otherwise, it will return REQ_PROCEED. - */ - -#define protocol_start_response http_start_response -int http_start_response(Session *sn, Request *rq); - - -/* - * http_hdrs2env takes the entries from the given pblock and converts them - * to an environment. - * - * Each name entry will be made uppercase, prefixed with HTTP_ and any - * occurrence of - will be converted to _. - */ - -char **http_hdrs2env(pblock *pb); - - -/* - * http_status sets status to the code n, with reason string r. If r is - * NULL, the server will attempt to find one for the given status code. - * If it finds none, it will give "Because I felt like it." - */ - -#define protocol_status http_status -void http_status(Session *sn, Request *rq, int n, char *r); - -/* - * http_set_finfo sets content-length and last-modified - */ - -#define protocol_set_finfo http_set_finfo -int http_set_finfo(Session *sn, Request *rq, struct stat *finfo); - - -/* - * Takes the given pblock and prints headers into the given buffer at - * position pos. Returns the buffer, reallocated if needed. Modifies pos. - */ - -char *http_dump822(pblock *pb, char *t, int *pos, int tsz); - -/* - * Finishes a request. For HTTP, this just closes the socket. - */ - -#define protocol_finish_request http_finish_request -void http_finish_request(Session *sn, Request *rq); - - -/* - * http_handle_session processes each request generated by Session - */ - -#define protocol_handle_session http_handle_session -void http_handle_session(Session *sn); - -/* - * http_uri2url takes the give URI prefix and URI suffix and creates a - * newly-allocated full URL from them of the form - * http://(server):(port)(prefix)(suffix) - * - * If you want either prefix or suffix to be skipped, use "" instead of NULL. - */ - -#define protocol_uri2url http_uri2url -char *http_uri2url(char *prefix, char *suffix); - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/httpact.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/httpact.h deleted file mode 100644 index efc6d1202e3..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/httpact.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * httpact.h: Defines the API characteristics for HTTP servers - * - * Rob McCool - */ - - -#ifndef HTTPACT_H -#define HTTPACT_H - -#include "frame/req.h" -#include "frame/object.h" - - -/* ------------------------------ Constants ------------------------------- */ - -#ifdef MCC_BATMAN -#define NUM_DIRECTIVES 5 -#else -#ifdef MCC_PROXY -#define NUM_DIRECTIVES 10 -#else -#define NUM_DIRECTIVES 7 -#endif -#endif - - -/* -------------------------- Generic Prototypes -------------------------- */ - - -/* - * directive_name2num will return the position of the abbreviated directive - * dir in the directive table. - * - * If dir does not exist in the table, it will return -1. - */ - -int directive_name2num(char *dir); - - -/* - * directive_num2name returns a string describing directive number num. - */ -const char *directive_num2name(int num); - - -/* - * servact_finderror looks through the request's object set to find a - * suitable error function to execute. Returns REQ_PROCEED if a function - * was found and executed successfully, REQ_NOACTION otherwise. - */ -int servact_finderror(Session *sn, Request *rq); - - -/* - * Read in and handle one request from the given session - */ -void servact_handle(Session *sn); - - -/* ----------------------- HTTP specific prototypes ----------------------- */ - - -int servact_handle_processed(Session *sn, Request *rq); - -/* - * Returns the translated path (filename) for the given uri, NULL otherwise. - * If authentication is required for the given uri, nothing is returned even - * if the current user has authenticated to that area. - */ -char *servact_translate_uri(char *uri, Session *sn); - - - -#ifdef MCC_PROXY - -/* ----------------------- proxy specific prototypes ---------------------- */ - -/* - * Resolves the given hostname, first trying to find a resolver - * function from obj.conf, and if that fails, just calls gethostbyname(). - * - */ -struct hostent *servact_gethostbyname(char *host, Session *sn, Request *rq); - - -/* - * Establishes a connection to the specified host and port using - * a Connect class function from obj.conf. Returns the sockect - * descriptor that is connected (and which should be SSL_Import()'ed - * by the caller). - * - * Returns -2 (REQ_NOACTION), if no such Connect class function exists. - * The caller should use the native connect mechanism in that case. - * - * Returns -1 (REQ_ABORT) on failure to connect. The caller should not - * attempt to use the native connect. - * - */ -int servact_connect(char *host, int port, Session *sn, Request *rq); - - -#endif /* ! MCC_PROXY */ - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/ipfilter.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/ipfilter.h deleted file mode 100644 index a0aa92e3ac9..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/ipfilter.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -#ifndef __ipfilter_h -#define __ipfilter_h - -/* Define error codes */ -#define IPFERR_MAX (-1) /* maximum error code value */ -#define IPFERR_MALLOC (-1) /* insufficient memory */ -#define IPFERR_FOPEN (-2) /* file open error */ -#define IPFERR_FILEIO (-3) /* file I/O error */ -#define IPFERR_DUPSPEC (-4) /* duplicate filter specification */ -#define IPFERR_INTERR (-5) /* internal error (bug) */ -#define IPFERR_SYNTAX (-6) /* syntax error in filter file */ -#define IPFERR_CNFLICT (-7) /* conflicting filter specification */ -#define IPFERR_MIN (-7) /* minimum error code value */ - -/* Define a scalar IP address value */ -typedef unsigned long IPAddr_t; - -/* Define structure for returning error information */ -typedef struct IPFilterErr_s IPFilterErr_t; -struct IPFilterErr_s { - int errNo; /* IPFERR_xxxx error code */ - int lineno; /* file line number, if applicable */ - char * filename; /* filename, if applicable */ - char * errstr; /* error text, if any */ -}; - -/* Data and functions in ipfilter.c */ -extern void * ipf_objndx; -extern void ip_filter_destroy(void * ipfptr); -extern int ip_filter_setup(pblock * client, IPFilterErr_t * reterr); -extern int ip_filter_check(pblock * client, IPAddr_t cip); - -#endif /* __ipfilter_h */ diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/log.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/log.h deleted file mode 100644 index 2641e87246c..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/log.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * log.h: Records transactions, reports errors to administrators, etc. - * - * Rob McCool - */ - - -#ifndef LOG_H -#define LOG_H - - -#include "netsite.h" -#include "base/session.h" /* Session structure */ -#include "frame/req.h" /* Request struct */ -#include "base/ereport.h" /* Error reporting, degrees */ - - -#define ERROR_CUTOFF 128 - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * log_error logs an error of the given degree from the function func - * and formats the arguments with the printf() style fmt. Returns whether the - * log was successful. Records the current date. - * - * sn and rq are optional parameters. If given, information about the client - * will be reported. - */ - -int log_error(int degree, char *func, Session *sn, Request *rq, - char *fmt, ...); - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/object.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/object.h deleted file mode 100644 index d7d49816280..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/object.h +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * object.h: Handle httpd objects - * - * Manages information about a document from config. files. Called mainly - * by objset.c. - * - * This module does not assume anything about the directives being parsed. - * That is handled by objset.c. - * - * This module requires the pblock module from the base library. - * - * Rob McCool - * - */ - - -#ifndef OBJECT_H -#define OBJECT_H - - -#include "netsite.h" -#include "base/pblock.h" -#include "base/session.h" - - - - -/* ------------------------------ Constants ------------------------------- */ - - -/* The maximum directive length unabbreviated, plus one space */ -#define MAX_DNAME_LEN 11 -#define NUM_DIRECTIVES 7 - - -/* ------------------------------ Structures ------------------------------ */ - - - -/* - * Hierarchy of httpd_object - * - * An object contains dtables. - * - * Each dtable is a table of directives that were entered of a certain type. - * There is one dtable for each unique type of directive. - * - * Each dtable contains an array of directives, each of which is equivalent - * to one directive that occurred in a config. file. - * - * It is up to the caller to determine how many dtables will be allocated - * and to keep track of which of their directive types maps to which dtable - * number. - */ - - -/* - * directive is a structure containing the protection and parameters to an - * instance of a directive within an httpd_object. - * - * param is the parameters, client is the protection. - */ - -typedef struct { - pblock *param; - pblock *client; -} directive; - -/* - * dtable is a structure for creating tables of directives - */ - -typedef struct { - int ni; - directive *inst; -} dtable; - -/* - * The httpd_object structure. - * - * The name pblock array contains the names for this object, such as its - * virtual location, its physical location, or its identifier. - * - * tmpl contains any templates allocated to this object. - */ - -typedef struct { - pblock *name; - - int nd; - dtable *dt; -} httpd_object; - - - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * directive_name2num will return the position of the abbreviated directive - * dir in the directive table. - * - * If dir does not exist in the table, it will return -1. - */ - -int directive_name2num(char *dir); - - -/* - * directive_num2name returns a string describing directive number num. - */ - -const char *directive_num2name(int num); - - -/* - * object_create will create a new object and return a pointer to it. - * It will allocate space for nd directive types and set name accordingly. - */ - -httpd_object *object_create(int nd, pblock *name); - -/* - * object_free will free an object and any data associated with it. - */ - -void object_free(httpd_object *obj); - -/* - * object_add_directive will add a new directive to the dtable for - * the directive class at position dc. - */ - -void object_add_directive(int dc, pblock *p, pblock *c, httpd_object *obj); - - -/* - * object_findnext finds the object configured to follow the given object, - * and stores the variables in rq->vars. It returns REQ_PROCEED if more - * objects should be processed, or REQ_NOACTION if it did not find any - * further objects to process. If something bad happens, REQ_ABORTED is - * returned. - * - * Handles all DIRECTIVE_CONSTRUCT type directives such as NameTrans and - * AuthType. - */ - - -/* --------- Prototype moved to req.h because of interdependency ---------- */ - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/objset.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/objset.h deleted file mode 100644 index f7e07ef243b..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/objset.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * objset.h: Handles object sets - * - * Each object is produced by reading a config file of some form. See the - * server documentation for descriptions of the directives that are - * recognized, what they do, and how they are parsed. - * - * This module requires the pblock and buffer modules from the base library. - * - * Rob McCool - */ - - -#ifndef OBJSET_H -#define OBJSET_H - -#ifdef XP_WIN32 -#include <nt/ntobjset.h> -#else - - -#include "netsite.h" -#include "base/pblock.h" -#include "base/buffer.h" -#include "frame/object.h" - - - -/* ------------------------------ Constants ------------------------------- */ - - -/* - * The default number of objects to leave room for in an object set, - * and the number of new entries by which to increase the size when that - * room is filled. - */ - -#define OBJSET_INCSIZE 8 - -/* - * When parsing config. files, httpd will put a limit on how long - * the parameters to a directive can be (in characters). - * - * Currently set to 10 lines (80 chars/line). - */ - -#define MAX_DIRECTIVE_LEN 800 - -/* - * The size of the hash tables that store a directive's parameters - */ - -#define PARAMETER_HASH_SIZE 3 - - -/* ------------------------------ Structures ------------------------------ */ - - -/* - * httpd_objset is a container for a bunch of objects. obj is a - * NULL-terminated array of objects. pos points to the entry after the last - * one in the array. You should not mess with pos, but can read it to find - * the last entry. - */ - -typedef struct { - int pos; - httpd_object **obj; -} httpd_objset; - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * objset_scan_buffer will scan through buffer, looking for object - * configuration information, and adding them to the object set os if it - * finds any. If os is NULL it will allocate a new object set. - * - * If any error occurs (syntax error, premature EOF) this function will - * free os, print an error message into errstr, and return NULL. - * This is because a config. file error is viewed as a catastrophic error - * from which httpd should not try to recover. If httpd were to continue - * after an error, it would not behave as the admin. expected and he/she - * may not notice until it's too late. - * - * Upon EOF the file will not be closed. - */ - -httpd_objset *objset_scan_buffer(filebuf *buf, char *errstr, httpd_objset *os); - -/* - * objset_create creates a new object set and returns a pointer to it. - */ - -httpd_objset *objset_create(void); - -/* - * objset_free will free an object set and any associated objects. - */ - -void objset_free(httpd_objset *os); - -/* - * objset_free_setonly frees only the object set. - */ -void objset_free_setonly(httpd_objset *os); - -/* - * objset_new_object will add a new object to objset with the specified - * name. It returns a pointer to the new object (which may be anywhere in - * the objset). - */ - -httpd_object *objset_new_object(pblock *name, httpd_objset *os); - -/* - * objset_add_object will add the existing object to os. - */ - -void objset_add_object(httpd_object *obj, httpd_objset *os); - -/* - * objset_findbyname will find the object in objset having the given name, - * and return the object if found, and NULL otherwise. - * ign is a set of objects to ignore. - */ - -httpd_object *objset_findbyname(char *name, httpd_objset *ign, - httpd_objset *os); - -/* - * objset_findbyppath will find the object in objset having the given - * partial path entry. Returns object if found, NULL otherwise. - * ign is a set of objects to ignore. - */ - -httpd_object *objset_findbyppath(char *ppath, httpd_objset *ign, - httpd_objset *os); - - -#endif -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/protocol.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/protocol.h deleted file mode 100644 index a57d9fc7aa4..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/protocol.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * protocol.h: Switch which protocol we're speaking. - * - * Currently only HTTP, but expected to include MTP in the future. - * - * Rob McCool - */ - - -#ifdef MCC_HTTPD -#include "http.h" -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/req.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/req.h deleted file mode 100644 index 46ff5e2d4fb..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/req.h +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * req.h: Request-specific data structures and functions - * - * Rob McCool - */ - - -#ifndef REQ_H -#define REQ_H - - -#include "netsite.h" -#include "base/pblock.h" -#include "base/session.h" -#include "frame/objset.h" - -#include <sys/stat.h> - - - -/* ------------------------------ Constants ------------------------------- */ - - -#define REQ_HASHSIZE 10 -#define REQ_MAX_LINE 4096 - - -/* - * The REQ_ return codes. These codes are used to determine what the server - * should do after a particular module completes its task. - * - * Func type functions return these as do many internal functions. - */ - -/* The function performed its task, proceed with the request */ -#define REQ_PROCEED 0 -/* The entire request should be aborted: An error occurred */ -#define REQ_ABORTED -1 -/* The function performed no task, but proceed anyway. */ -#define REQ_NOACTION -2 -/* Tear down the session and exit */ -#define REQ_EXIT -3 - - - -/* ------------------------------ Structures ------------------------------ */ - - -typedef struct { - /* Server working variables */ - pblock *vars; - - /* The method, URI, and protocol revision of this request */ - pblock *reqpb; - /* Protocol specific headers */ - int loadhdrs; - pblock *headers; - - /* Server's response headers */ - pblock *srvhdrs; - - /* The object set constructed to fulfill this request */ - httpd_objset *os; - /* Array of objects that were created from .nsconfig files */ - httpd_objset *tmpos; - - /* The stat last returned by request_stat_path */ - char *statpath; - char *staterr; - struct stat *finfo; - -#ifdef MCC_PROXY - /* SOCKS request data */ - void *socks_rq; -#endif - -} Request; - - -/* ------------------------------ Prototypes ------------------------------ */ - - -/* - * request_create creates a new request structure. - */ - -Request *request_create(void); - -/* - * request_free destroys a request structure. - */ - -void request_free(Request *req); - - -/* - * Restarts a request for a given URI internally. If rq is non-NULL, the - * function will keep the old request's headers and protocol, but with a new - * URI and method of GET. If the previous method was HEAD, this is preserved. - * Any other method becomes GET. You may assume that if you give it a request - * structure that it will use the same structure. - * - * Once you have this new Request, you must then do what you want with - * it (e.g. send the object back, perform uri2path translation, etc.) - */ - -Request *request_restart_internal(char *uri, Request *rq); - - -/* - * request_translate_uri performs virtual to physical mapping on the given - * uri and returns either a path string or NULL depending on whether it was - * successful or not. - */ - -char *request_translate_uri(char *uri, Session *sn); - - -/* - * request_header finds the named header depending on the requesting - * protocol. If possible, it will not load headers until the first is - * requested. You have to watch out because this can return REQ_ABORTED. - */ - -int request_header(char *name, char **value, Session *sn, Request *rq); - -/* - * request_loadheaders just makes sure the headers have been loaded. - */ - -int request_loadheaders(Session *sn, Request *rq); - - -/* - * request_stat_path tries to stat path. If path is NULL, it will look in - * the vars pblock for "path". If the stat is successful, it returns the stat - * structure. If not, returns NULL and leaves a message in rq->staterr. If a - * previous call to this function was successful, and path is the same, the - * function will simply return the previously found value. - * - * User functions should not free this structure. - */ - -struct stat *request_stat_path(char *path, Request *rq); - - -/* - * Parses the URI parameter in rq->vars and finds out what objects it - * references (using NameTrans). Builds the request's object set. - */ - -int request_uri2path(Session *sn, Request *rq); - -/* - * Performs any path checks needed for this request. - */ - -int request_pathchecks(Session *sn, Request *rq); - -/* - * Does all the ObjectType directives for a request - */ - -int request_fileinfo(Session *sn, Request *rq); - - -/* - * request_handle_processed takes a Request structure with its reqpb - * block filled in and handles the request. - */ - -int request_handle_processed(Session *sn, Request *rq); - - -/* - * Complete a request by finding the service function and using it. Returns - * REQ_NOACTION if no matching function was found. - */ - -int request_service(Session *sn, Request *rq); - - -/* - * request_handle handles one request from the session's inbuf. - */ - -void request_handle(Session *sn); - -/* - * Moved here due to problems with interdependency. See object.h for - * description. - */ - -int object_findnext(Session *sn, Request *rq, httpd_object *obj); -int object_pathcheck(Session *sn, Request *rq, httpd_object *obj); -int object_findinfo(Session *sn, Request *rq, httpd_object *obj); -int object_findservice(Session *sn, Request *rq, httpd_object *obj); -int object_finderror(Session *sn, Request *rq, httpd_object *obj); -int object_findlogs(Session *sn, Request *rq, httpd_object *obj); - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/servact.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/servact.h deleted file mode 100644 index 79c7e3f5347..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/frame/servact.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * servact.h: Define the server's actions, depending on what type of - * server it is. - * - * Rob McCool - */ - - -#if defined(MCC_HTTPD) || defined(MCC_PROXY) || defined(MCC_NEWS) -#include "httpact.h" -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/netsite.h b/apps/JAWS/clients/WebSTONE/src/nsapi-includes/netsite.h deleted file mode 100644 index 61d51923500..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-includes/netsite.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 1994, 1995. Netscape Communications Corporation. All - * rights reserved. - * - * Use of this software is governed by the terms of the license agreement for - * the Netscape Communications or Netscape Comemrce Server between the - * parties. - */ - - -/* ------------------------------------------------------------------------ */ - - -/* - * Standard defs for NetSite servers. - */ - - -#ifndef NETSITE_H -#define NETSITE_H - -#ifdef MCC_PROXY -#define MAGNUS_VERSION "1.1m" -#define MAGNUS_VERSION_STRING "Netscape-Proxy/1.1m" - -#elif defined(MCC_ADMSERV) -#define MAGNUS_VERSION "1.1" -#define MAGNUS_VERSION_STRING "Netscape-Administrator/1.1" - -#elif defined(MCC_HTTPD) -#define MAGNUS_VERSION "1.1" -#ifdef NET_SSL -#define MAGNUS_VERSION_STRING "Netscape-Commerce/1.12" -#else -#define MAGNUS_VERSION_STRING "Netscape-Communications/1.12" -#endif - -#elif defined(MCC_NEWS) -#define MAGNUS_VERSION_STRING "Netscape 1.1" -#endif - -/* Used in some places as a length limit on error messages */ -#define MAGNUS_ERROR_LEN 8192 - -/* Carraige return and line feed */ -#define CR 13 -#define LF 10 - -/* -------------------------- Memory allocation --------------------------- */ - - -/* Later change these to have catastrophic error handling */ - -#include <stdlib.h> - -#define MALLOC(sz) malloc(sz) -#define FREE(ptr) free((void *)ptr) -#define STRDUP(str) strdup(str) -#define REALLOC(ptr,sz) realloc(ptr,sz) - - -/* Not sure where to put this. */ -void magnus_atrestart(void (*fn)(void *), void *data); - -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/nsapi-send.c b/apps/JAWS/clients/WebSTONE/src/nsapi-send.c deleted file mode 100644 index 1ce191d8765..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/nsapi-send.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Send random bits file - $Header: /disk6/WebStone-2.0/src/RCS/nsapi-send.c,v 1.4 1996/04/24 23:54:19 -scha -n Exp schan $ - * Once this service function is installed, any file with the extension - * "dyn-send" will be serviced with this function. An optional query - * string may be passed to alter the amount of data in the response. - * - * For example: - * /file.dyn-send - returns a 10240 byte file - * /file.dyn-send?size=20 - returns a 20 byte file - * /file.dyn-send?size=1024 - returns a 1024 byte file - * etc. - * - * To install the service routine, compile it as per the makefile - * included with your Netscape server distribution (serverroot/nsapi/examples) - * and then add the following lines to your netscape server configuration: - * - * in magnus.conf - * Init fn=load-modules shlib=example.so funcs=nsapi-send - * - * in obj.conf - * Service method=(GET|HEAD) fn=nsapi-send type=magnus-internal/dyn-send - * - * in mime.types - * type=magnus-internal/dyn-send exts=dyn-send - * - * Mike Belshe - * mbelshe@netscape.com - * 11-5-95 - * - */ - -#ifndef WIN32 -#include <stdio.h> -#include <stdlib.h> -#include "base/pblock.h" -#include "base/session.h" -#include "frame/protocol.h" -#include "base/util.h" -#include "frame/http.h" -#else -#include <windows.h> -#define FILE_STDIO 1 -#endif -#include "frame/req.h" - -#define FILE_SIZE 10240 -#define HEADERS "HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n" - -#ifdef WIN32 -__declspec(dllexport) -#endif - -int nsapi_send(pblock *pb, Session *sn, Request *rq) -{ - char *query_string; - char buffer[sizeof(HEADERS) + 204800 + 1]; - int filesize; - unsigned int maxindex; - unsigned int index; - - /* Get the query string, if any; check to see if an alternate - * file size was specified. - */ - if ( !(query_string = pblock_findval("query", rq->reqpb)) ) - filesize = FILE_SIZE; - else { - filesize = atoi(&(query_string[5])); - } - - memcpy(&buffer, HEADERS, sizeof(HEADERS)-1); - - /* Generate the output */ - maxindex = sizeof(HEADERS) + filesize; - for (index=sizeof(HEADERS); index < (maxindex); index++) - /* generate random characters from A-Z */ -#ifdef IRIX - buffer[index] = rand_r() % 26 + 63; -#else - buffer[index] = rand() %26 + 63; -#endif - - /* Send the output */ - if (net_write(sn->csd, buffer, sizeof(HEADERS)-1+filesize, 0) == IO_ERROR) - return REQ_EXIT; - - return REQ_PROCEED; -} diff --git a/apps/JAWS/clients/WebSTONE/src/parse_file_list.c b/apps/JAWS/clients/WebSTONE/src/parse_file_list.c deleted file mode 100644 index 73854d1a056..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/parse_file_list.c +++ /dev/null @@ -1,289 +0,0 @@ -/************************************************************************** - * * - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ -#include <stdio.h> -#include <errno.h> -#include <signal.h> -#include <stdlib.h> -#include <string.h> - -#ifndef WIN32 -#include <netdb.h> -#include <sys/param.h> -#endif /* WIN32 */ - -#include <sys/types.h> - -#ifndef WIN32 -#include <sys/ipc.h> -#include <sys/shm.h> -#include <sys/errno.h> -#include <sys/socket.h> -#include <sys/time.h> -#include <netinet/in.h> -#else -#include <windows.h> -#include <process.h> -#include <time.h> -#include <winsock.h> -#endif /* WIN32 */ - -#include <ctype.h> - -#include "sysdep.h" -#include "bench.h" - - -/* - * count_file_list() - * given a filename, return a guess at the number of pages - */ -int -count_file_list(const char *url_list_file) -{ - FILE *fp; - long int num_of_pages; - char a_line[BUFSIZ]; - char *textvalue; - int returnval; - - fp = fopen(url_list_file, "r"); - - if (fp == NULL) - { - D_PRINTF( "Error %d opening filelist %s: %s\n", - errno, url_list_file, strerror(errno) );; - return(returnerr("Error %d opening filelist %s: %s\n", - errno, url_list_file, strerror(errno))); - } - else - { - num_of_pages = 0; - D_PRINTF( "Opened file, about to count\n" ); - /* - * parse through the file line-by-line - * strip out comments, but don't check for URL consistency - */ - while (fgets(a_line, BUFSIZ, fp) != NULL) - { - textvalue = a_line; - /* check for comments */ - if (strchr(textvalue, '#') != NULL) - { - /* throw out anything after any '#' */ - D_PRINTF( "Stripping comment from line: %s\n", textvalue ); - returnval = strcspn(textvalue, "#"); - D_PRINTF( "Found first # at %d\n", returnval ); - if (returnval == 0) - { - textvalue = NULL; - } - } - /* is there more? */ - if (textvalue != NULL) - { - num_of_pages++; - D_PRINTF( "Found %ld pages\n", num_of_pages ); - } - } - return(num_of_pages); - } - fclose(fp); -} /* end count_file_list() */ - -/* - * parse_file_list() - * given a filename, a pointer to a page list, and pointers to integers - * for the number of pages and the number of files, parse its contents. - */ -void -parse_file_list (const char *url_list_file, page_list_t *page_list, - long int *num_of_pages, long int *num_of_files) -{ - FILE *fp; - int filenum; - int returnval; - int loadnum; - char a_line[BUFSIZ]; - char tempbuf[BUFSIZ]; - char *textvalue; - int numfiles = 1, numpages = 0; - int maxpages = *num_of_pages; - page_list_t *pp; - - extern int haveproxyserver; - - fp = fopen(url_list_file, "r"); - - if (fp == NULL) - { - errexit("Error %d opening filelist: %s\n", errno, strerror(errno)); - } - else - { - /* - * GRAB A LINE. FORMAT IS: URL WEIGHTINGFACTOR - * EXAMPLE: http://www/file.html 1 - */ - D_PRINTF( "File is open.\n" ); - while(fgets(a_line, BUFSIZ, fp) != NULL) - { - textvalue = a_line; - /* check for comments */ - if (strchr(textvalue, '#') != NULL) - { - /* throw out anything after a '#' */ - D_PRINTF( "Stripping comment from line: %s\n", textvalue ); - returnval = strcspn(textvalue, "#"); - D_PRINTF( "Found first # at %d\n", returnval ); - if (returnval == 0) - continue; - } - - if (numpages >= *num_of_pages) - errexit("Out of space in parse_file_list()\n"); - - pp = &page_list[numpages]; - - D_PRINTF( "Processing page %ld\n", numpages ); - loadnum = 0; - - if (textvalue != NULL) { /* is there more? */ - /* check for weighting factor */ - D_PRINTF( "Setting page values from: %s\n", textvalue ); - returnval = sscanf(textvalue, "%s%d", tempbuf, &loadnum); - D_PRINTF( "Scan for weighting returns %d, %d\n", - returnval, loadnum ); - if (returnval == EOF || loadnum <= 0) - { - pp->load_num = 1; - } - else - { - pp->load_num = loadnum; - } - D_PRINTF( "Setting load=%d for line: %s\n", - pp->load_num, textvalue ); - - /* placeholder for grouping multiple files onto one page */ - pp->num_of_files = 1; - filenum = 0; - - textvalue = tempbuf; - D_PRINTF( "Line is now: %s\n", textvalue ); - - /* - * if we've got a proxy server, we'll assume that the - * remaining text is a valid URL, and stuff it into - * page_list[numpages].filename[filenum] - * Otherwise, we'll have to parse it out. - */ - - if (haveproxyserver) - { - pp->servername[filenum] = NULL; - pp->port_number[filenum] = 0; - strcpy(pp->filename[filenum], textvalue); - } - else /* no proxy server, so we have to parse it out... */ - { - /* try http://server(:port)/file */ - D_PRINTF( "Trying http://server(:port)/filename\n" ); - returnval = sscanf(textvalue, "http://%[^/]%s", - tempbuf, - a_line); - /* check server string for :port */ - if (returnval != 0 && returnval != EOF) - { - D_PRINTF( "Setting filename %s\n", a_line ); - strcpy(pp->filename[filenum], - a_line); - - D_PRINTF( "Checking %s for :portnumber\n", tempbuf ); - returnval = sscanf(tempbuf, "%[^:]:%d", - a_line, - &pp->port_number[filenum]); - - if (returnval < 2) - { - pp->port_number[filenum] = 80; - } - if (returnval == EOF) - { - pp->servername[filenum] = NULL; - } - else - { - D_PRINTF( "Port number %d, setting server %s\n", - pp->port_number[filenum], - a_line ); - - strcpy(pp->servername[filenum], a_line); - } - - D_PRINTF( "Server %s, port number %d\n", - pp->servername[filenum], - pp->port_number[filenum] ); - } - else /* no good - try straight filename */ - { - pp->port_number[filenum] = 80; - D_PRINTF( "Trying filename, returnval=%d\n", - returnval ); - pp->servername[filenum] = NULL; - D_PRINTF( "Server %s, port number %d\n", - pp->servername[filenum], - pp->port_number[filenum] ); - returnval = sscanf(textvalue, "%s", a_line); - D_PRINTF( "Scan returned filename %s\n", a_line ); - - strcpy(pp->filename[filenum], a_line); - } /* end of parsing */ - } /* end if haveproxyserver */ - - D_PRINTF( "Done parsing line\n" ); - D_PRINTF( "Got server %s, port %d, file %s, returnval %d\n", - pp->servername[filenum], - pp->port_number[filenum], - pp->filename[filenum], - returnval ); - } /* end if textvalue not NULL */ - - numpages++; - } /* end while not EOF */ - if (numpages < 1) - { - returnerr("No files are specified by filelist\n"); - } - } /* end if file ok */ - fclose(fp); - D_PRINTF( "Returning %ld pages and %ld files\n", - numpages, numfiles ); - - *num_of_pages = numpages; - *num_of_files = numfiles; -} -/* end parse_file_list */ - -long int -load_percent(page_list_t *page_list, long int number_of_pages) -{ - int i; - long int index_number = 0; - - for (i = 0; i < number_of_pages; i++) - { - index_number += page_list[i].load_num; - } - - D_PRINTF( "load_percent returning %d\n", (index_number) ); - return(index_number); -} - diff --git a/apps/JAWS/clients/WebSTONE/src/parse_file_list.h b/apps/JAWS/clients/WebSTONE/src/parse_file_list.h deleted file mode 100644 index 6733c0ec638..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/parse_file_list.h +++ /dev/null @@ -1,19 +0,0 @@ -/************************************************************************** - $Header$ - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs where * - * deveolped by SGI for public use. If anychanges are made to this code * - * please try to get the changes back to the author. Feel free to make * - * modfications and changes to the code and release it. * - * * - **************************************************************************/ -#ifndef __PARSE_FILE_LIST_H__ -#define __PARSE_FILE_LIST_H__ - -extern int count_file_list(const char *); - -extern void parse_file_list (char *, page_list_t *, - long int *, long int *); - -#endif /* !__PARSE_FILE_LIST_H__ */ diff --git a/apps/JAWS/clients/WebSTONE/src/rexec.c b/apps/JAWS/clients/WebSTONE/src/rexec.c deleted file mode 100644 index d9233bbcb34..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/rexec.c +++ /dev/null @@ -1,372 +0,0 @@ -/* - * Copyright (c) 1994-1995 Ataman Software, Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Ataman Software, Inc. - * 4. The name of Ataman Software, Inc. may not may be used to endorse or - * promote products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATAMAN SOFTWARE, INC. ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL ATAMAN SOFTWARE, INC. BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - - -static char copyright[] = - "Copyright (c) 1994-1995 Ataman Software, Inc. All rights reserved."; - - -#pragma warning(disable: 4699) -/* Includes for Win32 systems go here. */ -#define STRICT -#pragma warning(disable: 4201) -#include <windows.h> -#pragma warning(default: 4201) -#include <winsock.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <process.h> -#include <signal.h> -#include "sysdep.h" -#include "bench.h" - -#define RETVAL DWORD -#define IDENT HANDLE -#define STDINPUT hStdIn -#define STDOUTPUT hStdOut -#define STDERROR hStdErr -#define FILECOOKIE HANDLE - -static void PassOutputThread(SOCKET); -static void PassErrorThread(SOCKET); - -HANDLE hStdIn, hStdOut, hStdErr; - - - -/* -Think carefully before enabling the -p option. While it may be -convenient to have this option, it is for many (if not most) sites a -security hole. Remember that the '-p password' used on the command -line is visible on most Unix systems to any user that is allow to run -the 'ps' command (normally ALL users can run this command). While no -utility that comes by default with Windows NT at this time shows the -same information, it is unclear whether or not the information is -avaiable to all users. Certainly privileged users would be be able to -see this information on any system. - -If the security risk is acceptable at your site, you can enable the -p -option by uncommenting the #define below. -*/ -/* #define ALLOWDASH_P */ - -static void MyOpenService(const char *remote_host); -static BOOL Send(SOCKET, const char *, size_t); -static BOOL SendZString(const char *); -static BOOL GetErrString(char *, size_t); - -static IDENT PassInput(void); -static IDENT PassOutput(void); -static IDENT PassError(void); -static BOOL Close(FILECOOKIE); -static int Read(FILECOOKIE, char *, size_t); -static BOOL Write(FILECOOKIE, const char *, size_t); -static void Wait(IDENT, RETVAL *); - -static SOCKET sIO = INVALID_SOCKET; -static SOCKET sErr = INVALID_SOCKET; - -IDENT idIn = 0; -IDENT idOut, idErr; - -SOCKET rexec(const char **hostname, NETPORT port, char *username, char *password, - char *command, SOCKET *sockerr) -{ - - MyOpenService(*hostname); - - SendZString(username); - SendZString(password); - SendZString(command); - - if (!GetErrString(command, sizeof command)) { - errexit("Rexec: Remote aborted connection without initiating protocol: %s.\n", - neterrstr()); - } - - if (*command != '\0') { - char *p = command; - if (*p == '\001') { - p++; - } - errexit("Rexec: Remote aborted connection: %s\n", p); - } - - hStdIn = GetStdHandle(STD_INPUT_HANDLE); - hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); - hStdErr = GetStdHandle(STD_ERROR_HANDLE); - - *sockerr = sErr; - return sIO; -} - - -static void MyOpenService(const char *remote_host) -{ - struct sockaddr_in server_addr, my_err_addr, junk_addr; - struct servent *sv; - static char portbuf[30]; - SOCKET sTmp; - int addr_len; - - if (remote_host[0] >= '0' && remote_host[0] <= '9') { - unsigned long addr; - - addr = inet_addr(remote_host); - if (addr == INADDR_NONE) { - returnerr("Invalid IP address %s\n", remote_host); - return; - } - server_addr.sin_addr.S_un.S_addr = addr; - } else { - struct hostent *hent; - - hent = gethostbyname(remote_host); - if (hent == NULL) - { - D_PRINTF( "Can't get %s host entry\n", remote_host ); - D_PRINTF( "Gethostbyname failed: %d", WSAGetLastError() ); - errexit("Rexec: gethostbyname(%s) failed: %s\n", - remote_host, neterrstr()); - } - memcpy((char *)&server_addr.sin_addr, hent->h_addr, hent->h_length); -} - -#ifdef OMIT - hent = gethostbyname(remote_host); - if(!hent) { - errexit("Rexec: Lookup of server hostname failed: %s.\n", - neterrstr()); - } -#endif /* OMIT */ - - sv=getservbyname("exec", "tcp"); - if (!sv) { - errexit("Rexec: Lookup of port number for rexec service failed: %s.\n", - neterrstr()); - } - - server_addr.sin_family = PF_INET; - server_addr.sin_port = htons(sv->s_port); - - if((sIO=socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { - errexit("Rexec: I/O socket creation failed: %s.\n", - neterrstr()); - } - - if(connect(sIO, (struct sockaddr *)&server_addr, sizeof server_addr) == SOCKET_ERROR) { - errexit("Rexec: I/O socket connection failed: %s.\n", - neterrstr()); - } - - memset(&my_err_addr, '\0', sizeof my_err_addr); - my_err_addr.sin_addr.s_addr = htonl(INADDR_ANY); - my_err_addr.sin_family = AF_INET; - my_err_addr.sin_port = 0; - - if ((sTmp=socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { - errexit("Rexec: Error socket creation failed: error=%s.\n", - neterrstr()); - } - - if (bind(sTmp, (struct sockaddr *)&my_err_addr, sizeof my_err_addr) == SOCKET_ERROR) { - errexit("Rexec: Error socket bind failed: %s.\n", - neterrstr()); - (void) closesocket(sTmp); - } - - if (listen(sTmp, 1) == SOCKET_ERROR) { - errexit("Rexec: Error socket listen failed: %s.\n", - neterrstr()); - (void) closesocket(sTmp); - } - - addr_len = sizeof my_err_addr; - if (getsockname(sTmp, (struct sockaddr *)&my_err_addr, &addr_len) == SOCKET_ERROR) { - errexit("Rexec: Error socket bind failed: %s.\n", - neterrstr()); - (void) closesocket(sTmp); - } - - sprintf(portbuf, "%hu", ntohs(my_err_addr.sin_port)); - SendZString(portbuf); - - addr_len = sizeof junk_addr; - if ((sErr = accept(sTmp, (struct sockaddr *)&junk_addr, &addr_len)) - == INVALID_SOCKET) { - errexit("Rexec: Error socket accept failed: %s.\n", - neterrstr()); - (void) closesocket(sTmp); - } - - (void) closesocket(sTmp); -} - - - -static BOOL Send(SOCKET s, const char *buf, size_t nbuf) -{ - int cnt; - size_t sent = 0; - - while (sent < nbuf) { - cnt = send(s, &buf[sent], nbuf-sent, 0); - if (cnt == -1) { - return FALSE; - } - sent += cnt; - } - return TRUE; -} - - -static BOOL SendZString(const char *str) -{ - return Send(sIO, str, strlen(str)+1); -} - - -static BOOL GetErrString(char *str, size_t len) -{ - size_t pos = 0; - - while (pos < len) { - char ch; - if (recv(sIO, &ch, 1, 0) != 1) { - return FALSE; - } - str[pos++] = ch; - if (ch == '\0') { - return TRUE; - } - if (ch == '\n') { - return TRUE; - } - } - return FALSE; -} - - -static IDENT PassOutput() -{ - IDENT id; - id = (IDENT)_beginthread(PassOutputThread, 4096, (void *)sIO); - if ((long)id == -1) { - errexit("Rexec: Could not start output passing thread: error = %lu\n", GetLastError()); - } - return id; -} - -static void PassOutputThread(SOCKET sIO) -{ - RETVAL retval = 0; - int count; - char buf[4096]; - - while ((count=recv(sIO, buf, sizeof buf, 0)) > 0) { - if (!Write(STDOUTPUT, buf, count)) { - fprintf(stderr, "Error writing to standard output: error = %lu.\n", GetLastError()); - retval = 1; - break; - } - } - - _endthread(); -} - - -static IDENT PassError() -{ - IDENT id; - id = (IDENT)_beginthread(PassErrorThread, 4096, (void *)sErr); - if ((long)id == -1) { - errexit("Rexec: Could not start error passing thread: error = %lu\n", GetLastError()); - } - return id; -} - -static void PassErrorThread(SOCKET sErr) -{ - RETVAL retval = 0; - int count; - char buf[4096]; - - while ((count=recv(sErr, buf, sizeof buf, 0)) > 0) { - if (!Write(STDERROR, buf, count)) { - fprintf(stderr, "Error writing to standard error: error = %lu.\n", GetLastError()); - retval = 1; - break; - } - } - _endthread(); -} - -static BOOL Close(FILECOOKIE fc) -{ - return CloseHandle(fc); -} - -static int Read(FILECOOKIE fc, char *buf, size_t nbuf) -{ - DWORD cbRead; - if (!ReadFile(fc, buf, nbuf, &cbRead, NULL)) { - return -1; - } - return (int)cbRead; -} - - -static BOOL Write(FILECOOKIE fc, const char *buf, size_t nbuf) -{ - DWORD cbWritten; - - if (!WriteFile(fc, buf, nbuf, &cbWritten, NULL)) { - return FALSE; - } - if (cbWritten != nbuf) { - return FALSE; - } - return TRUE; -} - - -static void -Wait(IDENT id, RETVAL *prv) -{ - if (!WaitForSingleObject(id, INFINITE)) { - *prv = 2; - } else { - if (!GetExitCodeThread(id, prv)) { - *prv = 4; - } - } -} diff --git a/apps/JAWS/clients/WebSTONE/src/statistics.c b/apps/JAWS/clients/WebSTONE/src/statistics.c deleted file mode 100644 index c07d50059d7..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/statistics.c +++ /dev/null @@ -1,47 +0,0 @@ -/************************************************************************** - * * - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ - -#include <math.h> -#include <stdlib.h> -#include "sysdep.h" -#include "bench.h" - - -double -mean(const double sum, const int n) -{ - if (n) - { - return(sum / n); - } - else - { - return(0); - } -} - - -double -variance(const double sum, const double sumofsquares, const int n) -{ - double meanofsum; - - meanofsum = mean(sum, n); - - return (mean(sumofsquares,n) - (meanofsum * meanofsum)); -} - - -double -stddev(const double sum, const double sumofsquares, const int n) -{ - return(sqrt(fabs(variance(sum, sumofsquares, n)))); -} diff --git a/apps/JAWS/clients/WebSTONE/src/statistics.h b/apps/JAWS/clients/WebSTONE/src/statistics.h deleted file mode 100644 index c1693d8fc34..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/statistics.h +++ /dev/null @@ -1,11 +0,0 @@ -/* - $Headers$ -*/ -#ifndef _STATISTICS_H_ -#define _STATISTICS_H_ - -extern double mean(const double, const int); -extern double variance(const double, const double, const int); -extern double stddev(const double, const double, const int); - -#endif /* ! _STATISTICS_H_ */ diff --git a/apps/JAWS/clients/WebSTONE/src/sysdep.c b/apps/JAWS/clients/WebSTONE/src/sysdep.c deleted file mode 100644 index 630b1fbe780..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/sysdep.c +++ /dev/null @@ -1,50 +0,0 @@ -/************************************************************************** - * * - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ - -#include "sysdep.h" -/* strerror() */ -#ifndef HAVE_STRERROR -/* strerror is not available on SunOS 4.1.3 and others */ -extern int sys_nerr; -extern char *sys_errlist[]; -extern int errno; - -char *strerror(int errnum) -{ - - if (errnum<sys_nerr) - { - return(sys_errlist[errnum]); - } - - return(NULL); -} - -#endif /* strerror() */ - - -/* stub routines for NT */ - -#ifdef WIN32 -#include <winsock.h> -#include <process.h> - -int getpid(void) { - - return GetCurrentThreadId(); -} - -void sleep(int sec) { - - Sleep(sec*1000); -} -#endif /* WIN32 */ - diff --git a/apps/JAWS/clients/WebSTONE/src/sysdep.h b/apps/JAWS/clients/WebSTONE/src/sysdep.h deleted file mode 100644 index 03c6602789b..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/sysdep.h +++ /dev/null @@ -1,130 +0,0 @@ -#ifndef __SYSDEP_H__ -#define __SYSDEP_H__ -/************************************************************************** - * $Header$ * - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ - -/* include config.h, output from autoconf */ -#ifdef HAVE_CONFIG_H -#ifndef __CONFIG_H__ -#define __CONFIG_H__ -#include "config.h" -#endif -#endif - -#ifdef WIN32 -#include <windows.h> -#include <winsock.h> -#endif /* WIN32 */ - -/* MAXHOSTNAMELEN is undefined on some systems */ -#ifndef MAXHOSTNAMELEN -#define MAXHOSTNAMELEN 64 -#endif - -/* SunOS doesn't define NULL */ -#ifndef NULL -#define NULL 0 -#endif - -/* encapsulation of minor UNIX/WIN NT differences */ -#ifdef WIN32 -#define NETREAD(sock, buf, len) recv(sock, buf, len, 0) -#define NETWRITE(sock, buf, len) send(sock, buf, len, 0) -#define NETCLOSE(sock) closesocket(sock) -#define BADSOCKET(sock) ((sock) == INVALID_SOCKET) -#define BADSOCKET_ERRNO(sock) BADSOCKET(sock) -#define BADSOCKET_VALUE INVALID_SOCKET -#define S_ADDR S_un.S_addr - -#ifdef USE_TIMEZONE -#error NT gettimeofday() doesn't support USE_TIMEZONE (yet) -#else -#define GETTIMEOFDAY(timeval, tz) gettimeofday(timeval) -#endif /* USE_TIMEZONE */ - -typedef unsigned short NETPORT; -#define SRANDOM srand -#define RANDOM_R rand_r -#define RANDOM rand -#define THREAD __declspec ( thread ) -#define PROGPATH "c:\\webstone\\webclient" -#define FILENAME_SIZE 256 -#define HAVE_VPRINTF 1 - -#define SIGCHLD 0 /* dummy value */ -#define SIGALRM 0 /* dummy value */ -typedef int pid_t; -typedef unsigned short ushort; -#define MAXPATHLEN 512 - - - -#else /* not WIN32 */ -#define NETREAD(sock, buf, len) read(sock, buf, len) -#define NETWRITE(sock, buf, len) write(sock, buf, len) -#define NETCLOSE(sock) close(sock) -#define BADSOCKET(sock) ((sock) < 0) -#define BADSOCKET_ERRNO(sock) (BADSOCKET(sock) || errno) -#define BADSOCKET_VALUE (-1) -#define S_ADDR s_addr - -#ifdef USE_TIMEZONE -#define GETTIMEOFDAY(timeval,tz) gettimeofday(timeval, NULL) -#else -#define GETTIMEOFDAY(timeval,tz) gettimeofday(timeval, tz) -#endif /* USE_TIMEZONE */ - -typedef unsigned short NETPORT; -#define SRANDOM srandom -#define RANDOM random -#define THREAD -#define PROGPATH "/tmp/webclient" /* "/usr/local/bin/webclient" */ -#define FILENAME_SIZE 1024 -#define HAVE_VPRINTF 1 - -typedef int SOCKET; -#define min(a,b) (((a) < (b)) ? a : b) -#define max(a,b) (((a) > (b)) ? a : b) -#endif /* WIN32 */ - - -/* function prototypes */ - -#ifdef WIN32 -int getopt(int argc, char ** argv, char *opts); -int getpid(void); -int gettimeofday(struct timeval *curTimeP); -int random_number(int max); -SOCKET rexec(const char **hostname, NETPORT port, char *username, char *password, - char *command, SOCKET *sockerr); -void sleep(int secs); - -#else -#ifdef NO_REXEC -extern int rexec(char **, int, char *, char *, char *, int *); -#endif -#endif /* WIN32 */ - - -#ifndef HAVE_STRERROR -/* strerror() is not available on SunOS 4.x and others */ -char *strerror(int errnum); - -#endif -/* strerror() */ - - -#ifndef INADDR_NONE -#define INADDR_NONE -1 -#endif - -/* !__SYSDEP_H__ */ -#endif diff --git a/apps/JAWS/clients/WebSTONE/src/timefunc.c b/apps/JAWS/clients/WebSTONE/src/timefunc.c deleted file mode 100644 index 9266348435a..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/timefunc.c +++ /dev/null @@ -1,169 +0,0 @@ -/************************************************************************** - * * - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ - -#ifndef WIN32 -#include <netdb.h> -#include <sys/time.h> -#include <sys/param.h> -#else -#include <windows.h> -#include <winsock.h> -#include <time.h> -#endif /* WIN32 */ -#include <math.h> -#include <stdio.h> -#include "sysdep.h" -#include "bench.h" - -double -timevaldouble(struct timeval *tin) -{ - return ((double)tin->tv_sec + ((double)tin->tv_usec / USECINSEC)); -} - - -void -doubletimeval(const double tin, struct timeval *tout) -{ - tout->tv_sec = (long)floor(tin); - tout->tv_usec = (long)((tin - tout->tv_sec) * USECINSEC ); -} - - -void -addtime(struct timeval *OrigTime, struct timeval *NewTime) -{ - OrigTime->tv_usec += NewTime->tv_usec; - if(OrigTime->tv_usec >= USECINSEC) - { - /* - * NEED TO CARRY 1. - */ - OrigTime->tv_sec++; - OrigTime->tv_usec -= USECINSEC; - } - OrigTime->tv_sec += NewTime->tv_sec; -} - - -void -compdifftime(struct timeval *EndTime, struct timeval *StartTime, struct timeval *DiffTime) -{ - struct timeval endtime = *EndTime; - - if((endtime.tv_usec - StartTime->tv_usec) < 0) - { - /* - * NEED TO BORROW. - */ - endtime.tv_usec += USECINSEC; - endtime.tv_sec--; - } - DiffTime->tv_usec = endtime.tv_usec - StartTime->tv_usec; - DiffTime->tv_sec = endtime.tv_sec - StartTime->tv_sec; -} - - -void -mintime(struct timeval *CurrMinTime, struct timeval *CheckMinTime) -{ - if(CheckMinTime->tv_sec < CurrMinTime->tv_sec) - { - *CurrMinTime = *CheckMinTime; - return; - } - if(CheckMinTime->tv_sec == CurrMinTime->tv_sec) - { - if(CheckMinTime->tv_usec < CurrMinTime->tv_usec) - { - *CurrMinTime = *CheckMinTime; - return; - } - } -} - - -void -maxtime(struct timeval *CurrMaxTime, struct timeval *CheckMaxTime) -{ - if(CheckMaxTime->tv_sec > CurrMaxTime->tv_sec) - { - *CurrMaxTime = *CheckMaxTime; - return; - } - if(CheckMaxTime->tv_sec == CurrMaxTime->tv_sec) - { - if(CheckMaxTime->tv_usec > CurrMaxTime->tv_usec) - { - *CurrMaxTime = *CheckMaxTime; - return; - } - } -} - -void -avgtime(struct timeval *TotalTime, int NumTimes, struct timeval *AvgTime) -{ - double meantime; - - meantime = mean(timevaldouble(TotalTime), NumTimes); - - doubletimeval(meantime, AvgTime); -} - - -void -sqtime(struct timeval *Time, struct timeval *SqTime) -{ - double sec; - - sec = timevaldouble(Time); - sec *= sec; /* square */ - - doubletimeval(sec, SqTime); -} - - -void -variancetime(struct timeval *SumTime, double SumSquareTime, int NumTimes, struct timeval *VarianceTime) -{ - double result; - - result = variance(timevaldouble(SumTime), SumSquareTime, NumTimes); - - doubletimeval(result, VarianceTime); -} - - -void -stddevtime(struct timeval *SumTime, double SumSquareTime, - int NumTimes, struct timeval *StdDevTime) -{ - double result; - - result = stddev(timevaldouble(SumTime), SumSquareTime, NumTimes); - - doubletimeval(result, StdDevTime); -} - -double -thruputpersec(const double n, struct timeval *t) -{ - double tv; - - tv = timevaldouble(t); - if (tv != 0) - return n / timevaldouble(t); - else - return 0; -} - - diff --git a/apps/JAWS/clients/WebSTONE/src/timefunc.h b/apps/JAWS/clients/WebSTONE/src/timefunc.h deleted file mode 100644 index a1514358316..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/timefunc.h +++ /dev/null @@ -1,30 +0,0 @@ -/************************************************************************** - $Header$ - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ - -#ifndef __TIMEFUNC_H__ -#define __TIMEFUNC_H__ - -extern double timevaldouble(struct timeval *); -extern void doubletimeval(const double, struct timeval *); - -extern void addtime(struct timeval *, struct timeval *); -extern void compdifftime(struct timeval *, struct timeval *, struct timeval *); -extern void mintime(struct timeval *, struct timeval *); -extern void maxtime(struct timeval *, struct timeval *); -extern void avgtime(struct timeval *, int, struct timeval *); -extern void variancetime(struct timeval *, double, int, struct timeval *); -extern void stddevtime(struct timeval *, double, int, struct timeval *); - -extern void sqtime(struct timeval *, struct timeval *); - -extern double thruputpersec(const double, struct timeval *); - -#endif /* !__TIMEFUNC_H__ */ diff --git a/apps/JAWS/clients/WebSTONE/src/webclient.c b/apps/JAWS/clients/WebSTONE/src/webclient.c deleted file mode 100644 index 881c9db0ae8..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/webclient.c +++ /dev/null @@ -1,1295 +0,0 @@ -/************************************************************************** - * $Header$ - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ - -#include <thread.h> - -#include <stdio.h> - -#ifdef WIN32 -#include <windows.h> -#include <winsock.h> -#include <time.h> -#include <process.h> -#include <io.h> -#endif /* WIN32 */ - -#include <errno.h> -#include <signal.h> -#include <stdlib.h> -#include <string.h> - -#ifndef WIN32 -#include <netdb.h> -#include <unistd.h> -#endif /* WIN32 */ - -#include <time.h> -#include <math.h> - -#ifndef WIN32 -#include <sys/param.h> -#endif /* WIN32 */ - -#include <sys/types.h> - -#ifndef WIN32 -#include <sys/ipc.h> -#include <sys/shm.h> -#include <sys/errno.h> -#include <sys/socket.h> -#include <sys/time.h> -#include <sys/wait.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#endif /* WIN32 */ - -#include <ctype.h> - -#include "sysdep.h" -#include "bench.h" - -#define _BSD_SIGNALS -#define INFINITY 100000000 -#define DEFAULTWWWPORT 80 -#define LOG_FILE "logfile" -#ifdef WIN32 -#define DEBUG_FILE "c:/tmp/webstone-debug" -#else -#define DEBUG_FILE "/tmp/webstone-debug" -#endif /* WIN32 */ -#define NCCARGS 4096 - -/* global variables */ - - THREAD FILE *debugfile = stderr; - page_list_t *load_file_list; /* actually a dynamic array */ - -int amclient = 0; -int havewebserver = 0; -int haveproxyserver = 0; -int savefile = 0; -NETPORT portnum = DEFAULTWWWPORT; -int timeexpired = 0; -int debug = 0; -long int number_of_pages = 0; -char webmaster[MAXHOSTNAMELEN]; -char webserver[MAXHOSTNAMELEN]; -char proxyserver[MAXHOSTNAMELEN]; - - -#ifdef WIN32 -HANDLE hSemaphore; -int CounterSemaphore = 0; /* counter semaphore for children */ -#endif /* WIN32 */ - -static void ClientThread(void *); - -/* used to bypass DNS/YP name resolution for every page */ -struct hostent webserv_phe, webmast_phe; -struct protoent webserv_ppe, webmast_ppe; -unsigned long webserv_addr, webmast_addr; -short webserv_type, webmast_type; /* socket type */ - -/* End of globals */ - - -static void -usage(const char *progname) -{ - returnerr("Usage: %s [-d] [-w webserver] [-p port_num]\n", - progname); - returnerr("\t[-c masterhost:port] [-t run_time | -l loops]\n"); - returnerr("\t[-n numclients] [-R]\n"); - returnerr("\t[-f config_file] [-u uilfile | url ...]\n"); - errexit("\n"); -} /* END usage() */ - -static void -alarmhandler(void) -{ - /* RECEIVED AN ALARM SIGNAL */ - timeexpired = 1; -} /* END alarmhandler() */ - -#ifndef WIN32 -static void -childhandler(void) -{ - int status; - - /* RECEIVED A SIGNAL THAT A CHILD PROCESS HAS DIED */ - D_PRINTF( "A child process has died\n" ); - while (wait3(&status, WNOHANG, (struct rusage *)0) >= 0) - { - /* do nothing */ - ; - } -} /* END childhandler() */ -#endif /* WIN32 */ - - -/* look up the host name and protocol - * called once by main() since all threads - * use the same protocol and address - */ - -int resolve_addrs(char *host, char *protocol, struct hostent *host_phe, struct protoent *proto_ppe, unsigned long *addr, - short *type) { -struct hostent *phe; -struct protoent *ppe; - - /* if IP address given, convert to internal form */ - if (host[0] >= '0' && host[0] <= '9') { - *addr = inet_addr(host); - if (*addr == INADDR_NONE) - return(returnerr("Invalid IP address %s\n", host)); - - } else { - /* look up by name */ - phe = gethostbyname(host); - if (phe == NULL) - { - D_PRINTF( "Gethostbyname failed: %s", neterrstr() ); - return(returnerr("Can't get %s host entry\n", host)); - } - memcpy(host_phe, phe, sizeof(struct hostent)); - memcpy((char *)addr, phe->h_addr, sizeof(*addr)); - } - - /* Map protocol name to protocol number */ - ppe = getprotobyname(protocol); - - if (ppe == 0) - { - D_PRINTF( "protobyname returned %d\n", ppe ); - return(returnerr("Can't get %s protocol entry\n",protocol)); - } - memcpy(proto_ppe, ppe, sizeof(struct protoent)); - - D_PRINTF( "Protocol number %d\n", ppe->p_proto ); - - /* Use protocol to choose a socket type */ - if (strcmp(protocol,"udp") == 0) - { - *type = SOCK_DGRAM; - } - else - { - *type = SOCK_STREAM; - D_PRINTF( "Choosing SOCK_STREAM %d type %d %s\n", - SOCK_STREAM, *type, neterrstr() ); - } - - return 0; -} - -/* connect to a socket given the hostname and protocol */ -SOCKET -connectsock(char *host, NETPORT portnum, char *protocol) - { - struct sockaddr_in sin; /* an Internet endpoint address */ - SOCKET s; /* socket descriptor */ - int type; /* socket type */ - short proto; - int returnval; /* temporary return value */ - - D_PRINTF( "Beginning connectsock; host=%s port=%d proto=%s\n", host, - portnum, protocol ); - - sin.sin_family = AF_INET; - memset((char *)&sin, 0, sizeof(sin)); - D_PRINTF( "Zeroed address structure\n" ); - - sin.sin_port = htons(portnum); - D_PRINTF( "Set port number %d\n", portnum ); - - /* get the contact information */ - if (strcmp(host, webserver) == 0) { - sin.sin_addr.S_ADDR = webserv_addr; - sin.sin_family = PF_INET; - proto = webserv_ppe.p_proto; - type = webserv_type; - } else if (strcmp(host, webmaster) == 0) { - sin.sin_addr.S_ADDR = webmast_addr; - sin.sin_family = PF_INET; - proto = webmast_ppe.p_proto; - type = webmast_type; - } else { - struct hostent host_phe; - struct protoent host_ppe; - unsigned long host_addr; - short host_type; /* socket type */ - - if (resolve_addrs(host, "tcp", &host_phe, &host_ppe, &host_addr, &host_type)) - return returnerr("Can't resolve hostname %s in get()\n", host); - sin.sin_addr.S_ADDR = host_addr; - sin.sin_family = PF_INET; - proto = host_ppe.p_proto; - type = host_type; - } - - /* Allocate a socket */ - s = socket(PF_INET, type, proto); - D_PRINTF( "Socket %d returned %d, %s\n", - type, s, neterrstr() ); - - if (BADSOCKET(s)) - { - D_PRINTF( "Can't create socket: %s\n",neterrstr() ); - return BADSOCKET_VALUE; - } - - /* Connect the socket */ - D_PRINTF( "Trying to connect %d with size %d, %s\n", - s, sizeof(sin), neterrstr() ); - D_PRINTF( "Address is family %d, port %d, addr %s\n", - sin.sin_family, ntohs(sin.sin_port), - inet_ntoa(sin.sin_addr) ); - - returnval = connect(s, (struct sockaddr *)&sin, sizeof(sin)); - D_PRINTF( "Connect returned %d, %s\n", - returnval, neterrstr() ); - if (returnval < 0) - { - D_PRINTF( "Can't connect: %s\n", neterrstr() ); - NETCLOSE(s); - return BADSOCKET_VALUE; - } - - /* all done, returning socket descriptor */ - D_PRINTF( "Returning %d from connectsock call\n", s ); - return(s); - -} /* END connectsock() */ - -SOCKET -connecttomaster(char *str) -{ - char *tempch; - SOCKET sock; - char msg[100]; - char ConnectStr[100]; /* Fix to handle multiple threads */ - int tries; - - strcpy(ConnectStr, str); - - /* - * BREAK UP THE connectstr INTO A HOSTNAME/HOST-IP AND A PORT NUMBER. - */ - if((tempch = strpbrk(ConnectStr,":")) == NULL) - { - /* - * INCORRECT FORMAT OF ConnectStr. CORRECT FORMAT IS - * HOSTNAME:PORT OR HOST-IP:PORT - */ - D_PRINTF( "Incorrect format %s: use hostname:port or ip_addr:port\n", - ConnectStr ); - return(returnerr("Incorrect format %s: use host:port or ip_addr:port\n", - ConnectStr)); - } - - /* - * ZERO OUT THE COLON SO WE HAVE TWO STRINGS, THE HOSTNAME AND THE PORT - */ - *tempch = '\0'; - tempch++; - - /* loop here to connect to webmaster - TCP/IP allows no more than 5 - * connection requests outstanding at once and thus the webmaster may - * reject a connection if there are a lot of client processes - */ -#define MAXTRIES 30 -#define TRYDELAY_SEC 1 - for (tries = 0; tries < MAXTRIES; tries++) { - - sock = connectsock(ConnectStr,(NETPORT)atoi(tempch),"tcp"); - - if (!BADSOCKET(sock)) - break; - - sleep(TRYDELAY_SEC); - } - - if (BADSOCKET(sock)) - { - /* ERROR CONNECTING TO MASTER PROCESS */ - return(returnerr("Could not connect to master process\n")); - } - - /* - * SIGNAL THE MASTER THAT WE ARE READY TO PROCEED. WHEN ALL - * CHILD PROCESSES HAVE CONNECTED AND SENT THIS SIGNAL, - * THE MASTER WILL ISSUE US A GO SIGNAL. - */ - if(NETWRITE(sock,READYSTR,READYSTRLEN) != READYSTRLEN) - { - return(returnerr("Error sending READY message to master")); - } - - memset(msg,0,GOSTRLEN+1); - if(NETREAD(sock,msg,GOSTRLEN) != GOSTRLEN) - { - D_PRINTF( "Error receiving GO message from master: %s\n", neterrstr() - ); - return(returnerr("Error receiving GO message from master\n")); - } - - if(strncmp(GOSTR,msg,GOSTRLEN)) - { - /* - * WE RECEIVED A MESSAGE OTHER THAN GO. PRINT IT OUT AND RETURN ERROR - */ - return(returnerr("Received non-GO message %s\n",msg)); - } - - return(sock); - -} /* END connecttomaster() */ - - -static void -accumstats(rqst_timer_t *rqsttimer, page_stats_t *pagestats, stats_t *timestat) -{ - rqst_stats_t rqststats; - -#define TFMT "%10u:%10u" - /* - * DUMP THE TIMING INFORMATION HERE, OR COMPUTE WHAT YOU WANT TO - * PRINT OUT LATER. - */ - - D_PRINTF( "Total bytes read: %d \t Body size read: %d\n", - rqsttimer->totalbytes, - rqsttimer->bodybytes ); - - D_PRINTF( "Enter time: " TFMT " \t Exit Time: " TFMT "\n", - rqsttimer->entertime.tv_sec, - rqsttimer->entertime.tv_usec, - rqsttimer->exittime.tv_sec, - rqsttimer->exittime.tv_usec ); - D_PRINTF( "Before connect: " TFMT " \t After connect: " TFMT "\n", - rqsttimer->beforeconnect.tv_sec, - rqsttimer->beforeconnect.tv_usec, - rqsttimer->afterconnect.tv_sec, - rqsttimer->afterconnect.tv_usec ); - D_PRINTF( "Before header: " TFMT " \t After header: " TFMT "\n", - rqsttimer->beforeheader.tv_sec, - rqsttimer->beforeheader.tv_usec, - rqsttimer->afterheader.tv_sec, - rqsttimer->afterheader.tv_usec ); - D_PRINTF( "After body: " TFMT "\n", - rqsttimer->afterbody.tv_sec, - rqsttimer->afterbody.tv_usec ); - - rqstat_times(&(rqststats), rqsttimer); - rqstat_sum(&(timestat->rs), &(rqststats)); - rqstat_sum(&(pagestats->rs), &(rqststats)); - - if (rqsttimer->page_number != 999) - { - timestat->page_numbers[rqsttimer->page_number] += 1; - } - -#undef TFMT -} /* END accumstats */ - - -/* - * fetch the set of files that constitute a page - * - * maxcount = the number of files in the WWW page - * pageval = the number of the WWW page (offset in load_file_list[]) - * (if -1, use page # 0 - does this still work?) - * - * returns the number of files retrieved - */ -static int -makeload(int maxcount, int pageval, THREAD rqst_timer_t *timerarray, THREAD stats_t *timestat, THREAD SOCKET mastersock, THREAD page_stats_t *page_stats) -{ - int cnt; - int returnval; - page_stats_t page_stats_tmp; - char server[MAXHOSTNAMELEN]; - - NETPORT loc_portnum; - - D_PRINTF( "Starting makeload(maxcount %d, pageval %d)\n", - maxcount, pageval ); - - strcpy( server, webserver); /* Put in default value */ - - page_stats_init(&page_stats_tmp); - D_PRINTF( "Page stats initialized\n" ); - - for (cnt = 0; cnt < maxcount; cnt++) - { - D_PRINTF( "Loop count %d in makeload()\n", cnt ); - if (pageval == -1) - { - pageval = cnt; - } - if (timeexpired) - { - break; - } - - /* check for a filename */ - if (strlen(load_file_list[pageval].filename[cnt]) < 1) - { - D_PRINTF( "Bad filename at pageval %d, count %d\n", - pageval, cnt ); - return(returnerr("Bad filename at pageval %d, count %d\n", - pageval, cnt)); - } - - /* if (load_file_list[pageval].port_number[cnt] != 0) - { - loc_portnum = load_file_list[pageval].port_number[cnt]; - } - else - { - loc_portnum = portnum; - } */ - loc_portnum = portnum; - if ((load_file_list[pageval].servername[cnt] != NULL) - && - *load_file_list[pageval].servername[cnt]) - { - D_PRINTF( "Copying URL server %s to server\n", - load_file_list[pageval].servername[cnt] ); - strcpy(server, load_file_list[pageval].servername[cnt]); - } - - if (haveproxyserver) - { - D_PRINTF( "Copying proxy %s to webserver\n", proxyserver ); - strcpy(server, proxyserver); - } - - - D_PRINTF( "Calling get(%s, %d, %s, &(timearray[%d]))\n", - server, loc_portnum, load_file_list[pageval].filename[cnt], - cnt ); - - returnval = get(server, loc_portnum, - load_file_list[pageval].filename[cnt], - &(timerarray[cnt])); - if (returnval < 0) - { - D_PRINTF( "***GET() RETURNED AN ERROR\n" ); - } - - /* - * DID GET() RETURN A VALID TIME? - */ - if ((returnval == 0) && (timerarray[cnt].valid == 2)) - { - timerarray[cnt].page_number = pageval; - - accumstats(&timerarray[cnt], &page_stats_tmp, timestat); - } - else if (!timeexpired) /* INVALID, INCREMENT THE ERROR COUNTER */ - { - D_PRINTF( "GET error counter incremented\n" ); - timestat->rs.totalerrs++; - } - - if (amclient) { - fd_set readfds; - struct timeval timeout; - int rv; - - timeout.tv_sec = 0; - timeout.tv_usec = 0; - FD_ZERO(&readfds); - FD_SET(mastersock, &readfds); - - /* if the webmaster has aborted, quit */ - D_PRINTF("Before select() on webmaster socket\n"); - if (rv = select(FD_SETSIZE, &readfds, NULL, NULL, &timeout)) { - D_PRINTF("select() returned %d\n", rv); - D_PRINTF("Client terminating at request of webmaster\n"); - exit(2); - } - } - - } /* END for cnt */ - - /* - * DO WE HAVE A VALID RETURN FROM GET()? - * WHY NOT USE returnval HERE? - */ - if ((returnval == 0) && - (cnt == load_file_list[pageval].num_of_files) && - (timerarray[cnt-1].valid == 2)) - { - rqst_stats_t *ps_rs; - rqst_stats_t *pst_rs; - - ps_rs = &(page_stats[pageval].rs); - pst_rs = &(page_stats_tmp.rs); - - rqstat_sum(ps_rs, pst_rs); - - page_stats[pageval].totalpages++; - - if (page_stats[pageval].page_size == 0) - { - page_stats[pageval].page_size = (unsigned) - page_stats_tmp.rs.totalbody; - } - } - - D_PRINTF( "\nMakeload output page %d: %d errors, %d pages\n", - pageval, timestat->rs.totalerrs, page_stats[pageval].totalpages ); - D_PRINTF( "Makeload returning %d\n", cnt ); - - return(cnt); - -} /* END makeload() */ - -#ifdef WIN32 -/* close socket library at exit() time */ -void sock_cleanup(void) { - - WSACleanup(); -} -#endif /* WIN32 */ - -/* globalize variables that were in main() */ -long int numfiles = 0; -int testtime = 0; -int numloops = 0; -int numclients = 0; -int record_all_transactions = 0; -int uil_filelist_f = 0; /* filedescriptor of URLs to fetch? */ -int verbose = 0; -int total_weight; -char uil_filelist[NCCARGS]; -char filelist[MAXNUMOFFILES][MAXPATHLEN]; -char configfile[MAXPATHLEN]; -char connectstr[MAXHOSTNAMELEN+10]; - -void -main(int argc, char *argv[]) -{ - int file_count=0; - int getoptch; - int currarg; - extern char *optarg; - extern int optind; - int i, j; - char *tempch; - int err; - -#define SLEEP_USEC 100 -#ifdef WIN32 - WSADATA WSAData; -#else - - struct timeval sleeptime; - - /* set the amount of time that we'll pause before sending a "." to the - webmaster */ - - sleeptime.tv_sec = SLEEP_USEC/1000000; - sleeptime.tv_usec = SLEEP_USEC % 1000000; -#endif /* WIN32 */ - - debugfile = stderr; - -#ifdef WIN32 - MessageBeep(~0U); /* announce our existence */ - MessageBeep(~0U); - MessageBeep(~0U); - - err = WSAStartup(MAKEWORD(1,1), &WSAData); - if (err != 0) { - errexit("Error in WSAStartup()\n"); - } - - atexit(sock_cleanup); - - SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST); - - /* create semaphore in locked state */ - hSemaphore = CreateSemaphore(NULL, 0, 1, NULL); - if(hSemaphore == NULL) - { - errexit("Create semaphore failed: %d", GetLastError()); - } -#endif /* WIN32 */ - - memset(webserver, 0, sizeof(webserver)); - memset(webmaster, 0, sizeof(webmaster)); - memset(proxyserver, 0, sizeof(proxyserver)); - memset(connectstr, 0, sizeof(connectstr)); - - /* - * PARSE THE COMMAND LINE OPTIONS - */ - - while((getoptch = getopt(argc,argv,"P:f:t:l:p:u:R:w:c:n:sdv")) != EOF) - { - switch(getoptch) - { - case 'c': - sprintf(connectstr, "%s", optarg); - amclient = 1; - printf("%s", OKSTR); /* sent back to webmaster */ - fflush(stdout); - break; - case 'd': - debug = 0; /* sumedh */ - break; - case 'f': - sprintf(configfile, "%s", optarg); - break; - case 'l': - numloops = atoi(optarg); - break; - case 'n': - numclients = atoi(optarg); - break; - case 'u': - sprintf(uil_filelist, "%s", optarg); - uil_filelist_f = 1; - break; - case 'p': - portnum = atoi(optarg); - break; - case 's': - savefile = 1; - break; - case 't': - testtime = 60 * atoi(optarg); - break; - case 'v': - verbose = 1; - break; - case 'w': - havewebserver = 1; - sprintf(webserver,"%s",optarg); - break; - case 'P': - haveproxyserver = 1; - sprintf(proxyserver, "%s", optarg); - break; - case 'R': - record_all_transactions = 1; - break; - default: - usage(argv[0]); - } - } - - returnerr("Client begins...\n"); - D_PRINTF( "Running in debug mode\n\n" ); - - /* print the command line */ - for (i = 0; i < argc; i++) - D_PRINTF( "%s ", argv[i] ); - D_PRINTF( "\n\n" ); - - if(testtime && numloops) - { - /* - * EITHER numloops OR testtime, BUT NOT BOTH. - */ - usage(argv[0]); - } - - if(havewebserver != 1) - { -#ifdef WIN32 - /* - * THE SERVER'S NAME MUST BE SPECIFIED - */ - returnerr("No WWW Server specified\n"); - usage(argv[0]); -#else - /* IF IT ISN'T, WE ASSUME LOCALHOST */ - sprintf(webserver, "%s", "localhost"); - havewebserver = 1; -#endif /* WIN32 */ - } - - currarg = optind; - numfiles = 0; - while(currarg != argc) - { - /* - * GET THE URLS TO RETRIEVE. - */ - if (numfiles == MAXNUMOFFILES) { - returnerr("Maximum of %d files on the command line.\n"); - usage(argv[0]); - } - sscanf(argv[currarg],"%s",filelist[numfiles]); - numfiles++; - currarg++; - } - - if ((numfiles != 0) && uil_filelist_f) - { - returnerr("Both a filelist and UIL specified.\n"); - usage(argv[0]); - } - - if((numfiles == 0) && !(uil_filelist_f)) - { - /* - * AT LEAST ONE FILE MUST BE SPECIFIED - */ - returnerr("No UIL resources or filelist specified \n"); - usage(argv[0]); - } - - if((numloops == 0) && (testtime == 0)) - { - /* - * NO SPECIFIED NUMBER OF LOOPS, AND NO TEST TIME - */ - usage(argv[0]); - } - if(numclients > MAXPROCSPERNODE || numclients < 1) - { - returnerr("Number of Clients must be between 1 and %d\n", MAXPROCSPERNODE); - exit(1); - } - - /* allow use of IP address */ - if(amclient) { - if((tempch = strpbrk(connectstr,":")) == NULL) - { - /* - * INCORRECT FORMAT OF ConnectStr. CORRECT FORMAT IS - * HOSTNAME:PORT OR HOST-IP:PORT - */ - D_PRINTF( "Incorrect format %s: use hostname:port or ip_addr:port\n", - connectstr ); - returnerr("Incorrect format %s: use host:port or ip_addr:port\n", connectstr); - exit(1); - } else { - strncpy(webmaster, connectstr, tempch-connectstr); - } - if(resolve_addrs(webmaster, "tcp", &webmast_phe, &webmast_ppe, &webmast_addr, &webmast_type)) - exit(1); - } - - if (haveproxyserver) - { - D_PRINTF( "Copying proxy %s to webserver\n", proxyserver ); - strcpy(webserver, proxyserver); - } - - if (resolve_addrs(webserver, "tcp", &webserv_phe, &webserv_ppe, &webserv_addr, &webserv_type)) - exit(1); - - /* - * INITIALIZE DATA - */ - /* allocate space for dynamic arrays */ - load_file_list = - (page_list_t *)mymalloc((MAXNUMOFPAGES)*sizeof(page_list_t)); - - if (uil_filelist_f) - { - /* take a guess at the number of URLs in the file */ - D_PRINTF( "About to parse filelist %s\n", uil_filelist ); - number_of_pages = count_file_list(uil_filelist); - numfiles = 1; - - /* IF WE HAVE A FILELIST, PARSE IT */ - /* allocate memory */ - D_PRINTF( "Allocating page list: %ld by %d\n", - number_of_pages, numfiles ); - for (i=0; i<number_of_pages; i++) - { - for (j=0; j<MAXNUMOFFILES; j++) - { - load_file_list[i].servername[j] = - (char *)mymalloc(URL_SIZE); - load_file_list[i].filename[j] = - (char *)mymalloc(URL_SIZE); - } - } - - D_PRINTF( "Parsing file list: %s\n", uil_filelist ); - parse_file_list(uil_filelist, load_file_list, - &number_of_pages, &numfiles); - /* free memory for pages that won't be used? */ - D_PRINTF( "Actual page list: %ld by %d\n", - number_of_pages, MAXNUMOFFILES ); - - D_PRINTF( "Setting up weighting for %ld pages\n", - number_of_pages ); - total_weight = load_percent(load_file_list, number_of_pages); - /* total_weight = load_percent(load_file_list, number_of_pages, pages); */ - } - else - { - /* no uil file */ - number_of_pages = numfiles; - } - - if (number_of_pages < 1) - { - /* no pages - exit */ - D_PRINTF( "No valid URLs found\n" ); - errexit("No valid URLs found\n"); - } - -#ifndef WIN32 - /* - * IF WE ARE TO FORK ADDITIONAL CLIENTS ON THIS MACHINE, - * WE MUST DO IT BEFORE WE CONNECT TO THE MASTER. - * - * FIRST, SET UP SIGNAL HANDLING - */ - signal(SIGCHLD, childhandler); - for(i = 0; i < numclients; i++) - { - thr_create (NULL, NULL, ClientThread, NULL, THR_BOUND, NULL); - - /* switch(fork()) - { - case 0: - numclients = 1; - ClientThread(NULL); - exit(0); - break; - case -1: - errexit("Error forking child processes\n"); - exit(1); - default: - break; - } */ - select(0,(fd_set *)0,(fd_set *)0, (fd_set *)0, &sleeptime); - } - - /* - * Wait for all children to exit. - */ - - while (thr_join(NULL, NULL, NULL) == 0); - - /* for(;;) - { - int pid = wait((int*)0); - if ((pid == -1) && errno == ECHILD) break; - } */ -#else - /* start threads on NT */ - for (i = 0; i < numclients; i++) - { - if (_beginthread(ClientThread, 0, NULL) == -1) - { - errexit("_beginthread failed: %d", GetLastError()); - } - } -#endif /* WIN32 */ - -#ifdef WIN32 - /* wait for children to get to sync point */ - while (CounterSemaphore < numclients) - sleep(1); - CounterSemaphore = 0; - - /* start all children simultaneously */ - ReleaseSemaphore(hSemaphore, 1, NULL); - - if (testtime) { - sleep(testtime); - alarmhandler(); /* signal end of test to threads */ - } - - /* - * Wait for all threads to exit. - */ - while (CounterSemaphore < numclients) - sleep(1); - - CloseHandle(hSemaphore); -#endif /* WIN32 */ - - return; -} /* end main() */ - -void ClientThread(void *dummy) -{ - - THREAD FILE *logfile; - - THREAD stats_t timestat; - - THREAD rqst_timer_t timerarray[MAXNUMOFFILES]; - THREAD SOCKET mastersock = BADSOCKET_VALUE; /* connection to webmaster */ - - - THREAD page_stats_t *page_stats; /* actually a dynamic array */ - - int loopcnt = 0; - int filecnt; - int loop; - int ran_number; - int page_index; - int page_number; - int file_count = 0; - char file_name[50]; - struct timeval runningtime; - time_t junk; - int i; - int returnval; - - /* - * INITIALIZE DATA - */ - - page_stats = - (page_stats_t *)mymalloc((number_of_pages)*sizeof(page_stats_t)); - - for (i=0; i < number_of_pages; i++) { - page_stats_init(&(page_stats[i])); - } - - if (debug) - { - /* - * OPEN A DEBUG FILE - */ - fflush(stderr); - sprintf(file_name, "%s.%d", DEBUG_FILE, (int)getpid()); - debugfile = fopen(file_name, "w+"); - if (debugfile == NULL) - errexit("Can't open debug file\n"); - D_PRINTF( "Running in debug mode, %d\n",amclient ); - } - - if (record_all_transactions) - { - /* - * OPEN A LOG FILE. - */ - sprintf(file_name, "%s%d", LOG_FILE, (int)getpid()); - returnerr("Log file is %s\n", file_name); - logfile = fopen(file_name, "w+"); - } - - /* Initialize random number generator */ - junk = getpid (); - rand_r(&junk); - D_PRINTF( "Random seed: %d\n", junk ); - - for (i=0; i < MAXNUMOFFILES; i++) - { - rqtimer_init(&(timerarray[i])); - } - stats_init(×tat); - - D_PRINTF( "Number of files %d\n", numfiles ); - - timestat.total_num_of_files = numfiles; - - if (amclient) - { - /* - * WE ARE A CLIENT PROCESS. (i.e. WE ARE NOT RUN BY A USER, BUT BY - * THE MASTER WWWSTONE PROCESS. WE NEED TO CONNECT TO THE - * MASTER WHO WILL SYNCHRONIZE ALL THE CLIENTS. - */ - D_PRINTF( "Trying to connect with %s\n",connectstr ); - - mastersock = connecttomaster(connectstr); - - D_PRINTF( "connecttomaster returns %d, %s\n", - mastersock, neterrstr() ); - - if(BADSOCKET(mastersock)) - { - /* - * ERROR CONNECTING TO THE MASTER. ABORT. - */ - errexit("Error connecting to the master: %s\n", neterrstr()); - } - } /* END IF CLIENT */ - -#ifdef WIN32 - /* Tell parent we're ready */ - InterlockedIncrement(&CounterSemaphore); - - /* Wait for main() thread to release us */ - WaitForSingleObject(hSemaphore, INFINITE); - ReleaseSemaphore(hSemaphore, 1, NULL); -#endif /* WIN32 */ - if (testtime != 0) - { - /* - * IF RUNNING A TIMED TEST, WE WILL LOOP - * UNTIL THE ALARM GOES OFF. - * WE'LL ALSO NEED TO SET THE SIGNAL HANDLER - */ -#ifndef WIN32 - /*signal(SIGALRM, alarmhandler);*/ - /* - * SEND SIGALRM IN testtime SECONDS - */ - /*alarm(testtime);*/ -#endif /* WIN32 */ - } - - /* - * AND THEY'RE OFF... - */ - - if (testtime) - numloops = INFINITY; - GETTIMEOFDAY(&(timestat.starttime), &(timestat.starttimezone)); - - /* LOOP UNTIL WE HIT numloops, OR WE RUN OUT OF TIME */ - for(loopcnt = 0; (loopcnt < numloops) && !timeexpired; loopcnt++) - { - /* - * THIS IS WHERE LOAD TESTING IS DONE. - * GET A RANDOM NUMBER, THEN INDEX INTO THE - * PAGE, AND THEN REQUEST THAT SET OF FILES. - */ - if (uil_filelist_f) /* HAVE FILELIST */ - { - D_PRINTF( "Have filelist\n" ); - /* if (testtime != 0) /* RUNNING IN TIMED MODE */ - if (1) - { - D_PRINTF( "Running in timed mode\n" ); - /* random number between 0 and totalweight-1 */ - junk = getpid (); - ran_number = (rand_r(&junk) % total_weight); - D_PRINTF( "random %ld\n", ran_number ); - - /* loop through pages, find correct one - * while ran_number is positive, decrement it - * by the load_num of the current page - * example: ran_number is 5, pages have weights of 10 and 10 - * first iteration page_index = 0, ran_number = -5 - * iteration halted, page_index = 0 - */ - page_index = -1; - while (ran_number >= 0) - { - page_index++; - D_PRINTF( "Current page index %d: %ld - %d\n", - page_index, ran_number, - load_file_list[page_index].load_num - ); - ran_number -= load_file_list[page_index].load_num; - } - - if (page_index >= number_of_pages) { page_index--; } - - D_PRINTF( "Final page index %d\n", page_index ); - filecnt = makeload(load_file_list[page_index].num_of_files, - page_index, timerarray, ×tat, mastersock, page_stats); - testtime = 1; - } - else /* NOT RUNNING IN TIMED MODE */ - { - for (page_number = 0; - page_number < number_of_pages; - page_number++) - { - filecnt = makeload(load_file_list[page_number].num_of_files, - page_number, timerarray, ×tat, mastersock, page_stats); - - } /* END for page_number */ - } /* END if/else TIMED MODE */ - } - else /* NO FILELIST */ - { - D_PRINTF( "No filelist\n" ); - /* - * LOOP THROUGH UNTIL numfiles TIMES OR UNTIL TIMER EXPIRES - * AND ALARM SETS filecnt TO INFINITY. - */ - - /* does this still work?? */ - /* filecnt = makeload(numfiles, -1, timerarray); */ - } /* END if HAVE FILELIST */ - - if (filecnt > 0) - file_count += filecnt; - - } /* END while loopcnt */ - - GETTIMEOFDAY(&(timestat.endtime), &(timestat.endtimezone)); - D_PRINTF( "Test run complete\n" ); - signal(SIGALRM, NULL); - - if (testtime == 0) - { - numfiles = loopcnt; - - if (uil_filelist_f) - { - numfiles = file_count; - } - } - - /* This option ( "-R" ) looks broken (e.g. l > 50) -- JEF 2/15/96 */ - if (record_all_transactions) - { - /* - * DUMP THE LOG FILE INFORMATION. - */ - for (loop=0; loop < (loopcnt * file_count); loop++) - { - fprintf(logfile, " entertime \t%d.%d\n" - " beforeconnect \t%d.%d\n" - " afterconnect \t%d.%d\n" - " beforeheader \t%d.%d\n" - " afterheader \t%d.%d\n" - " afterbody \t%d.%d\n" - " exittime \t%d.%d\n" - " total bytes \t%d\n" - " body bytes\t%d\n", - timerarray[loop].entertime.tv_sec, - timerarray[loop].entertime.tv_usec, - timerarray[loop].beforeconnect.tv_sec, - timerarray[loop].beforeconnect.tv_usec, - timerarray[loop].afterconnect.tv_sec, - timerarray[loop].afterconnect.tv_usec, - timerarray[loop].beforeheader.tv_sec, - timerarray[loop].beforeheader.tv_usec, - timerarray[loop].afterheader.tv_sec, - timerarray[loop].afterheader.tv_usec, - timerarray[loop].afterbody.tv_sec, - timerarray[loop].afterbody.tv_usec, - timerarray[loop].exittime.tv_sec, - timerarray[loop].exittime.tv_usec, - timerarray[loop].totalbytes, - timerarray[loop].bodybytes); - } /* end for loop */ - } /* end if recording all transactions */ - - D_PRINTF( "total errors: %d\n",timestat.rs.totalerrs ); - /* gethostname(timestat.hostname,MAXHOSTNAMELEN); */ - /* D_PRINTF( "Test for host: %s\n",timestat.hostname ); */ - D_PRINTF( "Server is: %s running at port number: %d\n", - webserver,portnum ); - - /* sprintf(timestat.hostname,"%s:%d",timestat.hostname,getpid()); */ - if (amclient) /* CLIENT TO A WEBMASTER */ - { - char *stats_as_text; - - /* - * SEND THE TIMING DATA TO THE MASTER - */ - stats_as_text = stats_to_text(×tat); - D_PRINTF( "stats_to_text returned %s\n", stats_as_text ); - - returnval = senddata(mastersock, stats_as_text, - SIZEOF_STATSTEXTBASE + number_of_pages*SIZEOF_DOUBLETEXT); - D_PRINTF( "Wrote time stats to master %d\n", returnval ); - - if (returnval < 1) - { - D_PRINTF( "Error while writing time stats: %s\n", - neterrstr() ); - errexit("Error while writing time stats: %s\n", - neterrstr()); - } - - if (uil_filelist_f) - /* write pagestats */ - { - char *page_stats_as_text; - for (i = 0; i < number_of_pages; i++) - { - D_PRINTF( "On page_stats[%d]\n", i ); - page_stats_as_text = page_stats_to_text(&page_stats[i]); - returnval = strlen(page_stats_as_text); - D_PRINTF( "page_stats_to_text[%d] returned %d\n", - i, returnval ); - returnval = senddata(mastersock, page_stats_as_text, - SIZEOF_PAGESTATSTEXT); - if (returnval < 1) - { - D_PRINTF( "Error while writing page_stats[%d]: %s\n", - i, neterrstr() ); - errexit("Error while writing page_stats[%d]: %s\n", - i, neterrstr()); - } /* end if */ - D_PRINTF( "Wrote %d bytes of page_stats[%d] to master\n", - returnval, i ); - } /* end for */ - } /* end if filelist */ - - D_PRINTF( "About to close socket\n" ); - if (NETCLOSE(mastersock)) - D_PRINTF( "Close socket error: %s\n", neterrstr() ); - } - else /* NOT A CLIENT TO A WEBMASTER */ - { - if (testtime) - { - printf("Test ran for: %d minutes\n",(testtime/60)); - } - else - { - printf("Test ran for: %d iterations.\n",numloops); - } - compdifftime(&(timestat.endtime), &(timestat.starttime), - &(runningtime)); - printf("Total time of test (sec) %d.%d\n", runningtime.tv_sec, - runningtime.tv_usec); - printf("Files retrieved per iteration: %d\n",numfiles); /* 'per iteration' */ - printf("----------------------------------\n"); - printf("Totals:\n\n"); - rqstat_print(&(timestat.rs)); - - if (timestat.rs.totalconnects == 0) - goto end; - printf("Thruput = %5.2lf Kbytes/sec\n", - thruputpersec(timestat.rs.totalbytes, &runningtime) / 1000); - - if (uil_filelist_f && numloops && verbose) - { - for (loop = 0; loop < number_of_pages; loop++) - { - if (timestat.page_numbers[loop] != 0) - { - printf ("===============================================================================\n"); - printf ("Page # %d\n\n", loop); - printf ("Total number of times page was hit %d\n", - page_stats[loop].totalpages); - rqstat_print(&(page_stats[loop].rs)); - printf ("Page size %d \n", page_stats[loop].page_size); - printf ("===============================================================================\n\n"); - } /* END if timestat */ - } /* END for loop */ - } /* END if filelist */ - } /* END if client */ - -end: - if(record_all_transactions) - fclose(logfile); - if(debug) - { - D_PRINTF( "Client exiting.\n" ); - fclose(debugfile); - } - -#ifdef WIN32 - /* tell parent we're done */ - InterlockedIncrement(&CounterSemaphore); -#endif /* WIN32 */ - -} /* END ClientThread() */ diff --git a/apps/JAWS/clients/WebSTONE/src/webmaster.c b/apps/JAWS/clients/WebSTONE/src/webmaster.c deleted file mode 100644 index f98e073a10a..00000000000 --- a/apps/JAWS/clients/WebSTONE/src/webmaster.c +++ /dev/null @@ -1,1417 +0,0 @@ -/************************************************************************** -$Header$ - * * - * Copyright (C) 1995 Silicon Graphics, Inc. * - * * - * These coded instructions, statements, and computer programs were * - * developed by SGI for public use. If any changes are made to this code* - * please try to get the changes back to the author. Feel free to make * - * modifications and changes to the code and release it. * - * * - **************************************************************************/ - -#include <stdio.h> -#include <errno.h> -#include <signal.h> -#include <stdlib.h> -#include <string.h> -#include <time.h> - -#ifndef WIN32 -#include <unistd.h> -#endif /* WIN32 */ - -#include <math.h> - -#ifndef WIN32 -#include <sys/param.h> -#include <sys/types.h> -#include <sys/errno.h> -#include <sys/socket.h> -#include <sys/time.h> -#include <netinet/in.h> -#include <netdb.h> -#else -#define FD_SETSIZE 1024 /* max size for select() - keep before <winsock.h> - * and same size as MAXCLIENTS */ -#include <windows.h> -#include <winsock.h> -#include <io.h> -#include <process.h> -#endif /* WIN32 */ - -#include "sysdep.h" -#include "bench.h" - -/* command line options/data */ -int savefile = 0; -int debug = 0; -int norexec = 0; -int haveproxyserver = 0; -char proxyserver[MAXHOSTNAMELEN]; -char network_mask_str[30] = "255.255.255.0"; -unsigned network_mask = 0; -int servaddrin_config = 0; -int dumpall = 0; -int testtime = 0; -int havewebserver = 0; -int numloops = 0; -NETPORT portnum = 0; -int redirect = 0; -int record_all_transactions = 0; -int uil_filelist_f = 0; -int verbose = 0; -char webserver[MAXHOSTNAMELEN]; -char configfile[MAXPATHLEN]; -char uil_filelist[NCCARGS]; - -char filelist[256][MAXPATHLEN]; -fd_set zerofdset; - -/* other key data */ -long int number_of_pages = 0; -int totalnumclients = 0; -int num_rexecs = 0; -SOCKET socknum[MAXCLIENTS]; -SOCKET sockIO[MAXTOTALPROCS]; -SOCKET sockErr[MAXTOTALPROCS]; -THREAD FILE *debugfile = stderr; -struct hostent *master_phe; /* IP addresses for webmaster */ -struct timeval sumedh_start, sumedh_end; - -void HostEntCpy(struct hostent *dest, struct hostent *src); - -static void -usage(const char *progname) -{ - - fprintf(stderr, "Usage: %s [-a] [-d] -f config_file [-l numloops]\n", - progname); - fprintf(stderr, " [-p port_num] [-r] [-s] [-t run_time] \n"); - fprintf(stderr, "\n"); - fprintf(stderr, "-w webserver URL [URL ...]\n\n"); - fprintf(stderr, "-a print timing information for all clients\n"); - fprintf(stderr, "-d turn on debug statements\n"); - fprintf(stderr, "-f config_file\tfile specifying clients\n"); - fprintf(stderr, "-l number of iterations to retrieve uils\n"); - fprintf(stderr, "-p port number of web server if not 80\n"); - fprintf(stderr, "-r redirect stdout of clients to /tmp/webstone.xxx\n"); - fprintf(stderr, "-s save client gets to /tmp/webstone.data.*\n"); - fprintf(stderr, "-t run_time\tduration of test in minutes\n"); - fprintf(stderr, "-w webserver\tname of webserver host to contact\n"); - fprintf(stderr, "-u URL file\tfilelist of URLs\n"); - fprintf(stderr, "-v verbose mode\n"); - fprintf(stderr, "-P servername\tuse proxy server for transactions\n"); - fprintf(stderr, "-W webserver addresses are in the config file\n"); - fprintf(stderr, "-R record all transactions\n"); - errexit("\n"); -} - -static SOCKET -passivesock(const NETPORT portnum, const char *protocol, const int qlen) -{ - struct protoent *ppe; /* pointer to protocol info entry */ - struct sockaddr_in sin; /* Internet endpoint address */ - SOCKET s; /* socket descriptor */ - int type; /* socket type */ - - D_PRINTF( "Beginning passivesock with errno %d\n",errno ); - - D_PRINTF( "Zeroing address structure\n" ); - memset((char *)&sin, 0, sizeof(sin)); - - sin.sin_family = AF_INET; - sin.sin_addr.s_addr = INADDR_ANY; - - /* NOT USED: Map service name to portnumber */ - D_PRINTF( "Mapping portnum errno %d\n",errno ); - sin.sin_port = htons(portnum); - - /* Map protocol name to number */ - D_PRINTF( "Mapping protocol name errno %d\n",errno ); - if ((ppe = getprotobyname(protocol)) == 0) - { - errexit("Can't get \"%s\" protocol entry\n", protocol); - } - errno = 0; - - /* use protocol to choose socket type */ - D_PRINTF( "Changing socket type, errno %d\n",errno ); - if (strcmp(protocol, "udp") == 0) - { - type = SOCK_DGRAM; - D_PRINTF( "Choosing SOCK_DGRAM\n" ); - } - else - { - type = SOCK_STREAM; - D_PRINTF( "Choosing SOCK_STREAM, errno %d\n",errno ); - } - - /* allocate a socket */ - s = socket(PF_INET, type, ppe->p_proto); - if (BADSOCKET(s)) - { - D_PRINTF( "Socket PF_INET %d %d returned %d with %s\n", - type, ppe->p_proto, s, neterrstr() ); - errexit("Can't create socket: %s\n", neterrstr()); - } - D_PRINTF( "Socket %d created with errno %d\n",s,errno ); - - /* Bind the socket */ - if (bind(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) - { - errexit("Can't bind to port %d: %s\n", portnum, neterrstr()); - } - D_PRINTF( "Bind succeeded\n" ); - - /* If it's a stream, listen for connections */ - /* NOTE: ON NT, the listen() backlog parm is silently limited to 5 conns */ - if ((type == SOCK_STREAM) && BADSOCKET(listen(s, qlen))) - { - errexit("Can't listen on port %s: %s\n", portnum, neterrstr()); - } - D_PRINTF( "Listen succeeded\n" ); - - /* all done, return socket descriptor */ - return(s); -} - - -/* abort clients -- called by SIGINT handler */ -static void abort_clients(void) -{ - /* Not supposed to have fprintf in a signal handler, but... */ - fprintf(stdout, "Webmaster received SIGINT. Terminating.\n"); - /* exit will close all open connections */ - exit(2); -} - -/* signal handler for SIGINT */ -static void sig_int(int sig) { - - abort_clients(); -} - -#ifdef WIN32 - -/* echo stdout/stderr from clients */ -void echo_client(void *stream) -{ - SOCKET *sockarr; - FILE *outfile; - int which_stream = (int) stream; - char buf[BUFSIZ]; - int i, len, rv; - fd_set readfds; - - /* This code which handles the timeout may need - to be ifdef'ed for WIN32 */ - struct timeval timeout; - - timeout.tv_sec = (long)5; - timeout.tv_usec = (long)0; - - if (which_stream) { - sockarr = sockIO; - outfile = stdout; - } else { - sockarr = sockErr; - outfile = stderr; - } - - D_PRINTF( "echo_client running\n" ); - signal( SIGINT, SIG_DFL); /* restore default behavior - for SIGINT */ - - while (1) { - FD_ZERO(&readfds); - for (i = 0; i < num_rexecs; i++) - if (sockarr[i] != BADSOCKET_VALUE) - FD_SET(sockarr[i], &readfds); - rv = select(num_rexecs, &readfds, NULL, NULL, &timeout); - if ( rv == 0) - continue; - if (rv < 0 && WSAGetLastError() == WSANOTINITIALISED) - return; - if (rv < 0) - errexit("Error in echo_client(): select() returns %d: %s\n", rv, neterrstr()); - - /* loop over the sockets that are ready with data */ - for (i = 0; i < num_rexecs; i++) { - if (sockarr[i] != BADSOCKET_VALUE && FD_ISSET(sockarr[i], &readfds)) { - len = NETREAD(sockarr[i], buf, sizeof(buf)); - if (len <= 0) { - /* mark connection closed */ - sockarr[i] = BADSOCKET_VALUE; - if (len < 0 && WSAGetLastError() == WSANOTINITIALISED) - return; - if (len < 0) - fprintf(stderr, "Error in echo_client() after NETREAD(): %s\n", neterrstr()); - continue; - } - - /* copy to stdout or stderr */ - fwrite(buf, sizeof(char), len, outfile); - } - } - } - D_PRINTF( "Exiting echo_client\n" ); -} - -#else -static int -echo_client(char *hostname, const int fd) -{ - /* - * WRITE TEXT FROM FILE DESCRIPTOR INTO STDOUT - */ - char buf[BUFSIZ]; - int cc; - D_PRINTF( "echo_client running\n" ); - - while (getppid() != 1) - { - cc = NETREAD(fd, buf, sizeof(buf)); - if (cc > 0) - { - write(STDOUT_FILENO, buf, cc); - } - } - D_PRINTF( "Exiting echo_client\n" ); - NETCLOSE(fd); -} -#endif /* WIN32 */ - -/* Picks the appropriate webmaster IP address based on the address of the client. - * This is significant only for hosts with multiple interfaces - * - * return value is a string with the IP address or hostname (or NULL) - */ -char *pick_webmaster_IP_address(char *client_hostname, struct hostent *master_phe, - unsigned netmask) { -static char buf[20]; -unsigned char addr[4]; -int client_addr; -int i; - - if (client_hostname[0] >= '0' && client_hostname[0] <= '9') { - /* we have an IP address */ - client_addr = inet_addr(client_hostname); - if (client_addr == INADDR_NONE) - return NULL; - } else { - /* we have a hostname, use the webserver hostname */ - return master_phe->h_name; - } - - for (i = 0; master_phe->h_addr_list[i] != NULL; i++) { - if ((*(int *)(master_phe->h_addr_list[i]) & netmask) == - (client_addr & netmask)) - goto gotit; - } - i = 0; /* give up */ - -gotit: - memcpy((char *)addr, master_phe->h_addr_list[i], sizeof(addr)); /* Internet specific */ - sprintf(buf, "%d.%d.%d.%d", addr[0], addr[1], addr[2], addr[3]); - return buf; -} - -/* - Command line parsing -*/ - -void ParseCmdLine(int argc, char **argv ) -{ -char getoptch; -int currarg; -extern char *optarg; -extern int optind; - - /* - * PARSE THE COMMAND LINE OPTIONS - */ - while((getoptch = getopt(argc,argv,"P:f:t:l:p:u:R:w:n:M:adrsvWX")) != (const char)EOF) - { - switch(getoptch) - { - case 'M': - strcpy(network_mask_str, optarg); - break; - case 'P': - haveproxyserver = 1; - strcpy(proxyserver, optarg); - break; - case 'R': - record_all_transactions = 1; - break; - case 'X': - norexec = 1; - break; - case 'W': - servaddrin_config = 1; - break; - case 'a': - dumpall = 1; - break; - case 'd': - debug = 1; - break; - case 'f': - strcpy(configfile, optarg); - break; - case 'l': - numloops = atoi(optarg); - break; - case 'p': - portnum = atoi(optarg); - break; - case 'r': - redirect = 1; - break; - case 's': - savefile = 1; - break; - case 't': - testtime = atoi(optarg); - break; - case 'u': - uil_filelist_f = 1; - strcpy(uil_filelist, optarg); - break; - case 'v': - verbose = 1; - break; - case 'w': - havewebserver = 1; - strcpy(webserver, optarg); - break; - default: - usage(argv[0]); - } /* end switch */ - } /* end while */ - - if (numloops && testtime) - errexit("Can't have both -l and -t\n"); - - if(!havewebserver && !servaddrin_config) - { - /* - * THE SERVERS NAME MUST BE SPECIFIED - */ - - fprintf(stderr,"No WWW Server specified\n"); - usage(argv[0]); - } - - if (havewebserver && servaddrin_config) - { - /* - * CAN'T HAVE BOTH -w and -W - */ - fprintf(stderr, "Can't have both -w and -W options\n"); - usage(argv[0]); - } - - network_mask = inet_addr(network_mask_str); - if (network_mask == INADDR_NONE) { - fprintf(stderr, "Invalid network mask (-M %s)\n", network_mask_str); - usage(argv[0]); - } - - if(strlen(configfile) == 0) - { - /* - * THE MASTER MUST HAVE A CONFIGURATION FILE TO READ. - */ - fprintf(stderr,"No Configuration file specified\n"); - usage(argv[0]); - } - /* IF WE DO NOT HAVE A FILE LIST THEN THERE ARE UIL'S AT THE END OF THE - * COMMAND LINE SO GRAB THEM. - */ - if (uil_filelist_f == 0) - { - currarg = optind; - number_of_pages = 0; - while(currarg != argc) - { - /* - * GET THE UILS TO RETRIEVE. - */ - - sscanf(argv[currarg],"%s",filelist[number_of_pages]); - number_of_pages++; - currarg++; - } - } - else - { - /* have filelist; take a stab at the number of valid URLs */ - D_PRINTF( "About to parse filelist %s\n", uil_filelist ); - number_of_pages = count_file_list(uil_filelist); - } - if (number_of_pages == 0) - { - /* - * AT LEAST ONE FILE MUST BE SPECIFIED - */ - fprintf(stderr,"No URL resources specified\n"); - usage(argv[0]); - } -} - -/* - This function sets up the socket we will use to synchronize with the - clients. - Returns the socket number if successful, doesn't return if it fails -*/ - -SOCKET SetupSyncSocket( serveraddr ) -struct sockaddr_in *serveraddr; -{ - int sock,len; - - /* - * SET UP THE SOCKET WE ARE GOING TO USE TO SYNCHRONIZE WITH THE CLIENTS. - */ - D_PRINTF( "About to call sock %d %d\n", portnum, MAXCLIENTS ); - - sock = passivesock(0, "tcp", MAXCLIENTS); - - if (BADSOCKET(sock)) - { - errexit("Couldn't open socket %d: %s\n", sock, neterrstr()); - } - D_PRINTF( "The passivesock call succeeded\n" ); - - D_PRINTF( "calling getsockname\n" ); - - len = sizeof(struct sockaddr); - if(getsockname(sock, (struct sockaddr *)serveraddr, &len) < 0) - { - errexit("Could not get socket informaton\n"); - } - - return( sock ); -} - -/* - Function which generates a commandline for the webclients -*/ -void MakeCmdLine( commandline) -char *commandline; -{ - char tmpcommandline[NCCARGS]; - char hostname[MAXHOSTNAMELEN]; - char *webclient_path, *temp; - int cnt; - struct hostent *master_phe_tmp; /* temp. variable added by - Rajesh Shah*/ - - /* - * BUILD THE PORTIONS OF THE cmdline FOR EACH CLIENT THAT WE CAN BUILD NOW. - * WE WILL FILL IN THE NUMBER OF CLIENTS LATER WITH AN sprintf. - */ - D_PRINTF( "Calling gethostname\n" ); - - if(gethostname(hostname,MAXHOSTNAMELEN) != 0) - { - errexit("Could not retrieve local host name"); - } else { - /* convert hostname to address (to avoid DNS problems for webclients) */ - /* The following lines are add to copy the system - buffer (output of gethostbyname()) into user area. - This is because, there are very good chances that later - on system buffer might be overwritten by some calls and - still if your pointer is pointing to same addr. nothing - but only trouble and trouble! Infact this is what - happening when I tried to run webstone benchmark for more - then one clients. It used to over write the webmaster name - with the first client name and so remaining on client(s) - the webclient process(es) were invoked with wrong webmaster - name! This behaviour is observed Solaris 2.4 this bug - can be hit in any OS. - Rajesh Shah 5/18/96 */ - - /* master_phe = gethostbyname(hostname); */ - master_phe_tmp = gethostbyname(hostname); - master_phe = (struct hostent *)malloc(sizeof(struct hostent)); - HostEntCpy(master_phe, master_phe_tmp); - } - - /* set up executable pathname */ -#ifndef WIN32 - temp = getenv("TMPDIR"); - - if ( temp && *temp ) { - webclient_path = (char *)mymalloc( strlen(temp) + strlen("/webclient") - + 1); - strcpy(webclient_path, temp); - strcat(webclient_path, "/webclient"); - - } else -#else - temp = temp; -#endif /* WIN32 */ - webclient_path = PROGPATH; - - - D_PRINTF( "Path to webclient is: %s\n", webclient_path ); - - sprintf(commandline,"%s", webclient_path); - - if(haveproxyserver) - { - sprintf(tmpcommandline, " -P %s", proxyserver); - strcat(commandline, tmpcommandline); - } - if (debug) - { - strcat(commandline," -d"); - } - if (numloops != 0) - { - sprintf(tmpcommandline," -l %d", numloops); - strcat(commandline,tmpcommandline); - } - if (portnum) - { - sprintf(tmpcommandline," -p %d", portnum); - strcat(commandline,tmpcommandline); - } - if (redirect) - { - strcat(commandline," -r"); - } - if (savefile) - { - strcat(commandline," -s"); - } - if (uil_filelist_f) - { - strcat(commandline," -u "); - strcat(commandline,uil_filelist); - } - if (record_all_transactions) - { - strcat(commandline," -R"); - } - if (testtime != 0) - { - sprintf(tmpcommandline," -t %d", testtime); - strcat(commandline,tmpcommandline); - } - - /* - * SET UP A SPACE FOR THE NUMBER OF CLIENTS ON THE commandline. - */ - sprintf(tmpcommandline,"%s -n %%d -w %%s -c %%s:%%d", commandline); - strcpy(commandline,tmpcommandline); - - if (uil_filelist_f == 0) - { - cnt = 0; - while(cnt < number_of_pages) - { - /* - * PUT THE FILES AT THE END OF THE LIST. - */ - strcat(commandline," "); - strcat(commandline,filelist[cnt]); - cnt++; - } - } - puts(commandline); -} - -/* - rexec to the client hosts and start the webclients -*/ -int RexecClients( commandline, clienthostname, serveraddr) -char *commandline; -char clienthostname[MAXCLIENTS][MAXHOSTNAMELEN]; -struct sockaddr_in *serveraddr; - -{ - int tmpfd; - int numclients = 0; - char tmpcommandline[NCCARGS]; - struct servent *inetport; - int cnt; - char buffer[NCCARGS]; - char login[MAXUSERNAME]; - char password[MAXPASSWD]; - FILE *fp; - int returnval; - char *tmphostname; - - memset(buffer, 0, sizeof(buffer)); - - /* - * OPEN UP THE CONFIG FILE. FOR EACH LINE IN THE CONFIG FILE, CHECK - * ITS VALIDITY AND THEN rexec A COMMAND ON THE CLIENT. - */ - - if ((fp = fopen(configfile,"r")) == NULL) - { - errexit("Could not open config file %s\n", configfile); - } - - if ((inetport = getservbyname("exec","tcp")) == NULL) - { - errexit("Could not get service name for exec/tcp\n"); - } - D_PRINTF( "getservbyname returned %d\n", ntohs(inetport->s_port) ); - - cnt = 0; - - D_PRINTF( "rexec loop\n" ); - while(1) - { - char webserver2[MAXHOSTNAMELEN]; - char linebuf[150]; - int num; - char *primename; - - if (NULL == fgets(linebuf, sizeof(linebuf), fp)) - break; - num = sscanf(linebuf,"%s %s %s %d %s",clienthostname[cnt],login,password, - &numclients, webserver2); - if (num < 4) - break; - if (servaddrin_config) { - if (num == 4) { - errexit("No webserver specified in config file for %s\n", clienthostname[cnt]); - } - strcpy(webserver, webserver2); - } - - if (numclients <= 0) - errexit("Number of clients must be >= 0\n"); - if (numclients > MAXPROCSPERNODE) - { - errexit("Number of clients per node can't exceed %d\n", MAXPROCSPERNODE); - } - totalnumclients += numclients; - - primename = pick_webmaster_IP_address(clienthostname[cnt], master_phe, network_mask); - if (primename == NULL) { - errexit("Bad client address %s for Client %d\n", clienthostname[cnt], cnt); - } - - fprintf(stdout,"Client %d: %s \t# Processes: %d\n Webserver: %s\tWebmaster: %s:%d\n", - cnt, clienthostname[cnt], numclients, webserver, primename, - ntohs(serveraddr->sin_port)); - fflush(stdout); - sprintf(tmpcommandline, commandline, numclients, webserver, primename, - ntohs(serveraddr->sin_port)); - - fprintf(stderr, "tmpcommandline: %s\n", tmpcommandline); - - D_PRINTF( "%s rexec %s\n",&clienthostname[cnt],tmpcommandline ); - if (norexec) { - sleep(30); /* gives some time to start clients for debugging */ - } else { - - tmphostname = &(clienthostname[cnt][0]); - tmpfd = rexec(&tmphostname, inetport->s_port, login, password, - tmpcommandline, &sockErr[cnt]); - if((sockIO[cnt] = tmpfd) < 0) - { - errexit("Could not rexec: rexec to client %s, cmdline %s failed\n", - clienthostname[cnt],tmpcommandline); - } - } - - - returnval = NETREAD(tmpfd, buffer, OKSTRLEN); - D_PRINTF( "read returns %d, %s\n", returnval, buffer ); - - if (returnval <= 0 || memcmp(buffer, OKSTR, OKSTRLEN) != 0) - { - errexit("rexec to client %s, cmdline %s received error %s\n", - clienthostname[cnt],tmpcommandline, buffer); - } - - - cnt++; - if (cnt > MAXCLIENTS || cnt > FD_SETSIZE) - { - errexit("Number of Clients can't exceed %d\n", MAXCLIENTS); - } - } - - num_rexecs = cnt; - if (totalnumclients > MAXTOTALPROCS) - { - errexit("Total number of processes can't exceed %d\n", - MAXTOTALPROCS); - } - -#ifndef WIN32 - /* NOW WE NEED TO HANDLE THE OUTPUT FROM THE REXEC. - * TO DO THIS, WE FORK, THEN HAVE ONE PROCESS READ FROM TMPFD. - * THE OTHER PROCESS CONTINUES WITH THE PROGRAM - */ - D_PRINTF( "Forking webclient stderr/stdout processes\n" ); - switch (fork()) - { - case -1: /* ERROR */ - errexit("fork: %s\n", strerror(errno)); - case 0: /* CHILD */ - exit(echo_client(clienthostname[cnt], tmpfd)); - default: /* PARENT */ - break; - } -#else - /* start threads to echo stdout/stderr from clients */ - _beginthread(echo_client, 0, (void *)0); - _beginthread(echo_client, 0, (void *)1); -#endif /* WIN32 */ - - fprintf(stdout,"\n"); - fprintf(stdout,"\n"); - fclose(fp); - - return totalnumclients; -} - -void GetReady( fdset, totalnumclients, sock ) -fd_set *fdset; -int totalnumclients; -int sock; -{ - int cnt,len; - fd_set tmpfdset, leftfdset; - char buffer[NCCARGS]; - - /* - * NOW WE NEED TO ACCEPT ALL THE CONNECTIONS FROM THE CLIENTS, - * ACCEPT ALL THE READY MESSAGES - */ - - D_PRINTF( "Beginning accept loop\n" ); - for (cnt = 0; cnt < totalnumclients; cnt++) - { - D_PRINTF( "Client %d:\t", cnt ); - - { - fd_set readfds; - struct timeval timeout; - int rv; - - timeout.tv_sec = MAX_ACCEPT_SECS; - timeout.tv_usec = 0; - FD_ZERO(&readfds); - FD_SET(sock, &readfds); - - /* if we're hung, quit */ - D_PRINTF("Before select() on listen() socket\n"); - if (!(rv = select(FD_SETSIZE, &readfds, NULL, NULL, &timeout))) { - fprintf(stdout, - "Listen timeout after %d seconds (%d clients so far)\n", - MAX_ACCEPT_SECS, cnt); - D_PRINTF("select() timed out after %d seconds\n", MAX_ACCEPT_SECS); - errexit("Webmaster terminating\n"); - } - } - - if(BADSOCKET(socknum[cnt] = accept(sock, NULL, 0))) - { - /* - * ERROR accepting FROM THE CLIENTS. WE NEED TO ISSUE AN - * ABORT TO ALL. - */ - abort_clients(); - errexit("Error accepting from one of the clients: %s", neterrstr()); - } else - { - /* - * SET THE FD IN THE MASK - */ - FD_SET(socknum[cnt],fdset); - } - D_PRINTF( "on socket %d\n",socknum[cnt] ); - } - D_PRINTF( "\n" ); - - /* - * WAIT FOR A READY. - */ - sleep(1); - fprintf(stdout,"Waiting for READY from %d clients\n",totalnumclients); - fflush(stdout); - leftfdset = *fdset; -#ifndef WIN32 - while(memcmp(&leftfdset,&zerofdset,sizeof(fd_set))) - { - tmpfdset = leftfdset; - - if(select(FD_SETSIZE,&tmpfdset,NULL,NULL,NULL) < 0) - { - /* - * ERROR SELECTING. ABORT ALL. - */ - abort_clients(); - errexit("Error accepting from one of the clients: %s\n", - neterrstr()); - break; - } -#else - /* I don't see why a select is needed at all--all clients must respond - * and there is no synchronization/timing issue. - */ - tmpfdset = leftfdset; - { -#endif /* WIN32 */ - - for (cnt = 0; cnt < totalnumclients; cnt++) - { - /* - * SEE WHICH SOCKETS HAVE A INPUT ON THEM PENDING - * AND RECEIVE IT. - */ - if(!BADSOCKET(socknum[cnt]) && (FD_ISSET(socknum[cnt],&tmpfdset))) - { - /* - * GET THE READY FROM THIS GUY. - * DON'T FORGET TO CLEAR HIS BIT IN THE tmpfdset - */ - len = NETREAD(socknum[cnt],buffer,READYSTRLEN); - if(len != READYSTRLEN) - { - abort_clients(); - errexit("Error reading from client #%d\n", cnt); - } - if(memcmp(buffer, READYSTR, READYSTRLEN)) - { - abort_clients(); - fprintf(stdout,"Received bad READY string: len %d, value %s\n", - len,buffer); - } - FD_CLR(socknum[cnt],&leftfdset); - } - } - } - sleep(1); - fprintf(stdout,"All READYs received\n"); - fflush(stdout); -} - -/* - Start all the clients by sending them a GO signal - totalnumclients is the total number of clients - socknum is an int array with the filedescriptors for all the - client connections -*/ -void SendGo( totalnumclients, socknum) -int totalnumclients; -int *socknum; -{ - int cnt; - fprintf(stdout,"Sending GO to all clients\n"); - for(cnt = 0; cnt < totalnumclients; cnt++) - { - if(socknum[cnt] > 0) - { - /* - * SEND A GO - */ - if(NETWRITE(socknum[cnt], GOSTR, GOSTRLEN) != GOSTRLEN) - { - abort_clients(); - errexit("Error sending GO to client %d: %s\n", cnt, neterrstr()); - } - } - } -} - -/* - This function gathers statistics from all the clients -*/ - -void GetResults(fdset, page_stats, endtime, timestr, totalnumclients, - statarray) -fd_set *fdset; -page_stats_t **page_stats; -time_t *endtime; -char *timestr; -int totalnumclients; -stats_t statarray[MAXCLIENTS]; -{ - fd_set leftfdset,tmpfdset; - char *stats_as_text; - char *page_stats_as_text; - int returnval; - int cnt,i; - - - /* DOESN'T ACTUALLY PRINT UNTIL THE FIRST CLIENT REPORTS */ - fprintf(stdout,"Reading results "); - - /* - * COPY THE FILE DESCRIPTORS TO A TMP LIST, - * ALLOCATE MEMORY FOR STATS, PAGESTATS IN TEXT FORM - */ - leftfdset = *fdset; - stats_as_text = (char *)mymalloc(SIZEOF_STATSTEXT+1); - page_stats_as_text = (char *)mymalloc(SIZEOF_PAGESTATSTEXT+1); - - /* - * COPY THE FILE DESCRIPTORS TO A TMP LIST, - * PLUS A LIST OF REMAINING FDs - */ - leftfdset = *fdset; - /* - * LOOP UNTIL ALL CLIENTS HAVE REPORTED - * AND tmpfdset IS EMPTY - */ -#ifndef WIN32 - while(memcmp(&leftfdset,&zerofdset,sizeof(fd_set))) - { - tmpfdset = leftfdset; - sleep(1); - returnval = select(FD_SETSIZE,&tmpfdset,NULL,NULL,NULL); - D_PRINTF( "Call to select returned %d, errno %d\n", - returnval, errno ); - if(returnval < 0) - { - /* - * ERROR SELECTING. ABORT ALL. - */ - D_PRINTF( "select() error %s\n", neterrstr() ); - abort_clients(); - errexit("Error selecting from one of the clients\n"); - } -#else - /* I don't see why a select is needed at all */ - tmpfdset = leftfdset; - { -#endif /* WIN32 */ - for(cnt = 0; cnt < totalnumclients; cnt++) - { - /* - * SEE WHICH SOCKETS HAVE A INPUT ON THEM PENDING AND - * RECEIVE IT. - */ - - /* IS THIS A VALID SOCKET? IS IT READY TO READ? */ - if(!BADSOCKET(socknum[cnt]) && (FD_ISSET(socknum[cnt],&tmpfdset))) - { - int len; - - /* - * GET THE TIMING DATA FROM THIS GUY - * THEN REMOVE HIM FROM THE tmpfdset - */ - /* - * READ TIME STATS - * DOES READ() RETURN THE CORRECT LENGTH? - */ - D_PRINTF( "About to read timestats, count %d, errno %d\n", - cnt, errno ); - len = SIZEOF_STATSTEXTBASE + number_of_pages*SIZEOF_DOUBLETEXT; - returnval = recvdata(socknum[cnt], stats_as_text, - len); - D_PRINTF( "Read time stats %d\n", returnval ); - if (returnval != len) /* <= 0) */ - { - D_PRINTF( "Error reading timing stats: %s\n", - neterrstr() ); - fprintf(stderr, "Error reading timing stats: %s\nSocket number %d\n", - neterrstr(),socknum[cnt]); - abort_clients(); - errexit(""); - } /* end if */ - - /* convert text to stats */ - stats_as_text[returnval] = 0; /* add an end marker */ - statarray[cnt] = *text_to_stats(stats_as_text); - - fputc('.', stdout); /* PROGRESS MARKER */ - fflush(stdout); - - if(uil_filelist_f) /* READ PAGE STATS */ - { - for (i = 0; i < number_of_pages; i++) - { - D_PRINTF( "On page_stats[%d][%d]\n", cnt, i ); - returnval = recvdata(socknum[cnt], page_stats_as_text, - SIZEOF_PAGESTATSTEXT); - D_PRINTF( "Read page stats %d\n", returnval ); - - if (returnval != SIZEOF_PAGESTATSTEXT) /* <= 0) */ - { - D_PRINTF( "Error reading page_stats[%d][%d]: %s\n", - cnt, i, neterrstr() ); - fprintf(stderr, "Error reading page_stats[%d][%d]: %s\n", - cnt, i, neterrstr()); - abort_clients(); - errexit(""); - } - D_PRINTF( "Page stats: read %d bytes\n", - returnval ); - - page_stats_as_text[returnval] = 0; /* add an end marker */ - D_PRINTF("strlen(page_stats_as_text) = %d\n", - strlen(page_stats_as_text)); - page_stats[cnt][i] = - *text_to_page_stats(page_stats_as_text); - - } /* end for */ - } /* end if filelist */ - - FD_CLR(socknum[cnt],&leftfdset); - NETCLOSE(socknum[cnt]); - socknum[cnt] = BADSOCKET_VALUE; - } /* end if socknum */ - } /* end for cnt */ - } /* end while memcmp fd */ - - /* - * DONE READING RESULTS FROM CLIENTS - */ - - *endtime = time(NULL); - timestr = asctime(localtime(endtime)); - fprintf(stdout,"\nAll clients ended at %s\n",timestr); - fflush(stdout); - - /* FREE MEMORY ALLOCATED FOR CLIENT STATS, PAGESTATS AS TEXT */ - free(stats_as_text); - free(page_stats_as_text); - -} - -/* - Prints out all the results -*/ -void PrintResults( page_stats, endtime, timestr, totalnumclients, statarray, - page_stats_total) -page_stats_t **page_stats; -time_t endtime; -char *timestr; -int totalnumclients; -stats_t statarray[MAXCLIENTS]; -page_stats_t *page_stats_total; -{ - stats_t masterstat; - int cnt,i,j; - double thruput; - struct timeval dtime; - - /* - * PRINT EVERYTHING OUT - */ - stats_init(&masterstat); - for(cnt = 0; cnt < totalnumclients; cnt++) - { - if((statarray[cnt].rs.totalconnects > 0) && (dumpall)) - { - fprintf(stdout,"----------------------------------\n"); - /* fprintf(stdout,"Test for host: %s\n",statarray[cnt].hostname); */ - fprintf(stdout,"Total number of pages retrieved from server: %u\n", - statarray[cnt].totalpages); - - rqstat_fprint(stdout, &(statarray[cnt].rs)); - - thruput = thruputpersec((double)(statarray[cnt].rs.totalbytes), - &(statarray[cnt].rs.totalresponsetime)); - - fprintf(stdout, "Thruput average per connection: %.0f bytes/sec\n", - thruput); - } - if(statarray[cnt].rs.totalconnects > 0) - { - D_PRINTF( "Summing stats for %d, with %ld total connections\n", - cnt, statarray[cnt].rs.totalconnects ); - rqstat_sum(&masterstat.rs, &(statarray[cnt].rs)); - } - else - { - masterstat.rs.totalerrs += statarray[cnt].rs.totalerrs; - } - } - - for (i=0; i < totalnumclients; i++) - { - for (j=0; j < number_of_pages; j++) - { - D_PRINTF( "Summing page stats for %d, page %d, with %d connects\n", - i, j, statarray[i].page_numbers[j] ); - - if (statarray[i].page_numbers[j] != 0) - { - rqst_stats_t *pst_rs; - rqst_stats_t *ps_rs; - - pst_rs = &(page_stats_total[j].rs); - ps_rs = &(page_stats[i][j].rs); - - rqstat_sum(pst_rs, ps_rs); - - page_stats_total[j].totalpages += page_stats[i][j].totalpages; - masterstat.totalpages += page_stats[i][j].totalpages; - - /* yes, this is assignment, not sum */ - page_stats_total[j].page_size = page_stats[i][j].page_size; - - page_stats_total[j].page_valid = 1; - } - } - } - - /* print page statistics */ - if (verbose) { - for (i = 0; i < number_of_pages; i++) - { - if (page_stats_total[i].page_valid == 1) - { - page_stats_t *pst; - - pst = &(page_stats_total[i]); - - printf ("===============================================================================\n"); - printf ("Page # %d\n\n", i); - printf ("Total number of times page was hit %u\n", - pst->totalpages); - - rqstat_print(&(pst->rs)); - - printf ("Page size %u \n", pst->page_size); - printf ("===============================================================================\n\n"); - } - } - } - - fprintf(stdout,"===============================================================================\n"); - - /* - * Validate run. - */ - masterstat.total_num_of_files = statarray[0].total_num_of_files; - for (i=1; i < totalnumclients; i++) - { - if ((statarray[i].rs.totalconnects > 0) && - (statarray[i].total_num_of_files != masterstat.total_num_of_files)) - { - fprintf(stdout,"**********************************************************************\n"); - fprintf(stdout,"**** ERROR: number of files in each test configuration is not the same\n"); - fprintf(stdout,"**** ERROR: Check configuration file %s on each client\n", configfile); - fprintf(stdout,"**********************************************************************\n"); - break; - } - } - - - /* - * Print summary statistics - */ - fprintf(stdout, "WEBSTONE 2.0 results:\n"); - - fprintf(stdout, "Total number of clients: \t%d\n", totalnumclients); - testtime = sumedh_end.tv_sec - sumedh_start.tv_sec; - fprintf(stdout,"Test time: \t\t\t%d seconds\n", testtime); - - fprintf(stdout, "Server connection rate: \t%3.2f connections/sec\n", - (double)(masterstat.rs.totalconnects)/(testtime)); - - fprintf(stdout, "Server error rate: \t\t%4.4f err/sec\n", - (double)(masterstat.rs.totalerrs)/(testtime)); - - fprintf(stdout, "Server thruput: \t\t%2.2f Mbit/sec\n", - (double)(8*masterstat.rs.totalbytes)/(testtime*1024*1024)); - - fprintf(stdout, "Little's Load Factor: \t\t%3.2f \n", - (double)(masterstat.rs.totalresponsetime.tv_sec) - /(testtime)); - avgtime(&masterstat.rs.totalresponsetime, - masterstat.rs.totalconnects, &dtime); - - fprintf(stdout, "Average response time: \t\t%4.4f millisec\n", - (double)1000*(dtime.tv_sec + (double)dtime.tv_usec / 1000000)); - - fprintf(stdout, "Error Level:\t\t\t%4.4f %%\n", - (double)(100 * masterstat.rs.totalerrs)/(masterstat.rs.totalconnects)); - - /* so much for the key metrics */ - - thruput = 8 * thruputpersec((double)(masterstat.rs.totalbytes), - &(masterstat.rs.totalresponsetime)); - - fprintf(stdout, "Average client thruput: \t%4.4f Mbit/sec\n", - thruput/(1024*1024)); - - fprintf(stdout,"Sum of client response times:\t%u.%u sec\n", - masterstat.rs.totalresponsetime.tv_sec, - masterstat.rs.totalresponsetime.tv_usec); - - fprintf(stdout,"Total number of pages read:\t%u\n\n", - masterstat.totalpages); - - /* Remaining stats are the same as usual */ - - rqstat_fprint(stdout, &(masterstat.rs)); - fflush(stdout); - -} - -#ifdef WIN32 -/* close socket library */ -void sock_cleanup(void) { - - WSACleanup(); -} -#endif /* WIN32 */ - -void -main(const int argc, char *argv[]) -{ - - int sync_sock; - int i; - int j; - char buffer[NCCARGS]; - char commandline[NCCARGS]; - char *timestr; - time_t starttime; - time_t endtime; - fd_set fdset; - /* make the big arrays static to avoid stack overflow */ - static char clienthostname[MAXCLIENTS][MAXHOSTNAMELEN]; - static stats_t statarray[MAXCLIENTS]; - page_stats_t **page_stats; - page_stats_t *page_stats_total; - struct sockaddr_in serveraddr; - - -#ifdef WIN32 - WSADATA WSAData; - COORD dwSize; - - if ((WSAStartup(MAKEWORD(1,1), &WSAData)) != 0) { - errexit("Error in WSAStartup()\n"); - } - atexit(sock_cleanup); - - /* increase size of output window */ - dwSize.X = 80; - dwSize.Y = 500; - SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), dwSize); -#endif /* WIN32 */ - - - /* Initalization of variables. */ - debugfile = stdout; - memset(buffer, 0, NCCARGS); - memset(webserver, 0, MAXHOSTNAMELEN); - memset(configfile, 0, MAXPATHLEN); - FD_ZERO(&zerofdset); - FD_ZERO(&fdset); - - for(i = 0; i < MAXCLIENTS; i++) - { - socknum[i] = BADSOCKET_VALUE; - statarray[i].rs.totalconnects = 0; - } - - signal(SIGINT, sig_int); - - ParseCmdLine( argc, argv); - - sync_sock = SetupSyncSocket( &serveraddr ); - - MakeCmdLine( commandline); - - totalnumclients = RexecClients( commandline, clienthostname, &serveraddr); - - /* Initalization of variables. */ - page_stats = - (page_stats_t **) - mymalloc(totalnumclients*sizeof(page_stats_t *)); - for (i=0; i < totalnumclients; i++) - { - page_stats[i] = (page_stats_t *) - mymalloc(number_of_pages*sizeof(page_stats_t)); - } - page_stats_total = - (page_stats_t *)mymalloc(number_of_pages*sizeof(page_stats_t)); - - for (i=0; i < totalnumclients; i++) { - stats_init(&(statarray[i])); - } - for (i=0; i < totalnumclients; i++) { - for (j=0; j < number_of_pages; j++) { - page_stats_init(&(page_stats[i][j])); - } - } - for (i=0; i < number_of_pages; i++) { - page_stats_init(&(page_stats_total[i])); - } - - for(i = 0; i < totalnumclients; i++) - { - socknum[i] = BADSOCKET_VALUE; - statarray[i].rs.totalconnects = 0; - } - - GetReady( &fdset, totalnumclients, sync_sock ); - NETCLOSE(sync_sock); - - /* - * START ALL OF THE CLIENTS BY SENDING THEM A GO SIGNAL. - */ - - - gettimeofday (&sumedh_start, NULL); - SendGo( totalnumclients, socknum); - - /* - * WAIT FOR ALL OF THE CLIENTS TO COMPLETE. WE SHOULD GET A REPLY - * FOR EACH SOCKET WE HAVE OPEN. THE REPLY WILL BE THE TIMING - * INFORMATION WE USE. - */ - - starttime = time(NULL); - timestr = asctime(localtime(&starttime)); - fprintf(stdout,"All clients started at %s\n",timestr); - fprintf(stdout,"Waiting for clients completion\n"); - fflush(stdout); - - /* IF THIS IS A TIMED TEST, WE MIGHT AS WELL SNOOZE */ - if (testtime) { - sleep(testtime * 60); - } - - GetResults( &fdset, page_stats, &endtime, timestr, totalnumclients, - statarray); - - gettimeofday (&sumedh_end, NULL); - PrintResults( page_stats, endtime, timestr, totalnumclients, statarray, - page_stats_total); - - /* free memory */ - for (i = 0; i < totalnumclients; i++) - { - free(page_stats[i]); - } - free(page_stats); - free(page_stats_total); - - exit(0); -} - -/* Added by Rajesh Shah 5/18/96 */ -void -HostEntCpy(struct hostent *dest, struct hostent *src) -{ - - dest->h_name = (char *)malloc(strlen(src->h_name)+1); - strcpy(dest->h_name, src->h_name); - printf("WebMaster name = %s\n", dest->h_name); - dest->h_aliases = src->h_aliases; - dest->h_addrtype = src->h_addrtype; - dest->h_length = src->h_length; - dest->h_addr_list = src->h_addr_list; -} - diff --git a/apps/JAWS/clients/WebSTONE/webstone b/apps/JAWS/clients/WebSTONE/webstone deleted file mode 100755 index 026f0d664ad..00000000000 --- a/apps/JAWS/clients/WebSTONE/webstone +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/sh -# -# -WEBSTONEROOT=`pwd` ; export WEBSTONEROOT -[ -z "$EDITOR" ] && EDITOR="vi" - -case $1 in - '-gui') - bin/webstone-gui.pl - ;; - '-help') - echo - more README.FIRST - ;; - '-setup') - if (sh bin/gui-configure) - then - : - else - echo - echo "Some problems were found." - echo "Press RETURN to continue, or CTRL-C to abort." - read junk - fi - if (cd src ; ./configure ; make install) - then - echo - echo - echo "Press RETURN to continue" - read junk - $EDITOR conf/testbed - echo - echo "WebStone make complete." - echo "Type './webstone -genfiles' to create the fileset." - echo - else - echo - echo "WebStone make FAILED" - echo "Consult the file doc/FAQ-webstone.html for porting hints." - echo - fi - ;; - '-kill') - cd bin - ./killbench - ;; - '-nogui') - cd bin - ./runbench - ;; - '-genfiles') - cd bin - ./genfiles - echo - echo "If no errors occurred, type './webstone' to run the benchmark." - echo - ;; - '-silent') - cd bin - ./runbench > /dev/null 2>&1 & - ;; - '-tail') - LATEST=$WEBSTONEROOT/bin/runs/`ls -1 $WEBSTONEROOT/bin/runs | tail -1`/run - tail -f $LATEST - ;; - '-results') - bin/wscollect.pl $2 bin/runs - ;; - - *) - $WEBSTONEROOT/webstone -nogui - ;; -esac - -# end diff --git a/apps/JAWS/remora/app/Makefile b/apps/JAWS/remora/app/Makefile deleted file mode 100755 index 1a75b69b87f..00000000000 --- a/apps/JAWS/remora/app/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -include stdmk - -EXE = test - -all: $(EXE) - -clean: - -rm -f core *~ *.o *_c.hh *_c.cc *_s.hh *_s.cc $(EXE) - -rm -rf Templates.DB - -remora_c.cc: remora.idl - $(ORBCC) remora.idl - -remora_s.cc: remora.idl - $(ORBCC) remora.idl - -test: remora_c.o Remora_Import.o Remora_Export.o test.o - $(CC) -o test test.o remora_c.o Remora_Import.o Remora_Export.o \ - $(LIBPATH) $(LIBORB) $(STDCC_LIBS) $(LIBACE) diff --git a/apps/JAWS/remora/app/Remora_Export.cc b/apps/JAWS/remora/app/Remora_Export.cc deleted file mode 100644 index e416ac83156..00000000000 --- a/apps/JAWS/remora/app/Remora_Export.cc +++ /dev/null @@ -1,93 +0,0 @@ -// $Id$ - -#include "Remora_Export.h" - - -Remora_Export::Remora_Export(const char* label, int value, int max_value) - : remora_agent_(0) -{ - this->stat_.value_ = value; - this->stat_.label_ = label; - this->stat_.max_ = max_value; - - this->init(); -} - -Remora_Export::Remora_Export(const Remora_Export& export) - : remora_agent_(export.remora_agent_) -{ - this->stat_.value_ = export.stat_.value_; - this->stat_.label_ = export.stat_.label_; - this->stat_.max_ = export.stat_.max_; -} - -Remora_Export::~Remora_Export() -{ - PMCTRY - { - if (this->remora_agent_ != 0) - { - this->remora_agent_->removeStatistic(this->stat_.label_); - this->remora_agent_->_release(); - } - } - PMCCATCH(remora::Invalid_Statistic, excp) - { - } - PMCAND_CATCH(CORBA::SystemException, excp) - { - CORBA::release(this->remora_agent_); - } - PMCEND_CATCH - -} - -void -Remora_Export::init() -{ - PMCTRY - { - int argc = 1; - char* argv[1]; - argv[0] = STATS_AGENT_NAME; - - CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); - - cout << this->stat_.label_ << " Binding to server..." << endl; - this->remora_agent_ = - remora::Remora_Statistics_Agent::_bind(STATS_AGENT_NAME); - - cout << this->stat_.label_ << " Registering Statistic..." << endl; - this->remora_agent_->acceptNewStatistic(this->stat_); - } - PMCCATCH(CORBA::Exception, excp) - { - cerr << excp << endl; - } - PMCEND_CATCH -} - -void -Remora_Export::update_value(int new_value) -{ - this->stat_.value_ = new_value; - - PMCTRY - { - cout << this->stat_.label_ << " Updating a value." << endl; - if (this->remora_agent_ != 0 && (! this->remora_agent_->_non_existent())) - this->remora_agent_->updateStatistic(this->stat_); - } - PMCCATCH(CORBA::SystemException, sysex) - { - cerr << sysex << endl; - this->remora_agent_->_release(); - this->remora_agent_ = 0; - } - PMCAND_CATCH(remora::Invalid_Statistic, excp) - { - cerr << excp << endl; - } - PMCEND_CATCH -} - diff --git a/apps/JAWS/remora/app/Remora_Export.h b/apps/JAWS/remora/app/Remora_Export.h deleted file mode 100644 index 379f3bb1a82..00000000000 --- a/apps/JAWS/remora/app/Remora_Export.h +++ /dev/null @@ -1,85 +0,0 @@ -// $Id - -// =================================================================== -// -// = FILENAME -// Remora_Export.h -// -// = AUTHOR -// Seth Widoff -// -// =================================================================== - - -#ifndef REMORA_EXPORT_H -#define REMORA_EXPORT_H - -#include <bstring.h> -#include "remora_c.hh" - -#define MAX_VALUE 100 -#define NO_NAME "Unnamed Statistic" -#define STATS_AGENT_NAME "Remora Statistics Agent" - -class Remora_Export -{ -public: - - Remora_Export(const char* label = NO_NAME, int value = 0, - int max_value = MAX_VALUE); - - Remora_Export(const Remora_Export& export); - - ~Remora_Export(); - - void operator=(const int new_value); - void operator=(const Remora_Export& export); - - void operator+=(const int new_value); - void operator+=(const Remora_Export& export); - - void operator*=(const int new_value); - void operator*=(const Remora_Export& export); - - void operator/=(const int new_value); - void operator/=(const Remora_Export& export); - - void operator-=(const int new_value); - void operator-=(const Remora_Export& export); - - operator CORBA::Long() const; - operator CORBA::Long&(); - - friend int operator==(const Remora_Export& me, const int new_value); - friend int operator==(const Remora_Export& me, const Remora_Export& export); - - friend int operator!=(const Remora_Export& me, const int new_value); - friend int operator!=(const Remora_Export& me, const Remora_Export& export); - - friend int operator<=(const Remora_Export& me, const int new_value); - friend int operator<=(const Remora_Export& me, const Remora_Export& export); - - friend int operator>=(const Remora_Export& me, const int new_value); - friend int operator>=(const Remora_Export& me, const Remora_Export& export); - - friend int operator<(const Remora_Export& me, const int new_value); - friend int operator<(const Remora_Export& me, const Remora_Export& export); - - friend int operator>(const Remora_Export& me, const int new_value); - friend int operator>(const Remora_Export& me, const Remora_Export& export); - -private: - - void init(); - - void update_value(int new_value); - - remora::Statistic stat_; - - remora::Remora_Statistics_Agent_ptr remora_agent_; - -}; - -#include "Remora_Export.i" - -#endif diff --git a/apps/JAWS/remora/app/Remora_Export.i b/apps/JAWS/remora/app/Remora_Export.i deleted file mode 100644 index f4b158721d2..00000000000 --- a/apps/JAWS/remora/app/Remora_Export.i +++ /dev/null @@ -1,146 +0,0 @@ -// $Id - -inline void -Remora_Export::operator=(const int new_value) -{ - this->update_value(new_value); -} - -inline void -Remora_Export::operator=(const Remora_Export& export) -{ - this->update_value(export.stat_.value_); -} - -inline void -Remora_Export::operator+=(const int new_value) -{ - this->update_value(this->stat_.value_ + new_value); -} - -inline void -Remora_Export::operator+=(const Remora_Export& export) -{ - this->update_value(this->stat_.value_ + export.stat_.value_); -} - -inline void -Remora_Export::operator-=(const int new_value) -{ - this->update_value(this->stat_.value_ - new_value); -} - -inline void -Remora_Export::operator-=(const Remora_Export& export) -{ - this->update_value(this->stat_.value_ - export.stat_.value_); -} - -inline void -Remora_Export::operator*=(const int new_value) -{ - this->update_value(this->stat_.value_ * new_value); -} - -inline void -Remora_Export::operator*=(const Remora_Export& export) -{ - this->update_value(this->stat_.value_ * export.stat_.value_); -} - -inline void -Remora_Export::operator/=(const int new_value) -{ - this->update_value(this->stat_.value_ / new_value); -} - -inline void -Remora_Export::operator/=(const Remora_Export& export) -{ - this->update_value(this->stat_.value_ / export.stat_.value_); -} - -inline -Remora_Export::operator CORBA::Long() const -{ - return this->stat_.value_; -} - -inline -Remora_Export::operator CORBA::Long&() -{ - return this->stat_.value_; -} - -inline int -operator==(const Remora_Export& me, const int new_value) -{ - return me.stat_.value_ == new_value; -} - -inline int -operator==(const Remora_Export& me, const Remora_Export& export) -{ - return me.stat_.value_ == export.stat_.value_; -} - -inline int -operator!=(const Remora_Export& me, const int new_value) -{ - return me.stat_.value_ != new_value; -} - -inline int -operator!=(const Remora_Export& me, const Remora_Export& export) -{ - return me.stat_.value_ != export.stat_.value_; -} - -inline int -operator<=(const Remora_Export& me, const int new_value) -{ - return me.stat_.value_ <= new_value; -} - -inline int -operator<=(const Remora_Export& me, const Remora_Export& export) -{ - return me.stat_.value_ <= export.stat_.value_; -} - -inline int -operator>=(const Remora_Export& me, const int new_value) -{ - return me.stat_.value_ >= new_value; -} - -inline int -operator>=(const Remora_Export& me, const Remora_Export& export) -{ - return me.stat_.value_ >= export.stat_.value_; -} - -inline int -operator<(const Remora_Export& me, const int new_value) -{ - return me.stat_.value_ < new_value; -} - -inline int -operator<(const Remora_Export& me, const Remora_Export& export) -{ - return me.stat_.value_ < export.stat_.value_; -} - -inline int -operator>(const Remora_Export& me, const int new_value) -{ - return me.stat_.value_ > new_value; -} - -inline int -operator>(const Remora_Export& me, const Remora_Export& export) -{ - return me.stat_.value_ > export.stat_.value_; -} - diff --git a/apps/JAWS/remora/app/Remora_Import.cc b/apps/JAWS/remora/app/Remora_Import.cc deleted file mode 100644 index c97451f0566..00000000000 --- a/apps/JAWS/remora/app/Remora_Import.cc +++ /dev/null @@ -1,109 +0,0 @@ -// $Id$ - -#include "Remora_Import.h" - -Remora_Import::Remora_Import(const char* label, int value, - int min_value, int max_value) - : remora_agent_(0) -{ - this->control_.value_ = value; - this->control_.label_ = label; - this->control_.max_ = max_value; - this->control_.min_ = min_value; - - this->init(); -} - -Remora_Import::Remora_Import(const Remora_Import& import) - : remora_agent_(import.remora_agent_) -{ - this->control_.value_ = import.control_.value_; - this->control_.label_ = import.control_.label_; - this->control_.max_ = import.control_.max_; - this->control_.min_ = import.control_.min_; -} - -Remora_Import::~Remora_Import() -{ - PMCTRY - { - if (this->remora_agent_ != 0) - { - this->remora_agent_->removeControl(this->control_.label_); - this->remora_agent_->_release(); - } - } - PMCCATCH(remora::Invalid_Statistic, excp) - { - cerr << "Tried to remove invalid statistic."; - } - PMCAND_CATCH(CORBA::SystemException, excp) - { - CORBA::release(this->remora_agent_); - } - PMCEND_CATCH -} - -void -Remora_Import::init() -{ - PMCTRY - { - int argc = 1; - char* argv[1]; - argv[0] = CONTROL_AGENT_NAME; - - CORBA::ORB_var orb = CORBA::ORB_init(argc, argv); - - cout << this->control_.label_ << " Binding to server..." << endl; - this->remora_agent_ = - remora::Remora_Controls_Agent::_bind(CONTROL_AGENT_NAME); - - cout << this->control_.label_ << " Registering Control..." << endl; - this->remora_agent_->acceptNewControl(this->control_); - } - PMCCATCH(CORBA::Exception, excp) - { - cerr << excp << endl; - } - PMCEND_CATCH -} - -CORBA::Long -Remora_Import::grab_value(void) -{ - PMCTRY - { - if (this->remora_agent_ != 0) - { - cout << this->control_.label_ << " Grabbing a value from the client." << endl; - this->remora_agent_->getControlState(this->control_); - } - - // C++ exception handling needs a 'finally' construct - return this->control_.value_; - } - PMCCATCH(CORBA::SystemException, sysex) - { - cerr << sysex << endl; - this->remora_agent_->_release(); - this->remora_agent_ = 0; - - return this->control_.value_; - } - PMCAND_CATCH(remora::Invalid_Control, excp) - { - PMCTRY - { - this->remora_agent_->acceptNewControl(this->control_); - } - PMCCATCH(CORBA::SystemException, sysex2) - { - return this->control_.value_; - } - PMCEND_CATCH - - return this->control_.value_; - } - PMCEND_CATCH -} diff --git a/apps/JAWS/remora/app/Remora_Import.h b/apps/JAWS/remora/app/Remora_Import.h deleted file mode 100644 index 8cfecd84ac4..00000000000 --- a/apps/JAWS/remora/app/Remora_Import.h +++ /dev/null @@ -1,69 +0,0 @@ -// $Id - -// =================================================================== -// -// = FILENAME -// Remora_Import.h -// -// = AUTHOR -// Seth Widoff -// -// =================================================================== - -#ifndef REMORA_IMPORT_H -#define REMORA_IMPORT_H - -#include <bstring.h> -#include "remora_c.hh" - -#define NO_NAME "Unnamed Statistic" -#define MAX_VALUE 100 -#define CONTROL_AGENT_NAME "Remora Controls Agent" - -class Remora_Import -{ -public: - - Remora_Import(const char * label = NO_NAME, int value = 0, - int min_value = 0, int max_value = MAX_VALUE); - - Remora_Import(const Remora_Import& import); - - ~Remora_Import(); - - CORBA::Long get(void); - - operator CORBA::Long(); - - friend int operator==( Remora_Import& me, int new_value); - friend int operator==( Remora_Import& me, Remora_Import& export); - - friend int operator!=( Remora_Import& me, int new_value); - friend int operator!=( Remora_Import& me, Remora_Import& export); - - friend int operator<=( Remora_Import& me, int new_value); - friend int operator<=( Remora_Import& me, Remora_Import& export); - - friend int operator>=( Remora_Import& me, int new_value); - friend int operator>=( Remora_Import& me, Remora_Import& export); - - friend int operator<( Remora_Import& me, int new_value); - friend int operator<( Remora_Import& me, Remora_Import& export); - - friend int operator>( Remora_Import& me, int new_value); - friend int operator>( Remora_Import& me, Remora_Import& export); - -private: - - void init(); - - CORBA::Long grab_value(); - - remora::Control control_; - - remora::Remora_Controls_Agent_ptr remora_agent_; - -}; - -#include "Remora_Import.i" -#endif diff --git a/apps/JAWS/remora/app/Remora_Import.i b/apps/JAWS/remora/app/Remora_Import.i deleted file mode 100644 index 48fc01f3ed7..00000000000 --- a/apps/JAWS/remora/app/Remora_Import.i +++ /dev/null @@ -1,85 +0,0 @@ -// $Id - -inline -Remora_Import::operator CORBA::Long() -{ - return this->grab_value(); -} - -inline CORBA::Long -Remora_Import::get(void) -{ - return this->grab_value(); -} - -inline int -operator==( Remora_Import& me, int new_value) -{ - return me.grab_value() == new_value; -} - -inline int -operator==( Remora_Import& me, Remora_Import& import) -{ - return me.grab_value() == import.grab_value(); -} - -inline int -operator!=( Remora_Import& me, int new_value) -{ - return me.grab_value() != new_value; -} - -inline int -operator!=( Remora_Import& me, Remora_Import& import) -{ - return me.grab_value() != import.grab_value(); -} - -inline int -operator<=( Remora_Import& me, int new_value) -{ - return me.grab_value() <= new_value; -} - -inline int -operator<=( Remora_Import& me, Remora_Import& import) -{ - return me.grab_value() <= import.grab_value(); -} - -inline int -operator>=( Remora_Import& me, int new_value) -{ - return me.grab_value() >= new_value; -} - -inline int -operator>=( Remora_Import& me, Remora_Import& import) -{ - return me.grab_value() >= import.grab_value(); -} - -inline int -operator<( Remora_Import& me, int new_value) -{ - return me.grab_value() < new_value; -} - -inline int -operator<( Remora_Import& me, Remora_Import& import) -{ - return me.grab_value() < import.grab_value(); -} - -inline int -operator>( Remora_Import& me, int new_value) -{ - return me.grab_value() > new_value; -} - -inline int -operator>( Remora_Import& me, Remora_Import& import) -{ - return me.grab_value() > import.grab_value(); -} diff --git a/apps/JAWS/remora/app/remora.idl b/apps/JAWS/remora/app/remora.idl deleted file mode 100644 index 4f6c8713099..00000000000 --- a/apps/JAWS/remora/app/remora.idl +++ /dev/null @@ -1,100 +0,0 @@ -// $Id - -// =================================================================== -// -// = FILENAME -// remora.idl -// -// = AUTHOR -// Seth Widoff -// -// =================================================================== - -// The IDL interface for the published Remora interfaces. - -module remora -{ - struct Statistic - { - string label_; - long value_; - long max_; - }; - - struct Control - { - string label_; - long value_; - long min_; - long max_; - }; - - typedef long Token; - typedef sequence<Statistic> Statistics_List; - typedef sequence<Control> Controls_List; - - exception Invalid_Statistic {}; - exception Invalid_Control {}; - - interface Statistics_Update - { - void acceptNewStatistic(in Statistic stat) raises (Invalid_Statistic); - - void updateStatistic(in Statistic stat) raises (Invalid_Statistic); - - void removeStatistic(in string label) raises (Invalid_Statistic); - }; - - interface Controls_Update - { - void acceptNewControl(in Control control) raises (Invalid_Control); - - void getControlState(inout Control control) raises (Invalid_Control); - - void removeControl(in string label) raises (Invalid_Control); - }; - - // Located in an applet, the client receives and displays - // statistics from the server. - interface Remora_Statistics_Client : Statistics_Update - { - oneway void acceptManyStatistics(in Statistics_List stats, in long length); - - oneway void updateManyStatistics(in Statistics_List stats, in long length); - // Update all statistics registered with the client - - oneway void shutdownStatistics(); - // Suggest that the client shut itself down - }; - - interface Remora_Controls_Client : Controls_Update - { - oneway void acceptManyControls(in Controls_List controls, in long length); - // Deliver many new controls to the client. - - oneway void shutdownControls(); - }; - - // Located on the server side, the Agent delivers statistics to - // registered clients. - interface Remora_Statistics_Agent : Statistics_Update - { - oneway void setFrequency(in long id, in long update_time); - // Set the frequency at which the Agent will transmit - // the statistics to the clients. - - long registerClient(in Remora_Statistics_Client client, in long update_time); - // Register a client for periodic updates. - - oneway void terminateRegistration(in long client_id); - // Unregister the client from the server. - }; - - interface Remora_Controls_Agent : Controls_Update - { - Token grabControlLock(in Remora_Controls_Client client); - - void releaseControlLock(in Token token); - }; -}; - diff --git a/apps/JAWS/remora/app/stdmk b/apps/JAWS/remora/app/stdmk deleted file mode 100755 index c966f9ef9fc..00000000000 --- a/apps/JAWS/remora/app/stdmk +++ /dev/null @@ -1,40 +0,0 @@ -CC = CC -DEBUG = - -DOVE = /project/waltz/seth/doc/dove - -ACE_DIR = /project/waltz/seth/ACE_wrappers - -ORBELINEDIR = /project/waltz/Orbeline2.0 - -STL_DIR = /project/flamenco/irfan/STL/work-in-progress/Solaris-port.STL/Microsoft/STL - -ORBCC = $(ORBELINEDIR)/bin/orbeline -v _c -m _s -S exceptions - -CCINCLUDES = -I. -I$(ORBELINEDIR)/include -I$(STL_DIR) -I$(ACE_DIR) - -CCFLAGS = -g $(CCINCLUDES) $(DEBUG) - -LIBPATH = -L$(ORBELINEDIR)/lib -L$(ACE_DIR)/ace - -STDCC_LIBS = -lsocket -lnsl -ldl -mt - -LIBORB = -lorb - -LIBACE = -lACE - -.SUFFIXES: .C .o .h .hh .cc .cpp - -.C.o: - $(CC) $(CCFLAGS) -c -o $@ $< - -.cc.o: - $(CC) $(CCFLAGS) -c -o $@ $< - -.C.cpp: - $(CC) -E $(CCFLAGS) $< > $@ - -.cc.cpp: - $(CC) -E $(CCFLAGS) $< > $@ - - diff --git a/apps/JAWS/remora/app/test.cc b/apps/JAWS/remora/app/test.cc deleted file mode 100644 index 76158aac5a5..00000000000 --- a/apps/JAWS/remora/app/test.cc +++ /dev/null @@ -1,77 +0,0 @@ -// $Id - -#include <unistd.h> -#include <stdlib.h> -#include <iostream.h> -#include "ace/Signal.h" -#include "Remora_Export.h" -#include "Remora_Import.h" - -class Shutdown : public ACE_Event_Handler -{ -public: - Shutdown(int& cond) : cond_(cond) {} - - virtual int handle_signal(int, siginfo*, ucontext*) - { - this->cond_ = 0; - return 0; - } - -private: - - int& cond_; -}; - - -int -main(int argc, char** argv) -{ - int lcv = 1; - ACE_Sig_Handler shutdown; - - shutdown.register_handler(SIGINT, new Shutdown(lcv)); - - try - { - Remora_Export cpu("CPU Usage", 0, 100); - Remora_Export thread("Thread Count", 0, 24); - Remora_Export through("Throughput", 0, 150); - Remora_Export energy("Energy Levels", 0, 2084); - Remora_Export warp("Warp Drive Output", 0, 1023); - - Remora_Import in_threads("Threads", 1, 0, 24); - Remora_Import in_tachyon("Tachyon Emmissions", 25, 0, 100); - Remora_Import in_shields("Shield Integrity", 100, 0, 100); - Remora_Import in_phasers("Phaser Power", 421, 0, 1024); - - while (lcv) - { - cpu = rand() % 100; - thread = rand() % 24; - energy = rand() % 2084; - through = rand() % 150; - warp = rand() % 1023; - - cout << "Statistics: " << endl; - cout << "CPU: " << CORBA::Long(cpu) << endl; - cout << "Thread: " << CORBA::Long(thread) << endl; - cout << "Throughput: " << CORBA::Long(through) << endl; - cout << "Energy: " << CORBA::Long(energy) << endl; - cout << "Warp: " << CORBA::Long(cpu) << endl; - - cout << "Controls: " << endl; - cout << "Threads: " << CORBA::Long(in_threads) << endl; - cout << "Tachyon: " << CORBA::Long(in_tachyon) << endl; - cout << "Shields: " << CORBA::Long(in_shields) << endl; - cout << "Phasers: " << CORBA::Long(in_phasers) << endl; - - sleep(1); - } - } - catch(CORBA::SystemException& e) - { - - cerr << e << endl; - } -} diff --git a/apps/JAWS/server/HTTP_Config.cpp b/apps/JAWS/server/HTTP_Config.cpp deleted file mode 100644 index 62e496bbd3e..00000000000 --- a/apps/JAWS/server/HTTP_Config.cpp +++ /dev/null @@ -1,137 +0,0 @@ -// HTTP_Config.cpp -// $Id$ - -#include "ace/OS.h" -#include "HTTP_Config.h" - -// static HTTP_Config_Info config_info; - -HTTP_Config_Info *HTTP_Config::instance_ = 0; - -HTTP_Config_Info * -HTTP_Config::instance (void) -{ - if (HTTP_Config::instance_ == 0) - { - HTTP_Config::instance_ = new HTTP_Config_Info; - - HTTP_Config::instance_->document_root (0); - HTTP_Config::instance_->cgi_path (0); - HTTP_Config::instance_->user_dir (0); - HTTP_Config::instance_->dir_index (0); - HTTP_Config::instance_->proxy_flag (0); - } - - return HTTP_Config::instance_; -} - -HTTP_Config_Info::HTTP_Config_Info (void) - : document_root_ (0), - cgi_path_ (0), - user_dir_ (0), - dir_index_ (0), - proxy_flag_ (0) -{ -} - -HTTP_Config_Info::~HTTP_Config_Info (void) -{ -} - -const char * -HTTP_Config_Info::document_root (void) const -{ - return this->document_root_; -} - -const char * -HTTP_Config_Info::cgi_path (void) const -{ - return this->cgi_path_; -} - -const char * -HTTP_Config_Info::user_dir (void) const -{ - return this->user_dir_; -} - -const char * -HTTP_Config_Info::dir_index (void) const -{ - return this->dir_index_; -} - -int -HTTP_Config_Info::proxy_flag (void) const -{ - return this->proxy_flag_; -} - -char * -HTTP_Config_Info::document_root (char *dr_string) -{ - if (dr_string) - this->document_root_ = dr_string; - else - { - this->document_root_ = ACE_OS::getenv ("JAWS_DOCUMENT_ROOT"); - if (!this->document_root_) - this->document_root_ = "."; - } - - return this->document_root_; -} - -char * -HTTP_Config_Info::cgi_path (char *cp_string) -{ - if (cp_string) - this->cgi_path_ = cp_string; - else - { - this->cgi_path_ = ACE_OS::getenv ("JAWS_CGI_PATH"); - - if (!this->cgi_path_) - this->cgi_path_ = "cgi-bin"; - } - - return this->cgi_path_; -} - -char * -HTTP_Config_Info::user_dir (char *ud_string) -{ - if (ud_string) - this->user_dir_ = ud_string; - else - { - this->user_dir_ = ACE_OS::getenv ("JAWS_USER_DIR"); - if (!this->user_dir_) - this->user_dir_ = ".www"; - } - - return this->user_dir_; -} - -char * -HTTP_Config_Info::dir_index (char *di_string) -{ - if (di_string) - this->dir_index_ = di_string; - else - { - this->dir_index_ = ACE_OS::getenv ("JAWS_DIR_INDEX"); - if (!this->dir_index_) - this->dir_index_ = "index.html"; - } - - return this->dir_index_; -} - -int -HTTP_Config_Info::proxy_flag (int pf) -{ - this->proxy_flag_ = pf; - return this->proxy_flag_; -} diff --git a/apps/JAWS/server/HTTP_Config.h b/apps/JAWS/server/HTTP_Config.h deleted file mode 100644 index fc8adacb0a1..00000000000 --- a/apps/JAWS/server/HTTP_Config.h +++ /dev/null @@ -1,95 +0,0 @@ -/* -*- c++ -*- */ -// Hey, Emacs! This is a C++ file! -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// jaws -// -// = FILENAME -// HTTP_Config.h -// -// = AUTHOR -// James Hu -// -// ============================================================================ - -// = Forward declaration. -class HTTP_Config_Info; - -class HTTP_Config - // = TITLE - // Stores server configuration information. - // Someday, this will be hip and cool and be able to parse - // NCSA httpd style config files like Apache does. For now, - // I'm just going to hack in environment variable stuff. - // - // Designed around Singleton pattern. -{ -public: - static HTTP_Config_Info *instance (void); - // Access the Singleton. - -private: - static HTTP_Config_Info *instance_; - // Store the Singleton. -}; - -class HTTP_Config_Info - // = TITLE - // This is where the information is really stored. -{ -friend class HTTP_Config; -public: - HTTP_Config_Info (void); - ~HTTP_Config_Info (void); - - // Accessors to the information - - const char *document_root (void) const; - // Where the root of the document tree begins. This prevents - // clients from being able to examine your entire filesystem. - - const char *cgi_path (void) const; - // A search path for CGI files. - - const char *user_dir (void) const; - // The directory which is appended to a home user directory, e.g., - // ".www-docs" or "public_html". - - const char *dir_index (void) const; - // What is the default index file for a directory, e.g., - // "index.html". - - int proxy_flag (void) const; - // Will the server support proxy requests? - -private: - // = Accesors that can set the data - - char *document_root (char *dr_string); - char *cgi_path (char *cp_string); - char *user_dir (char *ud_string); - char *dir_index (char *di_string); - - int proxy_flag (int pf); - -private: - // = Data members - - char *document_root_; - // The directory root from which documents will be fetched - - char *cgi_path_; - // The directories from which to expect CGI scripts - - char *user_dir_; - // Name of the sub-directory where user Web pages are - - char *dir_index_; - // Name of the Web page to present in place of a directory listing - - int proxy_flag_; - // Should we support proxy requests? Ignored for now. -}; diff --git a/apps/JAWS/server/HTTP_Handler.cpp b/apps/JAWS/server/HTTP_Handler.cpp deleted file mode 100644 index 8714105ffd4..00000000000 --- a/apps/JAWS/server/HTTP_Handler.cpp +++ /dev/null @@ -1,287 +0,0 @@ -// $Id$ - -// HTTP_Service.cpp -- simple implementation of the HTTP protocol - -#include "ace/Message_Block.h" -#include "ace/Filecache.h" - -#include "HTTP_Handler.h" -#include "HTTP_Helpers.h" -#include "IO.h" - -HTTP_Handler::HTTP_Handler (JAWS_IO &io, - HTTP_Handler_Factory &factory) - : factory_ (factory), - request_data_ (0), - handle_ (ACE_INVALID_HANDLE), - response_ (io, request_), - io_ (io) -{ - this->io_.handler (this); -} - -HTTP_Handler::~HTTP_Handler (void) -{ - this->request_data_->release (); - this->request_data_ = 0; -} - -void -HTTP_Handler::open (ACE_HANDLE handle, - ACE_Message_Block &initial_data) -{ - ACE_DEBUG ((LM_DEBUG, "(%t) New connection \n")); - - int sockbufsize = HTTP_Handler::MAX_SOCKBUFSIZE; - int result = ACE_OS::setsockopt (handle, - SOL_SOCKET, - SO_RCVBUF, - (char *) &sockbufsize, - sizeof sockbufsize); - - if (result == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "SO_RCVBUF")); - - sockbufsize = HTTP_Handler::MAX_SOCKBUFSIZE; - - result = ACE_OS::setsockopt (handle, - SOL_SOCKET, - SO_SNDBUF, - (char *) &sockbufsize, - sizeof sockbufsize); - if (result == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "SO_SNDBUF")); - - this->handle_ = handle; - this->io_.handle (this->handle_); - - this->request_data_ = initial_data.duplicate (); - this->read_complete (initial_data); -} - -void -HTTP_Handler::read_complete (ACE_Message_Block &message_block) -{ - // This is actually a callback entry point. The JAWS_IO framework - // calls into this method after some data has been read in. - - switch (this->request_.parse_request (message_block)) - { - case 0: - do - { - int next_read_size - = HTTP_Handler::MAX_REQUEST_SIZE - message_block.length (); - - if (next_read_size == 0) - { - this->request_too_long (); - return; - } - - this->io_.read (message_block, next_read_size); - } - while (0); - break; - - default: - // this->request_.respond (); - this->response_.process_request (); - } -} - -void -HTTP_Handler::receive_file_complete (void) -{ - ACE_DEBUG ((LM_DEBUG, " (%t) %s received successfully\n", - request_.uri ())); - - char buffer[BUFSIZ]; - int buflen = - ACE_OS::sprintf (buffer, - "%s %d %s\r\n", - this->request_.version (), - HTTP_Status_Code::STATUS_OK, - "Successful"); - - this->io_.send_confirmation_message (buffer, buflen); -} - -void -HTTP_Handler::receive_file_error (int result) -{ - ACE_DEBUG ((LM_DEBUG, " (%t) %s error in receiving file\n", - request_.uri ())); - - char buffer[BUFSIZ]; - - int status_code; - switch (result) - { - case ACE_Filecache_Handle::ACCESS_FAILED: - case ACE_Filecache_Handle::WRITE_FAILED: - case ACE_Filecache_Handle::OPEN_FAILED: - status_code = HTTP_Status_Code::STATUS_NOT_FOUND; - break; - case ACE_Filecache_Handle::COPY_FAILED: - case ACE_Filecache_Handle::STAT_FAILED: - case ACE_Filecache_Handle::MEMMAP_FAILED: - status_code = HTTP_Status_Code::STATUS_FORBIDDEN; - break; - default: - status_code = HTTP_Status_Code::STATUS_INTERNAL_SERVER_ERROR; - break; - } - int buflen = - ACE_OS::sprintf (buffer, - "%s %d %s", - this->request_.version (), - status_code, - "Failed"); - - this->io_.send_confirmation_message (buffer, buflen); -} - -void -HTTP_Handler::confirmation_message_complete (void) -{ - this->done (); -} - -void -HTTP_Handler::error_message_complete (void) -{ - this->done (); -} - -void -HTTP_Handler::transmit_file_complete (void) -{ - ACE_DEBUG ((LM_DEBUG, " (%t) %s transmitted successfully\n", - request_.uri ())); - - this->done (); -} - -void -HTTP_Handler::transmit_file_error (int result) -{ - ACE_DEBUG ((LM_DEBUG, - " (%t) %s error in transmitting file\n", - request_.uri ())); - - int status_code; - - switch (result) - { - case ACE_Filecache_Handle::ACCESS_FAILED: - case ACE_Filecache_Handle::WRITE_FAILED: - case ACE_Filecache_Handle::OPEN_FAILED: - status_code = HTTP_Status_Code::STATUS_NOT_FOUND; - break; - case ACE_Filecache_Handle::COPY_FAILED: - case ACE_Filecache_Handle::STAT_FAILED: - case ACE_Filecache_Handle::MEMMAP_FAILED: - status_code = HTTP_Status_Code::STATUS_FORBIDDEN; - break; - default: - status_code = HTTP_Status_Code::STATUS_INTERNAL_SERVER_ERROR; - break; - } - - this->response_.error_response (status_code, "error in transmitting file"); -} - -void -HTTP_Handler::read_error (void) -{ - ACE_DEBUG ((LM_DEBUG, " (%t) error in reading request\n")); - this->done (); -} - -void -HTTP_Handler::write_error (void) -{ - ACE_DEBUG ((LM_DEBUG, " (%t) %s error in writing response\n", - request_.uri ())); - - this->done (); -} - -void -HTTP_Handler::timeout (void) -{ - ACE_DEBUG ((LM_DEBUG, " (%t) %s error in reading request\n", - request_.uri ())); - - this->response_. - error_response (HTTP_Status_Code::STATUS_INTERNAL_SERVER_ERROR, - "error in reading request"); -} - -void -HTTP_Handler::request_too_long (void) -{ - ACE_DEBUG ((LM_DEBUG, " (%t) request too long\n")); - this->response_. - error_response (HTTP_Status_Code::STATUS_BAD_REQUEST, - "request too long"); -} - -void -HTTP_Handler::done (void) -{ - this->factory_.destroy_http_handler (*this, this->io_); -} - -HTTP_Handler_Factory::~HTTP_Handler_Factory (void) -{ -} - -HTTP_Handler * -Synch_HTTP_Handler_Factory::create_http_handler (void) -{ - JAWS_Synch_IO *io; - ACE_NEW_RETURN (io, JAWS_Synch_IO, 0); - HTTP_Handler *handler; - ACE_NEW_RETURN (handler, HTTP_Handler (*io, *this), 0); - - return handler; -} - -void -Synch_HTTP_Handler_Factory::destroy_http_handler (HTTP_Handler &handler, - JAWS_IO &io) -{ - delete &handler; - delete &io; -} - -// This only works on Win32 -#if defined (ACE_WIN32) -void -Asynch_HTTP_Handler_Factory::open (ACE_HANDLE handle, - ACE_Message_Block &mb) -{ - JAWS_Asynch_IO *io; - ACE_NEW (io, JAWS_Asynch_IO); - HTTP_Handler *handler; - ACE_NEW (handler, HTTP_Handler (*io, *this)); - handler->open (handle, mb); -} - -void -Asynch_HTTP_Handler_Factory::destroy_http_handler (HTTP_Handler &handler, - JAWS_IO &io) -{ - delete &handler; - delete &io; - delete this; -} - -HTTP_Handler * -Asynch_HTTP_Handler_Factory::create_http_handler (void) -{ - return 0; -} -#endif /* ACE_WIN32 */ diff --git a/apps/JAWS/server/HTTP_Handler.h b/apps/JAWS/server/HTTP_Handler.h deleted file mode 100644 index 0865ee326ae..00000000000 --- a/apps/JAWS/server/HTTP_Handler.h +++ /dev/null @@ -1,191 +0,0 @@ -/* -*- c++ -*- */ -// Hey, Emacs! This is a C++ file! -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// jaws -// -// = FILENAME -// HTTP_Handler.h -// -// = AUTHOR -// James Hu and Irfan Pyarali -// -// ============================================================================ - -#if !defined (HTTP_HANDLER_H) -#define HTTP_HANDLER_H - -// = Forward declarations -class Message_Block; -class HTTP_Handler_Factory; - -#include "ace/Asynch_IO.h" -#include "HTTP_Request.h" -#include "HTTP_Response.h" -#include "IO.h" - -class HTTP_Handler : protected JAWS_IO_Handler - // = TITLE - // - // This class is used to implement the HTTP protocol - // - // = DESCRIPTION - // - // The HTTP_Handler class is a state based implementation of the - // HTTP protocol. Therefore, it can be used synchronously and - // asynchronously. It uses an abstract IO class to move between - // different HTTP protocol states. It is up to the IO class to - // decide on synchronous or asynchronous I/O. -{ - // Friend I/O classes. Can call protected methods. - friend class JAWS_Synch_IO; - friend class JAWS_Asynch_IO; - - // Factories - friend class Asynch_HTTP_Handler_Factory; - friend class Synch_HTTP_Handler_Factory; - -public: - virtual void open (ACE_HANDLE handle, - ACE_Message_Block &initial_data); - // The handler is initialized with a connection <handle> of a new - // client and any <initial_data> that came across. The - // <initial_data> block will be of MAX_REQUEST_SIZE and the number - // of bytes in <initial_data> can be found from - // <initial_data>.length () - -protected: - HTTP_Handler (JAWS_IO &io, - HTTP_Handler_Factory &factory); - // The constructor is passed the factory that created <this> and the - // IO mechanism that the handler should use. - - virtual ~HTTP_Handler (void); - // Destructor - - virtual void timeout (void); - // This method is called by the framework when there is a timeout. - - virtual void done (void); - // This is the termination state of the handler. After successful or - // unsuccessful completions, the handler will end up in this state - // (method). - - virtual void request_too_long (void); - // Request too long. - - HTTP_Handler_Factory &factory_; - // Reference to the creating factory. - -protected: - // = Completion methods inherited from <JAWS_IO_Handler>. - - virtual void read_complete (ACE_Message_Block &data); - virtual void read_error (void); - virtual void transmit_file_complete (void); - virtual void transmit_file_error (int result); - virtual void receive_file_complete (void); - virtual void receive_file_error (int result); - virtual void write_error (void); - virtual void confirmation_message_complete (void); - virtual void error_message_complete (void); - -public: - enum - { - MAX_SOCKBUFSIZE = 64 * 1024, - MAX_REQUEST_SIZE = 8192, - METHODSIZ = 10, - VERSIONSIZ = 10 - }; - -private: - ACE_Message_Block *request_data_; - // This points to the request sent by the client - - ACE_HANDLE handle_; - // I/O handle to the client - - HTTP_Request request_; - HTTP_Response response_; - - JAWS_IO &io_; - // IO class used by the handler -}; - -class HTTP_Handler_Factory - // = TITLE - // - // This class is used to create new HTTP handlers - // - // = DESCRIPTION - // - // This is an abstract factory for creating new HTTP handlers. -{ -public: - virtual ~HTTP_Handler_Factory (void); - // Destructor - - virtual HTTP_Handler *create_http_handler (void) = 0; - // This creates a new HTTP_Handler - - virtual void destroy_http_handler (HTTP_Handler &handler, - JAWS_IO &io) = 0; - // The HTTP handler will call this method from HTTP_Handler::done to - // tell the factory to reap up the handler as it is now done with - // the protocol -}; - -class Synch_HTTP_Handler_Factory : public HTTP_Handler_Factory - // = TITLE - // - // This class is used to create new HTTP handlers that will use - // Synch IO - // - // = DESCRIPTION -{ -public: - HTTP_Handler *create_http_handler (void); - // This creates a new HTTP_Handler - - void destroy_http_handler (HTTP_Handler &handler, - JAWS_IO &io); - // The HTTP handler will call this method from HTTP_Handler::done to - // tell the factory to reap up the handler as it is now done with - // the protocol -}; - -#if defined (ACE_WIN32) -class Asynch_HTTP_Handler_Factory : public HTTP_Handler_Factory, public ACE_Service_Handler - // = TITLE - // This class is used to create new HTTP handlers that will use - // Asynchronous IO. This only works on Win32. - // - // = DESCRIPTION -{ -public: - void destroy_http_handler (HTTP_Handler &handler, - JAWS_IO &io); - // The HTTP handler will call this method from HTTP_Handler::done to - // tell the factory to reap up the handler as it is now done with - // the protocol - - virtual void open (ACE_HANDLE handle, - ACE_Message_Block &message_block); - // <open> is called by <ACE_Asynch_Acceptor> to initialize a new - // instance of ACE_Service_Handler that has been created after the a - // new connection is accepted. - // - // This will act as a creation point for new handlers. - -private: - HTTP_Handler *create_http_handler (void); - // This method is private as users are not allowed to create new - // handlers. New handlers can only be created by the framework when - // new client connections arrive. -}; -#endif /* ACE_WIN32 */ -#endif /* HTTP_HANDLER_H */ diff --git a/apps/JAWS/server/HTTP_Helpers.cpp b/apps/JAWS/server/HTTP_Helpers.cpp deleted file mode 100644 index 8386921f98b..00000000000 --- a/apps/JAWS/server/HTTP_Helpers.cpp +++ /dev/null @@ -1,429 +0,0 @@ -// $Id$ - -// HTTP_Helpers.cpp -- Helper utilities for both server and client - -#include "HTTP_Helpers.h" - -// = Static initialization. -const char *const -HTTP_Helper::months_[12]= -{ - "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" -}; - -char const *HTTP_Helper::alphabet_ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -char * HTTP_Helper::date_string_ = 0; -ACE_SYNCH_MUTEX HTTP_Helper::mutex_; - -ACE_SYNCH_MUTEX HTTP_Status_Code::lock_; -int HTTP_Status_Code::instance_ = 0; -const char *HTTP_Status_Code::Reason[HTTP_Status_Code::MAX_STATUS_CODE + 1]; - -time_t -HTTP_Helper::HTTP_mktime (const char *httpdate) -{ - char *buf; - - ACE_NEW_RETURN (buf, char[ACE_OS::strlen (httpdate) + 1], (time_t) -1); - - // Make spaces in the date be semi-colons so we can parse robustly - // with sscanf. - - const char *ptr1 = httpdate; - char *ptr2 = buf; - - do - { - if (*ptr1 == ' ') - *ptr2++ = ';'; - else - *ptr2++ = *ptr1; - } - while (*ptr1++ != '\0'); - - // In HTTP/1.0, there are three versions of an HTTP_date. - - // rfc1123-date = wkday "," SP dd month yyyy SP hh:mm:ss SP "GMT" - // rfc850-date = weekday "," SP dd-month-yy SP hh:mm:ss SP "GMT" - // asctime-date = wkday SP month dd SP hh:mm:ss SP yyyy - - const char *rfc1123_date = "%3s,;%2d;%3s;%4d;%2d:%2d:%2d;GMT"; - const char *rfc850_date = "%s,;%2d-%3s-%2d;%2d:%2d:%2d;GMT"; - const char *asctime_date = "%3s;%3s;%2d;%2d:%2d:%2d;%4d"; - - // Should also support other versions (such as from NNTP and SMTP) - // for robustness, but it should be clear how to extend this. - - struct tm tms; - char month[4]; - char weekday[10]; - - if (::sscanf(buf, rfc1123_date, - weekday, - &tms.tm_mday, - month, - &tms.tm_year, - &tms.tm_hour, - &tms.tm_min, - &tms.tm_sec) == 7) - ; - else if (::sscanf(buf, rfc850_date, - weekday, - &tms.tm_mday, month, &tms.tm_year, - &tms.tm_hour, &tms.tm_min, &tms.tm_sec) == 7) - { - weekday[3] = '\0'; - } - else if (::sscanf(buf, asctime_date, - weekday, - month, &tms.tm_mday, - &tms.tm_hour, &tms.tm_min, &tms.tm_sec, - &tms.tm_year) == 7) - ; - - delete buf; - - tms.tm_year = HTTP_Helper::fixyear (tms.tm_year); - tms.tm_mon = HTTP_Helper::HTTP_month (month); - - if (tms.tm_mon == -1) - return (time_t) -1; - - // mktime is a Standard C function. - { - -#if !defined (ACE_HAS_REENTRANT_LIBC) - ACE_MT (ACE_Guard<ACE_SYNCH_MUTEX> g (HTTP_Helper::mutex_)); -#endif /* NOT ACE_HAS_REENTRANT_LIBC */ - - return ACE_OS::mktime (&tms); - } -} - -const char * -HTTP_Helper::HTTP_date (void) -{ - if (HTTP_Helper::date_string_ == 0) - { - ACE_MT (ACE_Guard<ACE_SYNCH_MUTEX> m (HTTP_Helper::mutex_)); - - time_t tloc; - struct tm tms; - - if (HTTP_Helper::date_string_ == 0) - { - // 40 bytes is all I need. - HTTP_Helper::date_string_ = new char[40]; - - if (ACE_OS::time (&tloc) != (time_t) -1 - && ACE_OS::gmtime_r (&tloc, &tms) != NULL) - ACE_OS::strftime (HTTP_Helper::date_string_, 40, - "%a, %d %b %Y %T GMT", &tms); - else - { - delete [] HTTP_Helper::date_string_; - HTTP_Helper::date_string_ = 0; - } - } - } - - return HTTP_Helper::date_string_; -} - -const char * -HTTP_Helper::HTTP_date (char *s) -{ - time_t tloc; - struct tm tms; - char * date_string = s; - - if (ACE_OS::time (&tloc) != (time_t) -1 - && ACE_OS::gmtime_r (&tloc, &tms) != NULL) - ACE_OS::strftime (date_string, 40, "%a, %d %b %Y %T GMT", &tms); - else - date_string = 0; - - return date_string; -} - -int -HTTP_Helper::HTTP_month (const char *month) -{ - for (size_t i = 0; i < 12; i++) - if (ACE_OS::strcmp(month, HTTP_Helper::months_[i]) == 0) - return i; - - return -1; -} - -const char * -HTTP_Helper::HTTP_month (int month) -{ - if (month < 0 || month >= 12) - return 0; - - return HTTP_Helper::months_[month]; -} - -// Fix the path if it needs fixing/is fixable. - -char * -HTTP_Helper::HTTP_decode_string (char *path) -{ - // replace the percentcodes with the actual character - int i, j; - char percentcode[3]; - - for (i = j = 0; path[i] != '\0'; i++, j++) - { - if (path[i] == '%') - { - percentcode[0] = path[++i]; - percentcode[1] = path[++i]; - percentcode[2] = '\0'; - path[j] = (char) ACE_OS::strtol (percentcode, (char **) 0, 16); - } - else - path[j] = path[i]; - } - - path[j] = path[i]; - - return path; -} - -char * -HTTP_Helper::HTTP_decode_base64 (char *data) -{ - char inalphabet[256], decoder[256]; - - ACE_OS::memset (inalphabet, 0, sizeof (inalphabet)); - ACE_OS::memset (decoder, 0, sizeof (decoder)); - - for (int i = ACE_OS::strlen (HTTP_Helper::alphabet_) - 1; - i >= 0; - i--) - { - inalphabet[(unsigned int) HTTP_Helper::alphabet_[i]] = 1; - decoder[(unsigned int) HTTP_Helper::alphabet_[i]] = i; - } - - char *indata = data; - char *outdata = data; - - int bits = 0; - int c; - int char_count = 0; - int errors = 0; - - while ((c = *indata++) != '\0') - { - if (c == '=') - break; - if (c > 255 || ! inalphabet[c]) - continue; - bits += decoder[c]; - char_count++; - if (char_count == 4) - { - *outdata++ = (bits >> 16); - *outdata++ = ((bits >> 8) & 0xff); - *outdata++ = (bits & 0xff); - bits = 0; - char_count = 0; - } - else - bits <<= 6; - } - - if (c == '\0') - { - if (char_count) - { - ACE_DEBUG ((LM_DEBUG, - "base64 encoding incomplete: at least %d bits truncated\n", - ((4 - char_count) * 6))); - errors++; - } - } - else - { - // c == '=' - switch (char_count) - { - case 1: - ACE_DEBUG ((LM_DEBUG, - "base64 encoding incomplete: at least 2 bits missing\n")); - errors++; - break; - case 2: - *outdata++ = (bits >> 10); - break; - case 3: - *outdata++ = (bits >> 16); - *outdata++ = ((bits >> 8) & 0xff); - break; - } - } - *outdata = '\0'; - return errors ? 0 : data; -} - -char * -HTTP_Helper::HTTP_encode_base64 (char *data) -{ - char buf[BUFSIZ]; - int c; - int error; - int char_count = 0; - int bits = 0; - error = 0; - char *indata = data; - char *outdata = buf; - const unsigned char ASCII_MAX = ~0; - - while ((c = *indata++) != '\0') - { - if (c > (int)ASCII_MAX) - { - ACE_DEBUG ((LM_DEBUG, "encountered char > 255 (decimal %d)\n", c)); - error++; - break; - } - bits += c; - char_count++; - - if (char_count == 3) - { - *outdata++ = HTTP_Helper::alphabet_[bits >> 18]; - *outdata++ = HTTP_Helper::alphabet_[(bits >> 12) & 0x3f]; - *outdata++ = HTTP_Helper::alphabet_[(bits >> 6) & 0x3f]; - *outdata++ = HTTP_Helper::alphabet_[bits & 0x3f]; - bits = 0; - char_count = 0; - } - else - bits <<= 8; - } - - if (!error) - { - if (char_count != 0) - { - bits <<= 16 - (8 * char_count); - *outdata++ = HTTP_Helper::alphabet_[bits >> 18]; - *outdata++ = HTTP_Helper::alphabet_[(bits >> 12) & 0x3f]; - - if (char_count == 1) - { - *outdata++ = '='; - *outdata++ = '='; - } - else - { - *outdata++ = HTTP_Helper::alphabet_[(bits >> 6) & 0x3f]; - *outdata++ = '='; - } - } - *outdata = '\0'; - ACE_OS::strcpy (data, buf); - } - - return (error ? 0 : data); -} - -int -HTTP_Helper::fixyear (int year) -{ - // Fix the year 2000 problem - - if (year > 1000) - year -= 1900; - else if (year < 100) - { - struct tm tms; - time_t tloc; - - if (ACE_OS::time (&tloc) != (time_t) -1) - { - ACE_OS::gmtime_r (&tloc, &tms); - - if (tms.tm_year % 100 == year) - year = tms.tm_year; - - // The last two cases check boundary conditions, in case the - // year just changed at the moment we checked to see if we - // need to fix it. - if ((year+1) % 100 == tms.tm_year % 100) - year = tms.tm_year - 1; - - if (year == (tms.tm_year + 1) % 100) - year = tms.tm_year + 1; - - // What to do if none of the above? - } - } - - return year; -} - -const char ** -HTTP_Status_Code::instance (void) -{ - if (HTTP_Status_Code::instance_ == 0) - { - ACE_Guard<ACE_SYNCH_MUTEX> g (lock_); - - if (HTTP_Status_Code::instance_ == 0) - { - for (size_t i = 0; - i < HTTP_Status_Code::MAX_STATUS_CODE + 1; - i++) - { - switch (i) - { - case STATUS_OK: - HTTP_Status_Code::Reason[i] = "OK"; break; - case STATUS_CREATED: - HTTP_Status_Code::Reason[i] = "Created"; break; - case STATUS_ACCEPTED: - HTTP_Status_Code::Reason[i] = "Accepted"; break; - case STATUS_NO_CONTENT: - HTTP_Status_Code::Reason[i] = "No Content"; break; - case STATUS_MOVED_PERMANENTLY: - HTTP_Status_Code::Reason[i] = "Moved Permanently"; break; - case STATUS_MOVED_TEMPORARILY: - HTTP_Status_Code::Reason[i] = "Moved Temporarily"; break; - case STATUS_NOT_MODIFIED: - HTTP_Status_Code::Reason[i] = "Not Modified"; break; - case STATUS_BAD_REQUEST: - HTTP_Status_Code::Reason[i] = "Bad Request"; break; - case STATUS_UNAUTHORIZED: - HTTP_Status_Code::Reason[i] = "Unauthorized"; break; - case STATUS_FORBIDDEN: - HTTP_Status_Code::Reason[i] = "Forbidden"; break; - case STATUS_NOT_FOUND: - HTTP_Status_Code::Reason[i] = "Not Found"; break; - case STATUS_INTERNAL_SERVER_ERROR: - HTTP_Status_Code::Reason[i] = "Internal Server Error"; break; - case STATUS_NOT_IMPLEMENTED: - HTTP_Status_Code::Reason[i] = "Not Implemented"; break; - case STATUS_BAD_GATEWAY: - HTTP_Status_Code::Reason[i] = "Bad Gateway"; break; - case STATUS_SERVICE_UNAVAILABLE: - HTTP_Status_Code::Reason[i] = "Service Unavailable"; break; - default: - HTTP_Status_Code::Reason[i] = "Unknown"; - } - } - - HTTP_Status_Code::instance_ = 1; - } - - // GUARD released - } - - return HTTP_Status_Code::Reason; -} diff --git a/apps/JAWS/server/HTTP_Helpers.h b/apps/JAWS/server/HTTP_Helpers.h deleted file mode 100644 index b22533d62b0..00000000000 --- a/apps/JAWS/server/HTTP_Helpers.h +++ /dev/null @@ -1,104 +0,0 @@ -/* -*- c++ -*- */ -// Hey, Emacs! This is a C++ file! -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// apps -// -// = FILENAME -// HTTP_Helpers.h -// -// = AUTHOR -// James Hu -// -// ============================================================================ - -#if !defined (HTTP_HELPERS_H) -#define HTTP_HELPERS_H - -#include "ace/Synch.h" - -class HTTP_Helper -// Static functions to enhance the lives of HTTP programmers everywhere. -{ -public: - - // Convert and HTTP-date into a time_t - static time_t HTTP_mktime (const char *httpdate); - - // Create today's date - static const char *HTTP_date (void); - static const char *HTTP_date (char *s); - - // Month conversions (ascii <--> numeric) - static int HTTP_month (const char *month); - static const char *HTTP_month (int month); - - static char *HTTP_decode_string (char *path); - - // Encode/Decode base64 stuff (weak security model) - static char *HTTP_decode_base64 (char *data); - static char *HTTP_encode_base64 (char *data); - -private: - - static int fixyear (int year); - -private: - static const char *const months_[12]; - static char const *alphabet_; - - static char *date_string_; - static ACE_SYNCH_MUTEX mutex_; - // Use this sometimes (e.g. HTTP_date) -}; - -// Design around the Singleton pattern - -class HTTP_Status_Code - // = TITLE - // Go from numeric status codes to descriptive strings. - // - // = DESCRIPTION - // Design around the Singleton pattern -{ -public: - static const char **instance (void); - // Singleton access point. - - enum STATUS_CODE - { - STATUS_OK = 200, - STATUS_CREATED = 201, - STATUS_ACCEPTED = 202, - STATUS_NO_CONTENT = 204, - STATUS_MOVED_PERMANENTLY = 301, - STATUS_MOVED_TEMPORARILY = 302, - STATUS_NOT_MODIFIED = 304, - STATUS_BAD_REQUEST = 400, - STATUS_UNAUTHORIZED = 401, - STATUS_FORBIDDEN = 403, - STATUS_NOT_FOUND = 404, - STATUS_INTERNAL_SERVER_ERROR = 500, - STATUS_NOT_IMPLEMENTED = 501, - STATUS_BAD_GATEWAY = 502, - STATUS_SERVICE_UNAVAILABLE = 503, - STATUS_INSUFFICIENT_DATA = 399 - }; - - enum - { - MAX_STATUS_CODE = 599 - }; - -private: - // Singleton pattern is afoot here. - static const char *Reason[MAX_STATUS_CODE + 1]; - static int instance_; - static ACE_SYNCH_MUTEX lock_; -}; - -#endif /* HTTP_HELPERS_H */ - diff --git a/apps/JAWS/server/HTTP_Request.cpp b/apps/JAWS/server/HTTP_Request.cpp deleted file mode 100644 index 59d9b46b96e..00000000000 --- a/apps/JAWS/server/HTTP_Request.cpp +++ /dev/null @@ -1,658 +0,0 @@ -// $Id$ - -#include "ace/Message_Block.h" -#include "HTTP_Request.h" -#include "HTTP_Helpers.h" -#include "HTTP_Config.h" - -const char *const -HTTP_Request::static_header_strings_[HTTP_Request::NUM_HEADER_STRINGS] = -{ - "Date", - "Pragma", - "Authorization", - "From", - "If-Modified-Since", - "Referrer", - "User-Agent", - "Allow", - "Content-Encoding", - "Content-Length", - "Content-Type", - "Expires", - "Last-Modified" -}; - -const char *const -HTTP_Request::static_method_strings_[HTTP_Request::NUM_METHOD_STRINGS] = -{ - "GET", - "HEAD", - "POST", - "PUT" -}; - -// For reasons of efficiency, this class expects buffer to be -// null-terminated, and buflen does NOT include the \0. - -HTTP_Request::HTTP_Request (void) - : got_request_line_ (0), - method_ (0), - uri_ (0), - version_ (0), - path_ (0), - cgi_ (0), - cgi_env_ (0), - cgi_args_ (0), - query_string_ (0), - path_info_ (0), - header_strings_ (HTTP_Request::static_header_strings_), - method_strings_ (HTTP_Request::static_method_strings_) -{ - - for (size_t i = 0; - i < HTTP_Request::NUM_HEADER_STRINGS; - i++) - this->headers_.recognize (this->header_strings_[i]); -} - -HTTP_Request::~HTTP_Request (void) -{ - ACE_OS::free (this->method_); - ACE_OS::free (this->uri_); - ACE_OS::free (this->version_); - ACE_OS::free (this->path_); - ACE_OS::free (this->query_string_); - ACE_OS::free (this->path_info_); - - delete [] this->cgi_env_; -} - -int -HTTP_Request::parse_request (ACE_Message_Block &mb) -{ - mb.wr_ptr ()[0] = '\0'; - - // Note that RFC 822 does not mention the maximum length of a header - // line. So in theory, there is no maximum length. - - // In Apache, they assume that each header line should not exceed - // 8K. - - int result = this->headers_.complete_header_line (mb.rd_ptr ()); - - if (result != 0) - { - if (!this->got_request_line ()) - { - this->parse_request_line (mb.rd_ptr ()); - while (this->headers_.complete_header_line (mb.rd_ptr ()) > 0) - this->headers_.parse_header_line (mb.rd_ptr ()); - } - else if (result > 0) - do - this->headers_.parse_header_line (mb.rd_ptr ()); - while (this->headers_.complete_header_line (mb.rd_ptr ()) > 0); - } - - mb.wr_ptr (strlen(mb.rd_ptr ()) - mb.length ()); - - if (this->headers_.end_of_headers () - || (this->got_request_line () && this->version () == 0)) - return this->init (mb.rd_ptr (), mb.length ()); - else - return 0; -} - -void -HTTP_Request::parse_request_line (char *const request_line) -{ - char *ptr = request_line; - char *buf = request_line; - int offset = 1; - - this->status_ = HTTP_Status_Code::STATUS_OK; - - ptr = ACE_OS::strchr (request_line, '\n'); - - if (ptr > request_line && ptr[-1] == '\r') - ptr--, offset++; - - if (ptr == request_line) - { - this->status_ = HTTP_Status_Code::STATUS_BAD_REQUEST; - return; - } - - *ptr = '\0'; - ptr += offset; - - char *lasts; // for strtok_r - - // Get the request type. - this->got_request_line_ = 1; - - if (this->method (ACE_OS::strtok_r (buf, " \t", &lasts)) - && this->uri (ACE_OS::strtok_r (NULL, " \t", &lasts))) - { - this->type (this->method ()); - - if (this->version (ACE_OS::strtok_r (NULL, " \t", &lasts)) == 0 - && this->type () != HTTP_Request::GET) - this->status_ = HTTP_Status_Code::STATUS_NOT_IMPLEMENTED; - - if (this->path (this->uri ()) == 0) - this->status_ = HTTP_Status_Code::STATUS_NOT_FOUND; - } - - ACE_DEBUG ((LM_DEBUG, " (%t) request %s %s %s parsed\n", - (this->method () ? this->method () : "-"), - (this->uri () ? this->uri () : "="), - (this->version () ? this->version () : "HTTP/0.9"))); - - ACE_OS::memmove (buf, ptr, ACE_OS::strlen (ptr)+1); -} - -int -HTTP_Request::init (char *const buffer, - int buflen) -{ - // Initialize these every time. - content_length_ = -1; - - // Extract the data pointer. - data_ = buffer; - datalen_ = 0; - - // Set the datalen - if (data_ != NULL) - datalen_ = buflen; - else - datalen_ = 0; - - ACE_DEBUG ((LM_DEBUG, " (%t) init has initialized\n")); - - return 1; -} - -const char * -HTTP_Request::method (void) const -{ - return this->method_; -} - -const char * -HTTP_Request::uri (void) const -{ - return this->uri_; -} - -const char * -HTTP_Request::version (void) const -{ - return this->version_; -} - -const char * -HTTP_Request::path (void) const -{ - return this->path_; -} - -int -HTTP_Request::cgi (void) const -{ - return this->cgi_; -} - -const char ** -HTTP_Request::cgi_env (void) const -{ - return (const char **)this->cgi_env_; -} - -const char * -HTTP_Request::cgi_args (void) const -{ - return this->cgi_args_; -} - -const char * -HTTP_Request::query_string (void) const -{ - return this->query_string_; -} - -const char * -HTTP_Request::path_info (void) const -{ - return this->path_info_; -} - -int HTTP_Request::got_request_line (void) const -{ - return this->got_request_line_; -} - -int -HTTP_Request::type (void) const -{ - return type_; -} - -const Headers & -HTTP_Request::headers (void) const -{ - return this->headers_; -} - -const char * -HTTP_Request::header_strings (int index) const -{ - const char *hs = 0; - - if (0 <= index && index < NUM_HEADER_STRINGS) - hs = this->header_strings_[index]; - - return hs; -} - -const char * -HTTP_Request::header_values (int index) const -{ - const char *hs = 0; - const char *hv = 0; - - if (0 <= index && index < NUM_HEADER_STRINGS) - { - hs = this->header_strings_[index]; - hv = this->headers_[hs].value (); - } - - return hv; -} - -char * -HTTP_Request::data (void) -{ - return data_; -} - -int -HTTP_Request::data_length (void) -{ - return datalen_; -} - -int -HTTP_Request::content_length (void) -{ - if (this->content_length_ == -1) - { - const char * clv = this->headers_["Content-length"].value (); - this->content_length_ = (clv ? ACE_OS::atoi (clv) : 0); - } - - return this->content_length_; -} - -int -HTTP_Request::status (void) -{ - return this->status_; -} - -const char * -HTTP_Request::status_string (void) -{ - return HTTP_Status_Code::instance ()[this->status_]; -} - -void -HTTP_Request::dump (void) -{ - ACE_DEBUG ((LM_DEBUG, "%s command.\n" - "filename is %s," - " length of the file is %d," - " data string is %s," - " datalen is %d," - " status is %d, which is %s\n\n", - this->method () ? this->method () : "EMPTY", - this->uri () ? this->uri () : "EMPTY", - this->content_length (), - this->data () ? this->data () : "EMPTY", - this->data_length (), - this->status (), - this->status_string ())); -} - -const char * -HTTP_Request::method (const char *method_string) -{ - if (this->method_) - ACE_OS::free (this->method_); - - if (method_string == 0) - { - this->status_ = HTTP_Status_Code::STATUS_BAD_REQUEST; - this->method_ = 0; - } - else - this->method_ = ACE_OS::strdup (method_string); - - return this->method_; -} - -const char * -HTTP_Request::uri (char *uri_string) -{ - if (this->uri_) - ACE_OS::free (this->uri_); - - if (uri_string == 0) - { - this->status_ = HTTP_Status_Code::STATUS_BAD_REQUEST; - this->uri_ = 0; - } - else - { - this->uri_ = ACE_OS::strdup (uri_string); - this->cgi (this->uri_); - HTTP_Helper::HTTP_decode_string (this->uri_); - } - - return this->uri_; -} - -const char * -HTTP_Request::version (const char *version_string) -{ - if (this->version_) - ACE_OS::free (this->version_); - - if (version_string) - this->version_ = ACE_OS::strdup (version_string); - else - this->version_ = 0; - - return this->version_; -} - -int -HTTP_Request::type (const char *type_string) -{ - this->type_ = HTTP_Request::NO_TYPE; - - if (type_string == 0) - return this->type_; - - for (size_t i = 0; - i < HTTP_Request::NUM_METHOD_STRINGS; - i++) - - if (ACE_OS::strcmp (type_string, this->method_strings_[i]) == 0) - { - this->type_ = i; - break; - } - - if (this->type_ == HTTP_Request::NO_TYPE) - this->status_ = HTTP_Status_Code::STATUS_NOT_IMPLEMENTED; - - return this->type_; -} - -int -HTTP_Request::cgi (char *uri_string) -{ - this->cgi_ = 0; - this->cgi_env_ = 0; - this->cgi_args_ = 0; - - ACE_DEBUG ((LM_DEBUG, " (%t) HTTP_Request::cgi (%s)\n", uri_string)); - - if (uri_string == 0 || ACE_OS::strlen (uri_string) == 0) - return 0; - - // There are 2 cases where a file could be a CGI script - // - // (1) the file has a CGI extension. - // (2) the file resides in a CGI bin directory. - - char *extra_path_info = 0; - if (this->cgi_in_path (uri_string, extra_path_info) - || this->cgi_in_extension (uri_string, extra_path_info)) - { - cgi_args_and_env (extra_path_info); - - if (extra_path_info) - { - this->path_info_ = ACE_OS::strdup (extra_path_info); - HTTP_Helper::HTTP_decode_string (this->path_info_); - *extra_path_info = '\0'; - } - } - - return this->cgi_; -} - -int -HTTP_Request::cgi_in_path (char *uri_string, char *&extra_path_info) -{ - char *cgi_path; - - ACE_DEBUG ((LM_DEBUG, " (%t) HTTP_Request::cgi_in_path (%s)\n", - uri_string)); - - if (HTTP_Config::instance ()->cgi_path ()) - cgi_path = ACE_OS::strdup (HTTP_Config::instance ()->cgi_path ()); - else - cgi_path = ACE_OS::strdup (""); - - // error checking considered helpful! - if (cgi_path == 0) - return 0; - - char *lasts; - char *cgi_path_next = ACE_OS::strtok_r (cgi_path, ":", &lasts); - - if (cgi_path_next) - do - { - int len = ACE_OS::strlen (cgi_path_next); - - // match path to cgi path - int in_cgi_path = 0; - - if (*cgi_path_next == '/') - { - // cgi path next points to an ``absolute'' path - extra_path_info = uri_string; - in_cgi_path = - (ACE_OS::strncmp (extra_path_info, cgi_path_next, len) == 0); - } - else - { - // cgi path next points to a ``relative'' path - extra_path_info = ACE_OS::strstr (uri_string, cgi_path_next); - in_cgi_path = (extra_path_info != 0); - } - - if (in_cgi_path) - { - if (extra_path_info[len] == '/') - { - this->cgi_ = 1; - extra_path_info += len; - - // move past the executable name - do - extra_path_info++; - while (*extra_path_info != '/' - && *extra_path_info != '?' - && *extra_path_info != '\0'); - - if (*extra_path_info == '\0') - extra_path_info = 0; - - break; - } - } - extra_path_info = 0; - - cgi_path_next = ACE_OS::strtok_r (NULL, ":", &lasts); - } - while (cgi_path_next); - - ACE_OS::free (cgi_path); - - return this->cgi_; -} - -int -HTTP_Request::cgi_in_extension (char *uri_string, char *&extra_path_info) -{ - extra_path_info = ACE_OS::strstr (uri_string, ".cgi"); - - ACE_DEBUG ((LM_DEBUG, " (%t) HTTP_Request::cgi_in_extension (%s)\n", - uri_string)); - - while (extra_path_info != 0) - { - extra_path_info += 4; - // skip past ``.cgi'' - - switch (*extra_path_info) - { - case '\0': - extra_path_info = 0; - break; - case '/': - case '?': - break; - default: - extra_path_info = ACE_OS::strstr (extra_path_info, ".cgi"); - continue; - } - this->cgi_ = 1; - break; - } - - return this->cgi_; -} - -void -HTTP_Request::cgi_args_and_env (char *&extra_path_info) -{ - char *cgi_question = 0; - - if (extra_path_info) - cgi_question = ACE_OS::strchr (extra_path_info, '?'); - - if (extra_path_info == cgi_question) - extra_path_info = 0; - - if (cgi_question) - { - *cgi_question++ = '\0'; - - if (*cgi_question != '\0') - { - // We need the ``original'' QUERY_STRING for the - // environment. We will substitute '+'s for spaces in the - // other copy. - - this->query_string_ = ACE_OS::strdup (cgi_question); - - char *ptr = cgi_question; - int count = 0; - do - if (*ptr == '+') - *ptr = ' '; - else if (*ptr == '&' || *ptr == '=') - count++; - while (*++ptr); - - count++; - - if (ACE_OS::strchr (cgi_question, '=')) - { - ACE_NEW (this->cgi_env_, char *[count+1]); - - int i = 0; - ptr = cgi_question; - do - { - this->cgi_env_ [i++] = ptr; - - while (*ptr++) - if (*ptr == '&' || *ptr == '=') - *ptr = '\0'; - - HTTP_Helper::HTTP_decode_string (this->cgi_env_[i-1]); - } - while (i < count); - - this->cgi_env_[count] = 0; - } - else - { - this->cgi_args_ = cgi_question; - HTTP_Helper::HTTP_decode_string (cgi_question); - } - } - } -} - -const char * -HTTP_Request::path (const char *uri_string) -{ - char const *file_name = uri_string; - char buf[MAXPATHLEN + 1]; - buf[0] = '\0'; - - if (file_name == 0) return 0; - - if (*file_name == '/') - { - file_name++; - if (*file_name == '~') - { - char *ptr = buf; - - while (*++file_name && *file_name != '/') - *ptr++ = *file_name; - - *ptr = '\0'; - - if (ptr == buf) - ACE_OS::strcpy (buf, ACE_OS::getenv ("HOME")); - else - { -#if !defined (ACE_WIN32) && !defined (VXWORKS) - char pw_buf[BUFSIZ]; - struct passwd pw_struct; - if (ACE_OS::getpwnam_r (buf, &pw_struct, pw_buf, sizeof (pw_buf)) - == 0) - return 0; - ACE_OS::strcpy (buf, pw_struct.pw_dir); -#endif /* NOT ACE_WIN32 AND NOT VXWORKS */ - } - - ACE_OS::strcat (buf, "/"); - ACE_OS::strcat (buf, HTTP_Config::instance ()->user_dir ()); - ACE_OS::strcat (buf, file_name); - } - else - { - // With a starting '/' but no '~' - ACE_OS::strcat (buf, HTTP_Config::instance ()->document_root ()); - ACE_OS::strcat (buf, file_name - 1); - } - } - - if (*buf != '\0') - this->path_ = ACE_OS::strdup (buf); - - return this->path_; -} diff --git a/apps/JAWS/server/HTTP_Request.h b/apps/JAWS/server/HTTP_Request.h deleted file mode 100644 index 907926e70a4..00000000000 --- a/apps/JAWS/server/HTTP_Request.h +++ /dev/null @@ -1,195 +0,0 @@ -/* -*- c++ -*- */ -// Hey, Emacs! This is a C++ file! -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// jaws -// -// = FILENAME -// HTTP_Request.h -// -// = AUTHOR -// James Hu -// -// ============================================================================ - -#if !defined (HTTP_REQUEST_H) -#define HTTP_REQUEST_H - -class ACE_Message_Block; - -#include "ace/OS.h" -#include "Parse_Headers.h" - -class HTTP_Request - // = TITLE - // This parses the client request of an HTTP transaction. - // - // = DESCRIPTION -{ -public: - HTTP_Request (void); - // Default construction. - - ~HTTP_Request (void); - // Destructor. - - int parse_request (ACE_Message_Block &mb); - // parse an incoming request - - void parse_request_line (char *const request_line); - // the first line of a request is the request line, which is of the - // form: METHOD URI VERSION. - - int init (char *const buffer, - int buflen); - // Initialize the request object. This will parse the buffer and - // prepare for the accessors. - -public: - // = The Accessors. - - const char *method (void) const; - // HTTP request method - - const char *uri (void) const; - // HTTP request uri - - const char *version (void) const; - // HTTP request version - - const char *path (void) const; - // The HTTP request uri translated into a server filename path - - int cgi (void) const; - // TRUE of the request is a cgi request - - const char *cgi_args (void) const; - // The arguments to the cgi request - - const char **cgi_env (void) const; - // The environment variables passed to the CGI request - - const char *query_string (void) const; - // The cgi request query string - - const char *path_info (void) const; - // The cgi request path information - - int type (void) const; - // The type of the HTTP request - - const Headers &headers (void) const; - // The headers that were parsed from the request - - const char *header_strings (int index) const; - // Header strings stored - - const char *header_values (int index) const; - // Values associated with the header strings - - char *data (void); - // The buffer into which request data is read - - int data_length (void); - // The length of the request data - - int content_length (void); - // The length of incoming content if any - - int status (void); - // Current status of the incoming request - - const char *status_string (void); - // A string describing the state of the incoming request - - void dump (void); - // Dump the state of the request. - - enum - { - NO_TYPE = -1, - GET = 0, - HEAD, - POST, - PUT, - NUM_METHOD_STRINGS - }; - // Values for request type - - enum - { - DATE = 0, - PRAGMA, - AUTHORIZATION, - FROM, - IF_MODIFIED_SINCE, - REFERRER, - USER_AGENT, - ALLOW, - CONTENT_ENCODING, - CONTENT_LENGTH, - CONTENT_TYPE, - EXPIRES, - LAST_MODIFIED, - NUM_HEADER_STRINGS - }; - // Header strings - -private: - // = Private Accessors which can set values - const char *method (const char *method_string); - const char *uri (char *uri_string); - const char *version (const char *version_string); - const char *path (const char *uri_string); - - int cgi (char *uri_string); - // determine if the given URI is a CGI program. - - int cgi_in_path (char *uri_string, char *&extra_path_info); - // determine if the given URI resides in a cgi-bin directory - - int cgi_in_extension (char *uri_string, char *&extra_path_info); - // determine if the given URI contains a cgi extension - - void cgi_args_and_env (char *&extra_path_info); - // set the arguments and environment for the cgi program - - int type (const char *type_string); - -private: - int got_request_line (void) const; - -private: - int got_request_line_; - Headers headers_; - - char *method_; - char *uri_; - char *version_; - char *path_; - - int cgi_; - char **cgi_env_; - char *cgi_args_; - - char *query_string_; - char *path_info_; - - const char * const *const header_strings_; - static const char *const static_header_strings_[NUM_HEADER_STRINGS]; - - const char * const *const method_strings_; - static const char *const static_method_strings_[NUM_METHOD_STRINGS]; - - char *data_; - int datalen_; - int content_length_; - char *filename_; - int status_; - int type_; -}; - -#endif /* HTTP_REQUEST_H */ diff --git a/apps/JAWS/server/HTTP_Response.cpp b/apps/JAWS/server/HTTP_Response.cpp deleted file mode 100644 index b5f9b02fe83..00000000000 --- a/apps/JAWS/server/HTTP_Response.cpp +++ /dev/null @@ -1,360 +0,0 @@ -// $Id$ - -#include "ace/Process.h" -#include "ace/Mem_Map.h" - -#include "HTTP_Response.h" -#include "HTTP_Request.h" -#include "HTTP_Helpers.h" -#include "HTTP_Config.h" -#include "IO.h" - -static char * const EMPTY_HEADER = (char *)""; - -HTTP_Response::HTTP_Response (JAWS_IO &io, HTTP_Request &request) - : io_(io), request_(request) -{ -} - -HTTP_Response::HTTP_Response (HTTP_Request &request, JAWS_IO &io) - : io_(io), request_(request) -{ -} - -HTTP_Response::~HTTP_Response (void) -{ -#if defined (ACE_JAWS_BASELINE) - if (this->HTTP_HEADER != EMPTY_HEADER) - delete [] this->HTTP_HEADER; - // The [] is important. Without it, there was a huge memory leak! -#endif /* ACE_JAWS_BASELINE */ -} - -void -HTTP_Response::process_request(HTTP_Response &response) -{ - response.process_request(); -} - -void -HTTP_Response::process_request (void) -{ - ACE_DEBUG ((LM_DEBUG, " (%t) processing request: %s\n", - this->request_.status_string ())); - - switch (this->request_.status ()) - { - case HTTP_Status_Code::STATUS_OK : - - if (this->request_.cgi ()) - { - this->cgi_response (); - } - else - { - this->normal_response (); - } - - break; - - default: - this->error_response (this->request_.status (), - this->request_.status_string ()); - } -} - -void -HTTP_Response::error_response (int status_code, const char *log_message) -{ - ACE_DEBUG ((LM_DEBUG, "(%t) [%s %s %s] %s\n", - this->request_.method () ? this->request_.method () : "-", - this->request_.uri () ? this->request_.uri () : "-", - this->request_.version() ? this->request_.version () : "-", - log_message ? log_message : "-")); - - static char const error_header1[] = - "%s %d %s\r\n" - "Server: JAWS/1.0prebeta\r\n" - "Content-type: text/html\r\n" - "Content-length: %d\r\n" - "\r\n" - "%s" - ; - - static char const error_header2[] = - "%s %d %s\r\n" - "Server: JAWS/1.0prebeta\r\n" - "WWW-Authenticate: Basic realm=\"JAWS_authorization\"\r\n" - "Content-type: text/html\r\n" - "Content-length: %d\r\n" - "\r\n" - "%s" - ; - - static char const error_message[] = - "<html>\n" - "<head><title>Server error message</title></head>\n" - "<body>\n" - "<h1>Error %d: %s</h1>\n" - "The request could not be completed because:\n %s\n" - "</body>\n" - "</html>\n" - ; - - - char *buf; - char buf1[4 * BUFSIZ]; - char buf2[BUFSIZ]; - - int length; - const char *error_header = error_header1; - - if (status_code == HTTP_Status_Code::STATUS_UNAUTHORIZED) - error_header = error_header2; - - length = - ACE_OS::sprintf (buf2, error_message, - status_code, HTTP_Status_Code::instance ()[status_code], - log_message); - - if (this->request_.version () == 0 - || ACE_OS::strcmp ("HTTP/0.9", this->request_.version ()) == 0) - buf = buf2; - else - { - length = - ACE_OS::sprintf (buf1, error_header, - this->request_.version(), status_code, - HTTP_Status_Code::instance ()[status_code], - length, - buf2); - buf = buf1; - } - - this->io_.send_error_message (buf, length); -} - -void -HTTP_Response::normal_response (void) -{ - const char *hv = 0;; - - ACE_DEBUG ((LM_DEBUG, " (%t) %s request for %s [%s], version %s\n", - request_.method (), request_.uri (), request_.path (), - (request_.version () ? request_.version () : "HTTP/0.9"))); - - switch (this->request_.type ()) - { - case HTTP_Request::GET : - - this->build_headers (); - this->io_.transmit_file (this->request_.path (), - this->HTTP_HEADER, - this->HTTP_HEADER_LENGTH, - this->HTTP_TRAILER, - this->HTTP_TRAILER_LENGTH); - break; - - case HTTP_Request::HEAD : - this->build_headers (); - this->io_.send_confirmation_message (this->HTTP_HEADER, - this->HTTP_HEADER_LENGTH); - break; - - case HTTP_Request::POST : - // What to do here? - // Standard says this is implementation dependent. - // Examples: annotations, page updates, etc. - // This may be a good place to stick CORBA stuff, - // and mobile code. - this->error_response (HTTP_Status_Code::STATUS_NOT_IMPLEMENTED, - "Requested method is not implemented."); - break; - - case HTTP_Request::PUT : - // Only commit to this if we can authenticate it - - // if there is no Authentication: header on the incoming request, - // deny it - hv = this->request_.headers ()["Authorization"].value (); - if (hv == 0 || *hv == '\0') - this->error_response (HTTP_Status_Code::STATUS_UNAUTHORIZED, - "Unauthorized to use PUT method"); - else if (ACE_OS::strncmp (hv, "Basic ", 6) != 0) - // ``6'' is the length of the string "Basic " - this->error_response (HTTP_Status_Code::STATUS_UNAUTHORIZED, - "Unknown authroization method"); - else - { - ACE_Mem_Map mmapfile; - const char *hvv = hv + 6; - // Skip past the string "Basic " - char *buf = new char [ACE_OS::strlen (hv)]; - char *auth - = HTTP_Helper::HTTP_decode_base64 (ACE_OS::strcpy (buf, hvv)); - - if (mmapfile.map ("jaws.auth") != -1 - && auth != 0 - && ACE_OS::strstr((const char *) mmapfile.addr (), auth) != 0) - this->io_.receive_file (this->request_.path (), - this->request_.data (), - this->request_.data_length (), - this->request_.content_length ()); - else - this->error_response (HTTP_Status_Code::STATUS_UNAUTHORIZED, - "Invalid authorization attempt"); - delete buf; - } - break; - - default : - this->error_response (HTTP_Status_Code::STATUS_NOT_IMPLEMENTED, - "Requested method is not implemented."); - } -} - - -void -HTTP_Response::cgi_response (void) -{ - ACE_Process_Options cgi_options; - - if (this->request_.cgi_args ()) - cgi_options.command_line ("%s %s", - this->request_.path (), - this->request_.cgi_args ()); - else - cgi_options.command_line ("%s", this->request_.path ()); - - // Build environment variables - cgi_options.setenv ("SERVER_SOFTWARE", "%s", "JAWS/1.0"); - cgi_options.setenv ("SERVER_NAME", "%s", "localhost"); - cgi_options.setenv ("GATEWAY_INTERFACE", "%s", "CGI/1.1"); - - cgi_options.setenv ("SERVER_PROTOCOL", "%s", - this->request_.version () - ? this->request_.version () - : "HTTP/0.9"); - cgi_options.setenv ("SERVER_PORT", "%d", 5432); - - cgi_options.setenv ("REQUEST_METHOD", "%s", this->request_.method ()); - - if (this->request_.path_info ()) - { - cgi_options.setenv ("PATH_INFO", "%s", - this->request_.path_info ()); - cgi_options.setenv ("PATH_TRANSLATED", - "%s/%s", - HTTP_Config::instance ()->document_root (), - this->request_.path_info ()); - } - - cgi_options.setenv ("SCRIPT_NAME", - "%s", - this->request_.uri ()); - - if (this->request_.query_string ()) - cgi_options.setenv ("QUERY_STRING", - "%s", - this->request_.query_string ()); - - if (this->request_.cgi_env ()) - for (size_t i = 0; this->request_.cgi_env ()[i]; i += 2) - cgi_options.setenv (this->request_.cgi_env ()[i], - "%s", - this->request_.cgi_env ()[i+1]); - - char buf[BUFSIZ]; - char *p, *q; - ACE_OS::strcpy (buf, "HTTP_"); - p = q = buf + ACE_OS::strlen (buf); - - for (size_t i = 0; i < HTTP_Request::NUM_HEADER_STRINGS; i++) - { - int j = 0; - - for (char c; (c = this->request_.header_strings (i)[j++]) != '\0'; ) - if (isalpha (c)) - *q++ = toupper (c); - else if (c == '-') - *q++ = '_'; - else - *q++ = c; - - *q = '\0'; - - const char *hv = this->request_.header_values (i); - - if (hv && *hv) - cgi_options.setenv (buf, "%s", hv); - q = p; - } - - cgi_options.set_handles (this->io_.handle (), - this->io_.handle (), - this->io_.handle ()); - - this->build_headers (); - this->io_.send_confirmation_message (this->HTTP_HEADER, - this->HTTP_HEADER_LENGTH); - // ACE::send (this->io_.handle (), - // this->HTTP_HEADER, this->HTTP_HEADER_LENGTH); - - // Exec the CGI program. - ACE_Process cgi_process; - cgi_process.spawn (cgi_options); - // cgi_process.wait (); -} - -void -HTTP_Response::build_headers (void) -{ - // At this point, we should really determine the type of request - // this is, and build the appropriate header. - - // Let's assume this is HTML for now. Unless the request is CGI, - // then do not include content-* headers. - - if (this->request_.version () == 0 - || ACE_OS::strcmp ("HTTP/0.9", this->request_.version ()) == 0) - { - HTTP_HEADER = (char *) EMPTY_HEADER; - HTTP_HEADER_LENGTH = 0; - } - else - { -#if defined (ACE_JAWS_BASELINE) - HTTP_HEADER = new char[BUFSIZ * 4]; - - // We assume that at this point everything is OK - HTTP_HEADER_LENGTH = - ACE_OS::sprintf (HTTP_HEADER, "%s", "HTTP/1.0 200 OK\r\n"); - - char date_ptr [40]; - // 40 bytes is the maximum length needed to store the date - - if (HTTP_Helper::HTTP_date (date_ptr) != 0) - HTTP_HEADER_LENGTH += - ACE_OS::sprintf (HTTP_HEADER+HTTP_HEADER_LENGTH, - "Date: %s\r\n", date_ptr); - - if (! this->request_.cgi ()) - HTTP_HEADER_LENGTH += - ACE_OS::sprintf (HTTP_HEADER+HTTP_HEADER_LENGTH, - "Content-type: %s\r\n\r\n", - "text/html"); -#else - if (! this->request_.cgi ()) - HTTP_HEADER = "HTTP/1.0 200 OK\r\n" - "Content-type: text/html\r\n\r\n"; - else - HTTP_HEADER = "HTTP/1.0 200 OK\r\n"; - - HTTP_HEADER_LENGTH = ACE_OS::strlen (HTTP_HEADER); - -#endif /* ACE_JAWS_BASELINE */ - } - - HTTP_TRAILER = ""; - HTTP_TRAILER_LENGTH = 0; -} diff --git a/apps/JAWS/server/HTTP_Response.h b/apps/JAWS/server/HTTP_Response.h deleted file mode 100644 index 0ddbf7268d1..00000000000 --- a/apps/JAWS/server/HTTP_Response.h +++ /dev/null @@ -1,76 +0,0 @@ -/* -*- c++ -*- */ -// Hey, Emacs! This is a C++ file! -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// jaws -// -// = FILENAME -// HTTP_Response.h -// -// = AUTHOR -// James Hu -// -// ============================================================================ - -#if !defined (HTTP_RESPONSE_H) -#define HTTP_RESPONSE_H - -class JAWS_IO; -class HTTP_Request; - -class HTTP_Response - // = TITLE - // Abstraction for HTTP responses. - // - // = DESCRIPTION - // Provides an encapsulation of responses to HTTP requests. - // For instance, given an HTTP GET request, it will produce - // header and body suitable for returning to the client who made - // the request. -{ -public: - HTTP_Response (JAWS_IO &io, - HTTP_Request &request); - HTTP_Response (HTTP_Request &request, JAWS_IO &io); - ~HTTP_Response (void); - - void process_request (void); - // This is called by the handler to initiate a response. - - void error_response (int status, - const char *log_message); - // This returns an error response for cases where there is a problem - // with the request, logging the log_message. - -private: - - void normal_response (void); - // Called by process_request when the request is a normal request. - - void cgi_response (void); - // Called by process_request when the request is a cgi request. - -private: - - static void process_request (HTTP_Response &response); - // static version of process_request, just in case. - - void build_headers (void); - // creates the appropriate header information for responses. - -private: - JAWS_IO &io_; - HTTP_Request &request_; - // The IO and Request objects associated with this re - - char *HTTP_HEADER; - char *HTTP_TRAILER; - int HTTP_HEADER_LENGTH; - int HTTP_TRAILER_LENGTH; - // HTTP Headers and trailers. -}; - -#endif /* HTTP_RESPONSE_H */ diff --git a/apps/JAWS/server/HTTP_Server.cpp b/apps/JAWS/server/HTTP_Server.cpp deleted file mode 100644 index 50a2f9936b0..00000000000 --- a/apps/JAWS/server/HTTP_Server.cpp +++ /dev/null @@ -1,392 +0,0 @@ -// $Id$ - -#include "ace/Get_Opt.h" -#include "ace/Asynch_Acceptor.h" -#include "ace/LOCK_SOCK_Acceptor.h" -#include "ace/Proactor.h" - -#include "IO.h" -#include "HTTP_Server.h" - -// class is overkill -class JAWS -{ -public: - enum - { - POOL = 0, - PER_REQUEST = 1 - }; - - enum - { - SYNCH = 0, - ASYNCH = 2 - }; -}; - -void -HTTP_Server::parse_args (int argc, - char *argv[]) -{ - int c; - int thr_strategy = 0; - int io_strategy = 0; - const char *prog = argc > 0 ? argv[0] : "HTTP_Server"; - - // Set some defaults - this->port_ = 0; - this->threads_ = 0; - this->backlog_ = 0; - this->throttle_ = 0; - - ACE_Get_Opt get_opt (argc, argv, "p:n:t:i:b:"); - - while ((c = get_opt ()) != -1) - switch (c) - { - case 'p': - this->port_ = ACE_OS::atoi (get_opt.optarg); - break; - case 'n': - this->threads_ = ACE_OS::atoi (get_opt.optarg); - break; - case 't': - // POOL -> thread pool - // PER_REQUEST -> thread per request - // THROTTLE -> thread per request with throttling - if (ACE_OS::strcmp (get_opt.optarg, "POOL") == 0) - thr_strategy = JAWS::POOL; - else if (ACE_OS::strcmp (get_opt.optarg, "PER_REQUEST") == 0) - { - thr_strategy = JAWS::PER_REQUEST; - this->throttle_ = 0; - } - else if (ACE_OS::strcmp (get_opt.optarg, "THROTTLE") == 0) - { - thr_strategy = JAWS::PER_REQUEST; - this->throttle_ = 1; - } - break; - case 'f': - if (ACE_OS::strcmp (get_opt.optarg, "THR_BOUND") == 0) - { - // What happened here? - } - else if (ACE_OS::strcmp (get_opt.optarg, "THR_DAEMON") == 0) - { - } - else if (ACE_OS::strcmp (get_opt.optarg, "THR_DETACHED") == 0) - { - } - case 'i': - // SYNCH -> synchronous I/O - // ASYNCH -> asynchronous I/O - if (ACE_OS::strcmp (get_opt.optarg, "SYNCH") == 0) - io_strategy = JAWS::SYNCH; - else if (ACE_OS::strcmp (get_opt.optarg, "ASYNCH") == 0) - io_strategy = JAWS::ASYNCH; - break; - case 'b': - this->backlog_ = ACE_OS::atoi (get_opt.optarg); - break; - default: - break; - } - - // No magic numbers. - if (this->port_ <= 0) - this->port_ = 5432; - if (this->threads_ <= 0) - this->threads_ = 5; - // Don't use number of threads as default - if (this->backlog_ <= 0) - this->backlog_ = this->threads_; - - this->strategy_ = thr_strategy | io_strategy; - - ACE_UNUSED_ARG (prog); - ACE_DEBUG ((LM_DEBUG, - "in HTTP_Server::init, %s port = %d, number of threads = %d\n", - prog, this->port_, this->threads_)); -} - -int -HTTP_Server::init (int argc, char *argv[]) - // Document this function -{ - // Ignore signals generated when a connection is broken unexpectedly. - ACE_Sig_Action sig (ACE_SignalHandler (SIG_IGN), SIGPIPE); - ACE_UNUSED_ARG (sig); - - // Parse arguments which sets the initial state. - this->parse_args (argc, argv); - - // Choose what concurrency strategy to run. - switch (this->strategy_) - { - case (JAWS::POOL | JAWS::ASYNCH) : - return this->asynch_thread_pool (); - - case (JAWS::PER_REQUEST | JAWS::SYNCH) : - return this->thread_per_request (); - - case (JAWS::POOL | JAWS::SYNCH) : - default: - return this->synch_thread_pool (); - } - - ACE_NOTREACHED (return 0); -} - -int -HTTP_Server::fini (void) -{ - this->tm_.close (); - return 0; -} - - -int -HTTP_Server::synch_thread_pool (void) -{ - // Main thread opens the acceptor - if (this->acceptor_.open (ACE_INET_Addr (this->port_), 1, - PF_INET, this->backlog_) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "HTTP_Acceptor::open"), -1); - - // Create a pool of threads to handle incoming connections. - Synch_Thread_Pool_Task t (this->acceptor_, this->tm_, this->threads_); - - this->tm_.wait (); - return 0; -} - -Synch_Thread_Pool_Task::Synch_Thread_Pool_Task (HTTP_Acceptor &acceptor, - ACE_Thread_Manager &tm, - int threads) - : ACE_Task<ACE_NULL_SYNCH> (&tm), - acceptor_ (acceptor) -{ - if (this->activate (THR_DETACHED | THR_NEW_LWP, threads) == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "Synch_Thread_Pool_Task::open")); -} - -int -Synch_Thread_Pool_Task::svc (void) -{ - // Creates a factory of HTTP_Handlers binding to synchronous I/O strategy - Synch_HTTP_Handler_Factory factory; - - for (;;) - { - ACE_SOCK_Stream stream; - - // Lock in this accept. When it returns, we have a connection. - if (this->acceptor_.accept (stream) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "HTTP_Acceptor::accept"), -1); - - ACE_Message_Block *mb; - ACE_NEW_RETURN (mb, - ACE_Message_Block (HTTP_Handler::MAX_REQUEST_SIZE + 1), - -1); - - // Create an HTTP Handler to handle this request - HTTP_Handler *handler = factory.create_http_handler (); - handler->open (stream.get_handle (), *mb); - // Handler is destroyed when the I/O puts the Handler into the - // done state. - - mb->release (); - ACE_DEBUG ((LM_DEBUG, - " (%t) in Synch_Thread_Pool_Task::svc, recycling\n")); - } - - ACE_NOTREACHED(return 0); -} - -int -HTTP_Server::thread_per_request (void) -{ - int grp_id = -1; - - // thread per request - // Main thread opens the acceptor - if (this->acceptor_.open (ACE_INET_Addr (this->port_), 1, - PF_INET, this->backlog_) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "HTTP_Acceptor::open"), -1); - - ACE_SOCK_Stream stream; - - // When we are throttling, this is the amount of time to wait before - // checking for runnability again. - const ACE_Time_Value wait_time (0, 10); - - for (;;) - { - if (this->acceptor_.accept (stream) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "HTTP_Acceptor::accept"), -1); - - Thread_Per_Request_Task *t; - // Pass grp_id as a constructor param instead of into open. - ACE_NEW_RETURN (t, Thread_Per_Request_Task (stream.get_handle (), - this->tm_, - grp_id), - -1); - - - if (t->open () != 0) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", "Thread_Per_Request_Task::open"), - -1); - - // Throttling is not allowing too many threads to run away. - // Should really use some sort of condition variable here. - if (!this->throttle_) - continue; - - // This works because each task has only one thread. - while (this->tm_.num_tasks_in_group (grp_id) > this->threads_) - this->tm_.wait (&wait_time); - } - - ACE_NOTREACHED(return 0); -} - -Thread_Per_Request_Task::Thread_Per_Request_Task (ACE_HANDLE handle, - ACE_Thread_Manager &tm, - int &grp_id) - : ACE_Task<ACE_NULL_SYNCH> (&tm), - handle_ (handle), - grp_id_ (grp_id) -{ -} - - -// HEY! Add a method to the thread_manager to return total number of -// threads managed in all the tasks. - -int -Thread_Per_Request_Task::open (void *) -{ - int status = -1; - - if (this->grp_id_ == -1) - status = this->grp_id_ = this->activate (THR_DETACHED | THR_NEW_LWP); - else - status = this->activate (THR_DETACHED | THR_NEW_LWP, - 1, 0, -1, this->grp_id_, 0); - - if (status == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "Thread_Per_Request_Task::open"), - -1); - return 0; -} - -int -Thread_Per_Request_Task::svc (void) -{ - ACE_Message_Block *mb; - ACE_NEW_RETURN (mb, ACE_Message_Block (HTTP_Handler::MAX_REQUEST_SIZE + 1), - -1); - Synch_HTTP_Handler_Factory factory; - HTTP_Handler *handler = factory.create_http_handler (); - handler->open (this->handle_, *mb); - mb->release (); - return 0; -} - -int -Thread_Per_Request_Task::close (u_long) -{ - ACE_DEBUG ((LM_DEBUG, - " (%t) Thread_Per_Request_Task::svc, dying\n")); - delete this; - return 0; -} - -// Understanding the code below requires understanding of the -// WindowsNT asynchronous completion notification mechanism and the -// Proactor Pattern. - -// (1) The application submits an asynchronous I/O request to the -// operating system and a special handle with it (Asynchronous -// Completion Token). -// (2) The operating system commits to performing the I/O request, -// while application does its own thing. -// (3) Operating system finishes the I/O request and places ACT onto -// the I/O Completion Port, which is a queue of finished -// asynchronous requests. -// (4) The application eventually checks to see if the I/O request -// is done by checking the I/O Completion Port, and retrieves the -// ACT. - -int -HTTP_Server::asynch_thread_pool (void) -{ -// This only works on Win32 -#if defined (ACE_WIN32) - // Create the appropriate acceptor for this concurrency strategy and - // an appropriate handler for this I/O strategy - ACE_Asynch_Acceptor<Asynch_HTTP_Handler_Factory> acceptor; - - // Tell the acceptor to listen on this->port_, which makes an - // asynchronous I/O request to the OS. - if (acceptor.open (ACE_INET_Addr (this->port_), - HTTP_Handler::MAX_REQUEST_SIZE + 1) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", - "ACE_Asynch_Acceptor::open"), -1); - - // Create the thread pool. - // Register threads with the proactor and thread manager. - Asynch_Thread_Pool_Task t (*ACE_Proactor::instance (), - this->tm_); - - // The proactor threads are waiting on the I/O Completion Port. - - // Wait for the threads to finish. - return this->tm_.wait (); -#endif /* ACE_WIN32 */ - return -1; -} - -// This only works on Win32 -#if defined (ACE_WIN32) - -Asynch_Thread_Pool_Task::Asynch_Thread_Pool_Task (ACE_Proactor &proactor, - ACE_Thread_Manager &tm) - : ACE_Task<ACE_NULL_SYNCH> (&tm), - proactor_ (proactor) -{ - if (this->activate () == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "Asynch_Thread_Pool_Task::open")); -} - -int -Asynch_Thread_Pool_Task::svc (void) -{ - for (;;) - if (this->proactor_.handle_events () == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Proactor::handle_events"), - -1); - - return 0; -} - -#endif /* ACE_WIN32 */ - -// Define the factory function. -ACE_SVC_FACTORY_DEFINE (HTTP_Server) - -// Define the object that describes the service. -ACE_STATIC_SVC_DEFINE (HTTP_Server, "HTTP_Server", ACE_SVC_OBJ_T, - &ACE_SVC_NAME (HTTP_Server), - ACE_Service_Type::DELETE_THIS - | ACE_Service_Type::DELETE_OBJ, 0) - -#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -template class ACE_LOCK_SOCK_Acceptor<ACE_SYNCH_MUTEX>; -#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -#pragma instantiate ACE_LOCK_SOCK_Acceptor<ACE_SYNCH_MUTEX> -#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ - diff --git a/apps/JAWS/server/HTTP_Server.h b/apps/JAWS/server/HTTP_Server.h deleted file mode 100644 index d682ffbc88f..00000000000 --- a/apps/JAWS/server/HTTP_Server.h +++ /dev/null @@ -1,136 +0,0 @@ -// -*- C++ -*- -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// jaws -// -// = FILENAME -// HTTP_Server.h -// -// = AUTHOR -// James Hu -// -// ============================================================================ - -#if !defined (HTTP_SERVER_H) -#define HTTP_SERVER_H - -#include "ace/Service_Object.h" -#include "ace/Thread_Manager.h" -#include "ace/Acceptor.h" -#include "ace/LOCK_SOCK_Acceptor.h" -#include "ace/Task_T.h" -#include "ace/Asynch_IO.h" -#include "HTTP_Handler.h" - -// Forward declaration. -class ACE_Proactor; - -#if defined (ACE_HAS_THREAD_SAFE_ACCEPT) -typedef ACE_LOCK_SOCK_Acceptor<ACE_SYNCH_NULL_MUTEX> HTTP_SOCK_Acceptor; -#else -typedef ACE_LOCK_SOCK_Acceptor<ACE_SYNCH_MUTEX> HTTP_SOCK_Acceptor; -#endif /* ACE_HAS_THREAD_SAFE_ACCEPT */ - -typedef HTTP_SOCK_Acceptor HTTP_Acceptor; - -class HTTP_Server : public ACE_Service_Object - // = TITLE - // This server is used to create HTTP Handlers for the Web - // server - // - // = DESCRIPTION -{ -public: - virtual int init (int argc, char *argv[]); - // Initialization - - virtual int fini (void); - // Exit hooks - -protected: - virtual int thread_per_request (void); - // Thread Per Request implementation - - virtual int asynch_thread_pool (void); - // Asynch Thread Pool implementation - - virtual int synch_thread_pool (void); - // Synch Thread Pool implementation - -private: - // James, comment these data members. - void parse_args (int argc, char **argv); - int port_; - int threads_; - int strategy_; - int backlog_; - int throttle_; - ACE_Thread_Manager tm_; - HTTP_Acceptor acceptor_; -}; - -class Synch_Thread_Pool_Task : public ACE_Task<ACE_NULL_SYNCH> - // = TITLE - // Used to implement Synch Thread Pool - // - // = DESCRIPTION - // Describe this and the others below. -{ -public: - Synch_Thread_Pool_Task (HTTP_Acceptor &acceptor, - ACE_Thread_Manager &tm, - int threads); - virtual int svc (void); - -private: - HTTP_Acceptor &acceptor_; -}; - -class Thread_Per_Request_Task : public ACE_Task<ACE_NULL_SYNCH> - // = TITLE - // Used to implement Thread Per Request. - // - // = DESCRIPTION - // Spawns a new thread for every new incoming connection. The - // handle below is the socket stream of the incoming connection. -{ -public: - Thread_Per_Request_Task (ACE_HANDLE handle, - ACE_Thread_Manager &tm, - int &grp_id); - virtual int open (void *args = 0); - virtual int close (u_long); - virtual int svc (void); - -private: - ACE_HANDLE handle_; - int &grp_id_; -}; - -// This only works on Win32 -#if defined (ACE_WIN32) -class Asynch_Thread_Pool_Task : public ACE_Task<ACE_NULL_SYNCH> - // = TITLE - // Used to implement Asynch Thread Pool - // - // = DESCRIPTION - // The proactor below utilizes WaitForMultipleObjects. -{ -public: - Asynch_Thread_Pool_Task (ACE_Proactor &proactor, - ACE_Thread_Manager &tm); - virtual int svc (void); - -private: - ACE_Proactor &proactor_; -}; -#endif /* ACE_WIN32 */ - -ACE_STATIC_SVC_DECLARE (HTTP_Server) - -#endif /* HTTP_SERVER_H */ - - diff --git a/apps/JAWS/server/IO.cpp b/apps/JAWS/server/IO.cpp deleted file mode 100644 index c746b5507fb..00000000000 --- a/apps/JAWS/server/IO.cpp +++ /dev/null @@ -1,411 +0,0 @@ -// $Id$ - -#include "IO.h" -#include "HTTP_Helpers.h" -#include "ace/Message_Block.h" -#include "ace/SOCK_Stream.h" -#include "ace/Filecache.h" - -JAWS_IO::JAWS_IO (void) - : handle_ (ACE_INVALID_HANDLE), - handler_ (0) -{ -} - -JAWS_IO::~JAWS_IO (void) -{ -} - -ACE_HANDLE -JAWS_IO::handle (void) -{ - return this->handle_; -} - -void -JAWS_IO::handle (ACE_HANDLE handle) -{ - this->handle_ = handle; -} - -void -JAWS_IO::handler (JAWS_IO_Handler *handler) -{ - this->handler_ = handler; -} - -JAWS_Synch_IO::JAWS_Synch_IO (void) -{ -} - -JAWS_Synch_IO::~JAWS_Synch_IO (void) -{ - ACE_OS::closesocket (this->handle_); -} - -void -JAWS_Synch_IO::read (ACE_Message_Block &mb, - int size) -{ - ACE_SOCK_Stream stream; - stream.set_handle (this->handle_); - int result = stream.recv (mb.wr_ptr (), size); - - if (result <= 0) - this->handler_->read_error (); - else - { - mb.wr_ptr (result); - this->handler_->read_complete (mb); - } -} - -void -JAWS_Synch_IO::receive_file (const char *filename, - void *initial_data, - int initial_data_length, - int entire_length) -{ - ACE_Filecache_Handle handle (filename, entire_length); - - int result = handle.error (); - - if (result == ACE_Filecache_Handle::SUCCESS) - { - ACE_SOCK_Stream stream; - stream.set_handle (this->handle_); - - int bytes_to_memcpy = ACE_MIN (entire_length, initial_data_length); - ACE_OS::memcpy (handle.address (), initial_data, bytes_to_memcpy); - - int bytes_to_read = entire_length - bytes_to_memcpy; - - int bytes = stream.recv_n ((char *) handle.address () + initial_data_length, - bytes_to_read); - if (bytes == bytes_to_read) - this->handler_->receive_file_complete (); - else - result = -1; - } - - if (result != ACE_Filecache_Handle::SUCCESS) - this->handler_->receive_file_error (result); -} - -void -JAWS_Synch_IO::transmit_file (const char *filename, - const char *header, - int header_size, - const char *trailer, - int trailer_size) -{ - ACE_Filecache_Handle handle (filename); - - int result = handle.error (); - - if (result == ACE_Filecache_Handle::SUCCESS) - { -#if defined (ACE_JAWS_BASELINE) - ACE_SOCK_Stream stream; - stream.set_handle (this->handle_); - - if ((stream.send_n (header, header_size) == header_size) - && ((u_long) stream.send_n (handle.address (), handle.size ()) - == handle.size ()) - && (stream.send_n (trailer, trailer_size) == trailer_size)) - this->handler_->transmit_file_complete (); - else - result = -1; -#else - // Attempting to use writev - // Is this faster? - struct iovec iov[3]; - int iovcnt = 0; - if (header_size > 0) - { - iov[iovcnt].iov_base = (char *) header; - iov[iovcnt].iov_len = header_size; - iovcnt++; - } - if (handle.size () > 0) - { - iov[iovcnt].iov_base = (char *) handle.address (); - iov[iovcnt].iov_len = handle.size (); - iovcnt++; - } - if (trailer_size > 0) - { - iov[iovcnt].iov_base = (char *) trailer; - iov[iovcnt].iov_len = trailer_size; - iovcnt++; - } - if (ACE_OS::writev (this->handle_, iov, iovcnt) < 0) - result = -1; - else - this->handler_->transmit_file_complete (); -#endif /* ACE_JAWS_BASELINE */ - } - - if (result != ACE_Filecache_Handle::SUCCESS) - this->handler_->transmit_file_error (result); -} - -void -JAWS_Synch_IO::send_confirmation_message (const char *buffer, - int length) -{ - this->send_message (buffer, length); - this->handler_->confirmation_message_complete (); -} - -void -JAWS_Synch_IO::send_error_message (const char *buffer, - int length) -{ - this->send_message (buffer, length); - this->handler_->error_message_complete (); -} - -void -JAWS_Synch_IO::send_message (const char *buffer, - int length) -{ - ACE_SOCK_Stream stream; - stream.set_handle (this->handle_); - stream.send_n (buffer, length); -} - -// This only works on Win32 -#if defined (ACE_WIN32) - -JAWS_Asynch_IO::JAWS_Asynch_IO (void) -{ -} - -JAWS_Asynch_IO::~JAWS_Asynch_IO (void) -{ - ACE_OS::closesocket (this->handle_); -} - -void -JAWS_Asynch_IO::read (ACE_Message_Block& mb, - int size) -{ - ACE_Asynch_Read_Stream ar; - - if (ar.open (*this, this->handle_) == -1 - || ar.read (mb, size) == -1) - this->handler_->read_error (); -} - -// This method will be called when an asynchronous read completes on a -// stream. - -void -JAWS_Asynch_IO::handle_read_stream (const ACE_Asynch_Read_Stream::Result &result) -{ - // This callback is for this->receive_file() - if (result.act () != 0) - { - int code = 0; - if (result.success () && result.bytes_transferred () != 0) - { - if (result.message_block ().length () == result.message_block ().size ()) - code = ACE_Filecache_Handle::SUCCESS; - else - { - ACE_Asynch_Read_Stream ar; - if (ar.open (*this, this->handle_) == -1 - || ar.read (result.message_block (), - result.message_block ().size () - result.message_block ().length (), - result.act ()) == -1) - code = -1; - else - return; - } - } - else - code = -1; - - if (code == ACE_Filecache_Handle::SUCCESS) - this->handler_->receive_file_complete (); - else - this->handler_->receive_file_error (code); - - delete &result.message_block (); - delete (ACE_Filecache_Handle *) result.act (); - } - else - { - // This callback is for this->read() - if (result.success () - && result.bytes_transferred () != 0) - this->handler_->read_complete (result.message_block ()); - else - this->handler_->read_error (); - } -} - -void -JAWS_Asynch_IO::receive_file (const char *filename, - void *initial_data, - int initial_data_length, - int entire_length) -{ - ACE_Message_Block *mb = 0; - ACE_Filecache_Handle *handle; - - ACE_NEW (handle, ACE_Filecache_Handle (filename, entire_length, NOMAP)); - - int result = handle->error (); - - if (result == ACE_Filecache_Handle::SUCCESS) - { - ACE_OS::memcpy (handle->address (), - initial_data, - initial_data_length); - - int bytes_to_read = entire_length - initial_data_length; - - ACE_NEW (mb, ACE_Message_Block ((char *)handle->address () - + initial_data_length, bytes_to_read)); - - if (mb == 0) - { - errno = ENOMEM; - result = -1; - } - else - { - ACE_Asynch_Read_Stream ar; - - if (ar.open (*this, this->handle_) == -1 - || ar.read (*mb, mb->size () - mb->length (), handle) == -1) - result = -1; - } - } - - if (result != ACE_Filecache_Handle::SUCCESS) - { - this->handler_->receive_file_error (result); - delete mb; - delete handle; - } -} - -void -JAWS_Asynch_IO::transmit_file (const char *filename, - const char *header, - int header_size, - const char *trailer, - int trailer_size) -{ - ACE_Asynch_Transmit_File::Header_And_Trailer *header_and_trailer = 0; - ACE_Filecache_Handle *handle = new ACE_Filecache_Handle (filename, NOMAP); - - int result = handle->error (); - - if (result == ACE_Filecache_Handle::SUCCESS) - { - ACE_Message_Block header_mb (header, header_size); - ACE_Message_Block trailer_mb (trailer, trailer_size); - - header_and_trailer = new ACE_Asynch_Transmit_File::Header_And_Trailer - (&header_mb, header_size, &trailer_mb, trailer_size); - - ACE_Asynch_Transmit_File tf; - - if (tf.open (*this, this->handle_) == -1 - || tf.transmit_file (handle->handle (), // file handle - header_and_trailer, // header and trailer data - 0, // bytes_to_write - 0, // offset - 0, // offset_high - 0, // bytes_per_send - 0, // flags - handle // act - ) == -1) - result = -1; - } - - if (result != ACE_Filecache_Handle::SUCCESS) - { - this->handler_->transmit_file_error (result); - delete header_and_trailer; - delete handle; - } -} - - -// This method will be called when an asynchronous transmit file completes. -void -JAWS_Asynch_IO::handle_transmit_file (const ACE_Asynch_Transmit_File::Result &result) -{ - if (result.success ()) - this->handler_->transmit_file_complete (); - else - this->handler_->transmit_file_error (-1); - - delete result.header_and_trailer (); - delete (ACE_Filecache_Handle *) result.act (); -} - -void -JAWS_Asynch_IO::send_confirmation_message (const char *buffer, - int length) -{ - this->send_message (buffer, length, CONFORMATION); -} - -void -JAWS_Asynch_IO::send_error_message (const char *buffer, - int length) -{ - this->send_message (buffer, length, ERROR_MESSAGE); -} - -void -JAWS_Asynch_IO::send_message (const char *buffer, - int length, - int act) -{ - ACE_Message_Block *mb; - ACE_NEW (mb, ACE_Message_Block (buffer, length)); - - if (mb == 0) - { - this->handler_->error_message_complete (); - return; - } - - ACE_Asynch_Write_Stream aw; - if (aw.open (*this, this->handle_) == -1 - || aw.write (*mb, length, (void *) act) == -1) - { - mb->release (); - - if (act == CONFORMATION) - this->handler_->confirmation_message_complete (); - else - this->handler_->error_message_complete (); - } -} - -void -JAWS_Asynch_IO::handle_write_stream (const ACE_Asynch_Write_Stream::Result &result) -{ - result.message_block ().release (); - - if (result.act () == (void *) CONFORMATION) - this->handler_->confirmation_message_complete (); - else - this->handler_->error_message_complete (); -} - -#endif /* ACE_WIN32 */ - -// #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) -// template class ACE_Singleton<JAWS_VFS, ACE_SYNCH_MUTEX>; -// #elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) -// #pragma instantiate ACE_Singleton<JAWS_VFS, ACE_SYNCH_MUTEX> -// #endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ diff --git a/apps/JAWS/server/IO.h b/apps/JAWS/server/IO.h deleted file mode 100644 index 5f14a1ed965..00000000000 --- a/apps/JAWS/server/IO.h +++ /dev/null @@ -1,218 +0,0 @@ -/* -*- c++ -*- */ -// Hey, Emacs! This is a C++ file! -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// jaws -// -// = FILENAME -// IO.h -// -// = AUTHOR -// James Hu -// -// ============================================================================ - -#if !defined (JAWS_IO_H) -#define JAWS_IO_H - -class ACE_Message_Block; -class JAWS_IO_Handler; - -#include "ace/ACE.h" -#include "ace/Asynch_IO.h" - -class JAWS_IO - // = TITLE - // - // This class defines the abstract interface for an I/O class in - // the context of Web-likes servers - // - // = DESCRIPTION - // - // An I/O class should have the following interface. Derived - // classes will define the exactly how the I/O will take place - // (Asynchronous, Synchronous, Reactive) -{ -public: - JAWS_IO (void); - virtual ~JAWS_IO (void); - void handler (JAWS_IO_Handler *handler); - void handle (ACE_HANDLE h); - ACE_HANDLE handle (void); - - // James, please add documentation here. - - virtual void read (ACE_Message_Block& mb, int size) = 0; - // read from the handle size bytes into the message block. - - virtual void transmit_file (const char *filename, - const char *header, - int header_size, - const char *trailer, - int trailer_size) = 0; - // send header, filename, trailer to the handle. - - virtual void receive_file (const char *filename, - void *initial_data, - int initial_data_length, - int entire_length) = 0; - // read data from the handle and store in filename. - - virtual void send_confirmation_message (const char *buffer, int length) = 0; - // send a confirmation message to the handle. - - virtual void send_error_message (const char *buffer, int length) = 0; - // send an error message to the handle. - -protected: - ACE_HANDLE handle_; - JAWS_IO_Handler *handler_; -}; - -class JAWS_IO_Handler - // = TITLE - // - // This class defines the abstract interface for an I/O handler class in - // the context of Web-likes servers - // - // = DESCRIPTION -{ -public: - virtual void read_complete (ACE_Message_Block &data) = 0; - // This method is called by the IO class when new client data shows - // up. - - virtual void read_error (void) = 0; - // This method is called by the IO class when there was an error in - // reading new data from the client. - - virtual void transmit_file_complete (void) = 0; - // This method is called by the IO class when the requested file has - // been successfully transmitted to the client. - - virtual void transmit_file_error (int result) = 0; - // This method is called by the IO class when there was an error in - // transmitting the requested file to the client. - - virtual void receive_file_complete (void) = 0; - // This method is called by the IO class when the requested file has - // been successfully received from the client. - - virtual void receive_file_error (int result) = 0; - // This method is called by the IO class when there was an error in - // receiving the requested file from the client. - - virtual void write_error (void) = 0; - // This method is called by the IO class when there was an error in - // writing data to the client. - - virtual void confirmation_message_complete (void) = 0; - // This method is called by the IO class when the confirmation - // message has been delivered to the client. - - virtual void error_message_complete (void) = 0; - // This method is called by the IO class when the error message has - // been delivered to the client. - -}; - -class JAWS_Synch_IO : public JAWS_IO - // = TITLE - // - // This class defines the interface for a Synchronous I/O class. - // - // = DESCRIPTION -{ -public: - JAWS_Synch_IO (void); - - ~JAWS_Synch_IO (void); - - void read (ACE_Message_Block& mb, int size); - - void transmit_file (const char *filename, - const char *header, - int header_size, - const char *trailer, - int trailer_size); - - void receive_file (const char *filename, - void *initial_data, - int initial_data_length, - int entire_length); - - void send_confirmation_message (const char *buffer, - int length); - - void send_error_message (const char *buffer, - int length); - -protected: - virtual void send_message (const char *buffer, - int length); -}; - -// This only works on Win32 -#if defined (ACE_WIN32) - -class JAWS_Asynch_IO : public JAWS_IO, public ACE_Handler - // = TITLE - // - // This class defines the interface for a Asynchronous I/O class. - // - // = DESCRIPTION -{ -public: - JAWS_Asynch_IO (void); - - ~JAWS_Asynch_IO (void); - - void read (ACE_Message_Block& mb, int size); - - void transmit_file (const char *filename, - const char *header, - int header_size, - const char *trailer, - int trailer_size); - - void receive_file (const char *filename, - void *initial_data, - int initial_data_length, - int entire_length); - - void send_confirmation_message (const char *buffer, - int length); - - void send_error_message (const char *buffer, - int length); - -protected: - enum Message_Types - { - CONFORMATION, - ERROR_MESSAGE - }; - - virtual void send_message (const char *buffer, - int length, - int act); - - virtual void handle_read_stream (const ACE_Asynch_Read_Stream::Result &result); - // This method will be called when an asynchronous read completes on - // a stream. - - virtual void handle_write_stream (const ACE_Asynch_Write_Stream::Result &result); - // This method will be called when an asynchronous write completes - // on a stream. - - virtual void handle_transmit_file (const ACE_Asynch_Transmit_File::Result &result); - // This method will be called when an asynchronous transmit file - // completes. -}; - -#endif /* ACE_WIN32 */ -#endif /* JAWS_IO_H */ - diff --git a/apps/JAWS/server/Makefile b/apps/JAWS/server/Makefile deleted file mode 100644 index 5e4a7057862..00000000000 --- a/apps/JAWS/server/Makefile +++ /dev/null @@ -1,668 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id$ -# -# Makefile for the ACE Adapter Web Server (JAWS) -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = main - -LIB = libJAWS.a - -MYFILES = \ - HTTP_Server \ - HTTP_Config \ - HTTP_Handler \ - HTTP_Helpers \ - Pipeline \ - HTTP_Request \ - HTTP_Response \ - Parse_Headers \ - IO - -LSRC = $(addsuffix .cpp,$(MYFILES)) -LOBJ = $(addsuffix .o,$(MYFILES)) - -VLDLIBS = $(LDLIBS:%=%$(VAR)) - -LDLIBS = -lJAWS - -BUILD = $(VOBJS) $(VLIB) $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -# The contents of rules.bin.GNU are expanded in Local targets, below. -# include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -# include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -# Expand rules.bin.GNU, but without the $(VOBJS) dependencies. -VBIN = $(BIN:%=%$(VAR)) - -$(BIN): %: $(VDIR)%.o - $(LINK.cc) -o $@ $^ $(LDFLAGS) $(VLDLIBS) $(POSTLINK) -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/HTTP_Server.o .shobj/HTTP_Server.so: HTTP_Server.cpp \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Get_Opt.i \ - $(ACE_ROOT)/ace/Asynch_Acceptor.h \ - $(ACE_ROOT)/ace/LOCK_SOCK_Acceptor.h \ - $(ACE_ROOT)/ace/SOCK_Acceptor.h \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/SOCK_Acceptor.i \ - $(ACE_ROOT)/ace/LOCK_SOCK_Acceptor.cpp \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Proactor.h \ - $(ACE_ROOT)/ace/Asynch_IO.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Thread_Manager.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Timer_List.h \ - $(ACE_ROOT)/ace/Timer_List_T.h \ - $(ACE_ROOT)/ace/Timer_List_T.cpp \ - $(ACE_ROOT)/ace/Timer_Heap.h \ - $(ACE_ROOT)/ace/Timer_Heap_T.h \ - $(ACE_ROOT)/ace/Timer_Heap_T.cpp \ - $(ACE_ROOT)/ace/Timer_Wheel.h \ - $(ACE_ROOT)/ace/Timer_Wheel_T.h \ - $(ACE_ROOT)/ace/Timer_Wheel_T.cpp \ - $(ACE_ROOT)/ace/High_Res_Timer.h \ - $(ACE_ROOT)/ace/High_Res_Timer.i IO.h \ - HTTP_Server.h $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Acceptor.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Task.i \ - $(ACE_ROOT)/ace/Task_T.h \ - $(ACE_ROOT)/ace/Message_Queue.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \ - $(ACE_ROOT)/ace/Strategies_T.cpp \ - $(ACE_ROOT)/ace/Service_Types.h \ - $(ACE_ROOT)/ace/Service_Types.i \ - $(ACE_ROOT)/ace/WFMO_Reactor.h \ - $(ACE_ROOT)/ace/WFMO_Reactor.i \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(ACE_ROOT)/ace/Message_Queue.cpp \ - $(ACE_ROOT)/ace/Task_T.i \ - $(ACE_ROOT)/ace/Task_T.cpp \ - $(ACE_ROOT)/ace/Module.h \ - $(ACE_ROOT)/ace/Module.i \ - $(ACE_ROOT)/ace/Module.cpp \ - $(ACE_ROOT)/ace/Stream_Modules.h \ - $(ACE_ROOT)/ace/Stream_Modules.i \ - $(ACE_ROOT)/ace/Stream_Modules.cpp \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Singleton.cpp \ - $(ACE_ROOT)/ace/Svc_Handler.i \ - $(ACE_ROOT)/ace/Svc_Handler.cpp \ - $(ACE_ROOT)/ace/Acceptor.i \ - $(ACE_ROOT)/ace/Acceptor.cpp HTTP_Handler.h \ - HTTP_Request.h Parse_Headers.h HTTP_Response.h -.obj/HTTP_Config.o .shobj/HTTP_Config.so: HTTP_Config.cpp \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i HTTP_Config.h -.obj/HTTP_Handler.o .shobj/HTTP_Handler.so: HTTP_Handler.cpp \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers.cpp \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/Filecache.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i HTTP_Handler.h \ - $(ACE_ROOT)/ace/Asynch_IO.h HTTP_Request.h \ - Parse_Headers.h HTTP_Response.h IO.h HTTP_Helpers.h -.obj/HTTP_Helpers.o .shobj/HTTP_Helpers.so: HTTP_Helpers.cpp HTTP_Helpers.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp -.obj/Pipeline.o .shobj/Pipeline.so: Pipeline.cpp Pipeline.h \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers.cpp \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i -.obj/HTTP_Request.o .shobj/HTTP_Request.so: HTTP_Request.cpp \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers.cpp \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i HTTP_Request.h \ - Parse_Headers.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - HTTP_Helpers.h HTTP_Config.h -.obj/HTTP_Response.o .shobj/HTTP_Response.so: HTTP_Response.cpp \ - $(ACE_ROOT)/ace/Process.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Process.i \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i HTTP_Response.h \ - HTTP_Request.h Parse_Headers.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - HTTP_Helpers.h HTTP_Config.h IO.h \ - $(ACE_ROOT)/ace/Asynch_IO.h -.obj/Parse_Headers.o .shobj/Parse_Headers.so: Parse_Headers.cpp Parse_Headers.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers.cpp \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h -.obj/IO.o .shobj/IO.so: IO.cpp IO.h $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Version.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Asynch_IO.h HTTP_Helpers.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Event_Handler.i \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(ACE_ROOT)/ace/Message_Block.h \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc.i \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Free_List.h \ - $(ACE_ROOT)/ace/Free_List.i \ - $(ACE_ROOT)/ace/Free_List.cpp \ - $(ACE_ROOT)/ace/Malloc_T.i \ - $(ACE_ROOT)/ace/Malloc_T.cpp \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers.cpp \ - $(ACE_ROOT)/ace/Signal.i \ - $(ACE_ROOT)/ace/Object_Manager.h \ - $(ACE_ROOT)/ace/Object_Manager.i \ - $(ACE_ROOT)/ace/Managed_Object.h \ - $(ACE_ROOT)/ace/Managed_Object.i \ - $(ACE_ROOT)/ace/Managed_Object.cpp \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/Mem_Map.i \ - $(ACE_ROOT)/ace/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/SOCK_Stream.h \ - $(ACE_ROOT)/ace/SOCK_IO.h \ - $(ACE_ROOT)/ace/SOCK.h \ - $(ACE_ROOT)/ace/Addr.h \ - $(ACE_ROOT)/ace/Addr.i \ - $(ACE_ROOT)/ace/IPC_SAP.h \ - $(ACE_ROOT)/ace/IPC_SAP.i \ - $(ACE_ROOT)/ace/SOCK.i \ - $(ACE_ROOT)/ace/SOCK_IO.i \ - $(ACE_ROOT)/ace/INET_Addr.h \ - $(ACE_ROOT)/ace/INET_Addr.i \ - $(ACE_ROOT)/ace/SOCK_Stream.i \ - $(ACE_ROOT)/ace/Filecache.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.cpp \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/Service_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.h \ - $(ACE_ROOT)/ace/Shared_Object.i \ - $(ACE_ROOT)/ace/Service_Object.i \ - $(ACE_ROOT)/ace/Service_Config.i \ - $(ACE_ROOT)/ace/Reactor.h \ - $(ACE_ROOT)/ace/Handle_Set.h \ - $(ACE_ROOT)/ace/Handle_Set.i \ - $(ACE_ROOT)/ace/Timer_Queue.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.h \ - $(ACE_ROOT)/ace/Timer_Queue_T.i \ - $(ACE_ROOT)/ace/Timer_Queue_T.cpp \ - $(ACE_ROOT)/ace/Reactor.i \ - $(ACE_ROOT)/ace/Reactor_Impl.h \ - $(ACE_ROOT)/ace/Svc_Conf_Tokens.h \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.i - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/apps/JAWS/server/Parse_Headers.cpp b/apps/JAWS/server/Parse_Headers.cpp deleted file mode 100644 index 2a103a081a0..00000000000 --- a/apps/JAWS/server/Parse_Headers.cpp +++ /dev/null @@ -1,355 +0,0 @@ -// $Id$ - -#include "Parse_Headers.h" - - -// Implementation of class Headers - -Headers::Headers (void) : done_(0) -{ -} - -Headers::~Headers (void) -{ -} - -void -Headers::recognize (const char * const header) -{ - (void)this->map_[header]; -} - -void -Headers::parse_header_line (char * const header_line) -{ - char *ptr = header_line; - char *buf = header_line; - int offset = 1; - - ptr = ACE_OS::strchr (header_line, '\n'); - - if (ptr > header_line && ptr[-1] == '\r') - { - ptr--; - offset++; - } - - if (ptr == header_line) - { - this->done_ = 1; - return; - } - - *ptr = '\0'; - ptr += offset; - - char *value; - char *header = ACE_OS::strtok_r (buf, ":", &value); - - ACE_DEBUG((LM_DEBUG, " (%t) Headers::parse_header_line [%s]\n", - header ? header : "<empty>")); - - if (header != NULL && this->map_.mapped (header)) - { - while (isspace (*value)) - value++; - - this->map_[header] = value; - - ACE_DEBUG((LM_DEBUG, " (%t) Headers::parse_header_line <%s>\n", - value ? value : "<empty>")); - } - - // Write back the unused portion of the input. - ACE_OS::memmove (header_line, ptr, strlen(ptr) + 1); -} - -int -Headers::complete_header_line (char *const header_line) -{ - // Algorithm -- - // Scan for end of line marker. - // If the next character is linear white space, then unfold the header. - // Else, if the next character is printable, we have a complete header line. - // Else, presumably the next character is '\0', so the header is incomplete. - - // return -1 if end of line but not complete header line - // return 0 if no end of line marker - // return 1 if complete header line - - char *ptr = header_line; - int offset; - - if (!this->end_of_line (ptr, offset)) - return 0; - - if (ptr == header_line) - { - ACE_OS::memmove (ptr, ptr+offset, ACE_OS::strlen (ptr + offset) + 1); - this->done_ = 1; - ACE_DEBUG ((LM_DEBUG, " (%t) no more headers\n")); - return 0; - } - - do - { - switch (ptr[offset]) - { - case ' ': - case '\t': - ACE_OS::memmove (ptr, ptr+offset, ACE_OS::strlen (ptr + offset) + 1); - break; - - case '\n': - case '\r': - return 1; - - default: - if (isalpha (ptr[offset])) - return 1; - else - return -1; - } - } - while (this->end_of_line (ptr, offset) != 0); - - return 0; -} - -int -Headers::end_of_headers (void) const -{ - return this->done_; -} - -Headers_Map_Item & -Headers::operator[] (const char * const header) -{ - return this->map_[header]; -} - -const Headers_Map_Item & -Headers::operator[] (const char * const header) const -{ - return this->map_[header]; -} - -int -Headers::end_of_line (char *&line, int &offset) const -{ - char *old_line = line; - char *ptr = ACE_OS::strchr (old_line, '\n'); - - if (ptr == NULL) - return 0; - - line = ptr; - offset = 1; - - if (line > old_line - && line[-1] == '\r') - { - line--; - offset = 2; - } - - return 1; -} - - -// Implementation of class Headers_Map - -Headers_Map::Headers_Map (void) - : num_headers_(0) -{ -} - -Headers_Map::~Headers_Map (void) -{ -} - -Headers_Map_Item::Headers_Map_Item (void) - : header_(0), - value_(0) -{ -} - -Headers_Map_Item::~Headers_Map_Item (void) -{ - ACE_OS::free ((void *) this->header_); - ACE_OS::free ((void *) this->value_); - this->header_ = this->value_ = 0; -} - -// Headers_Map_Item::operator const char * (void) const -// { -// return this->value_ == NULL ? this->no_value_ : this->value_; -// } - -Headers_Map_Item & -Headers_Map_Item::operator= (char * value) -{ - ACE_OS::free ((void *) this->value_); - this->value_ = ACE_OS::strdup (value); - return *this; -} - -Headers_Map_Item & -Headers_Map_Item::operator= (const char * value) -{ - ACE_OS::free ((void *) this->value_); - this->value_ = ACE_OS::strdup (value); - return *this; -} - -Headers_Map_Item & -Headers_Map_Item::operator= (const Headers_Map_Item & mi) -{ - ACE_OS::free ((void *) this->value_); - ACE_OS::free ((void *) this->header_); - this->header_ = ACE_OS::strdup (mi.header_); - this->value_ = (mi.value_ ? ACE_OS::strdup (mi.value_) : 0); - return *this; -} - -const char * -Headers_Map_Item::header (void) const -{ - return this->header_; -} - -const char * -Headers_Map_Item::value (void) const -{ - return this->value_; -} - -Headers_Map_Item & -Headers_Map::operator[] (const char * const header) -{ - Headers_Map_Item *item_ptr; - - item_ptr = this->find (header); - - if (item_ptr == NULL) - item_ptr = this->place (header); - - return *item_ptr; -} - -const Headers_Map_Item & -Headers_Map::operator[] (const char * const header) const -{ - Headers_Map_Item *item_ptr; - Headers_Map *mutable_this = (Headers_Map *)this; - - item_ptr = this->find (header); - - if (item_ptr == NULL) - item_ptr = mutable_this->place (header); - - return *item_ptr; -} - -int -Headers_Map::mapped (const char * const header) const -{ - int result = this->find (header) != NULL; - - return result; -} - -Headers_Map_Item * -Headers_Map::find (const char * const header) const -{ - Headers_Map *const mutable_this = (Headers_Map *) this; - - mutable_this->garbage_.header_ = header; -#if 0 - Headers_Map_Item *mi_ptr = (Headers_Map_Item *) - ::bsearch (&this->garbage_, - this->map_, - this->num_headers_, - sizeof (Headers_Map_Item), - Headers_Map::compare); -#else - int i = 0; - int j = this->num_headers_; - - while (i < j-1) - { - int k = (i+j)/2; - if (Headers_Map::compare (&this->garbage_, this->map_+k) < 0) - j = k; - else - i = k; - } - - Headers_Map_Item *mi_ptr = mutable_this->map_ + i; - if (Headers_Map::compare (&this->garbage_, mi_ptr) != 0) - mi_ptr = 0; -#endif - - mutable_this->garbage_.header_ = 0; - - return mi_ptr; -} - -Headers_Map_Item * -Headers_Map::place (const char *const header) -{ - this->garbage_.header_ = ACE_OS::strdup (header); - - int i = this->num_headers_++; - ACE_OS::free ((void *) this->map_[i].header_); - ACE_OS::free ((void *) this->map_[i].value_); - this->map_[i].header_ = 0; - this->map_[i].value_ = 0; - Headers_Map_Item temp_item; - - while (i > 0) - { - if (Headers_Map::compare (&this->garbage_, - &this->map_[i - 1]) > 0) - break; - - this->map_[i].header_ = this->map_[i - 1].header_; - this->map_[i].value_ = this->map_[i - 1].value_; - this->map_[i - 1].header_ = 0; - this->map_[i - 1].value_ = 0; - - i--; - } - - this->map_[i].header_ = this->garbage_.header_; - this->map_[i].value_ = this->garbage_.value_; - - this->garbage_.header_ = 0; - - return &this->map_[i]; -} - -int -Headers_Map::compare (const void *item1, - const void *item2) -{ - Headers_Map_Item *a, *b; - int result; - - a = (Headers_Map_Item *) item1; - b = (Headers_Map_Item *) item2; - - if (a->header_ == 0 || b->header_ == 0) - { - if (a->header_ == 0 && b->header_ == 0) - result = 0; - else if (a->header_ == 0) - result = 1; - else - result = -1; - } - else - result = ACE_OS::strcasecmp (a->header_, b->header_); - - return (result < 0) ? -1 : (result > 0); -} diff --git a/apps/JAWS/server/Parse_Headers.h b/apps/JAWS/server/Parse_Headers.h deleted file mode 100644 index 126243d4582..00000000000 --- a/apps/JAWS/server/Parse_Headers.h +++ /dev/null @@ -1,117 +0,0 @@ -/* -*- c++ -*- */ -// Hey, Emacs! This is a C++ file! -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// jaws -// -// = FILENAME -// Parse_Headers.h -// -// = AUTHOR -// James Hu -// -// ============================================================================ - -#if !defined (PARSE_HEADERS_H) -#define PARSE_HEADERS_H - -#include "ace/OS.h" - -class Headers_Map_Item -{ -friend class Headers_Map; -friend class Headers; - -private: - Headers_Map_Item (void); - ~Headers_Map_Item (void); - - // operator const char * (void) const; - Headers_Map_Item &operator= (char *); - Headers_Map_Item &operator= (const char *); - Headers_Map_Item &operator= (const Headers_Map_Item &); - -public: - const char *header (void) const; - const char *value (void) const; - -private: - const char *header_; - const char *value_; -}; - -class Headers_Map - // = TITLE - // Map textual headings to header values (e.g. "Subject:" maps to - // "Re: My left foot" -{ -public: - Headers_Map (void); - ~Headers_Map (void); - - Headers_Map_Item &operator[] (const char *const header); - const Headers_Map_Item &operator[] (const char *const header) const; - - enum - { - MAX_HEADERS = 100 - }; - - int mapped (const char *const header) const; - -private: - Headers_Map_Item *find (const char *const header) const; - Headers_Map_Item *place (const char *const header); - static int compare (const void *item1, const void *item2); - -private: - Headers_Map_Item map_[MAX_HEADERS]; - Headers_Map_Item garbage_; - - int num_headers_; -}; - -class Headers - // = TITLE - // A general mechanism to parse headers of Internet text headers. - // - // = DESCRIPTION - // Allow interesting headers to be inserted and later associated - // with values. This implementation assumes the parsing of headers - // will be done from ACE_Message_Blocks. -{ -public: - Headers (void); - ~Headers (void); - - void recognize (const char *const header); - - void parse_header_line (char *const header_line); - - int complete_header_line (char *const header_line); - // -1 -> end of line but not complete header line - // 0 -> no end of line marker - // 1 -> complete header line - - int end_of_headers (void) const; - - enum - { - MAX_HEADER_LINE_LENGTH = 8192 - }; - - Headers_Map_Item &operator[] (const char *const header); - const Headers_Map_Item &operator[] (const char *const header) const; - -private: - int end_of_line (char *&line, int &offset) const; - -private: - Headers_Map map_; - int done_; -}; - -#endif /* PARSE_HEADERS_H */ diff --git a/apps/JAWS/server/Pipeline.cpp b/apps/JAWS/server/Pipeline.cpp deleted file mode 100644 index c3494d54055..00000000000 --- a/apps/JAWS/server/Pipeline.cpp +++ /dev/null @@ -1,133 +0,0 @@ -// $Id$ - -#include "Pipeline.h" - -JAWS_Protocol_Pipeline::JAWS_Protocol_Pipeline (void) -{ -} - -JAWS_Protocol_Pipeline::JAWS_Protocol_Pipeline (JAWS_Protocol_Pipeline *pp) -{ - this->insert (pp); -} - -JAWS_Protocol_Pipeline::~JAWS_Protocol_Pipeline (void) -{ -} - -int -JAWS_Protocol_Pipeline::pull (ACE_Message_Block &mb) -{ - int result = 0; - - if (this->prev_pipe () != 0) - result = this->prev_pipe ()->pull (mb); - - if (result == 0) - result = this->pull_hook (mb); - - return result; -} - -int -JAWS_Protocol_Pipeline::push (ACE_Message_Block &mb) -{ - int result = 0; - - if (result == 0) - result = this->push_hook (mb); - - if (this->next_pipe () != 0) - result = this->next_pipe ()->push (mb); - - return result; -} - -int -JAWS_Protocol_Pipeline::init (int, char *[]) -{ - return 0; -} - -int -JAWS_Protocol_Pipeline::fini (void) -{ - return 0; -} - -void -JAWS_Protocol_Pipeline::insert (JAWS_Protocol_Pipeline *pp) -{ - if (pp == 0) - return; - - if (this->prev_pipe () != 0) - this->prev_pipe ()->append (pp); - pp->append (this); -} - -void -JAWS_Protocol_Pipeline::append (JAWS_Protocol_Pipeline *pp) -{ - if (pp == 0) - return; - - JAWS_Protocol_Pipeline *p; - for (p = this; p->next_pipe () != 0; p = p->next_pipe ()) - ; - p->next_pipe (pp); - pp->prev_pipe (p); -} - -JAWS_Protocol_Pipeline * -JAWS_Protocol_Pipeline::prev_pipe (JAWS_Protocol_Pipeline *) -{ - return 0; -} - -JAWS_Protocol_Pipeline * -JAWS_Protocol_Pipeline::next_pipe (JAWS_Protocol_Pipeline *) -{ - return 0; -} - -JAWS_Protocol_Filter::JAWS_Protocol_Filter (void) - : prev_pipe_ (0), - next_pipe_ (0) -{ -} - -JAWS_Protocol_Filter::JAWS_Protocol_Filter (JAWS_Protocol_Pipeline *pp) - : prev_pipe_ (0), - next_pipe_ (0), - JAWS_Protocol_Pipeline (pp) -{ -} - -JAWS_Protocol_Filter::~JAWS_Protocol_Filter (void) -{ -} - -void -JAWS_Protocol_Filter::add (JAWS_Protocol_Pipeline *component) -{ - JAWS_Protocol_Pipeline::insert (component); -} - -JAWS_Protocol_Pipeline * -JAWS_Protocol_Filter::prev_pipe (JAWS_Protocol_Pipeline *pp) -{ - if (pp != 0) - this->prev_pipe_ = pp; - - return this->prev_pipe_; -} - -JAWS_Protocol_Pipeline * -JAWS_Protocol_Filter::next_pipe (JAWS_Protocol_Pipeline *pp) -{ - if (pp != 0) - this->next_pipe_ = pp; - - return this->next_pipe_; -} diff --git a/apps/JAWS/server/Pipeline.h b/apps/JAWS/server/Pipeline.h deleted file mode 100644 index f004d149f2b..00000000000 --- a/apps/JAWS/server/Pipeline.h +++ /dev/null @@ -1,198 +0,0 @@ -/* -*- c++ -*- */ -// $Id$ - -#include "ace/Message_Block.h" -#include "ace/Service_Object.h" - - -class JAWS_Protocol_Pipeline : public ACE_Service_Object -// = TITLE -// This is intended to be the base class of pipeline -// components. -// -{ -public: - JAWS_Protocol_Pipeline (void); - JAWS_Protocol_Pipeline (JAWS_Protocol_Pipeline *pp); - - virtual ~JAWS_Protocol_Pipeline (void); - - int pull (ACE_Message_Block &mb); - // Method that initiates the work. - - int push (ACE_Message_Block &mb); - // Method that notifies work is available. - - virtual int pull_hook (ACE_Message_Block &mb) = 0; - // Required method that finishes the work. - - virtual int push_hook (ACE_Message_Block &mb) = 0; - // Required method that accepts available work. - - - virtual int init (int, char *[]); - virtual int fini (void); - // Service Object initialization and finalization - -protected: - void insert (JAWS_Protocol_Pipeline *pp); - void append (JAWS_Protocol_Pipeline *pp); - - virtual JAWS_Protocol_Pipeline * prev_pipe (JAWS_Protocol_Pipeline *pp = 0); - // Virtual accessor to the preceding pipeline component - - virtual JAWS_Protocol_Pipeline * next_pipe (JAWS_Protocol_Pipeline *pp = 0); - // Virtual accessor to the succeding pipeline component - -}; - -class JAWS_Protocol_Filter : public JAWS_Protocol_Pipeline -// = TITLE -// This is intended to be the task skeleton of pipeline -// components. -// -{ -public: - JAWS_Protocol_Filter (void); - JAWS_Protocol_Filter (JAWS_Protocol_Pipeline *pp); - // Constructors - - virtual ~JAWS_Protocol_Filter (void); - // Destructor - - void add (JAWS_Protocol_Pipeline *component); - // Insert a pipeline component into the pipeline chain - - virtual int pull_hook (ACE_Message_Block &mb) = 0; - // Required method that finishes the work. - - virtual int push_hook (ACE_Message_Block &mb) = 0; - // Required method that accepts available work. - -private: - virtual JAWS_Protocol_Pipeline * prev_pipe (JAWS_Protocol_Pipeline *pp = 0); - // Virtual accessor to the preceding pipeline component - - virtual JAWS_Protocol_Pipeline * next_pipe (JAWS_Protocol_Pipeline *pp = 0); - // Virtual accessor to the succeding pipeline component - -protected: - JAWS_Protocol_Pipeline *prev_pipe_; - // The preceeding element in the pipeline chain. - JAWS_Protocol_Pipeline *next_pipe_; - // The succeeding element in the pipeline chain. -}; - - -/* - This file describes the interfaces to the protocol pipeline - abstraction for JAWS. To understand how this is to work, let's - examine the processing path of a Web server. - - CLIENT SERVER - +--------------.--------------+ +---------------.----------------+ - |Issue Request |Display File | |Retrieve File |Receive Request | - +--------------^--------------+ +---------------^----------------+ - 11111111111111 66666666666666 333333333333333 2222222222222222 - +--------------+ +---------------+ - |Receive File | |Send File | - +--------------+ +---------------+ - 55555555555555 444444444444444 - - That is, a client issues a request. The server receives it, returns - content back to the client. The client then displays the content. - - But, this ignores issues which surround processing of the content. - As a simple example, consider the case when the client has limited - screen real-estate and limited colors (as might be the case with - PDAs). Then, when the content involves an image, the processing - path involve the following additional stages: - - CLIENT SERVER - +--------------.--------------+ +---------------.----------------+ - |Issue Request |Display File | |Retreive File |Receive Request | - +--------------^--------------+ +---------------^----------------+ - 11111111111111 88888888888888 333333333333333 2222222222222222 - +--------------+ +---------------+ - |Dither Image | |Send File | - +--------------+ +---------------+ - 77777777777777 444444444444444 - +--------------+ - |Scale Image | - +--------------+ - 66666666666666 - +--------------+ - |Receive File | - +--------------+ - 55555555555555 - - After the server returns the content of the image to the client, the - client must scale the image to fit on its display device and then - dither the image to the number of colors which its display device - can support. - - However, for a PDA with limited resources for battery life and - computation time, this may not be the optimal path for the file to - follow to achieve the best possible performance. For instance, due - to the bandwidth available to the PDA client, it may be better if - the server were to scale the image instead. In this case, the path - for the requested image would be viewed as the following: - - CLIENT SERVER - +--------------.--------------+ +---------------.----------------+ - |Issue Request |Display File | |Retreive File |Receive Request | - +--------------^--------------+ +---------------^----------------+ - 11111111111111 88888888888888 333333333333333 2222222222222222 - +--------------+ +---------------+ - |Dither Image | |Scale File | - +--------------+ +---------------+ - 77777777777777 444444444444444 - +--------------+ +---------------+ - |Receive File | |Send File | - +--------------+ +---------------+ - 66666666666666 555555555555555 - - The purpose of Pipeline is to provide a framework which allows for - this kind of negotiation to occur between a client and the server. - The protocol by which the client and server negotiate with each - other is left as an open issue. Solutions that can be used may - include use of special headers which identify which actions a client - would like the server to perform, or through PEP, the protocol - negotiation protocol. - - */ - -// Ok, let's figure out an interface that's going to work. - -// These pipeline components should provide a method that allows me to -// chain a bunch of them together and then with a single method call, -// have data. - -// The usual semantics of programatic pipelines like ours is that the -// first component makes a complete pass over the input before sending -// it to the next component. This seems like a reasonable semantic, -// but we can do some refinements. - -// First, we do not want the hand-off of data to involve copying the -// data from the previous component to the next. This implies that -// between two consecutive components is a shared buffer. However, it -// is wasteful to have N+1 buffers for N pipeline components if the -// pipelines are going to be processing the input serially. This -// leads to the conclusion that only two buffers are necessary for the -// pipeline. - -// Second, we need to decide how to specify the makeup or -// functionality of the protocol pipeline. In UNIX, this is done by -// the command line with "|" symbols between components. We too could -// use strings. - -// Third, we need to decide how to build of these protocol pipelines. -// We may wish for static definitions to be constructed ala the -// Service Configurator. This implies that the Protocol Pipeline -// Factory is a Service Object, and it can accept a string which -// describes the components of the pipeline. Since we are using -// strings, it seems that each of the pipeline components themselves -// could also be considered Service Objects to be dynamically loaded. -// However, to maintain some notion of type safety, these pipeline -// components should probably have their own separate Configurator, so -// a Protocol Pipeline Configurator should be created. diff --git a/apps/JAWS/server/README b/apps/JAWS/server/README deleted file mode 100644 index 4fab66d703d..00000000000 --- a/apps/JAWS/server/README +++ /dev/null @@ -1,201 +0,0 @@ -# -*- text -*- -# Hey, Emacs! This is a TEXT file. - --------------------------- -README for the JAWS server --------------------------- - -This is the README file for the JAWS server. - -CONTENTS - -1. Compiling - a. UNIX - b. Windows NT 4.0 - -2. Executing - a. svc.conf parameters - b. General Info - -3. Limitations - -4. Acknowledgements - ------------- -1. Compiling ------------- - -1a. Compiling under UNIX. - - Assuming that the environment variable ACE_ROOT is set -correctly, and that you are using GNU make, compiling should simply -involve: - - $ cd $ACE_ROOT/apps/JAWS/server - $ make clean - $ make depend - $ make - -This will produce an executable named ``main''. - -1b. Compiling under Windows NT 4.0. - - Assuming you are using a recent version of Microsoft -Visual C++, you can use the jaws.mdp file located in -$ACE_ROOT/apps/JAWS/server to build JAWS. - - ------------- -2. Executing ------------- - -2a. svc.conf parameters. - - To run JAWS, simply execute "main". It loads the HTTP server -from the file named in the ``svc.conf'' file. The ``svc.conf'' file -itself contains documentation about the load line. It supports the -following command-line arguments: - - -p port Start JAWS on the specified port. - -n num_threads Use num_threads as the maximum number of threads. - -f thr_flag Can be used multiple times to set thread - creation flags: - THR_BOUND -> bound threads - THR_DAEMON -> daemonized threads - THR_DETACHED -> detached threads - THR_NEW_LWP -> increase concurrency level - -t thr_strategy Use one of the following strategies: - POOL -> thread pool - PER_REQUEST -> thread-per-request - THROTTLE -> thread-per-request with throttling - -i io_strategy Use one of the following strategies: - SYNCH -> synchronous I/O - ASYNCH -> asynchronous I/O - -b backlog Backlog value for listen (). - -2b. General Information - - By default, JAWS will used port 5432 with 5 threads and apply -the synchronous thread pool strategy. Unless set, the default backlog -value is equal the value of the maximum number of threads. - - JAWS also responds to several environment variables. This is -a temporary feature which will be replaced by a more general -configuration file similar to NCSA httpd's. The environment variables -are: - JAWS_DOCUMENT_ROOT - This is the starting point the server will use to look - for files. - Default value: the current directory of the server. - - JAWS_CGI_PATH - This is intended to be a ``:'' delimited list of paths - (similar to your regular PATH environment variable) which - describes the possible locations for CGI binaries. - Default value: Any directory named ``cgi-bin''. - - JAWS_USER_DIR - This is the name of the subdirectory in a users home - directory which contains publicly available WWW documents. - Default value: ``.www''. - - JAWS_DIR_INDEX - The name of the file which is sent, if present, when the URL - leads to a directory. - Default value: ``index.html''. - - You may test the server by executing telnet, opening a -connection to the server machine on the server port. For instance: - - $ telnet machinename 5432 - Trying ###.###.###.###... - Connected to machinename.your.domain - Escape character is '^]'. - GET /main.cpp - // main.cpp - //... - - Note that if you use an HTTP/1.0 get request, then you have -to hit return twice before the file will be sent. E.g., - - $ telnet machinename 5432 - Trying ###.###.###.###... - Connected to machinename.your.domain - Escape character is '^]'. - GET /main.cpp HTTP/1.0 - - // main.cpp - //... - - Where applicable, JAWS will perform ``~'' expansion for home -directories of usernames. - - ------------ -3. Features ------------ - -(a) JAWS supports full HTTP/1.0 responses. - -(b) JAWS support CGI scripts on UNIX. - -(c) JAWS parses request headers. The mechanism can be used to parse - headers from a variety of text based protocols (e.g., SNMP and - NNTP). - -(d) Optimized filecaching. - --------------- -4. Limitations --------------- - -The following are TODO items for JAWS: - -status|task -------+----------------------- - | (a) JAWS will support HTTP/1.1 eventually, including - | persistent connections. - | - | (b) JAWS can be more aggressive with its threading strategies, - | such as: - | (*) parallelize HTTP protocol processing, similar to - | PHTTPD. - | (*) prioritize threads to give more important requests - | more execution time. - | (*) apply throttling, similar to THTTPD. - | - | (c) JAWS will support a general protocol content filtering - | mechanism which will be used to replace the existing CGI - | support implementation. - | - -Questions, comments, corrections, suggestions are welcome. Please -feel free to send me any such correspondence. - -James Hu <jxh@cs.wustl.edu> - -------------------- -4. Acknowledgements -------------------- - - My partners in crime for this endeavor include: - - Eastman-Kodak, Rochester N.Y. - and Object Technologies, Inc. For providing funding for this - research. - - Dr. Douglas Schmidt For being my advisor, and - convincing my sponsors to fund - me. - - Irfan Pyarali For porting JAWS to NT, and - for designing and implementing - the JAWS IO mechanism. - - Sumedh Mungee For writing the benchmark - client, and performing the - UNIX benchmarks. - - Tim Harrison For his comments, advice, and - help in designing the IO - mechanism used by JAWS. diff --git a/apps/JAWS/server/jaws.auth b/apps/JAWS/server/jaws.auth deleted file mode 100644 index e3c51f7eac8..00000000000 --- a/apps/JAWS/server/jaws.auth +++ /dev/null @@ -1,2 +0,0 @@ -jxh:nonsense -bill:no nonsense diff --git a/apps/JAWS/server/jaws.dsp b/apps/JAWS/server/jaws.dsp deleted file mode 100644 index 8310537a29d..00000000000 --- a/apps/JAWS/server/jaws.dsp +++ /dev/null @@ -1,175 +0,0 @@ -# Microsoft Developer Studio Project File - Name="jaws" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=jaws - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "jaws.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "jaws.mak" CFG="jaws - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "jaws - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "jaws - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "jaws - 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 Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\\" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "ACE_NLOGGING" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-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 /nologo /subsystem:console /machine:I386 /out:".\jaws-r.exe" /libpath:"..\..\..\ace"
-
-!ELSEIF "$(CFG)" == "jaws - 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 Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# 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 /I "..\..\..\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-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 aced.lib /nologo /subsystem:console /debug /machine:I386 /libpath:"..\..\..\ace"
-
-!ENDIF
-
-# Begin Target
-
-# Name "jaws - Win32 Release"
-# Name "jaws - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
-# Begin Source File
-
-SOURCE=.\HTTP_Config.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\HTTP_Handler.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\HTTP_Helpers.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\HTTP_Request.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\HTTP_Response.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\HTTP_Server.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\IO.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\main.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\Parse_Headers.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\HTTP_Config.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\HTTP_Handler.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\HTTP_Helpers.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\HTTP_Request.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\HTTP_Response.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\HTTP_Server.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\HTTP_Server_T.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\IO.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\Parse_Headers.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Source File
-
-SOURCE=.\HTTP_Server_T.cpp
-# PROP BASE Exclude_From_Build 1
-# PROP Exclude_From_Build 1
-# End Source File
-# End Target
-# End Project
diff --git a/apps/JAWS/server/jaws.dsw b/apps/JAWS/server/jaws.dsw deleted file mode 100644 index a05037c0982..00000000000 --- a/apps/JAWS/server/jaws.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 5.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "jaws"=.\jaws.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/apps/JAWS/server/jaws.mak b/apps/JAWS/server/jaws.mak deleted file mode 100644 index 71b6a070580..00000000000 --- a/apps/JAWS/server/jaws.mak +++ /dev/null @@ -1,988 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-!IF "$(CFG)" == ""
-CFG=jaws - Win32 Debug
-!MESSAGE No configuration specified. Defaulting to jaws - Win32 Debug.
-!ENDIF
-
-!IF "$(CFG)" != "jaws - Win32 Release" && "$(CFG)" != "jaws - 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 "jaws.mak" CFG="jaws - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "jaws - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "jaws - 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 "jaws - Win32 Debug"
-RSC=rc.exe
-CPP=cl.exe
-
-!IF "$(CFG)" == "jaws - 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)\jaws-r.exe"
-
-CLEAN :
- -@erase "$(INTDIR)\HTTP_Config.obj"
- -@erase "$(INTDIR)\HTTP_Handler.obj"
- -@erase "$(INTDIR)\HTTP_Helpers.obj"
- -@erase "$(INTDIR)\HTTP_Request.obj"
- -@erase "$(INTDIR)\HTTP_Response.obj"
- -@erase "$(INTDIR)\HTTP_Server.obj"
- -@erase "$(INTDIR)\IO.obj"
- -@erase "$(INTDIR)\main.obj"
- -@erase "$(INTDIR)\Parse_Headers.obj"
- -@erase "$(OUTDIR)\jaws-r.exe"
-
-"$(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 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "ACE_NLOGGING" /YX /c
-CPP_PROJ=/nologo /MDd /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D\
- "_CONSOLE" /D "ACE_NLOGGING" /Fp"$(INTDIR)/jaws.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)/jaws.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 wsock32.lib 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 /out:"jaws-r.exe"
-LINK32_FLAGS=wsock32.lib 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)/jaws-r.pdb" /machine:I386 /out:"$(OUTDIR)/jaws-r.exe"
-LINK32_OBJS= \
- "$(INTDIR)\HTTP_Config.obj" \
- "$(INTDIR)\HTTP_Handler.obj" \
- "$(INTDIR)\HTTP_Helpers.obj" \
- "$(INTDIR)\HTTP_Request.obj" \
- "$(INTDIR)\HTTP_Response.obj" \
- "$(INTDIR)\HTTP_Server.obj" \
- "$(INTDIR)\IO.obj" \
- "$(INTDIR)\main.obj" \
- "$(INTDIR)\Parse_Headers.obj"
-
-"$(OUTDIR)\jaws-r.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "jaws - 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)\jaws.exe"
-
-CLEAN :
- -@erase "$(INTDIR)\HTTP_Config.obj"
- -@erase "$(INTDIR)\HTTP_Handler.obj"
- -@erase "$(INTDIR)\HTTP_Helpers.obj"
- -@erase "$(INTDIR)\HTTP_Request.obj"
- -@erase "$(INTDIR)\HTTP_Response.obj"
- -@erase "$(INTDIR)\HTTP_Server.obj"
- -@erase "$(INTDIR)\IO.obj"
- -@erase "$(INTDIR)\main.obj"
- -@erase "$(INTDIR)\Parse_Headers.obj"
- -@erase "$(INTDIR)\vc40.idb"
- -@erase "$(INTDIR)\vc40.pdb"
- -@erase "$(OUTDIR)\jaws.exe"
- -@erase "$(OUTDIR)\jaws.ilk"
- -@erase "$(OUTDIR)\jaws.pdb"
-
-"$(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 /I "..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D\
- "_CONSOLE" /Fp"$(INTDIR)/jaws.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)/jaws.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 wsock32.lib aced.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=wsock32.lib aced.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)/jaws.pdb" /debug /machine:I386 /out:"$(OUTDIR)/jaws.exe"
-LINK32_OBJS= \
- "$(INTDIR)\HTTP_Config.obj" \
- "$(INTDIR)\HTTP_Handler.obj" \
- "$(INTDIR)\HTTP_Helpers.obj" \
- "$(INTDIR)\HTTP_Request.obj" \
- "$(INTDIR)\HTTP_Response.obj" \
- "$(INTDIR)\HTTP_Server.obj" \
- "$(INTDIR)\IO.obj" \
- "$(INTDIR)\main.obj" \
- "$(INTDIR)\Parse_Headers.obj"
-
-"$(OUTDIR)\jaws.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 "jaws - Win32 Release"
-# Name "jaws - Win32 Debug"
-
-!IF "$(CFG)" == "jaws - Win32 Release"
-
-!ELSEIF "$(CFG)" == "jaws - Win32 Debug"
-
-!ENDIF
-
-################################################################################
-# Begin Source File
-
-SOURCE=.\main.cpp
-DEP_CPP_MAIN_=\
- "..\..\..\ace\config-win32.h"\
- "..\..\..\ace\LOCK_SOCK_Acceptor.cpp"\
- "..\..\JAWS/server/HTTP_Handler.h"\
- "..\..\JAWS/server/HTTP_Request.h"\
- "..\..\JAWS/server/HTTP_Server.h"\
- "..\..\JAWS/server/IO.h"\
- ".\HTTP_Response.h"\
- ".\Parse_Headers.h"\
- {$(INCLUDE)}"\ace\Acceptor.cpp"\
- {$(INCLUDE)}"\ace\Acceptor.h"\
- {$(INCLUDE)}"\ace\Acceptor.i"\
- {$(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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Filecache.h"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(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\LOCK_SOCK_Acceptor.h"\
- {$(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\Managed_Object.cpp"\
- {$(INCLUDE)}"\ace\Managed_Object.h"\
- {$(INCLUDE)}"\ace\Managed_Object.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\Reactor.h"\
- {$(INCLUDE)}"\ace\Reactor.i"\
- {$(INCLUDE)}"\ace\Reactor_Impl.h"\
- {$(INCLUDE)}"\ace\Service_Config.h"\
- {$(INCLUDE)}"\ace\Service_Config.i"\
- {$(INCLUDE)}"\ace\Service_Object.h"\
- {$(INCLUDE)}"\ace\Service_Object.i"\
- {$(INCLUDE)}"\ace\Service_Types.h"\
- {$(INCLUDE)}"\ace\Service_Types.i"\
- {$(INCLUDE)}"\ace\Shared_Object.h"\
- {$(INCLUDE)}"\ace\Shared_Object.i"\
- {$(INCLUDE)}"\ace\Signal.h"\
- {$(INCLUDE)}"\ace\Signal.i"\
- {$(INCLUDE)}"\ace\Singleton.cpp"\
- {$(INCLUDE)}"\ace\Singleton.h"\
- {$(INCLUDE)}"\ace\Singleton.i"\
- {$(INCLUDE)}"\ace\SOCK.h"\
- {$(INCLUDE)}"\ace\SOCK.i"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\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_Queue.h"\
- {$(INCLUDE)}"\ace\Timer_Queue_T.cpp"\
- {$(INCLUDE)}"\ace\Timer_Queue_T.h"\
- {$(INCLUDE)}"\ace\Timer_Queue_T.i"\
- {$(INCLUDE)}"\ace\Trace.h"\
- {$(INCLUDE)}"\ace\Version.h"\
- {$(INCLUDE)}"\ace\WFMO_Reactor.h"\
- {$(INCLUDE)}"\ace\WFMO_Reactor.i"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\main.obj" : $(SOURCE) $(DEP_CPP_MAIN_) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\HTTP_Helpers.cpp
-DEP_CPP_HTTP_=\
- "..\..\..\ace\config-win32.h"\
- "..\..\JAWS/server/HTTP_Helpers.h"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Log_Msg.h"\
- {$(INCLUDE)}"\ace\Log_Priority.h"\
- {$(INCLUDE)}"\ace\Log_Record.h"\
- {$(INCLUDE)}"\ace\Log_Record.i"\
- {$(INCLUDE)}"\ace\Managed_Object.cpp"\
- {$(INCLUDE)}"\ace\Managed_Object.h"\
- {$(INCLUDE)}"\ace\Managed_Object.i"\
- {$(INCLUDE)}"\ace\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\SString.h"\
- {$(INCLUDE)}"\ace\SString.i"\
- {$(INCLUDE)}"\ace\stdcpp.h"\
- {$(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\Synch.h"\
- {$(INCLUDE)}"\ace\Synch.i"\
- {$(INCLUDE)}"\ace\Synch_T.cpp"\
- {$(INCLUDE)}"\ace\Synch_T.h"\
- {$(INCLUDE)}"\ace\Synch_T.i"\
- {$(INCLUDE)}"\ace\Thread.h"\
- {$(INCLUDE)}"\ace\Thread.i"\
- {$(INCLUDE)}"\ace\Trace.h"\
- {$(INCLUDE)}"\ace\Version.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\HTTP_Helpers.obj" : $(SOURCE) $(DEP_CPP_HTTP_) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\HTTP_Handler.cpp
-DEP_CPP_HTTP_H=\
- "..\..\..\ace\config-win32.h"\
- "..\..\JAWS/server/HTTP_Handler.h"\
- "..\..\JAWS/server/HTTP_Helpers.h"\
- "..\..\JAWS/server/HTTP_Request.h"\
- "..\..\JAWS/server/IO.h"\
- ".\HTTP_Response.h"\
- ".\Parse_Headers.h"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Asynch_IO.h"\
- {$(INCLUDE)}"\ace\Asynch_IO.i"\
- {$(INCLUDE)}"\ace\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Filecache.h"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(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\Managed_Object.cpp"\
- {$(INCLUDE)}"\ace\Managed_Object.h"\
- {$(INCLUDE)}"\ace\Managed_Object.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\Reactor.h"\
- {$(INCLUDE)}"\ace\Reactor.i"\
- {$(INCLUDE)}"\ace\Reactor_Impl.h"\
- {$(INCLUDE)}"\ace\Service_Config.h"\
- {$(INCLUDE)}"\ace\Service_Config.i"\
- {$(INCLUDE)}"\ace\Service_Object.h"\
- {$(INCLUDE)}"\ace\Service_Object.i"\
- {$(INCLUDE)}"\ace\Shared_Object.h"\
- {$(INCLUDE)}"\ace\Shared_Object.i"\
- {$(INCLUDE)}"\ace\Signal.h"\
- {$(INCLUDE)}"\ace\Signal.i"\
- {$(INCLUDE)}"\ace\SString.h"\
- {$(INCLUDE)}"\ace\SString.i"\
- {$(INCLUDE)}"\ace\stdcpp.h"\
- {$(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\Synch.h"\
- {$(INCLUDE)}"\ace\Synch.i"\
- {$(INCLUDE)}"\ace\Synch_T.cpp"\
- {$(INCLUDE)}"\ace\Synch_T.h"\
- {$(INCLUDE)}"\ace\Synch_T.i"\
- {$(INCLUDE)}"\ace\Thread.h"\
- {$(INCLUDE)}"\ace\Thread.i"\
- {$(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\Trace.h"\
- {$(INCLUDE)}"\ace\Version.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\HTTP_Handler.obj" : $(SOURCE) $(DEP_CPP_HTTP_H) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\IO.cpp
-DEP_CPP_IO_CP=\
- "..\..\..\ace\config-win32.h"\
- "..\..\JAWS/server/HTTP_Helpers.h"\
- "..\..\JAWS/server/IO.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Filecache.h"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\INET_Addr.h"\
- {$(INCLUDE)}"\ace\INET_Addr.i"\
- {$(INCLUDE)}"\ace\IPC_SAP.h"\
- {$(INCLUDE)}"\ace\IPC_SAP.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\Managed_Object.cpp"\
- {$(INCLUDE)}"\ace\Managed_Object.h"\
- {$(INCLUDE)}"\ace\Managed_Object.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\Reactor.h"\
- {$(INCLUDE)}"\ace\Reactor.i"\
- {$(INCLUDE)}"\ace\Reactor_Impl.h"\
- {$(INCLUDE)}"\ace\Service_Config.h"\
- {$(INCLUDE)}"\ace\Service_Config.i"\
- {$(INCLUDE)}"\ace\Service_Object.h"\
- {$(INCLUDE)}"\ace\Service_Object.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_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\stdcpp.h"\
- {$(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\Synch.h"\
- {$(INCLUDE)}"\ace\Synch.i"\
- {$(INCLUDE)}"\ace\Synch_T.cpp"\
- {$(INCLUDE)}"\ace\Synch_T.h"\
- {$(INCLUDE)}"\ace\Synch_T.i"\
- {$(INCLUDE)}"\ace\Thread.h"\
- {$(INCLUDE)}"\ace\Thread.i"\
- {$(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\Trace.h"\
- {$(INCLUDE)}"\ace\Version.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\IO.obj" : $(SOURCE) $(DEP_CPP_IO_CP) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\HTTP_Request.cpp
-DEP_CPP_HTTP_R=\
- "..\..\..\ace\config-win32.h"\
- "..\..\JAWS/server/HTTP_Helpers.h"\
- "..\..\JAWS/server/HTTP_Request.h"\
- ".\HTTP_Config.h"\
- ".\Parse_Headers.h"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.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\Managed_Object.cpp"\
- {$(INCLUDE)}"\ace\Managed_Object.h"\
- {$(INCLUDE)}"\ace\Managed_Object.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\Signal.h"\
- {$(INCLUDE)}"\ace\Signal.i"\
- {$(INCLUDE)}"\ace\SString.h"\
- {$(INCLUDE)}"\ace\SString.i"\
- {$(INCLUDE)}"\ace\stdcpp.h"\
- {$(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\Synch.h"\
- {$(INCLUDE)}"\ace\Synch.i"\
- {$(INCLUDE)}"\ace\Synch_T.cpp"\
- {$(INCLUDE)}"\ace\Synch_T.h"\
- {$(INCLUDE)}"\ace\Synch_T.i"\
- {$(INCLUDE)}"\ace\Thread.h"\
- {$(INCLUDE)}"\ace\Thread.i"\
- {$(INCLUDE)}"\ace\Trace.h"\
- {$(INCLUDE)}"\ace\Version.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\HTTP_Request.obj" : $(SOURCE) $(DEP_CPP_HTTP_R) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\HTTP_Server.cpp
-DEP_CPP_HTTP_S=\
- "..\..\..\ace\config-win32.h"\
- "..\..\..\ace\LOCK_SOCK_Acceptor.cpp"\
- "..\..\JAWS/server/HTTP_Handler.h"\
- "..\..\JAWS/server/HTTP_Request.h"\
- "..\..\JAWS/server/HTTP_Server.h"\
- "..\..\JAWS/server/IO.h"\
- ".\HTTP_Response.h"\
- ".\Parse_Headers.h"\
- {$(INCLUDE)}"\ace\Acceptor.cpp"\
- {$(INCLUDE)}"\ace\Acceptor.h"\
- {$(INCLUDE)}"\ace\Acceptor.i"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Addr.h"\
- {$(INCLUDE)}"\ace\Addr.i"\
- {$(INCLUDE)}"\ace\Asynch_Acceptor.cpp"\
- {$(INCLUDE)}"\ace\Asynch_Acceptor.h"\
- {$(INCLUDE)}"\ace\Asynch_Acceptor.i"\
- {$(INCLUDE)}"\ace\Asynch_IO.h"\
- {$(INCLUDE)}"\ace\Asynch_IO.i"\
- {$(INCLUDE)}"\ace\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Dynamic.h"\
- {$(INCLUDE)}"\ace\Dynamic.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Get_Opt.h"\
- {$(INCLUDE)}"\ace\Get_Opt.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\LOCK_SOCK_Acceptor.h"\
- {$(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\Managed_Object.cpp"\
- {$(INCLUDE)}"\ace\Managed_Object.h"\
- {$(INCLUDE)}"\ace\Managed_Object.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\Proactor.h"\
- {$(INCLUDE)}"\ace\Proactor.i"\
- {$(INCLUDE)}"\ace\Reactor.h"\
- {$(INCLUDE)}"\ace\Reactor.i"\
- {$(INCLUDE)}"\ace\Reactor_Impl.h"\
- {$(INCLUDE)}"\ace\Service_Config.h"\
- {$(INCLUDE)}"\ace\Service_Config.i"\
- {$(INCLUDE)}"\ace\Service_Object.h"\
- {$(INCLUDE)}"\ace\Service_Object.i"\
- {$(INCLUDE)}"\ace\Service_Types.h"\
- {$(INCLUDE)}"\ace\Service_Types.i"\
- {$(INCLUDE)}"\ace\Shared_Object.h"\
- {$(INCLUDE)}"\ace\Shared_Object.i"\
- {$(INCLUDE)}"\ace\Signal.h"\
- {$(INCLUDE)}"\ace\Signal.i"\
- {$(INCLUDE)}"\ace\Singleton.cpp"\
- {$(INCLUDE)}"\ace\Singleton.h"\
- {$(INCLUDE)}"\ace\Singleton.i"\
- {$(INCLUDE)}"\ace\SOCK.h"\
- {$(INCLUDE)}"\ace\SOCK.i"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\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\Trace.h"\
- {$(INCLUDE)}"\ace\Version.h"\
- {$(INCLUDE)}"\ace\WFMO_Reactor.h"\
- {$(INCLUDE)}"\ace\WFMO_Reactor.i"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\HTTP_Server.obj" : $(SOURCE) $(DEP_CPP_HTTP_S) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\HTTP_Config.cpp
-DEP_CPP_HTTP_C=\
- "..\..\..\ace\config-win32.h"\
- ".\HTTP_Config.h"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Log_Msg.h"\
- {$(INCLUDE)}"\ace\Log_Priority.h"\
- {$(INCLUDE)}"\ace\Log_Record.h"\
- {$(INCLUDE)}"\ace\Log_Record.i"\
- {$(INCLUDE)}"\ace\Managed_Object.cpp"\
- {$(INCLUDE)}"\ace\Managed_Object.h"\
- {$(INCLUDE)}"\ace\Managed_Object.i"\
- {$(INCLUDE)}"\ace\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\SString.h"\
- {$(INCLUDE)}"\ace\SString.i"\
- {$(INCLUDE)}"\ace\stdcpp.h"\
- {$(INCLUDE)}"\ace\Trace.h"\
- {$(INCLUDE)}"\ace\Version.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\HTTP_Config.obj" : $(SOURCE) $(DEP_CPP_HTTP_C) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\HTTP_Response.cpp
-DEP_CPP_HTTP_RE=\
- "..\..\..\ace\config-win32.h"\
- "..\..\JAWS/server/HTTP_Helpers.h"\
- "..\..\JAWS/server/HTTP_Request.h"\
- "..\..\JAWS/server/IO.h"\
- ".\HTTP_Config.h"\
- ".\HTTP_Response.h"\
- ".\Parse_Headers.h"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Asynch_IO.h"\
- {$(INCLUDE)}"\ace\Asynch_IO.i"\
- {$(INCLUDE)}"\ace\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Log_Msg.h"\
- {$(INCLUDE)}"\ace\Log_Priority.h"\
- {$(INCLUDE)}"\ace\Log_Record.h"\
- {$(INCLUDE)}"\ace\Log_Record.i"\
- {$(INCLUDE)}"\ace\Managed_Object.cpp"\
- {$(INCLUDE)}"\ace\Managed_Object.h"\
- {$(INCLUDE)}"\ace\Managed_Object.i"\
- {$(INCLUDE)}"\ace\Mem_Map.h"\
- {$(INCLUDE)}"\ace\Mem_Map.i"\
- {$(INCLUDE)}"\ace\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\Process.h"\
- {$(INCLUDE)}"\ace\Process.i"\
- {$(INCLUDE)}"\ace\SString.h"\
- {$(INCLUDE)}"\ace\SString.i"\
- {$(INCLUDE)}"\ace\stdcpp.h"\
- {$(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\Synch.h"\
- {$(INCLUDE)}"\ace\Synch.i"\
- {$(INCLUDE)}"\ace\Synch_T.cpp"\
- {$(INCLUDE)}"\ace\Synch_T.h"\
- {$(INCLUDE)}"\ace\Synch_T.i"\
- {$(INCLUDE)}"\ace\Thread.h"\
- {$(INCLUDE)}"\ace\Thread.i"\
- {$(INCLUDE)}"\ace\Trace.h"\
- {$(INCLUDE)}"\ace\Version.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\HTTP_Response.obj" : $(SOURCE) $(DEP_CPP_HTTP_RE) "$(INTDIR)"
-
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\Parse_Headers.cpp
-DEP_CPP_PARSE=\
- "..\..\..\ace\config-win32.h"\
- ".\Parse_Headers.h"\
- {$(INCLUDE)}"\ace\ACE.h"\
- {$(INCLUDE)}"\ace\ACE.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Log_Msg.h"\
- {$(INCLUDE)}"\ace\Log_Priority.h"\
- {$(INCLUDE)}"\ace\Log_Record.h"\
- {$(INCLUDE)}"\ace\Log_Record.i"\
- {$(INCLUDE)}"\ace\Managed_Object.cpp"\
- {$(INCLUDE)}"\ace\Managed_Object.h"\
- {$(INCLUDE)}"\ace\Managed_Object.i"\
- {$(INCLUDE)}"\ace\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.i"\
- {$(INCLUDE)}"\ace\OS.h"\
- {$(INCLUDE)}"\ace\OS.i"\
- {$(INCLUDE)}"\ace\SString.h"\
- {$(INCLUDE)}"\ace\SString.i"\
- {$(INCLUDE)}"\ace\stdcpp.h"\
- {$(INCLUDE)}"\ace\Trace.h"\
- {$(INCLUDE)}"\ace\Version.h"\
- {$(INCLUDE)}"\ace\ws2tcpip.h"\
-
-
-"$(INTDIR)\Parse_Headers.obj" : $(SOURCE) $(DEP_CPP_PARSE) "$(INTDIR)"
-
-
-# End Source File
-# End Target
-# End Project
-################################################################################
diff --git a/apps/JAWS/server/jaws.mdp b/apps/JAWS/server/jaws.mdp Binary files differdeleted file mode 100644 index c47b690503e..00000000000 --- a/apps/JAWS/server/jaws.mdp +++ /dev/null diff --git a/apps/JAWS/server/main.cpp b/apps/JAWS/server/main.cpp deleted file mode 100644 index 6ec6c36fe23..00000000000 --- a/apps/JAWS/server/main.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// $Id$ - -#include "ace/Service_Config.h" -#include "ace/Reactor.h" -#include "ace/Filecache.h" - -#include "HTTP_Server.h" - -ACE_STATIC_SVC_REQUIRE(HTTP_Server) - -extern "C" -{ - - // call exit() so that static destructors get called -static void -handler (int) -{ - delete (ACE_Filecache *) ACE_Filecache::instance (); - ACE_OS::exit (0); -} - -} - -// This is the driver entry point into JAWS. It is possible to use -// JAWS as an ACE Service, as well. - -int -main (int argc, char *argv[]) -{ - ACE_Service_Config daemon; - - ACE_OS::signal (SIGCHLD, SIG_IGN); - - // SigAction not needed since the handler will shutdown the server. - ACE_OS::signal (SIGINT, (ACE_SignalHandler) handler); - ACE_OS::signal (SIGUSR2, (ACE_SignalHandler) handler); - - if (daemon.open (argc, argv) != 0) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "open"), 1); - - // The configured service creates threads, and the - // server won't exit until the threads die. - - // Run forever, performing the configured services until we receive - // a SIGINT. - - - return 0; -} diff --git a/apps/JAWS/server/svc.conf b/apps/JAWS/server/svc.conf deleted file mode 100644 index a180ee1b383..00000000000 --- a/apps/JAWS/server/svc.conf +++ /dev/null @@ -1,37 +0,0 @@ -# -# -p port number -# -n threads in the server -# -f thread activation flags -# = THR_BOUND -# = THR_DAEMON -# = THR_DETACHED -# = THR_NEW_LWP -# -t threading strategy -# = POOL -> thread pool -# = PER_REQUEST -> thread per request -# = THROTTLE -> thread per request with throttling -# -i I/O strategy -# = SYNCH -# = ASYNCH -# -b backlog value for listen () -# -# -# Thread Pool, 20 unbound threads -# This is the baseline -static HTTP_Server "HTTP_Server -p 5432 -n 20 -i SYNCH -t POOL -b 50 -f THR_NEW_LWP" -# -# -# Thread Pool, 40 threads -#static HTTP_Server "HTTP_Server -p 5432 -n 40 -i SYNCH -t POOL -b 50 -f THR_NEW_LWP -f THR_BOUND" -# -# -# Thread-per-request, unlimited number of threads -#static HTTP_Server "HTTP_Server -p 5432 -i SYNCH -t PER_REQUEST -b 50 -f THR_NEW_LWP" -# -# -# Throttling, 40 threads -#static HTTP_Server "HTTP_Server -p 5432 -n 40 -i SYNCH -t THROTTLE -b 50 -f THR_NEW_LWP" -# -# -#dynamic HTTP_Server Service_Object * .shobj/HTTP_Server:jaws "HTTP_Server -p 5432 -s HTTP_Service" - diff --git a/apps/JAWS/server/test.cgi b/apps/JAWS/server/test.cgi deleted file mode 100755 index 936afcf0d3c..00000000000 --- a/apps/JAWS/server/test.cgi +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -echo Content-type: text/plain -echo - -echo args -- $* -env -echo Done! -exit 0 diff --git a/apps/JAWS/stress_testing/Makefile b/apps/JAWS/stress_testing/Makefile deleted file mode 100644 index 7894978a63d..00000000000 --- a/apps/JAWS/stress_testing/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -#---------------------------------------------------------------------------- -# %W% %G% -# -# Makefile for the ACE Adapter Web Server (JAWS) client -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = http_tester benchd - -FILES = \ - util \ - connection \ - stats \ - cp - -LSRC = $(addsuffix .cpp,$(FILES)) -LOBJ = $(addsuffix .o,$(FILES)) -SHOBJ = $(addsuffix .so,$(FILES)) - -INCLDIRS += -I../.. - -VLDLIBS = $(LDLIBS:%=%$(VAR)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_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. diff --git a/apps/JAWS/stress_testing/README b/apps/JAWS/stress_testing/README deleted file mode 100644 index 0969522d638..00000000000 --- a/apps/JAWS/stress_testing/README +++ /dev/null @@ -1,54 +0,0 @@ -http_tester ------------ - -This is the http_tester suite, an ACE based HTTP benchmarking tool, -used to evaluate the performance of JAWS and other HTTP servers. - -Usage ------ - -To use the http_tester, you need to use a config file "infile", which -consists of a list of experiments, one on each line. http_tester logs -output data in the "outfile". - -Usage: http_tester infile outfile - -Experiments ------------ - -Each experiment consists of several space-delimited compulsory -fields, as follows: - -experiment_id (string) -total_number_of_requests (integer) -request_rate (float) -url1 (first URL) -p1 (probability of requesting the first URL) -url2 (second URL) -p2 (probability of requesting the second URL) -url3 (third URL) -p3 (probability of requesting the third URL) -TCP_NODELAY (boolean, 1 == TCP_NODELAY is set) -SOCKET_RECV_BUFSIZ (usually 65536) - -URLS must be of the form: - -http://www.cs.wustl.edu:8888/~sumedh/index.html - -(the port number is required, im making it optional in the next version). - -Please see the sample file "config", for an example. - -Output file ------------ - -The output file consists of the following space delimited fields: - -Experiment Id (string) -Average throughput of connection (float) -Average latency of connection (float) -Maximum number of active connections at any given time (int) - - -Sumedh Mungee -<sumedh@cs.wustl.edu> diff --git a/apps/JAWS/stress_testing/benchd.cpp b/apps/JAWS/stress_testing/benchd.cpp deleted file mode 100644 index a2087fee07c..00000000000 --- a/apps/JAWS/stress_testing/benchd.cpp +++ /dev/null @@ -1,240 +0,0 @@ -// $Id$ - -// benchd: Adapted from the "ntalker" example. -// Sumedh Mungee - -#include "ace/Process.h" -#include "ace/INET_Addr.h" -#include "ace/SOCK_Dgram_Mcast.h" -#include "ace/Reactor.h" -#include "ace/Get_Opt.h" -#include "ace/ARGV.h" - -#if defined (ACE_HAS_IP_MULTICAST) -// network interface to subscribe to -// this is hardware specific. -// use netstat(1M) to find whether your interface -// is le0 or ie0 - -// Maximum number of arguments supported for a request -static const int MAX_ARGS = 16; -// Name of the client benchmarking tool -static const char *TESTER = "http_tester"; -static int QUIET = 0; -static const char *INTERFACE = "le0"; -static const char *MCAST_ADDR = ACE_DEFAULT_MULTICAST_ADDR; -static const u_short UDP_PORT = ACE_DEFAULT_MULTICAST_PORT; -static const char *OUTPUT_FILE_NAME = "benchd.log"; -static ACE_HANDLE OUTPUT_FILE; - -// Handle both multicast and stdin events. - -class Handle_Events : public ACE_Event_Handler -{ -public: - Handle_Events (u_short udp_port, - const char *ip_addr, - const char *interface, - ACE_Reactor &reactor); - ~Handle_Events (void); - - virtual int handle_input (ACE_HANDLE); - virtual int handle_close (ACE_HANDLE, ACE_Reactor_Mask); - -private: - int serve(char *buf); - ACE_SOCK_Dgram_Mcast mcast_; - ACE_Handle_Set handle_set_; -}; - -int -Handle_Events::handle_input (ACE_HANDLE h) -{ - char buf[BUFSIZ]; - - if (h == 0) - { - int readresult = ACE_OS::read (h, buf, BUFSIZ); - if (readresult > 0) - { - if (this->mcast_.send (buf, readresult) != readresult) - { - ACE_OS::perror ("send error"); - return -1; - } - return 0; - } - else if (readresult == -1) - ::perror ("can't read from STDIN"); - - return -1; - } - else - { - ACE_INET_Addr remote_addr; - - // receive message from multicast group - int retcode = this->mcast_.recv (buf, sizeof buf, remote_addr); - - if (retcode != -1) - { - /* - cout << "received datagram from host " << remote_addr.get_host_name () - << " on port " << remote_addr.get_port_number () - << " bytes = " << retcode << endl; - */ - serve(buf); - return 0; - } - - ACE_OS::perror ("Something amiss."); - return -1; - } -} - -int -Handle_Events::handle_close (ACE_HANDLE h, ACE_Reactor_Mask) -{ - if (h == 0) - cout << "STDIN_Events handle removed from reactor." << endl << flush; - else - cout << "Mcast_Events handle removed from reactor." << endl << flush; - return 0; -} - -Handle_Events::~Handle_Events (void) -{ - // ACE_OS::exit on error (bogus)... - - if (this->mcast_.unsubscribe () == -1) - ACE_OS::perror ("unsubscribe fails"), ACE_OS::exit (1); -} - -Handle_Events::Handle_Events (u_short udp_port, - const char *ip_addr, - const char *interface, - ACE_Reactor &reactor) -{ - // Create multicast address to listen on. - - ACE_INET_Addr sockmc_addr (udp_port, ip_addr); - - // subscribe to multicast group. - - if (this->mcast_.subscribe (sockmc_addr, 1, interface) == -1) - ACE_OS::perror ("can't subscribe to multicast group"), ACE_OS::exit (1); - - // Disable loopbacks. - // if (this->mcast_.set_option (IP_MULTICAST_LOOP, 0) == -1 ) - // ACE_OS::perror (" can't disable loopbacks " ), ACE_OS::exit (1); - - if(!QUIET) { - this->handle_set_.set_bit (0); - } - this->handle_set_.set_bit (this->mcast_.get_handle ()); - - // Register callbacks with the ACE_Reactor. - if (reactor.register_handler (this->handle_set_, - this, - ACE_Event_Handler::READ_MASK) == -1) - ACE_OS::perror ("can't register events"), ACE_OS::exit (1); -} - - -// This method handles multicast requests.. -// These requests are of the following form: -// command (arguments) - - -// currently only one is supported (and indeed needed :-)) -// http_tester arguments - -int -Handle_Events::serve(char *buf) -{ - ACE_ARGV arguments(buf); - if(ACE_OS::strcmp(arguments[0],TESTER) == 0) - { - ACE_Process_Options po; - ACE_Process p; - - po.set_handles (ACE_INVALID_HANDLE, OUTPUT_FILE, OUTPUT_FILE); - po.command_line (arguments.argv ()); - - p.spawn (po); - - return 0; - } - else - { - return -1; - } -} - -static void -parse_args (int argc, char *argv[]) -{ - ACE_Get_Opt get_opt (argc, argv, "i:u:q"); - - int c; - - while ((c = get_opt ()) != -1) - switch (c) - { - case 'q': - QUIET = 1; - case 'i': - INTERFACE = get_opt.optarg; - break; - case 'u': - // Usage fallthrough. - default: - ACE_DEBUG ((LM_DEBUG, "%s -i interface\n", argv[0])); - ACE_OS::exit (1); - } -} - -static sig_atomic_t done = 0; - -// Signal handler. - -extern "C" void -handler (int) -{ - done = 1; -} - -int -main (int argc, char *argv[]) -{ - ACE_Sig_Action sa ((ACE_SignalHandler) handler, SIGINT); - ACE_OS::signal(SIGCLD, SIG_IGN); - ACE_UNUSED_ARG (sa); - - parse_args (argc, argv); - - OUTPUT_FILE = ACE_OS::open(OUTPUT_FILE_NAME, O_CREAT | O_WRONLY, 0644); - if(OUTPUT_FILE == 0) - return 1; - - ACE_Reactor reactor; - Handle_Events handle_events (UDP_PORT, MCAST_ADDR, INTERFACE, reactor); - - // main loop - - while (!done) - reactor.handle_events (); - - ACE_OS::close(OUTPUT_FILE); - cout << "\nbenchd done.\n"; - return 0; -} -#else -int -main (int argc, char *argv[]) -{ - ACE_ERROR ((LM_ERROR, "error: %s must be run on a platform that support IP multicast\n", - argv[0])); - return 0; -} -#endif /* ACE_HAS_IP_MULTICAST */ diff --git a/apps/JAWS/stress_testing/client.h b/apps/JAWS/stress_testing/client.h deleted file mode 100644 index 58ef98c7bdf..00000000000 --- a/apps/JAWS/stress_testing/client.h +++ /dev/null @@ -1,8 +0,0 @@ -// $Id$ - -#include "global.h" -#include "util.h" -#include "http.h" -#include "cp.h" -#include "stats.h" - diff --git a/apps/JAWS/stress_testing/clients.mak b/apps/JAWS/stress_testing/clients.mak deleted file mode 100644 index cf3e8a818fe..00000000000 --- a/apps/JAWS/stress_testing/clients.mak +++ /dev/null @@ -1,1616 +0,0 @@ -# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-!IF "$(CFG)" == ""
-CFG=clients - Win32 Debug
-!MESSAGE No configuration specified. Defaulting to clients - Win32 Debug.
-!ENDIF
-
-!IF "$(CFG)" != "clients - Win32 Release" && "$(CFG)" !=\
- "clients - 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 "clients.mak" CFG="clients - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "clients - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "clients - 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 "clients - Win32 Debug"
-RSC=rc.exe
-CPP=cl.exe
-
-!IF "$(CFG)" == "clients - 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)\clients.exe"
-
-CLEAN :
- -@erase "$(INTDIR)\connection.obj"
- -@erase "$(INTDIR)\cp.obj"
- -@erase "$(INTDIR)\http_tester.obj"
- -@erase "$(INTDIR)\stats.obj"
- -@erase "$(INTDIR)\util.obj"
- -@erase "$(OUTDIR)\clients.exe"
-
-"$(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 /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
- /Fp"$(INTDIR)/clients.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)/clients.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)/clients.pdb" /machine:I386 /out:"$(OUTDIR)/clients.exe"
-LINK32_OBJS= \
- "$(INTDIR)\connection.obj" \
- "$(INTDIR)\cp.obj" \
- "$(INTDIR)\http_tester.obj" \
- "$(INTDIR)\stats.obj" \
- "$(INTDIR)\util.obj"
-
-"$(OUTDIR)\clients.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ELSEIF "$(CFG)" == "clients - 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)\clients.exe"
-
-CLEAN :
- -@erase "$(INTDIR)\connection.obj"
- -@erase "$(INTDIR)\cp.obj"
- -@erase "$(INTDIR)\http_tester.obj"
- -@erase "$(INTDIR)\stats.obj"
- -@erase "$(INTDIR)\util.obj"
- -@erase "$(INTDIR)\vc40.idb"
- -@erase "$(INTDIR)\vc40.pdb"
- -@erase "$(OUTDIR)\clients.exe"
- -@erase "$(OUTDIR)\clients.ilk"
- -@erase "$(OUTDIR)\clients.pdb"
-
-"$(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)/clients.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)/clients.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 aced.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=aced.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)/clients.pdb" /debug /machine:I386 /out:"$(OUTDIR)/clients.exe"
-LINK32_OBJS= \
- "$(INTDIR)\connection.obj" \
- "$(INTDIR)\cp.obj" \
- "$(INTDIR)\http_tester.obj" \
- "$(INTDIR)\stats.obj" \
- "$(INTDIR)\util.obj"
-
-"$(OUTDIR)\clients.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 "clients - Win32 Release"
-# Name "clients - Win32 Debug"
-
-!IF "$(CFG)" == "clients - Win32 Release"
-
-!ELSEIF "$(CFG)" == "clients - Win32 Debug"
-
-!ENDIF
-
-################################################################################
-# Begin Source File
-
-SOURCE=.\util.cpp
-
-!IF "$(CFG)" == "clients - Win32 Release"
-
-DEP_CPP_UTIL_=\
- "..\..\..\ace\config-win32.h"\
- ".\connection.h"\
- ".\global.h"\
- ".\util.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\Profile_Timer.h"\
- {$(INCLUDE)}"\ace\Profile_Timer.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\util.obj" : $(SOURCE) $(DEP_CPP_UTIL_) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "clients - Win32 Debug"
-
-DEP_CPP_UTIL_=\
- "..\..\..\ace\config-win32.h"\
- ".\connection.h"\
- ".\global.h"\
- ".\util.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\Profile_Timer.h"\
- {$(INCLUDE)}"\ace\Profile_Timer.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\util.obj" : $(SOURCE) $(DEP_CPP_UTIL_) "$(INTDIR)"
-
-
-!ENDIF
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\http_tester.cpp
-
-!IF "$(CFG)" == "clients - Win32 Release"
-
-DEP_CPP_HTTP_=\
- "..\..\..\ace\config-win32.h"\
- ".\client.h"\
- ".\connection.h"\
- ".\cp.h"\
- ".\global.h"\
- ".\http.h"\
- ".\stats.h"\
- ".\util.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\Profile_Timer.h"\
- {$(INCLUDE)}"\ace\Profile_Timer.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\http_tester.obj" : $(SOURCE) $(DEP_CPP_HTTP_) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "clients - Win32 Debug"
-
-DEP_CPP_HTTP_=\
- "..\..\..\ace\config-win32.h"\
- ".\client.h"\
- ".\connection.h"\
- ".\cp.h"\
- ".\global.h"\
- ".\http.h"\
- ".\stats.h"\
- ".\util.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\Profile_Timer.h"\
- {$(INCLUDE)}"\ace\Profile_Timer.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\http_tester.obj" : $(SOURCE) $(DEP_CPP_HTTP_) "$(INTDIR)"
-
-
-!ENDIF
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\stats.cpp
-
-!IF "$(CFG)" == "clients - Win32 Release"
-
-DEP_CPP_STATS=\
- "..\..\..\ace\config-win32.h"\
- ".\global.h"\
- ".\stats.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\Profile_Timer.h"\
- {$(INCLUDE)}"\ace\Profile_Timer.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\stats.obj" : $(SOURCE) $(DEP_CPP_STATS) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "clients - Win32 Debug"
-
-DEP_CPP_STATS=\
- "..\..\..\ace\config-win32.h"\
- ".\global.h"\
- ".\stats.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\Profile_Timer.h"\
- {$(INCLUDE)}"\ace\Profile_Timer.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\stats.obj" : $(SOURCE) $(DEP_CPP_STATS) "$(INTDIR)"
-
-
-!ENDIF
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\connection.cpp
-
-!IF "$(CFG)" == "clients - Win32 Release"
-
-DEP_CPP_CONNE=\
- "..\..\..\ace\config-win32.h"\
- ".\connection.h"\
- ".\global.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\Profile_Timer.h"\
- {$(INCLUDE)}"\ace\Profile_Timer.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\connection.obj" : $(SOURCE) $(DEP_CPP_CONNE) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "clients - Win32 Debug"
-
-DEP_CPP_CONNE=\
- "..\..\..\ace\config-win32.h"\
- ".\connection.h"\
- ".\global.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\Profile_Timer.h"\
- {$(INCLUDE)}"\ace\Profile_Timer.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\connection.obj" : $(SOURCE) $(DEP_CPP_CONNE) "$(INTDIR)"
-
-
-!ENDIF
-
-# End Source File
-################################################################################
-# Begin Source File
-
-SOURCE=.\cp.cpp
-
-!IF "$(CFG)" == "clients - Win32 Release"
-
-DEP_CPP_CP_CP=\
- "..\..\..\ace\config-win32.h"\
- ".\connection.h"\
- ".\cp.h"\
- ".\global.h"\
- ".\stats.h"\
- ".\util.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\Profile_Timer.h"\
- {$(INCLUDE)}"\ace\Profile_Timer.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\cp.obj" : $(SOURCE) $(DEP_CPP_CP_CP) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "clients - Win32 Debug"
-
-DEP_CPP_CP_CP=\
- "..\..\..\ace\config-win32.h"\
- ".\connection.h"\
- ".\cp.h"\
- ".\global.h"\
- ".\stats.h"\
- ".\util.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\Atomic_Op.i"\
- {$(INCLUDE)}"\ace\Auto_Ptr.cpp"\
- {$(INCLUDE)}"\ace\Auto_Ptr.h"\
- {$(INCLUDE)}"\ace\Auto_Ptr.i"\
- {$(INCLUDE)}"\ace\config-win32-common.h"\
- {$(INCLUDE)}"\ace\config.h"\
- {$(INCLUDE)}"\ace\Containers.cpp"\
- {$(INCLUDE)}"\ace\Containers.h"\
- {$(INCLUDE)}"\ace\Containers.i"\
- {$(INCLUDE)}"\ace\Event_Handler.h"\
- {$(INCLUDE)}"\ace\Event_Handler.i"\
- {$(INCLUDE)}"\ace\Free_List.cpp"\
- {$(INCLUDE)}"\ace\Free_List.h"\
- {$(INCLUDE)}"\ace\Free_List.i"\
- {$(INCLUDE)}"\ace\Handle_Set.h"\
- {$(INCLUDE)}"\ace\Handle_Set.i"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.cpp"\
- {$(INCLUDE)}"\ace\Hash_Map_Manager.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.h"\
- {$(INCLUDE)}"\ace\High_Res_Timer.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\Object_Manager.h"\
- {$(INCLUDE)}"\ace\Object_Manager.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\Profile_Timer.h"\
- {$(INCLUDE)}"\ace\Profile_Timer.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\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_Acceptor.h"\
- {$(INCLUDE)}"\ace\SOCK_Acceptor.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\stdcpp.h"\
- {$(INCLUDE)}"\ace\Strategies.h"\
- {$(INCLUDE)}"\ace\Strategies_T.cpp"\
- {$(INCLUDE)}"\ace\Strategies_T.h"\
- {$(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\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\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)\cp.obj" : $(SOURCE) $(DEP_CPP_CP_CP) "$(INTDIR)"
-
-
-!ENDIF
-
-# End Source File
-# End Target
-# End Project
-################################################################################
diff --git a/apps/JAWS/stress_testing/clients.mdp b/apps/JAWS/stress_testing/clients.mdp Binary files differdeleted file mode 100644 index 50ac2da09e1..00000000000 --- a/apps/JAWS/stress_testing/clients.mdp +++ /dev/null diff --git a/apps/JAWS/stress_testing/config b/apps/JAWS/stress_testing/config deleted file mode 100644 index 7e730eaef10..00000000000 --- a/apps/JAWS/stress_testing/config +++ /dev/null @@ -1,3 +0,0 @@ -1.0 1 1 http://localhost:5432/IO.h 1 a 0 b 0 1 65536 -2.0 1 1 http://localhost:5432/IO.h 1 a 0 b 0 1 65536 - diff --git a/apps/JAWS/stress_testing/connection.cpp b/apps/JAWS/stress_testing/connection.cpp deleted file mode 100644 index a8f38074d72..00000000000 --- a/apps/JAWS/stress_testing/connection.cpp +++ /dev/null @@ -1,97 +0,0 @@ -// $Id$ - -#include "connection.h" - - -// Make the connection to the WEB server - -int connection::connect(char *hostname_opt_port, int tcp_nodelay, int sockbufsiz) { - if(!hostname_opt_port) return 1; - - char *hostname_with_port; - // Check to see if portnumber is specified in the hostnameport - // If not, append :80 - if(!ACE_OS::strchr(hostname_opt_port,':')) { - hostname_with_port = new char[ACE_OS::strlen(hostname_opt_port) + 3]; - ACE_OS::sprintf(hostname_with_port, "%s:%d", hostname_opt_port, 80); - } - else { - hostname_with_port = hostname_opt_port; - } - - // Beyond this point, hostname_with_port is of the form hostname:port - - ACE_INET_Addr server_addr(hostname_with_port); - - // Connect to server - - ACE_SOCK_Connector con; - - if(con.connect(stream_, server_addr) == -1) { - perror("ACE_SOCK_Connector::connect"); - return 1; - } - - - // tcp_nodelay processing. - - // turn off weird ack things - if(tcp_nodelay) { - struct protoent *p = ACE_OS::getprotobyname ("tcp"); - int one = 1; - - if (p && stream_.set_option (p->p_proto, - TCP_NODELAY, - (char *)& one, - sizeof (one))) { - perror("tcp_nodelay"); - return 1; - } - } - - if(sockbufsiz) - if (stream_.set_option (SOL_SOCKET, - SO_RCVBUF, - (char *) &sockbufsiz, - sizeof sockbufsiz) == -1) { - perror("socket_queue_size"); - return 1; - } - - return 0; -} - -int connection::read(void *buffer, size_t maxlen, unsigned int timeout_seconds) { - ACE_UNUSED_ARG (timeout_seconds); - return stream_.recv(buffer, maxlen); -} - -int connection::write(const void *buffer, size_t maxlen, unsigned int timeout_seconds) { - ACE_UNUSED_ARG (timeout_seconds); - return stream_.send(buffer, maxlen); -} - -int connection::write_n(const void *buffer, size_t len, unsigned int timeout_seconds) { - ACE_UNUSED_ARG (timeout_seconds); - if(stream_.send_n(buffer, len) == -1) - ACE_ERROR_RETURN((LM_ERROR, "Write failed for %s", buffer),1); - return 0; -} - -int connection::read_n(void *buffer, size_t maxlen, unsigned int timeout_seconds) { - ACE_UNUSED_ARG (timeout_seconds); - if(stream_.recv_n(buffer, maxlen) == -1) - ACE_ERROR_RETURN((LM_ERROR, "Read failed.."),1); - return 1; -} - -int connection::close(void) { - stream_.close_reader(); - stream_.close_writer(); - stream_.close(); - return 0; -} - -connection::~connection(void) { - this->close(); -} diff --git a/apps/JAWS/stress_testing/connection.h b/apps/JAWS/stress_testing/connection.h deleted file mode 100644 index 5eaa164bc78..00000000000 --- a/apps/JAWS/stress_testing/connection.h +++ /dev/null @@ -1,22 +0,0 @@ -// $Id$ - -#include "global.h" - -#ifndef _D_connection -#define _D_connection -class connection { - -public: - int connect(char *hostname_opt_port, int tcp_nodelay, int sockbufsiz); - read(void *buffer, size_t maxlen, unsigned int timeout_seconds = 60); - write(const void *buffer, size_t maxlen, unsigned int timeout_seconds = 60); - write_n(const void *buffer, size_t len, unsigned int timeout_seconds = 60); - read_n(void *buffer, size_t maxlen, unsigned int timeout_seconds = 60); - int close(void); - ~connection(void); - -private: - ACE_SOCK_Stream stream_; - char sockbuf[66000]; -}; -#endif diff --git a/apps/JAWS/stress_testing/cp.cpp b/apps/JAWS/stress_testing/cp.cpp deleted file mode 100644 index b593cc23f0a..00000000000 --- a/apps/JAWS/stress_testing/cp.cpp +++ /dev/null @@ -1,9 +0,0 @@ -// $Id$ - -#include "cp.h" - -Client_Parameters::Client_Parameters(int i) { - - id = i; - -} diff --git a/apps/JAWS/stress_testing/cp.h b/apps/JAWS/stress_testing/cp.h deleted file mode 100644 index ad2e5ddf31b..00000000000 --- a/apps/JAWS/stress_testing/cp.h +++ /dev/null @@ -1,14 +0,0 @@ -// $Id$ - -#include "util.h" -#include "stats.h" - -class Client_Parameters { -public: - Client_Parameters(int); - URL *url; - static Stats *stats; - static int tcp_nodelay; - static int sockbufsiz; - int id; -}; diff --git a/apps/JAWS/stress_testing/global.h b/apps/JAWS/stress_testing/global.h deleted file mode 100644 index 8cb45fb3dd1..00000000000 --- a/apps/JAWS/stress_testing/global.h +++ /dev/null @@ -1,26 +0,0 @@ -// $Id$ - -#include "ace/ACE.h" -#include "ace/OS.h" -#include "ace/SOCK_Acceptor.h" -#include "ace/SOCK_Connector.h" -#include "ace/Pipe.h" -#include "ace/SOCK_Stream.h" -#include "ace/INET_Addr.h" -#include "ace/Profile_Timer.h" -#include "ace/Thread.h" -#include "ace/Thread_Manager.h" -#include "ace/Service_Config.h" - -#include <math.h> - - - - - - - - - - - diff --git a/apps/JAWS/stress_testing/http.h b/apps/JAWS/stress_testing/http.h deleted file mode 100644 index efce9235e56..00000000000 --- a/apps/JAWS/stress_testing/http.h +++ /dev/null @@ -1,16 +0,0 @@ -// $Id$ - -#include "global.h" - -#define CONTENT_ENCODING_HEADER "Content-encoding: " -#define CONTENT_TYPE_HEADER "Content-type: " -#define INCOMING_FILE_NAME "/tmp/sumedh.web.inc" -#define TEMPORARY_FILE_NAME "/tmp/sumedh.web.tmp" - -#define ENCODING_TAB "./encoding.tab" -#define CONTENT_TAB "./content.tab" - -int demime(void); -int decode(char *encoding); -int view(char *content); - diff --git a/apps/JAWS/stress_testing/http_tester.cpp b/apps/JAWS/stress_testing/http_tester.cpp deleted file mode 100644 index f5c092a9501..00000000000 --- a/apps/JAWS/stress_testing/http_tester.cpp +++ /dev/null @@ -1,169 +0,0 @@ -// $Id$ - -#include "client.h" - -int Client_Parameters::tcp_nodelay; -int Client_Parameters::sockbufsiz; -Stats *Client_Parameters::stats; - -static void * -client_thread(void *data) -{ - Client_Parameters *cp = (Client_Parameters *) data; - float latency = 0, throughput; - URL *u = cp->url; - - // Check for presence of protocol, hostname and filename. - - if(!(u->get_protocol() && u->get_hostname() && u->get_filename())) { - cerr << "Invalid URL" << endl; - return NULL; - } - - cp->stats->i_have_started(cp->id); - - // Attempt connection - connection webserver; - - if(webserver.connect(u->get_hostname(), cp->tcp_nodelay, cp->sockbufsiz)) return NULL; - // Send the request now. - - - char request[BUFSIZ]; - - ACE_Profile_Timer throughput_timer, latency_timer; - throughput_timer.start(); - latency_timer.start(); - ACE_OS::sprintf(request,"GET /%s HTTP/1.0\r\n\r\n",u->get_filename()); - webserver.write_n(request, strlen(request)) ; - - char buffer[BUFSIZ]; - ssize_t num_read = 0, total_read = 0; - unsigned int first_time = 1; - for(;;) { - num_read = webserver.read(buffer, sizeof buffer); - if(first_time) { - ACE_Profile_Timer::ACE_Elapsed_Time et; - latency_timer.stop(); - latency_timer.elapsed_time(et); - latency = et.real_time; - first_time = 0; - } - if(num_read <= 0) - break; - total_read += num_read; - } - cp->stats->i_am_done(cp->id); - ACE_Profile_Timer::ACE_Elapsed_Time et; - throughput_timer.stop(); - throughput_timer.elapsed_time(et); - throughput = (8 * total_read/et.real_time) / (1000 * 1000); //pow(10,6) ; - cp->stats->log(cp->id, throughput, latency); - webserver.close(); - return NULL; -} - -int driver(char *id, int total_num, float requests_sec, char *url1, float p1, char *url2, float p2, char *url3, float p3, int tcp_nodelay, int sockbufsiz) { - - // construct the client parameters packet - - Client_Parameters::tcp_nodelay = tcp_nodelay; - Client_Parameters::sockbufsiz = sockbufsiz; - - Client_Parameters::stats = new Stats(total_num); - - int missed_deadlines = 0; - // sleep_time is in microseconds, and requests_sec is per second, hence the pow(10,6) - float sleep_time = (1/requests_sec) * (1000 * 1000); // pow(10,6); - float delta = 0; - srand(time(NULL)); - for(int i = 0; i < total_num; i++) { // i is used as a id for threads - ACE_Profile_Timer timer; - if(sleep_time < delta) - { - // cerr << "Requested rate is too high, sleep_time == " << sleep_time << ", and delta = " << delta << ", after " << i << " iterations! " << endl; - missed_deadlines++; - } - else - { - ACE_Time_Value tv(0, (long int) (sleep_time - delta)); - ACE_OS::sleep(tv); - timer.start(); - } - Client_Parameters *cp = new Client_Parameters(i); - - double r = ((double)rand()/(double)RAND_MAX); - // cerr << " choosing between " << url1 << url2 << url3 << " with r == " << r; - if(r <= p1) cp->url = new URL(url1); - if( (r > p1) && (r <= (p1 + p2))) cp->url = new URL(url2); - if( (r > (p1 + p2)) && (r <= p1 + p2 + p3)) cp->url = new URL(url3); - // cerr << "The URL being requested is " << cp->url->get_filename() << endl; - - - (ACE_Thread_Manager::instance ())->spawn(client_thread, (void *) cp); - timer.stop(); - ACE_Profile_Timer::ACE_Elapsed_Time et; - timer.elapsed_time(et); - delta = ( (0.4 * fabs(et.real_time * (1000 * 1000))) + (0.6 * delta) ); // pow(10,6) - } - - // Join the other threads.. - (ACE_Thread_Manager::instance ())->wait(); - // Now output the data for this test - cout << id; - Client_Parameters::stats->output(); - cout << endl; - if (missed_deadlines != 0) - { - cout << "missed deadlines " << missed_deadlines << endl; - cout << "missed deadlines as a % of total requests: " << (float) missed_deadlines / total_num * 100 << endl; - } - return 0; -} - - -main(int argc, char **argv) -{ - // This will set the global scale factor if the ACE_SCALE_FACTOR - // environment variable is set. - ACE_High_Res_Timer::get_env_global_scale_factor (); - - if(argc < 3) { - cerr << "Usage: " << argv[0] << " infile outfile " << endl; - cerr << "The input file contains lines, with the following fields: " << endl; - cerr << "experiment_id total_number_of_requests request_rate url1 p1 url2 p2 url3 p3 TCP_NODELAY SOCKET_RECV_BUFSIZ " << endl; - - return 1; - } - - FILE *fp = fopen(argv[1],"r"); - if(fp == NULL) { - perror("fopen"); - return 2; - } - close(1); - int fd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0644); - if(fd == -1) { - perror("open"); - return 3; - } - - - int total_num, tcp, sock; - char *id = new char[BUFSIZ]; - float rate, p1, p2, p3; - char *url1 = new char[BUFSIZ]; - char *url2 = new char[BUFSIZ]; - char *url3 = new char[BUFSIZ]; - - - while(!feof(fp)) { - fscanf(fp,"%s %d %f %s %f %s %f %s %f %d %d\n", id, &total_num, &rate, url1, &p1, url2, &p2, url3, &p3, &tcp, &sock); - fprintf(stderr,"----\n"); - fprintf(stderr,"\tNow performing experiment:%s\n\tSending %d requests at %f requests/second\n", id, total_num, rate); - driver(id, total_num, rate, url1, p1, url2, p2, url3, p3, tcp, sock); - } - fclose(fp); - close(fd); - return 0; -} diff --git a/apps/JAWS/stress_testing/out b/apps/JAWS/stress_testing/out deleted file mode 100644 index c237b7f38bc..00000000000 --- a/apps/JAWS/stress_testing/out +++ /dev/null @@ -1,2 +0,0 @@ -1.0 0.47895 0.00859167 1 -2.0 0.562603 0.00185976 1 diff --git a/apps/JAWS/stress_testing/stats.cpp b/apps/JAWS/stress_testing/stats.cpp deleted file mode 100644 index dc2c8e03a25..00000000000 --- a/apps/JAWS/stress_testing/stats.cpp +++ /dev/null @@ -1,87 +0,0 @@ -// $Id$ - -#include "stats.h" - - -Stats::Stats(int size) { - throughput_ = new float[size]; - latency_ = new float[size]; - thread_count_ = size; - init_fini_ = new Init_Fini_t[2*size]; - for(int i = 0; i < size; i++) - throughput_[i] = latency_[i] = 0; -} - -void Stats::log(int id, float throughput, float latency) { - throughput_[id] = throughput; - latency_[id] = latency; -} - -// Unused for now. -void Stats::print(char *message) { - - ACE_UNUSED_ARG (message); - - // char time_buf[64]; - // long ltime; - // time(<ime); - - // ACE_OS::ctime_r(<ime, time_buf, sizeof time_buf); - - // if(ACE_OS::gettimeofday() == -1) { - // perror("gettimeofday"); - // } - // time_buf[strlen(time_buf)-1] = 0; - // printf("%010ld%09ld \t %s %s\n", tp.tv_sec, tp.tv_usec, time_buf, message); -} - - -int comp(const void *a, const void *b) { - - Init_Fini_t *A = (Init_Fini_t *)a; - Init_Fini_t *B = (Init_Fini_t *)b; - - return (A->timestamp < B->timestamp) ? -1 : (A->timestamp > B->timestamp); -} - - -void Stats::output() { - int i; - float tavg = 0, lavg = 0; - - qsort(init_fini_, 2*thread_count_, sizeof(Init_Fini_t), comp); - - int max = 0,thread_peak = 0; - - for(i = 0; i < 2*thread_count_; i++) { - // cerr << " " << ((init_fini_[i].type == THREAD_START) ? "START": "END") << " " << init_fini_[i].timestamp.sec() << "." << init_fini_[i].timestamp.usec() << endl; - if(init_fini_[i].type == THREAD_START) { - if(++thread_peak > max) - max = thread_peak; - } - else thread_peak--; - } - for(i = 0; i < thread_count_; i++) { - tavg += throughput_[i]; - lavg += latency_[i]; - } - cout << " " << tavg/thread_count_ << " " << lavg/thread_count_ << " " << max; -} - - -void Stats::i_have_started(int id) { - - init_fini_[2*id].type = THREAD_START; - init_fini_[2*id].timestamp = ACE_OS::gettimeofday(); - -} - -void Stats::i_am_done(int id) { - - init_fini_[(2*id)+1].type = THREAD_END; - - init_fini_[(2*id)+1].timestamp = ACE_OS::gettimeofday(); - -} - - diff --git a/apps/JAWS/stress_testing/stats.h b/apps/JAWS/stress_testing/stats.h deleted file mode 100644 index b5ef4a4f4a0..00000000000 --- a/apps/JAWS/stress_testing/stats.h +++ /dev/null @@ -1,31 +0,0 @@ -// $Id$ - -#include "global.h" - -#ifndef _D_Stats -#define _D_Stats - -#define THREAD_START 42 -#define THREAD_END 43 - -class Init_Fini_t { -public: - int type; // 0 is start, 1 is end - ACE_Time_Value timestamp; -}; - -class Stats { -public: - Stats(int); - void log(int, float, float); - void i_have_started(int); - void i_am_done(int); - void print (char *); - void output(); -private: - float *throughput_; - float *latency_; - Init_Fini_t *init_fini_; // Array (2n deep) to count peak no. of active threads - int thread_count_; -}; -#endif diff --git a/apps/JAWS/stress_testing/util.cpp b/apps/JAWS/stress_testing/util.cpp deleted file mode 100644 index 053e5fff56f..00000000000 --- a/apps/JAWS/stress_testing/util.cpp +++ /dev/null @@ -1,60 +0,0 @@ -// $Id$ - -#include "util.h" - - - -URL::URL(char *input_buf) { - - char *buffer = new char[BUFSIZ]; - - ACE_OS::strcpy(buffer,input_buf); - if(buffer == NULL) - return; - - char *temp; - char *lasts; - - if((temp = ACE_OS::strtok_r(buffer,": ",&lasts))) { - protocol_ = (char *) ACE_OS::malloc(strlen(temp) + 1); - ACE_OS::strcpy(protocol_, temp); - } - - if((temp = ACE_OS::strtok_r(NULL,"/",&lasts))) { - hostname_ = (char *) ACE_OS::malloc(strlen(temp) + 1); - ACE_OS::strcpy(hostname_, temp); - } - if((temp = ACE_OS::strtok_r(NULL,"\0",&lasts))) { - filename_ = (char *) malloc(strlen(temp) + 1); - ACE_OS::strcpy(filename_, temp); - } - else { - filename_ = (char *) malloc(strlen(INDEX_NAME) + 1); - ACE_OS::strcpy(filename_,INDEX_NAME); - } -} - -char *URL::get_protocol(void) { - return protocol_; -} - -char *URL::get_hostname(void) { - return hostname_; -} - -char *URL::get_filename(void) { - return filename_; -} - - - - - -void cleanup(void) { - unlink(TEMPORARY_FILE_NAME); - unlink(INCOMING_FILE_NAME); -} - -void sigint(int) { - cleanup(); -} diff --git a/apps/JAWS/stress_testing/util.h b/apps/JAWS/stress_testing/util.h deleted file mode 100644 index 875a8cd80e0..00000000000 --- a/apps/JAWS/stress_testing/util.h +++ /dev/null @@ -1,34 +0,0 @@ -// $Id$ - -#include "connection.h" - -#ifndef _D_URL -#define _D_URL -class URL { - -public: - - URL(char *buffer); - - char *get_protocol(); - char *get_hostname(); - char *get_filename(); - -private: - char *protocol_; - char *hostname_; - char *filename_; -}; - -void cleanup(void); -void sigint(int); -int copier(connection in); - -#define INDEX_NAME "/index.html" -#define INCOMING_FILE_NAME "/tmp/sumedh.web.inc" -#define TEMPORARY_FILE_NAME "/tmp/sumedh.web.tmp" -#endif - - - - diff --git a/apps/Makefile b/apps/Makefile deleted file mode 100644 index d4f97139cda..00000000000 --- a/apps/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the apps directory -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -INFO = README - -DIRS = Gateway \ - JAWS - -# The following directories aren't compiled by default since haven't -# finished integrating it into ACE... -# -# Orbix-Examples -# gperf - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU - diff --git a/apps/Orbix-Examples/Event_Comm/Consumer/Input_Handler.cpp b/apps/Orbix-Examples/Event_Comm/Consumer/Input_Handler.cpp deleted file mode 100644 index 6b8f6339c5a..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Consumer/Input_Handler.cpp +++ /dev/null @@ -1,130 +0,0 @@ -#include "Input_Handler.h" -// $Id$ - -#include "Notification_Receiver_Handler.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -Input_Handler::~Input_Handler (void) -{ - ACE_DEBUG ((LM_DEBUG, "closing down Input_Handler::~Input_Handler\n")); - this->handle_close (); -} - -int -Input_Handler::consumer_initiated_shutdown (void) -{ - return this->consumer_initiated_shutdown_; -} - -void -Input_Handler::consumer_initiated_shutdown (int c) -{ - this->consumer_initiated_shutdown_ = c; -} - -ACE_HANDLE -Input_Handler::get_handle (void) const -{ - return this->handle_; -} - -int -Input_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) -{ - ACE_DEBUG ((LM_DEBUG, "closing down Consumer::Input_Handler\n")); - - Event_Comm::Notification_Receiver *receiver = this->receiver_handler_->receiver (); - Event_Comm::Notifier *notifier = this->receiver_handler_->notifier (); - - if (this->consumer_initiated_shutdown ()) - { - // Only try to unsubscribe if the Consumer initiated the - // shutdown. Otherwise, the Supplier initiated it and - // it has probably gone away by now! - TRY { - // Gracefully shutdown the Receiver by removing it - // from the Notifier's internal map. - - notifier->unsubscribe (receiver, "", IT_X); - } CATCHANY { - cerr << IT_X << endl; - } ENDTRY; - } - // Don't execute a callback here otherwise we'll recurse indefinitely! - if (ACE_Reactor::instance ()->remove_handler - (this, ACE_Event_Handler::READ_MASK | ACE_Event_Handler::DONT_CALL) == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "remove_handler")); - - // *Must* be allocated dyanmically! - delete (void *) this; - return 0; -} - -Input_Handler::Input_Handler (Notification_Receiver_Handler *ch, - ACE_HANDLE handle) - : receiver_handler_ (ch), - handle_ (handle), - consumer_initiated_shutdown_ (0) -{ - if (ACE_Reactor::instance ()->register_handler - (this, ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR ((LM_ERROR, "Input_Handler::Input_Handler\n")); -} - -int -Input_Handler::handle_input (ACE_HANDLE h) -{ - char buf[BUFSIZ]; - ssize_t n; - - // Read up to BUFSIZ worth of data from ACE_HANDLE h. - - n = ACE_OS::read (h, buf, sizeof buf - 1); - - if (n > 0) - { - // Null terminate the buffer, replacing the '\n' with '\0'. - if (buf[n - 1] == '\n' || buf[n - 1] == EOF) - buf[n - 1] = '\0'; - else - buf[n] = '\0'; - ACE_DEBUG ((LM_DEBUG, "notifying for event %s\n", buf)); - - } - else - { - ACE_OS::strcpy (buf, "quit"); - ACE_DEBUG ((LM_DEBUG, "shutting down Input_Handler\n")); - } - - Event_Comm::Notifier *notifier = this->receiver_handler_->notifier (); - - ACE_ASSERT (notifier != 0); - - if (ACE_OS::strcmp (buf, "quit") == 0) - { - // Consumer wants to shutdown. - this->consumer_initiated_shutdown (1); - - // Tell the main event loop to shutdown. - ACE_Reactor::end_event_loop(); - } - else - { - TRY { - Event_Comm::Notification notification; - - notification.tag_ = ACE_OS::strdup (buf); - - notifier->send_notification (notification, IT_X); - } - CATCHANY { - cerr << "Unexpected exception " << IT_X << endl; - } ENDTRY; - } - - /* NOTREACHED */ - return 0; -} -#endif /* ACE_HAS_ORBIX */ diff --git a/apps/Orbix-Examples/Event_Comm/Consumer/Input_Handler.h b/apps/Orbix-Examples/Event_Comm/Consumer/Input_Handler.h deleted file mode 100644 index a6993ac1a23..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Consumer/Input_Handler.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Input_Handler.h -// -// = DESCRIPTION -// Subclass of ACE ACE_Service_Object that receives unsubscribes from -// the Notifier when input is received from the keyboard. -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#if !defined (_INPUT_HANDLER_H) -#define _INPUT_HANDLER_ - -#include "ace/Service_Config.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) -// Forward declaration. -class Notification_Receiver_Handler; - -class Input_Handler : public ACE_Service_Object - // = TITLE - // Handles input events generated from a keyboard. - // - // = DESCRIPTION -{ -public: - Input_Handler (Notification_Receiver_Handler *, ACE_HANDLE h = 0); - - virtual int handle_input (ACE_HANDLE); - // Dispatch the callback when events occur. - - virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE, - ACE_Reactor_Mask = ACE_Event_Handler::NULL_MASK); - // Close down the handler. - - int consumer_initiated_shutdown (void); - // Report whether the Consumer initiated the shutdown. - - void consumer_initiated_shutdown (int); - // Indicate that the Consumer initiated the shutdown. - -private: - ~Input_Handler (void); - // Ensure dynamic allocation. - - virtual ACE_HANDLE get_handle (void) const; - - ACE_HANDLE handle_; - // ACE_HANDLE where the input comes from. - - Notification_Receiver_Handler *receiver_handler_; - // Pointer to the <Notification_Receiver_Handler> that - // receives notifications from the <Event_Comm::Notifier>. - - int consumer_initiated_shutdown_; - // Keep track of whether the Consumer initiated the shutdown. -}; - -#endif /* ACE_HAS_ORBIX */ -#endif /* _INPUT_HANDLER_H */ diff --git a/apps/Orbix-Examples/Event_Comm/Consumer/Makefile b/apps/Orbix-Examples/Event_Comm/Consumer/Makefile deleted file mode 100644 index 23f9da9c5e3..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Consumer/Makefile +++ /dev/null @@ -1,163 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the Consumer. -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = consumer - -FILES = Notification_Receiver_Handler \ - Input_Handler - -LSRC = $(addsuffix .cpp,$(FILES)) consumer.cpp -LOBJ = $(addsuffix .o,$(FILES)) -SHOBJ = $(addsuffix .so,$(FILES)) - -LDLIBS = $(addprefix $(VSHDIR),$(LOBJ)) ../libsrc/libEvent_Comm.a -VLDLIBS = $(LDLIBS:%=%$(VAR)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -CPPFLAGS += -I../include -VLDLIBS += -lgen - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -Notification_Receiver_Handler.o: Notification_Receiver_Handler.cpp \ - Notification_Receiver_Handler.h \ - ${ACE_ROOT}ace/CORBA_Handler.h \ - ${ACE_ROOT}ace/Service_Config.h \ - ${ACE_ROOT}ace/Reactor.h \ - ${ACE_ROOT}ace/Handle_Set.h \ - ${ACE_ROOT}ace/sysincludes.h \ - ${ACE_ROOT}ace/config.h \ - ${ACE_ROOT}ace/Handle_Set.i \ - ${ACE_ROOT}ace/Timer_Queue.h \ - ${ACE_ROOT}ace/Event_Handler.h \ - ${ACE_ROOT}ace/Time_Value.h \ - ${ACE_ROOT}ace/Synch.h \ - ${ACE_ROOT}ace/Synch_T.h \ - ${ACE_ROOT}ace/Timer_Queue.i \ - ${ACE_ROOT}ace/Signal.h \ - ${ACE_ROOT}ace/Set.h \ - ${ACE_ROOT}ace/Thread.h \ - ${ACE_ROOT}ace/Token.h \ - ${ACE_ROOT}ace/Reactor.i \ - ${ACE_ROOT}ace/Log_Msg.h \ - ${ACE_ROOT}ace/Log_Record.h \ - ${ACE_ROOT}ace/Log_Priority.h \ - ${ACE_ROOT}ace/Log_Record.i \ - ${ACE_ROOT}ace/Log_Msg.i \ - ${ACE_ROOT}ace/Thread_Specific.h \ - ${ACE_ROOT}ace/Thread_Specific.i \ - ${ACE_ROOT}ace/Service_Object.h \ - ${ACE_ROOT}ace/Shared_Object.h \ - ${ACE_ROOT}ace/Service_Types.h \ - ${ACE_ROOT}ace/Thread_Manager.h \ - ../include/Event_Comm_i.h ../include/Notification_Receiver_i.h \ - ../include/Notifier_i.h \ - ${ACE_ROOT}ace/Map_Manager.h \ - ${ACE_ROOT}ace/SString.h \ - ${ACE_ROOT}ace/SString.i \ - ../include/Event_Comm.hh -Input_Handler.o: Input_Handler.cpp Input_Handler.h \ - ${ACE_ROOT}ace/Service_Config.h \ - ${ACE_ROOT}ace/Reactor.h \ - ${ACE_ROOT}ace/Handle_Set.h \ - ${ACE_ROOT}ace/sysincludes.h \ - ${ACE_ROOT}ace/config.h \ - ${ACE_ROOT}ace/Handle_Set.i \ - ${ACE_ROOT}ace/Timer_Queue.h \ - ${ACE_ROOT}ace/Event_Handler.h \ - ${ACE_ROOT}ace/Time_Value.h \ - ${ACE_ROOT}ace/Synch.h \ - ${ACE_ROOT}ace/Synch_T.h \ - ${ACE_ROOT}ace/Timer_Queue.i \ - ${ACE_ROOT}ace/Signal.h \ - ${ACE_ROOT}ace/Set.h \ - ${ACE_ROOT}ace/Thread.h \ - ${ACE_ROOT}ace/Token.h \ - ${ACE_ROOT}ace/Reactor.i \ - ${ACE_ROOT}ace/Log_Msg.h \ - ${ACE_ROOT}ace/Log_Record.h \ - ${ACE_ROOT}ace/Log_Priority.h \ - ${ACE_ROOT}ace/Log_Record.i \ - ${ACE_ROOT}ace/Log_Msg.i \ - ${ACE_ROOT}ace/Thread_Specific.h \ - ${ACE_ROOT}ace/Thread_Specific.i \ - ${ACE_ROOT}ace/Service_Object.h \ - ${ACE_ROOT}ace/Shared_Object.h \ - ${ACE_ROOT}ace/Service_Types.h \ - ${ACE_ROOT}ace/Thread_Manager.h \ - Notification_Receiver_Handler.h \ - ${ACE_ROOT}ace/CORBA_Handler.h \ - ../include/Event_Comm_i.h ../include/Notification_Receiver_i.h \ - ../include/Notifier_i.h \ - ${ACE_ROOT}ace/Map_Manager.h \ - ${ACE_ROOT}ace/SString.h \ - ${ACE_ROOT}ace/SString.i \ - ../include/Event_Comm.hh -consumer.o: consumer.cpp \ - ${ACE_ROOT}ace/Log_Msg.h \ - ${ACE_ROOT}ace/Log_Record.h \ - ${ACE_ROOT}ace/sysincludes.h \ - ${ACE_ROOT}ace/config.h \ - ${ACE_ROOT}ace/Log_Priority.h \ - ${ACE_ROOT}ace/Log_Record.i \ - ${ACE_ROOT}ace/Log_Msg.i \ - ${ACE_ROOT}ace/Thread_Specific.h \ - ${ACE_ROOT}ace/Synch.h \ - ${ACE_ROOT}ace/Time_Value.h \ - ${ACE_ROOT}ace/Synch_T.h \ - ${ACE_ROOT}ace/Thread_Specific.i \ - Notification_Receiver_Handler.h \ - ${ACE_ROOT}ace/CORBA_Handler.h \ - ${ACE_ROOT}ace/Service_Config.h \ - ${ACE_ROOT}ace/Reactor.h \ - ${ACE_ROOT}ace/Handle_Set.h \ - ${ACE_ROOT}ace/Handle_Set.i \ - ${ACE_ROOT}ace/Timer_Queue.h \ - ${ACE_ROOT}ace/Event_Handler.h \ - ${ACE_ROOT}ace/Timer_Queue.i \ - ${ACE_ROOT}ace/Signal.h \ - ${ACE_ROOT}ace/Set.h \ - ${ACE_ROOT}ace/Thread.h \ - ${ACE_ROOT}ace/Token.h \ - ${ACE_ROOT}ace/Reactor.i \ - ${ACE_ROOT}ace/Service_Object.h \ - ${ACE_ROOT}ace/Shared_Object.h \ - ${ACE_ROOT}ace/Service_Types.h \ - ${ACE_ROOT}ace/Thread_Manager.h \ - ../include/Event_Comm_i.h ../include/Notification_Receiver_i.h \ - ../include/Notifier_i.h \ - ${ACE_ROOT}ace/Map_Manager.h \ - ${ACE_ROOT}ace/SString.h \ - ${ACE_ROOT}ace/SString.i \ - ../include/Event_Comm.hh Input_Handler.h - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/apps/Orbix-Examples/Event_Comm/Consumer/Notification_Receiver_Handler.cpp b/apps/Orbix-Examples/Event_Comm/Consumer/Notification_Receiver_Handler.cpp deleted file mode 100644 index 2574aff6e65..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Consumer/Notification_Receiver_Handler.cpp +++ /dev/null @@ -1,114 +0,0 @@ -// $Id$ - -#include "Notification_Receiver_Handler.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -#if defined (ACE_HAS_MT_ORBIX) && (ACE_HAS_MT_ORBIX != 0) -typedef ACE_MT_CORBA_Handler CORBA_HANDLER; -#else -typedef ACE_ST_CORBA_Handler CORBA_HANDLER; -#endif /* ACE_HAS_MT_ORBIX */ - -int -Notification_Receiver_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) -{ -// ACE_ST_CORBA_Handler::remove_service (Event_Comm_Notification_Receiver_IMPL); - - if (this->receiver_ != 0) - { - ACE_DEBUG ((LM_DEBUG, "closing down Notification_Receiver_Handler\n")); - CORBA_HANDLER::instance ()->deactivate_service (Event_Comm_Notification_Receiver_IMPL, - this->receiver_->_marker ()); - CORBA::release (this->receiver_); - this->receiver_ = 0; - CORBA::release (this->notifier_); - this->notifier_ = 0; - // *Must* be allocated dynamically in order to delete this! - delete this; - } - return 0; -} - -Notification_Receiver_Handler::Notification_Receiver_Handler (int argc, char *argv[]) - : notifier_ (0), - receiver_ (0) -{ - const char *server_name = Event_Comm_Notification_Receiver_IMPL; - char buf[BUFSIZ]; - char *receiver_marker = buf; - char *filtering_criteria; - char *host; - char *notifier_marker; - char *service_location = argv[0]; - - // First see if we have any environment variables. - filtering_criteria = ACE_OS::getenv ("FILTERING_CRITERIA"); - host = ACE_OS::getenv ("HOST"); - notifier_marker = ACE_OS::getenv ("NOTIFIER_MARKER"); - - // Then override these variables with command-line arguments. - filtering_criteria = argc > 1 ? argv[1] : ""; - host = argc > 2 ? argv[2] : "tango.cs"; - notifier_marker = argc > 3 ? argv[3] : "notifier:" Event_Comm_Notifier_IR; - - CORBA::Orbix.setDiagnostics (0); - - struct utsname name; - - // Make the marker name be the "/hostname/processid" - ACE_OS::uname (&name); - sprintf (buf, "/%s/%d", name.nodename, ACE_OS::getpid ()); - - CORBA_HANDLER::instance ()->activate_service (Event_Comm_Notification_Receiver_IMPL, - receiver_marker, service_location); - - // Create the receiver object. - this->receiver_ = new TIE_Event_Comm_Notification_Receiver (Notification_Receiver_i) - (new Notification_Receiver_i); - - this->receiver_->_marker (receiver_marker); - - ACE_ASSERT (this->receiver_); - - TRY { - // Get a binding to the notifier. - this->notifier_ = Event_Comm::Notifier::_bind (notifier_marker, host, IT_X); - - if (this->notifier_ != CORBA::OBJECT_NIL) - // Subscribe ourselves with the notifier's broker. - this->notifier_->subscribe (this->receiver_, - filtering_criteria, IT_X); - } CATCHANY { - cerr << "Unexpected exception " << IT_X << endl; - ACE_OS::exit (1); - } ENDTRY; - // Print out context. - - receiver_marker = (char *) this->receiver_->_marker (); - CORBA::BOA::activationMode mode = CORBA::Orbix.myActivationMode (); - ACE_DEBUG ((LM_DEBUG, "starting up a %spersistent server in mode %d with marker name %s\n", - mode == CORBA::BOA::persistentActivationMode ? "" : "non-", - mode, receiver_marker)); -} - -Event_Comm::Notification_Receiver * -Notification_Receiver_Handler::receiver (void) -{ - return this->receiver_; -} - -Event_Comm::Notifier * -Notification_Receiver_Handler::notifier (void) -{ - return this->notifier_; -} - -// Destroy a Receiver target object. - -Notification_Receiver_Handler::~Notification_Receiver_Handler (void) -{ - this->handle_close (-1, ACE_Event_Handler::ALL_EVENTS_MASK); -} - -#endif /* ACE_HAS_ORBIX */ diff --git a/apps/Orbix-Examples/Event_Comm/Consumer/Notification_Receiver_Handler.h b/apps/Orbix-Examples/Event_Comm/Consumer/Notification_Receiver_Handler.h deleted file mode 100644 index 9d82c1eafc2..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Consumer/Notification_Receiver_Handler.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Notifier_Receiver_Handler.h -// -// = DESCRIPTION -// Subclass of Corba_Handler that sets up the Notification_Receiver handler -// for use with the ACE ACE_Reactor. -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#if !defined (_NOTIFICATION_RECEIVER_HANDLER_H) -#define _NOTIFICATION_RECEIVER_HANDLER_H - -#include "ace/CORBA_Handler.h" -#include "Event_Comm_i.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -class Notification_Receiver_Handler - // = TITLE - // Subclass of Corba_Handler that sets up the Notification Receiver handler - // for use with the ACE ACE_Reactor. - // - // = DESCRIPTION - // Note that this class doesn't inherit from ACE_ST_CORBA_Handler (unlike - // the Supplier's Notifier_Handler class). Instead, it uses an - // alternative interface that can be called directly. -{ -public: - Notification_Receiver_Handler (int argc, char *argv[]); - - Event_Comm::Notification_Receiver *receiver (void); - Event_Comm::Notifier *notifier (void); - - virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE, - ACE_Reactor_Mask = ACE_Event_Handler::NULL_MASK); - // Close down the handler. - -private: - ~Notification_Receiver_Handler (void); - // Ensure dynamic allocation. - - Event_Comm::Notification_Receiver *receiver_; - // Pointer to an IDL <Notification_Receiver> proxy object. - - Event_Comm::Notifier *notifier_; - // Pointer to an IDL <Notifier> proxy object. -}; - -#endif /* ACE_HAS_ORBIX */ -#endif /* _NOTIFICATION_RECEIVER_HANDLER_H */ diff --git a/apps/Orbix-Examples/Event_Comm/Consumer/consumer.cpp b/apps/Orbix-Examples/Event_Comm/Consumer/consumer.cpp deleted file mode 100644 index 29137661ce3..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Consumer/consumer.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// Consumer driver for the Orbix Notification example. - - -#include "Notification_Receiver_Handler.h" -#include "Input_Handler.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -class Consumer : public ACE_Event_Handler -{ -public: - Consumer (int argc, char *argv[]); - ~Consumer (void); - - void run (void); - // Execute the consumer; - -private: - virtual int handle_signal (int signum, siginfo_t *, ucontext_t *); - - virtual int handle_close (ACE_HANDLE, ACE_Reactor_Mask); - - Input_Handler *ih_; - // Handler for keyboard input. - - Notification_Receiver_Handler *nrh_; - // Handler for CORBA Consumer. - - ACE_Service_Config daemon_; - // ACE server event-loop mechanism. -}; - -int -Consumer::handle_close (ACE_HANDLE, ACE_Reactor_Mask) -{ - ACE_DEBUG ((LM_DEBUG, "closing down Consumer\n")); - return 0; -} - -int -Consumer::handle_signal (int signum, siginfo_t *, ucontext_t *) -{ - ACE_DEBUG ((LM_DEBUG, "%S\n", signum)); - - // Indicate that the consumer initiated the shutdown. - this->ih_->consumer_initiated_shutdown (1); - - // Shut down the event loop. - ACE_Reactor::end_event_loop(); - return 0; -} - -// Run the event loop until someone calls -// calls ACE_Reactor::end_event_loop(). - -void -Consumer::run (void) -{ - if (ACE_Reactor::run_event_loop () == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "run_reactor_event_loop")); -} - -Consumer::Consumer (int argc, char *argv[]) - : ih_ (0), - nrh_ (0) -{ - // Initialize the server. - if (this->daemon_.open (argc, argv) == -1) - { - if (errno == ENOENT) // There's no svc.conf file, so use static linking... - { - ACE_DEBUG ((LM_DEBUG, "no config file, using static binding\n")); - // The constructor registers the handlers... - this->nrh_ = new Notification_Receiver_Handler (argc, argv); - ACE_ASSERT (this->nrh_ != 0); - this->ih_ = new Input_Handler (this->nrh_); - ACE_ASSERT (this->ih_ != 0); - } - else - ACE_ERROR ((LM_ERROR, "%p\n%a", "open", 1)); - } - - if (ACE_Reactor::instance ()->register_handler (SIGINT, this) == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "register_handler")); -} - -Consumer::~Consumer (void) -{ - // Free up the handlers if they were statically bound. - this->ih_->handle_close (); - this->nrh_->handle_close (); -} - -int -main (int argc, char *argv[]) -{ - // Initialize the supplier and consumer object references. - Consumer consumer (argc, argv); - - // Loop forever handling events. - consumer.run (); - - return 0; -} -#else /* !defined ACE_HAS_ORBIX */ -int -main (int argc, char *argv[]) -{ - ACE_ERROR_RETURN ((LM_ERROR, "you must have Orbix to run application %s\n", argv[0]), 1); -} -#endif /* ACE_HAS_ORBIX */ diff --git a/apps/Orbix-Examples/Event_Comm/Makefile b/apps/Orbix-Examples/Event_Comm/Makefile deleted file mode 100644 index a13ad129458..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the consumer/supplier notification application -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -INFO = README - -DIRS = libsrc \ - Consumer \ - Supplier - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU - diff --git a/apps/Orbix-Examples/Event_Comm/README b/apps/Orbix-Examples/Event_Comm/README deleted file mode 100644 index 1bd7b5d8c45..00000000000 --- a/apps/Orbix-Examples/Event_Comm/README +++ /dev/null @@ -1,109 +0,0 @@ -OVERVIEW - -This directory contains source code for a prototype CORBA-based -distributed notification mechanism. This mechanism implements a -"publish/subscribe" communication protocol. It allows Suppliers to -pass messages containing object references to a dynamically managed -group of Consumers. This is similar to the OMG COSS Event Service, -though not as sophisticated. - -This example also illustrates how to integrate Orbix with the ACE -libraries. - -DIRECTORY STRUCTURE - -There are 4 directories: - -Supplier - - -- The supplier test driver, which must be started - first. It has an instance of an IDL Notifier - object. This object accepts subscriptions from Consumers - and forwards events sent to it either via Consumers or - via its standard input. - - The Supplier must be registered with the ORB using the - following command: - - % putit Event_Comm_Notifier <pathname>/supplier - -Consumer - - -- The consumer test driver, which must be started - after the Supplier. It has an instance of an - IDL Notification_Receiver object. This object is - used to receive notifications from the Notifier object - residing in the Supplier. When the Consumer starts up it - gets an object reference to the Supplier's Notifier. - It then subscribes its Notification_Receiver object with - the Supplier's Notifier by passing an object reference. - - In addition to passing an object reference to a - Notification_Receiver, the Consumer also may specify a - filtering criteria, which is a regular expression. If - the filtering criteria is the string "" then the Notifier - will send all Notifications to the Consumer (i.e., "" is - treated as a "wildcard"). Otherwise, the filtering - criteria is considered to be a regular expression, - and only those Notification tags that match the regular - expression will be forwarded to the Consumer. The regular - expressions are those used by ed(1) (see the regexp(5) - manual page for more info). - - The Consumer must be registered with the ORB - using the following command: - - % putit Event_Comm_Notification_Receiver <pathname>/consumer - -include - - -- This contains links to the appropriate header - files. - -libsrc - - -- This contains the IDL files and IDL implementation - classes that support the distributed notification scheme. - These are shared by the Consumer and Supplier. - -RUNNING THE TESTS - -To run the tests do the following: - -1. Compile everything. - -2. Start up the Orbix daemon (orbixd) if it's not already - running. - -3. Register the Consumer (i.e., Notification_Receiver) and Supplier - (i.e., Notifier) with the Orbix daemon (orbixd), as described - above. - -4. Start the Supplier/supplier executable. - -5. Start up as many copies of the Consumer/consumer as you'd like. - Typically, I run each one in its own window. If you'd like to use - different machines make sure that you start up the Orbix daemon on - each one and register the Consumer. - -6. Once the Consumers have subscribed you can send them info by typing - commands in the Supplier window. These will be sent to all the - Consumers who have subscribed. Likewise, you can send messages - from a Consumer to all other Consumers by typing messages in a - Consumer window. - - Note that if you type "quit", ^D, or ^C in a Consumer window the - Consumer will unsubscribe and shutdown its handlers and exit. - Likewise, if you type "quit", ^D, or ^C in the Supplier window - the Supplier will disconnect all of its Consumers and exit. - When a Consumer is disconnected from its Supplier it automatically - shuts itself down. - -7. When you want to terminate a Consumer or a Supplier, just type ^C - and the process will shut down gracefully. - -Please let me know if there are any questions. - - Doug - -schmidt@cs.wustl.edu diff --git a/apps/Orbix-Examples/Event_Comm/Supplier/Input_Handler.cpp b/apps/Orbix-Examples/Event_Comm/Supplier/Input_Handler.cpp deleted file mode 100644 index 164e0bc6810..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Supplier/Input_Handler.cpp +++ /dev/null @@ -1,120 +0,0 @@ -#include "Event_Comm.hh" -// $Id$ - -#include "Notifier_Handler.h" -#include "Input_Handler.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -int -Input_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) -{ - ACE_DEBUG ((LM_DEBUG, "closing down Supplier::Input_Handler\n")); - - Event_Comm::Notifier *notifier = this->notifier_->notifier (); - ACE_ASSERT (notifier != 0); - - ACE_OS::fclose (this->fp_); - - TRY { - // Disconnect all the consumers gracefully. - notifier->send_disconnect ("quit", IT_X); - } CATCHANY { - cerr << IT_X << endl; - } ENDTRY; - - // Don't execute a callback here otherwise we'll recurse indefinitely! - if (ACE_Reactor::instance ()->remove_handler - (this, ACE_Event_Handler::READ_MASK | ACE_Event_Handler::DONT_CALL) == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "remove_handler")); - - // *Must* be allocated dyanmically! - delete (void *) this; - return 0; -} - -Input_Handler::Input_Handler (Notifier_Handler *notifier, - ACE_HANDLE handle) // Use stdin by default. - : notifier_ (notifier), - handle_ (handle) -{ - // Register ourselves with the ACE_Reactor so that input events - // cause our handle_input() method to be dispatched automatically. - - if (ACE_Reactor::instance ()->register_handler (this, - ACE_Event_Handler::READ_MASK) == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "register_handler")); - - this->fp_ = ACE_OS::fdopen (handle, "r"); - - if (this->fp_ == 0) - ACE_ERROR ((LM_ERROR, "%p\n", "fdopen")); -} - -Input_Handler::~Input_Handler (void) -{ - ACE_DEBUG ((LM_DEBUG, "closing down Input_Handler::~Input_Handler\n")); - this->handle_close (); -} - -ACE_HANDLE -Input_Handler::get_handle (void) const -{ - return this->handle_; -} - -// Frame input events and notify <Consumers>. - -int -Input_Handler::handle_input (ACE_HANDLE h) -{ - char buf[BUFSIZ]; - - // Read up to BUFSIZ worth of data from ACE_HANDLE h. - - if (ACE_OS::fgets (buf, sizeof buf - 1, this->fp_) == 0) - { - ACE_OS::strcpy (buf, "quit"); - ACE_DEBUG ((LM_DEBUG, "shutting down Input_Handler\n")); - } - else - { - size_t n = ACE_OS::strlen (buf); - - // Null terminate the buffer, replacing the '\n' with '\0'. - if (buf[n - 1] == '\n' || buf[n - 1] == EOF) - buf[n - 1] = '\0'; - else - buf[n] = '\0'; - ACE_DEBUG ((LM_DEBUG, "notifying for event %s\n", buf)); - } - - Event_Comm::Notifier *notifier = this->notifier_->notifier (); - ACE_ASSERT (notifier != 0); - - if (ACE_OS::strcmp (buf, "quit") == 0) - // Tell the main event loop to shutdown. - ACE_Reactor::end_event_loop(); - else - { - // Use the notifier to notify Consumers. - TRY { - Event_Comm::Notification notification; - - // Pass the buf over in the tag field. - notification.tag_ = ACE_OS::strdup (buf); - - // This is where the "any" value goes or the object reference... - // notification.value_ = ... - - // Forward <Notification> to all <Notification_Receivers>. - notifier->send_notification (notification, IT_X); - } - CATCHANY { - cerr << "unexpected exception " << IT_X << endl; - } ENDTRY; - } - return 0; -} - -#endif /* ACE_HAS_ORBIX */ diff --git a/apps/Orbix-Examples/Event_Comm/Supplier/Input_Handler.h b/apps/Orbix-Examples/Event_Comm/Supplier/Input_Handler.h deleted file mode 100644 index 5bbf12f3a8d..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Supplier/Input_Handler.h +++ /dev/null @@ -1,70 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Input_Handler.h -// -// = DESCRIPTION -// Handle input from the keyboard. -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#if !defined (_INPUT_HANDLER_H) -#define _INPUT_HANDLER_H - -#include "ace/Service_Config.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -// Forward declaration. -class Notifier_Handler; - -class Input_Handler : public ACE_Service_Object - // = TITLE - // Handles input events generated from a keyboard. - // - // = DESCRIPTION - // The events are currently framed and forwarded to - // all Consumers. In the future, we will need to - // be more selective and only send to those Consumers - // whose filtering criteria matches! -{ -public: - Input_Handler (Notifier_Handler *, ACE_HANDLE = 0); // Use stdin by default. - - virtual int handle_input (ACE_HANDLE); - // Frame input events and notify <Consumers>. - - virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE, - ACE_Reactor_Mask = ACE_Event_Handler::NULL_MASK); - // Close down the handler. - -protected: - virtual ACE_HANDLE get_handle (void) const; - - ACE_HANDLE handle_; - // ACE_HANDLE where the input comes from. - - Notifier_Handler *notifier_; - // Pointer to a <Notifier_Handler> that's used to inform - // Consumers that events of interest have occurred. - - FILE *fp_; - // Pointer to an input ACE_FILE. - -private: - ~Input_Handler (void); - // Ensure dynamic allocation. -}; - -#endif /* ACE_HAS_ORBIX */ -#endif /* _INPUT_HANDLER_H */ diff --git a/apps/Orbix-Examples/Event_Comm/Supplier/Makefile b/apps/Orbix-Examples/Event_Comm/Supplier/Makefile deleted file mode 100644 index 85eed3c8d4e..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Supplier/Makefile +++ /dev/null @@ -1,162 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the Notifier. -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -BIN = supplier - -FILES = Input_Handler \ - Notifier_Handler - -LSRC = $(addsuffix .cpp,$(FILES)) supplier.cpp -LOBJ = $(addsuffix .o,$(FILES)) -SHOBJ = $(addsuffix .so,$(FILES)) - -LDLIBS = $(addprefix $(VSHDIR),$(LOBJ)) ../libsrc/libEvent_Comm.a - -VLDLIBS = $(LDLIBS:%=%$(VAR)) - -BUILD = $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -CPPFLAGS += -I../include -VLDLIBS += -lgen - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -Input_Handler.o: Input_Handler.cpp ../include/Event_Comm.hh Notifier_Handler.h \ - ${ACE_ROOT}ace/CORBA_Handler.h \ - ${ACE_ROOT}ace/Service_Config.h \ - ${ACE_ROOT}ace/Reactor.h \ - ${ACE_ROOT}ace/Handle_Set.h \ - ${ACE_ROOT}ace/sysincludes.h \ - ${ACE_ROOT}ace/config.h \ - ${ACE_ROOT}ace/Handle_Set.i \ - ${ACE_ROOT}ace/Timer_Queue.h \ - ${ACE_ROOT}ace/Event_Handler.h \ - ${ACE_ROOT}ace/Time_Value.h \ - ${ACE_ROOT}ace/Synch.h \ - ${ACE_ROOT}ace/Synch_T.h \ - ${ACE_ROOT}ace/Timer_Queue.i \ - ${ACE_ROOT}ace/Signal.h \ - ${ACE_ROOT}ace/Set.h \ - ${ACE_ROOT}ace/Thread.h \ - ${ACE_ROOT}ace/Token.h \ - ${ACE_ROOT}ace/Reactor.i \ - ${ACE_ROOT}ace/Log_Msg.h \ - ${ACE_ROOT}ace/Log_Record.h \ - ${ACE_ROOT}ace/Log_Priority.h \ - ${ACE_ROOT}ace/Log_Record.i \ - ${ACE_ROOT}ace/Log_Msg.i \ - ${ACE_ROOT}ace/Thread_Specific.h \ - ${ACE_ROOT}ace/Thread_Specific.i \ - ${ACE_ROOT}ace/Service_Object.h \ - ${ACE_ROOT}ace/Shared_Object.h \ - ${ACE_ROOT}ace/Service_Types.h \ - ${ACE_ROOT}ace/Thread_Manager.h \ - ../include/Event_Comm_i.h ../include/Notification_Receiver_i.h \ - ../include/Notifier_i.h \ - ${ACE_ROOT}ace/Map_Manager.h \ - ${ACE_ROOT}ace/SString.h \ - ${ACE_ROOT}ace/SString.i \ - Input_Handler.h -Notifier_Handler.o: Notifier_Handler.cpp Notifier_Handler.h \ - ${ACE_ROOT}ace/CORBA_Handler.h \ - ${ACE_ROOT}ace/Service_Config.h \ - ${ACE_ROOT}ace/Reactor.h \ - ${ACE_ROOT}ace/Handle_Set.h \ - ${ACE_ROOT}ace/sysincludes.h \ - ${ACE_ROOT}ace/config.h \ - ${ACE_ROOT}ace/Handle_Set.i \ - ${ACE_ROOT}ace/Timer_Queue.h \ - ${ACE_ROOT}ace/Event_Handler.h \ - ${ACE_ROOT}ace/Time_Value.h \ - ${ACE_ROOT}ace/Synch.h \ - ${ACE_ROOT}ace/Synch_T.h \ - ${ACE_ROOT}ace/Timer_Queue.i \ - ${ACE_ROOT}ace/Signal.h \ - ${ACE_ROOT}ace/Set.h \ - ${ACE_ROOT}ace/Thread.h \ - ${ACE_ROOT}ace/Token.h \ - ${ACE_ROOT}ace/Reactor.i \ - ${ACE_ROOT}ace/Log_Msg.h \ - ${ACE_ROOT}ace/Log_Record.h \ - ${ACE_ROOT}ace/Log_Priority.h \ - ${ACE_ROOT}ace/Log_Record.i \ - ${ACE_ROOT}ace/Log_Msg.i \ - ${ACE_ROOT}ace/Thread_Specific.h \ - ${ACE_ROOT}ace/Thread_Specific.i \ - ${ACE_ROOT}ace/Service_Object.h \ - ${ACE_ROOT}ace/Shared_Object.h \ - ${ACE_ROOT}ace/Service_Types.h \ - ${ACE_ROOT}ace/Thread_Manager.h \ - ../include/Event_Comm_i.h ../include/Notification_Receiver_i.h \ - ../include/Notifier_i.h \ - ${ACE_ROOT}ace/Map_Manager.h \ - ${ACE_ROOT}ace/SString.h \ - ${ACE_ROOT}ace/SString.i \ - ../include/Event_Comm.hh -supplier.o: supplier.cpp \ - ${ACE_ROOT}ace/Service_Config.h \ - ${ACE_ROOT}ace/Reactor.h \ - ${ACE_ROOT}ace/Handle_Set.h \ - ${ACE_ROOT}ace/sysincludes.h \ - ${ACE_ROOT}ace/config.h \ - ${ACE_ROOT}ace/Handle_Set.i \ - ${ACE_ROOT}ace/Timer_Queue.h \ - ${ACE_ROOT}ace/Event_Handler.h \ - ${ACE_ROOT}ace/Time_Value.h \ - ${ACE_ROOT}ace/Synch.h \ - ${ACE_ROOT}ace/Synch_T.h \ - ${ACE_ROOT}ace/Timer_Queue.i \ - ${ACE_ROOT}ace/Signal.h \ - ${ACE_ROOT}ace/Set.h \ - ${ACE_ROOT}ace/Thread.h \ - ${ACE_ROOT}ace/Token.h \ - ${ACE_ROOT}ace/Reactor.i \ - ${ACE_ROOT}ace/Log_Msg.h \ - ${ACE_ROOT}ace/Log_Record.h \ - ${ACE_ROOT}ace/Log_Priority.h \ - ${ACE_ROOT}ace/Log_Record.i \ - ${ACE_ROOT}ace/Log_Msg.i \ - ${ACE_ROOT}ace/Thread_Specific.h \ - ${ACE_ROOT}ace/Thread_Specific.i \ - ${ACE_ROOT}ace/Service_Object.h \ - ${ACE_ROOT}ace/Shared_Object.h \ - ${ACE_ROOT}ace/Service_Types.h \ - ${ACE_ROOT}ace/Thread_Manager.h \ - Notifier_Handler.h \ - ${ACE_ROOT}ace/CORBA_Handler.h \ - ../include/Event_Comm_i.h ../include/Notification_Receiver_i.h \ - ../include/Notifier_i.h \ - ${ACE_ROOT}ace/Map_Manager.h \ - ${ACE_ROOT}ace/SString.h \ - ${ACE_ROOT}ace/SString.i \ - ../include/Event_Comm.hh Input_Handler.h - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/apps/Orbix-Examples/Event_Comm/Supplier/Notifier_Handler.cpp b/apps/Orbix-Examples/Event_Comm/Supplier/Notifier_Handler.cpp deleted file mode 100644 index d4487ae4734..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Supplier/Notifier_Handler.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "Notifier_Handler.h" -// $Id$ - - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -#if defined (ACE_HAS_MT_ORBIX) && (ACE_HAS_MT_ORBIX != 0) -typedef ACE_MT_CORBA_Handler CORBA_HANDLER; -#else -typedef ACE_ST_CORBA_Handler CORBA_HANDLER; -#endif /* ACE_HAS_MT_ORBIX */ - -int -Notifier_Handler::handle_close (ACE_HANDLE, ACE_Reactor_Mask) -{ - if (this->notifier_ != 0) - { - ACE_DEBUG ((LM_DEBUG, "closing down Notifier_Handler\n")); - CORBA_HANDLER::instance ()->deactivate_service (Event_Comm_Notifier_IMPL, - this->notifier_->_marker ()); - CORBA::release (this->notifier_); - this->notifier_ = 0; - // *Must* be allocated dyanmically! - delete this; - } - return 0; -} - -Event_Comm::Notifier * -Notifier_Handler::notifier (void) -{ - return this->notifier_; -} - -void -Notifier_Handler::notifier (Event_Comm::Notifier *notifier) -{ - if (this->notifier_ != notifier) - { - CORBA::release (this->notifier_); - this->notifier_ = notifier; - } -} - -// Create and initialize a Notifier target object. - -Notifier_Handler::Notifier_Handler (const char *service_location, - const char *marker, - int putit) -{ - CORBA_HANDLER::instance ()->activate_service (Event_Comm_Notifier_IMPL, - putit ? marker : 0, service_location); - - // Create a notifier object using the implementation class Notifier_i. - this->notifier_ = - new TIE_Event_Comm_Notifier (Notifier_i) (new Notifier_i, marker); -} - -// Destroy a Notifier target object. - -Notifier_Handler::~Notifier_Handler (void) -{ - this->handle_close (); -} - -#endif /* ACE_HAS_ORBIX */ diff --git a/apps/Orbix-Examples/Event_Comm/Supplier/Notifier_Handler.h b/apps/Orbix-Examples/Event_Comm/Supplier/Notifier_Handler.h deleted file mode 100644 index 8e3c56ca42c..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Supplier/Notifier_Handler.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Notifier_Handler.h -// -// = DESCRIPTION -// Integrate CORBA with the ACE ACE_Reactor. -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#if !defined (_NOTIFIER_HANDLER_H) -#define _NOTIFIER_HANDLER_H - -#include "ace/CORBA_Handler.h" -#include "Event_Comm_i.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -class Notifier_Handler - // = TITLE - // Integrate CORBA with the ACE ACE_Reactor. - // - // = DESCRIPTION - // -{ -public: - Notifier_Handler (const char *service_location, - const char *marker = "notifier", - int putit = 1); // Default marker name. - - Event_Comm::Notifier *notifier (void); - void notifier (Event_Comm::Notifier *); - - virtual int handle_close (ACE_HANDLE = ACE_INVALID_HANDLE, - ACE_Reactor_Mask = ACE_Event_Handler::NULL_MASK); - // Close down the handler. - -private: - ~Notifier_Handler (void); - // Ensure dynamic allocation. - - Event_Comm::Notifier *notifier_; - // Pointer to an a <Event_Comm::Notifier> object. -}; - -#endif /* ACE_HAS_ORBIX */ -#endif /* _NOTIFIER_HANDLER_H */ diff --git a/apps/Orbix-Examples/Event_Comm/Supplier/supplier.cpp b/apps/Orbix-Examples/Event_Comm/Supplier/supplier.cpp deleted file mode 100644 index 2477568d636..00000000000 --- a/apps/Orbix-Examples/Event_Comm/Supplier/supplier.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// Supplier driver for the Orbix Publish/Subscribe example. - -// The executable file generated from this code should be registered -// (under the name 'logger') using the 'putit' command. - -#include "ace/Service_Config.h" - -#include "Notifier_Handler.h" -#include "Input_Handler.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -class Supplier : public ACE_Event_Handler -{ -public: - Supplier (int argc, char *argv[]); - ~Supplier (void); - - void run (void); - // Execute the supplier. - -private: - virtual int handle_signal (int signum, siginfo_t *, ucontext_t *); - - virtual int handle_close (ACE_HANDLE, ACE_Reactor_Mask); - - Input_Handler *ih_; - // Handler for keyboard input. - - Notifier_Handler *nh_; - // Handler for CORBA Notifier. - - ACE_Service_Config daemon_; - // ACE server event-loop mechanism. -}; - -int -Supplier::handle_close (ACE_HANDLE, ACE_Reactor_Mask) -{ - ACE_DEBUG ((LM_DEBUG, "closing down Supplier\n")); - return 0; -} - -int -Supplier::handle_signal (int signum, siginfo_t *, ucontext_t *) -{ - ACE_DEBUG ((LM_DEBUG, "%S\n", signum)); - ACE_Reactor::end_event_loop(); - return 0; -} - -void -Supplier::run (void) -{ - if (ACE_Reactor::run_event_loop () == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "run_reactor_event_loop")); -} - -Supplier::Supplier (int argc, char *argv[]) - : ih_ (0), - nh_ (0) -{ - // Initialize the server. - if (this->daemon_.open (argc, argv) == -1) - { - if (errno == ENOENT) // There's no svc.conf file, so use static linking... - { - ACE_DEBUG ((LM_DEBUG, "no config file, using static binding\n")); - // The constructor registers the handlers... - int putit = argc > 1 ? 1 : 0; - - // Pass in program exec name to use a service_location! - this->nh_ = new Notifier_Handler (argv[0], "notifier", putit); - ACE_ASSERT (this->nh_ != 0); - this->ih_ = new Input_Handler (this->nh_); - ACE_ASSERT (this->ih_ != 0); - } - else - ACE_ERROR ((LM_ERROR, "%p\n%a", "open", 1)); - } - - ACE_DEBUG ((LM_DEBUG, "starting up server %s\n", - CORBA::Orbix.myImplementationName ())); - - if (ACE_Reactor::instance ()->register_handler (SIGINT, this) == -1) - ACE_ERROR ((LM_ERROR, "%p\n", "register_handler")); -} - -Supplier::~Supplier (void) -{ - // Free up the handlers if they were statically bound. - this->ih_->handle_close (); - this->nh_->handle_close (); -} - -int -main (int argc, char *argv[]) -{ - // Initialize server daemon. - Supplier supplier (argc, argv); - - // Loop forever handling events. - supplier.run (); - - return 0; -} -#else /* !defined ACE_HAS_ORBIX */ -int -main (int argc, char *argv[]) -{ - ACE_ERROR_RETURN ((LM_ERROR, "you must have Orbix to run application %s\n", argv[0]), 1); -} -#endif /* ACE_HAS_ORBIX */ diff --git a/apps/Orbix-Examples/Event_Comm/include/Event_Comm.hh b/apps/Orbix-Examples/Event_Comm/include/Event_Comm.hh deleted file mode 100644 index 85ad256da2a..00000000000 --- a/apps/Orbix-Examples/Event_Comm/include/Event_Comm.hh +++ /dev/null @@ -1,887 +0,0 @@ - -#ifndef Event_Comm_hh -#define Event_Comm_hh - -#include <CORBA.h> - -#include <string.h> - -class Event_Comm { -public: - -#ifndef Event_Comm_Notification_defined -#define Event_Comm_Notification_defined - - struct Notification { - CORBA::String_mgr tag_; - - void encodeOp (CORBA::Request &IT_r) const; - void decodeOp (CORBA::Request &IT_r); - void decodeInOutOp (CORBA::Request &IT_r); - static void* IT_anySupport (CORBA::Request &IT_r, - void *&, void*, const CORBA::Flags&); - static const void *IT_fn; - }; - - static const CORBA::TypeCode_ptr _tc_Notification; - -#ifndef Event_Comm_NotificationVarH -#define Event_Comm_NotificationVarH - -#ifndef Event_Comm_NotificationvPtr -#define Event_Comm_NotificationvPtr -typedef Notification* Notification_vPtr; -#endif - -class Notification_var : public CORBA::_var -{ - public: - - Notification_var () { - _ptr = NULL; - } - - Notification_var (Notification *IT_p) { - _ptr = IT_p; - } - - Notification_var (const Notification_var &IT_s) { - if (!IT_s._ptr) { - _ptr = IT_s._ptr; - return; - } - _ptr = new Notification (*(IT_s._ptr)); - } - - Notification_var &operator= (Notification *IT_p) { - if (_ptr != IT_p) { - delete _ptr; - } - _ptr = IT_p; - return (*this); - } - - Notification_var &operator= (const Notification_var &IT_s) { - if (_ptr != IT_s._ptr) { - delete _ptr; - } - _ptr = new Notification (*(IT_s._ptr)); - return (*this); - } - - ~Notification_var () { - delete _ptr; - } - - Notification* operator-> () { - return _ptr; - } - - operator const Notification_vPtr () const { return _ptr;} - operator Notification_vPtr& () { return _ptr;} - operator Notification& () const { return * _ptr;} - - protected: - Notification *_ptr; - private: - Notification_var &operator= (const CORBA::_var &IT_s); - Notification_var (const CORBA::_var &IT_s); -}; - -#endif - - -#endif - - -#ifndef _Event_Comm_Notification_Receiver_defined -#define _Event_Comm_Notification_Receiver_defined -class Notification_Receiver_dispatch : public virtual CORBA::PPTR { -public: - - Notification_Receiver_dispatch (void *IT_p, CORBA::Object* IT_o, const char *IT_m, - CORBA::LoaderClass *IT_l, char *IT_i, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_l,IT_i,IT_im) {} - - - Notification_Receiver_dispatch (char *IT_OR, void *IT_p, CORBA::Object *IT_o) - : CORBA::PPTR (IT_OR,IT_p,IT_o) {} - - - Notification_Receiver_dispatch () {} - - Notification_Receiver_dispatch (ObjectReference *IT_OR, void *IT_p, CORBA::Object *IT_o) - : CORBA::PPTR (IT_OR,IT_p,IT_o) {} - - - Notification_Receiver_dispatch (void *IT_p, CORBA::Object *IT_o, const char *IT_m, - char *IT_i, CORBA::Object* IT_ob, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_i,IT_ob,IT_im) {} - - - virtual unsigned char dispatch (CORBA::Request &IT_r, - unsigned char IT_isTarget, void* IT_pp=NULL); - - -}; - -class Notification_Receiver; - -#ifndef Event_Comm_Notification_ReceiverPtr -#define Event_Comm_Notification_ReceiverPtr - - typedef Notification_Receiver* Notification_Receiver_ptr; - - typedef Notification_Receiver* Notification_ReceiverRef; - -#endif - - -#ifndef Event_Comm_Notification_ReceiverForwH -#define Event_Comm_Notification_ReceiverForwH -static CORBA::ObjectRef Notification_Receiver_getBase (void *); -static void Notification_Receiver_release (Notification_Receiver *, CORBA::Environment &IT_env); -static void Notification_Receiver_release (Notification_Receiver_ptr); -static Notification_Receiver* Notification_Receiver_duplicate (Notification_Receiver_ptr, CORBA::Environment &IT_env); -static Notification_Receiver* Notification_Receiver_duplicate (Notification_Receiver_ptr ); -static Notification_Receiver_ptr Notification_Receiver_nil (CORBA::Environment &IT_env); -static Notification_Receiver_ptr Notification_Receiver_nil (); -#endif -#define Event_Comm_Notification_Receiver_IMPL "Event_Comm_Notification_Receiver" - - -class Notification_Receiver; - - typedef Notification_Receiver Notification_ReceiverProxy; -#define Event_Comm_Notification_Receiver_IR "Event_Comm_Notification_Receiver" -#define Event_Comm_Notification_Receiver_IMPL "Event_Comm_Notification_Receiver" - -#ifndef Event_Comm_Notification_ReceiverPtr -#define Event_Comm_Notification_ReceiverPtr - - typedef Notification_Receiver* Notification_Receiver_ptr; - - typedef Notification_Receiver* Notification_ReceiverRef; - -#endif - -class Notification_Receiver: public virtual CORBA::Object { -public: - Notification_Receiver (char *IT_OR); - Notification_Receiver (ObjectReference *IT_OR); - Notification_Receiver () : CORBA::Object (1) {} -protected: - Notification_Receiver_ptr __duplicate( - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::Object::__duplicate (IT_env); - return this; - } -public: - static Notification_Receiver_ptr _duplicate( - Notification_Receiver_ptr obj, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::EnvExcRaiser IT_raise (&IT_env); - if (CORBA::is_nil(obj, IT_env)) { - IT_raise.maybeRaise (); - return (obj); - } - Notification_Receiver_ptr IT_obj = obj->__duplicate (IT_env); - IT_raise.maybeRaise(); - return IT_obj; - } -public: - static Notification_Receiver* _bind (const char* IT_markerServer, const char* host, - const CORBA::Context &IT_c, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notification_Receiver* _bind (CORBA::Environment &IT_env); - static Notification_Receiver* _bind (const char* IT_markerServer=NULL, const char* host=NULL, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notification_Receiver* _narrow (CORBA::Object* , CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notification_Receiver_ptr _nil (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::EnvExcRaiser IT_raise (&IT_env); - IT_raise.maybeRaise(); - return (Notification_Receiver_ptr) CORBA::OBJECT_NIL;} - virtual void receive_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); - virtual void disconnect (const char * reason, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); -}; - - static const CORBA::TypeCode_ptr _tc_Notification_Receiver; - - static const CORBA::TypeCode_ptr _tc_Notification_ReceiverRef; - -#ifndef Event_Comm_Notification_ReceiverVarH -#define Event_Comm_Notification_ReceiverVarH - -#ifndef Event_Comm_Notification_ReceivervPtr -#define Event_Comm_Notification_ReceivervPtr -typedef Notification_Receiver* Notification_Receiver_vPtr; -#endif - -class Notification_Receiver_var : public CORBA::_var -{ - public: - - Notification_Receiver_var () { - _ptr = Notification_Receiver_nil (); - } - - Notification_Receiver_var (Notification_Receiver *IT_p) { - _ptr = IT_p; - } - - Notification_Receiver_var (const Notification_Receiver_var &IT_s) { - _ptr = Notification_Receiver_duplicate (IT_s._ptr); - } - - Notification_Receiver_var &operator= (Notification_Receiver *IT_p) { - Notification_Receiver_release (_ptr); - _ptr = IT_p; - return (*this); - } - - Notification_Receiver_var &operator= (const Notification_Receiver_var &IT_s) { - Notification_Receiver_release (_ptr); - _ptr = Notification_Receiver_duplicate (IT_s._ptr); - return (*this); - } - - ~Notification_Receiver_var () { - Notification_Receiver_release (_ptr); - } - - Notification_Receiver* operator-> () { - return _ptr; - } - - operator const Notification_Receiver_vPtr () const { return _ptr;} - operator Notification_Receiver_vPtr& () { return _ptr;} - - protected: - Notification_Receiver *_ptr; - private: - Notification_Receiver_var &operator= (const CORBA::_var &IT_s); - Notification_Receiver_var (const CORBA::_var &IT_s); - Notification_Receiver_var &operator= (const CORBA::_mgr &IT_s); - Notification_Receiver_var &operator= (const CORBA::_SeqElem &IT_s); - Notification_Receiver_var (const CORBA::_mgr &IT_s); - Notification_Receiver_var (const CORBA::_SeqElem &IT_s); -}; - -#endif - - -#ifndef Event_Comm_Notification_ReceiverMgrH -#define Event_Comm_Notification_ReceiverMgrH - -class Notification_Receiver_mgr : public CORBA::_mgr -{ - public: - - Notification_Receiver_mgr () { - _ptr = Notification_Receiver_nil (); - _release = 1; - } - - Notification_Receiver_mgr (const Notification_Receiver_mgr &IT_s) { - _ptr = Notification_Receiver_duplicate (IT_s._ptr); - _release = 1; - } - - Notification_Receiver_mgr &operator= (Notification_Receiver *IT_p) { - if (_ptr && _release) - Notification_Receiver_release (_ptr); - _ptr = IT_p; - _release = 1; - return (*this); - } - - Notification_Receiver_mgr &operator= (const Notification_Receiver_mgr &IT_s) { - if (_ptr && _release) - Notification_Receiver_release (_ptr); - _ptr = Notification_Receiver_duplicate(IT_s._ptr); - _release = 1; - return (*this); - } - - Notification_Receiver_mgr &operator= (const Notification_Receiver_var &IT_s) { - if (_ptr && _release) - Notification_Receiver_release (_ptr); - _ptr = Notification_Receiver_duplicate(IT_s); - _release = 1; - return (*this); - } - - ~Notification_Receiver_mgr () { - if (_release) - Notification_Receiver_release (_ptr); - } - - unsigned char release () { - return _release; - } - - void release (unsigned char rel) { - _release = rel; - } - - operator int () const { - CORBA::Environment env; - CORBA::EnvExcRaiser IT_raise (&env); - return (!(CORBA::is_nil((CORBA::Object*) _ptr, env))); - } - - operator void* () const { - return _ptr; - } - - operator CORBA::Object * () const { - return (CORBA::Object *) _ptr; - } - - operator Notification_Receiver* () const { - return (Notification_Receiver*) _ptr; - } - - Notification_Receiver *_ptr; - - protected: - - unsigned char _release; -}; - -#endif - -#ifndef Event_Comm_Notification_ReceiverSeqElemH -#define Event_Comm_Notification_ReceiverSeqElemH - -class Notification_Receiver_SeqElem : public CORBA::_SeqElem -{ - public: - - Notification_Receiver_SeqElem (Event_Comm::Notification_Receiver_ptr* IT_p, unsigned char rel) { - _ptr = IT_p; - _release = rel; - } - - Notification_Receiver_SeqElem &operator= (Event_Comm::Notification_Receiver_ptr IT_p) { - if (!_ptr) - return (*this); - if (*(_ptr) && _release) - Notification_Receiver_release (*(_ptr)); - *(_ptr) = IT_p; - return (*this); - } - - Notification_Receiver_SeqElem &operator= (const Notification_Receiver_SeqElem &IT_s) { - if (!_ptr|| !IT_s._ptr) - return (*this); - if (*(_ptr) && _release) - Notification_Receiver_release (*(_ptr)); - *(_ptr) = Notification_Receiver_duplicate(*(IT_s._ptr)); - return (*this); - } - - operator Event_Comm::Notification_Receiver_ptr () const -{ - if (!_ptr) - return (Notification_Receiver_nil()); - return (Event_Comm::Notification_Receiver_ptr) (*_ptr); - } - - Notification_Receiver_ptr operator->() const { return *_ptr;} - - protected: - Event_Comm::Notification_Receiver_ptr *_ptr; - unsigned char _release; -}; - -#endif - - -#define TIE_Event_Comm_Notification_Receiver(X) Event_Comm_Notification_Receiver##X - -#define DEF_TIE_Event_Comm_Notification_Receiver(X) \ - class Event_Comm_Notification_Receiver##X : public virtual Event_Comm::Notification_Receiver { \ - X* m_obj; \ - public: \ - \ - Event_Comm_Notification_Receiver##X (X *objp, const char* m="", CORBA::LoaderClass *l=0)\ - : Event_Comm::Notification_Receiver(), CORBA::Object (), m_obj(objp) { \ - m_pptr = new Event_Comm::Notification_Receiver_dispatch \ - (( Event_Comm::Notification_Receiver*)this,(CORBA::Object*)this,m,l,Event_Comm_Notification_Receiver_IR,m_obj); \ - } \ - Event_Comm_Notification_Receiver##X (CORBA::Object *IT_p, const char* IT_m="", void *IT_q=0)\ - : Event_Comm::Notification_Receiver(), CORBA::Object () { \ - m_pptr = new Event_Comm::Notification_Receiver_dispatch \ - (( Event_Comm::Notification_Receiver*)this,(CORBA::Object*)this,IT_m,Event_Comm_Notification_Receiver_IR,IT_p,IT_q); \ - m_obj = (X*)(m_pptr->getImplObj ()); \ - } \ - \ - virtual ~Event_Comm_Notification_Receiver##X () { \ - if (_okToDeleteImpl ()) delete m_obj; } \ - \ - virtual void* _deref () { \ - return m_obj; } \ - \ - virtual void receive_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->receive_notification ( notification,IT_env);\ -}\ - \ - virtual void disconnect (const char * reason, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->disconnect ( reason,IT_env);\ -}\ - \ - }; - - -#define QUALS_Event_Comm_Notification_Receiver \ - virtual void receive_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->receive_notification ( notification,IT_env);\ -}\ - \ - virtual void disconnect (const char * reason, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->disconnect ( reason,IT_env);\ -}\ - - - - -class Notification_ReceiverProxyFactoryClass : public virtual CORBA::ObjectFactoryClass { -public: - Notification_ReceiverProxyFactoryClass (unsigned char IT_p=0) - : CORBA::ProxyFactory (Event_Comm_Notification_Receiver_IR, IT_p) {} - - virtual void* New (char *IT_OR, CORBA::Environment&); - - virtual void* New (ObjectReference *IT_OR, CORBA::Environment&); - - virtual void* New2 (); - - virtual void* IT_castUp (void *IT_p, char* IT_s); - - virtual CORBA::PPTR* pptr (void *IT_p); - - virtual void baseInterfaces (_IDL_SEQUENCE_string&); - - -}; - -static Notification_ReceiverProxyFactoryClass Notification_ReceiverProxyFactory; - - - -#endif - - -#ifndef _Event_Comm_Notifier_defined -#define _Event_Comm_Notifier_defined -class Notifier_dispatch : public virtual CORBA::PPTR { -public: - - Notifier_dispatch (void *IT_p, CORBA::Object* IT_o, const char *IT_m, - CORBA::LoaderClass *IT_l, char *IT_i, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_l,IT_i,IT_im) {} - - - Notifier_dispatch (char *IT_OR, void *IT_p, CORBA::Object *IT_o) - : CORBA::PPTR (IT_OR,IT_p,IT_o) {} - - - Notifier_dispatch () {} - - Notifier_dispatch (ObjectReference *IT_OR, void *IT_p, CORBA::Object *IT_o) - : CORBA::PPTR (IT_OR,IT_p,IT_o) {} - - - Notifier_dispatch (void *IT_p, CORBA::Object *IT_o, const char *IT_m, - char *IT_i, CORBA::Object* IT_ob, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_i,IT_ob,IT_im) {} - - - virtual unsigned char dispatch (CORBA::Request &IT_r, - unsigned char IT_isTarget, void* IT_pp=NULL); - - -}; - -class Notifier; - -#ifndef Event_Comm_NotifierPtr -#define Event_Comm_NotifierPtr - - typedef Notifier* Notifier_ptr; - - typedef Notifier* NotifierRef; - -#endif - - -#ifndef Event_Comm_NotifierForwH -#define Event_Comm_NotifierForwH -static CORBA::ObjectRef Notifier_getBase (void *); -static void Notifier_release (Notifier *, CORBA::Environment &IT_env); -static void Notifier_release (Notifier_ptr); -static Notifier* Notifier_duplicate (Notifier_ptr, CORBA::Environment &IT_env); -static Notifier* Notifier_duplicate (Notifier_ptr ); -static Notifier_ptr Notifier_nil (CORBA::Environment &IT_env); -static Notifier_ptr Notifier_nil (); -#endif -#define Event_Comm_Notifier_IMPL "Event_Comm_Notifier" - - -class Notifier; - - typedef Notifier NotifierProxy; -#define Event_Comm_Notifier_IR "Event_Comm_Notifier" -#define Event_Comm_Notifier_IMPL "Event_Comm_Notifier" - -#ifndef Event_Comm_NotifierPtr -#define Event_Comm_NotifierPtr - - typedef Notifier* Notifier_ptr; - - typedef Notifier* NotifierRef; - -#endif - -class Notifier: public virtual CORBA::Object { -public: - Notifier (char *IT_OR); - Notifier (ObjectReference *IT_OR); - Notifier () : CORBA::Object (1) {} -protected: - Notifier_ptr __duplicate( - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::Object::__duplicate (IT_env); - return this; - } -public: - static Notifier_ptr _duplicate( - Notifier_ptr obj, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::EnvExcRaiser IT_raise (&IT_env); - if (CORBA::is_nil(obj, IT_env)) { - IT_raise.maybeRaise (); - return (obj); - } - Notifier_ptr IT_obj = obj->__duplicate (IT_env); - IT_raise.maybeRaise(); - return IT_obj; - } -public: - static Notifier* _bind (const char* IT_markerServer, const char* host, - const CORBA::Context &IT_c, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notifier* _bind (CORBA::Environment &IT_env); - static Notifier* _bind (const char* IT_markerServer=NULL, const char* host=NULL, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notifier* _narrow (CORBA::Object* , CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notifier_ptr _nil (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::EnvExcRaiser IT_raise (&IT_env); - IT_raise.maybeRaise(); - return (Notifier_ptr) CORBA::OBJECT_NIL;} - virtual void send_disconnect (const char * reason, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); - virtual void send_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); - virtual void subscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); - virtual void unsubscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); -}; - - static const CORBA::TypeCode_ptr _tc_Notifier; - - static const CORBA::TypeCode_ptr _tc_NotifierRef; - -#ifndef Event_Comm_NotifierVarH -#define Event_Comm_NotifierVarH - -#ifndef Event_Comm_NotifiervPtr -#define Event_Comm_NotifiervPtr -typedef Notifier* Notifier_vPtr; -#endif - -class Notifier_var : public CORBA::_var -{ - public: - - Notifier_var () { - _ptr = Notifier_nil (); - } - - Notifier_var (Notifier *IT_p) { - _ptr = IT_p; - } - - Notifier_var (const Notifier_var &IT_s) { - _ptr = Notifier_duplicate (IT_s._ptr); - } - - Notifier_var &operator= (Notifier *IT_p) { - Notifier_release (_ptr); - _ptr = IT_p; - return (*this); - } - - Notifier_var &operator= (const Notifier_var &IT_s) { - Notifier_release (_ptr); - _ptr = Notifier_duplicate (IT_s._ptr); - return (*this); - } - - ~Notifier_var () { - Notifier_release (_ptr); - } - - Notifier* operator-> () { - return _ptr; - } - - operator const Notifier_vPtr () const { return _ptr;} - operator Notifier_vPtr& () { return _ptr;} - - protected: - Notifier *_ptr; - private: - Notifier_var &operator= (const CORBA::_var &IT_s); - Notifier_var (const CORBA::_var &IT_s); - Notifier_var &operator= (const CORBA::_mgr &IT_s); - Notifier_var &operator= (const CORBA::_SeqElem &IT_s); - Notifier_var (const CORBA::_mgr &IT_s); - Notifier_var (const CORBA::_SeqElem &IT_s); -}; - -#endif - - -#ifndef Event_Comm_NotifierMgrH -#define Event_Comm_NotifierMgrH - -class Notifier_mgr : public CORBA::_mgr -{ - public: - - Notifier_mgr () { - _ptr = Notifier_nil (); - _release = 1; - } - - Notifier_mgr (const Notifier_mgr &IT_s) { - _ptr = Notifier_duplicate (IT_s._ptr); - _release = 1; - } - - Notifier_mgr &operator= (Notifier *IT_p) { - if (_ptr && _release) - Notifier_release (_ptr); - _ptr = IT_p; - _release = 1; - return (*this); - } - - Notifier_mgr &operator= (const Notifier_mgr &IT_s) { - if (_ptr && _release) - Notifier_release (_ptr); - _ptr = Notifier_duplicate(IT_s._ptr); - _release = 1; - return (*this); - } - - Notifier_mgr &operator= (const Notifier_var &IT_s) { - if (_ptr && _release) - Notifier_release (_ptr); - _ptr = Notifier_duplicate(IT_s); - _release = 1; - return (*this); - } - - ~Notifier_mgr () { - if (_release) - Notifier_release (_ptr); - } - - unsigned char release () { - return _release; - } - - void release (unsigned char rel) { - _release = rel; - } - - operator int () const { - CORBA::Environment env; - CORBA::EnvExcRaiser IT_raise (&env); - return (!(CORBA::is_nil((CORBA::Object*) _ptr, env))); - } - - operator void* () const { - return _ptr; - } - - operator CORBA::Object * () const { - return (CORBA::Object *) _ptr; - } - - operator Notifier* () const { - return (Notifier*) _ptr; - } - - Notifier *_ptr; - - protected: - - unsigned char _release; -}; - -#endif - -#ifndef Event_Comm_NotifierSeqElemH -#define Event_Comm_NotifierSeqElemH - -class Notifier_SeqElem : public CORBA::_SeqElem -{ - public: - - Notifier_SeqElem (Event_Comm::Notifier_ptr* IT_p, unsigned char rel) { - _ptr = IT_p; - _release = rel; - } - - Notifier_SeqElem &operator= (Event_Comm::Notifier_ptr IT_p) { - if (!_ptr) - return (*this); - if (*(_ptr) && _release) - Notifier_release (*(_ptr)); - *(_ptr) = IT_p; - return (*this); - } - - Notifier_SeqElem &operator= (const Notifier_SeqElem &IT_s) { - if (!_ptr|| !IT_s._ptr) - return (*this); - if (*(_ptr) && _release) - Notifier_release (*(_ptr)); - *(_ptr) = Notifier_duplicate(*(IT_s._ptr)); - return (*this); - } - - operator Event_Comm::Notifier_ptr () const -{ - if (!_ptr) - return (Notifier_nil()); - return (Event_Comm::Notifier_ptr) (*_ptr); - } - - Notifier_ptr operator->() const { return *_ptr;} - - protected: - Event_Comm::Notifier_ptr *_ptr; - unsigned char _release; -}; - -#endif - - -#define TIE_Event_Comm_Notifier(X) Event_Comm_Notifier##X - -#define DEF_TIE_Event_Comm_Notifier(X) \ - class Event_Comm_Notifier##X : public virtual Event_Comm::Notifier { \ - X* m_obj; \ - public: \ - \ - Event_Comm_Notifier##X (X *objp, const char* m="", CORBA::LoaderClass *l=0)\ - : Event_Comm::Notifier(), CORBA::Object (), m_obj(objp) { \ - m_pptr = new Event_Comm::Notifier_dispatch \ - (( Event_Comm::Notifier*)this,(CORBA::Object*)this,m,l,Event_Comm_Notifier_IR,m_obj); \ - } \ - Event_Comm_Notifier##X (CORBA::Object *IT_p, const char* IT_m="", void *IT_q=0)\ - : Event_Comm::Notifier(), CORBA::Object () { \ - m_pptr = new Event_Comm::Notifier_dispatch \ - (( Event_Comm::Notifier*)this,(CORBA::Object*)this,IT_m,Event_Comm_Notifier_IR,IT_p,IT_q); \ - m_obj = (X*)(m_pptr->getImplObj ()); \ - } \ - \ - virtual ~Event_Comm_Notifier##X () { \ - if (_okToDeleteImpl ()) delete m_obj; } \ - \ - virtual void* _deref () { \ - return m_obj; } \ - \ - virtual void send_disconnect (const char * reason, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->send_disconnect ( reason,IT_env);\ -}\ - \ - virtual void send_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->send_notification ( notification,IT_env);\ -}\ - \ - virtual void subscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->subscribe ( notification_receiver, filtering_criteria,IT_env);\ -}\ - \ - virtual void unsubscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->unsubscribe ( notification_receiver, filtering_criteria,IT_env);\ -}\ - \ - }; - - -#define QUALS_Event_Comm_Notifier \ - virtual void send_disconnect (const char * reason, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->send_disconnect ( reason,IT_env);\ -}\ - \ - virtual void send_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->send_notification ( notification,IT_env);\ -}\ - \ - virtual void subscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->subscribe ( notification_receiver, filtering_criteria,IT_env);\ -}\ - \ - virtual void unsubscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->unsubscribe ( notification_receiver, filtering_criteria,IT_env);\ -}\ - - - - -class NotifierProxyFactoryClass : public virtual CORBA::ObjectFactoryClass { -public: - NotifierProxyFactoryClass (unsigned char IT_p=0) - : CORBA::ProxyFactory (Event_Comm_Notifier_IR, IT_p) {} - - virtual void* New (char *IT_OR, CORBA::Environment&); - - virtual void* New (ObjectReference *IT_OR, CORBA::Environment&); - - virtual void* New2 (); - - virtual void* IT_castUp (void *IT_p, char* IT_s); - - virtual CORBA::PPTR* pptr (void *IT_p); - - virtual void baseInterfaces (_IDL_SEQUENCE_string&); - - -}; - -static NotifierProxyFactoryClass NotifierProxyFactory; - - - -#endif - -}; - - -void operator<<= (CORBA::any &IT_a, Event_Comm::Notification_Receiver_ptr IT_t); -CORBA::Boolean operator>>= (const CORBA::any &IT_a, Event_Comm::Notification_Receiver_ptr& IT_t); - - -void operator<<= (CORBA::any &IT_a, Event_Comm::Notifier_ptr IT_t); -CORBA::Boolean operator>>= (const CORBA::any &IT_a, Event_Comm::Notifier_ptr& IT_t); - - -void operator<<= (CORBA::any &IT_a, const Event_Comm::Notification& IT_t); -CORBA::Boolean operator>>= (const CORBA::any &IT_a, Event_Comm::Notification*& IT_t); - - -#endif diff --git a/apps/Orbix-Examples/Event_Comm/include/Event_Comm_i.h b/apps/Orbix-Examples/Event_Comm/include/Event_Comm_i.h deleted file mode 100644 index f8d3a12bb7f..00000000000 --- a/apps/Orbix-Examples/Event_Comm/include/Event_Comm_i.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Event_Comm_i.h -// -// = DESCRIPTION -// Class interface for the implementation of the distributed -// event notification mechanism. -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#if !defined (_EVENT_COMM_I_H) -#define _EVENT_COMM_I_H - -#include "Notification_Receiver_i.h" -#include "Notifier_i.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -// Tie the Notification_Receiver and Notifier implementation classes -// together with the IDL interface. - -DEF_TIE_Event_Comm_Notification_Receiver (Notification_Receiver_i) -DEF_TIE_Event_Comm_Notifier (Notifier_i) - -#endif /* ACE_HAS_ORBIX */ -#endif /* _EVENT_COMM_I_H */ diff --git a/apps/Orbix-Examples/Event_Comm/include/Notification_Receiver_i.h b/apps/Orbix-Examples/Event_Comm/include/Notification_Receiver_i.h deleted file mode 100644 index eb5efa718dd..00000000000 --- a/apps/Orbix-Examples/Event_Comm/include/Notification_Receiver_i.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Notification_Receiver__i.h -// -// = DESCRIPTION -// Class interface for the implementation of the <Notification_Receiver> -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#if !defined (_Notification_Receiver_i_H) -#define _Notification_Receiver_i_H - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) -#include "Event_Comm.hh" - -class Notification_Receiver_i - // = TITLE - // Defines the implementation class for event <Notification_Receivers>. - // - // = DESCRIPTION -{ -public: - Notification_Receiver_i (void); - ~Notification_Receiver_i (void); - - virtual void receive_notification (const Event_Comm::Notification ¬ification, - CORBA::Environment &IT_env); - // Pass the <Notification> to the <Notification_Receiver>. - - virtual void disconnect (const char *reason, - CORBA::Environment &IT_env); - // Disconnect the <Notification_Receiver> from the <Notifier>, - // giving it the <reason>. -}; - -#endif /* ACE_HAS_ORBIX */ -#endif /* _Notification_Receiver_i_H */ diff --git a/apps/Orbix-Examples/Event_Comm/include/Notifier_i.h b/apps/Orbix-Examples/Event_Comm/include/Notifier_i.h deleted file mode 100644 index 5e7ac590f37..00000000000 --- a/apps/Orbix-Examples/Event_Comm/include/Notifier_i.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Notifier_i.h -// -// = DESCRIPTION -// Class interface for the implementation of the <Notifier> -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#if !defined (_Notifier_i_H) -#define _Notifier_i_H - -#include "ace/Map_Manager.h" -#include "ace/Synch.h" -#include "ace/SString.h" -#include "Event_Comm.hh" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -// Forward reference. -class Notification_Receiver_Entry; - -class Notifier_i - // = TITLE - // Defines the implementation class for event <Notifiers>. - // - // = DESCRIPTION -{ -public: - enum - { - DEFAULT_SIZE = 1024 // Default max number of Event_Comm::Notification_Receivers. - }; - - Notifier_i (size_t size_hint = Notifier_i::DEFAULT_SIZE); - // Initialize a Notifier_i object with the specified size hint. - - void send_disconnect (const char *reason, - CORBA::Environment &IT_env); - // Disconnect all the receivers, giving them the <reason>. - - void send_notification (const Event_Comm::Notification ¬ification, - CORBA::Environment &IT_env); - // Send the <Notification> to all the consumers who - // have subscribed and who match the filtering criteria. - - void subscribe (Event_Comm::Notification_Receiver *notification_receiver, - const char *filtering_criteria, - CORBA::Environment &IT_env); - // Subscribe the <Notification_Receiver> to receive events that - // match <filtering_criteria> applied by the <Notifier>. - - void unsubscribe (Event_Comm::Notification_Receiver *notification_receiver, - const char *filtering_criteria, - CORBA::Environment &IT_env); - // Unsubscribe the <Notification_Receiver>. - -private: - // The following implementation should be replaced - // by a standard container class from STL... - - typedef ACE_Map_Manager <ACE_SString, Notification_Receiver_Entry *, ACE_Null_Mutex> MAP_MANAGER; - typedef ACE_Map_Iterator <ACE_SString, Notification_Receiver_Entry *, ACE_Null_Mutex> MAP_ITERATOR; - typedef ACE_Map_Entry <ACE_SString, Notification_Receiver_Entry *> MAP_ENTRY; - - MAP_MANAGER map_; - // Table that maps a <Event_Comm::Notification_Receiver *> to a <Notification_Receiver_Entry *>. -}; - -#endif /* ACE_HAS_ORBIX */ -#endif /* _Notifier_i_H */ diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm.hh b/apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm.hh deleted file mode 100644 index 85ad256da2a..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm.hh +++ /dev/null @@ -1,887 +0,0 @@ - -#ifndef Event_Comm_hh -#define Event_Comm_hh - -#include <CORBA.h> - -#include <string.h> - -class Event_Comm { -public: - -#ifndef Event_Comm_Notification_defined -#define Event_Comm_Notification_defined - - struct Notification { - CORBA::String_mgr tag_; - - void encodeOp (CORBA::Request &IT_r) const; - void decodeOp (CORBA::Request &IT_r); - void decodeInOutOp (CORBA::Request &IT_r); - static void* IT_anySupport (CORBA::Request &IT_r, - void *&, void*, const CORBA::Flags&); - static const void *IT_fn; - }; - - static const CORBA::TypeCode_ptr _tc_Notification; - -#ifndef Event_Comm_NotificationVarH -#define Event_Comm_NotificationVarH - -#ifndef Event_Comm_NotificationvPtr -#define Event_Comm_NotificationvPtr -typedef Notification* Notification_vPtr; -#endif - -class Notification_var : public CORBA::_var -{ - public: - - Notification_var () { - _ptr = NULL; - } - - Notification_var (Notification *IT_p) { - _ptr = IT_p; - } - - Notification_var (const Notification_var &IT_s) { - if (!IT_s._ptr) { - _ptr = IT_s._ptr; - return; - } - _ptr = new Notification (*(IT_s._ptr)); - } - - Notification_var &operator= (Notification *IT_p) { - if (_ptr != IT_p) { - delete _ptr; - } - _ptr = IT_p; - return (*this); - } - - Notification_var &operator= (const Notification_var &IT_s) { - if (_ptr != IT_s._ptr) { - delete _ptr; - } - _ptr = new Notification (*(IT_s._ptr)); - return (*this); - } - - ~Notification_var () { - delete _ptr; - } - - Notification* operator-> () { - return _ptr; - } - - operator const Notification_vPtr () const { return _ptr;} - operator Notification_vPtr& () { return _ptr;} - operator Notification& () const { return * _ptr;} - - protected: - Notification *_ptr; - private: - Notification_var &operator= (const CORBA::_var &IT_s); - Notification_var (const CORBA::_var &IT_s); -}; - -#endif - - -#endif - - -#ifndef _Event_Comm_Notification_Receiver_defined -#define _Event_Comm_Notification_Receiver_defined -class Notification_Receiver_dispatch : public virtual CORBA::PPTR { -public: - - Notification_Receiver_dispatch (void *IT_p, CORBA::Object* IT_o, const char *IT_m, - CORBA::LoaderClass *IT_l, char *IT_i, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_l,IT_i,IT_im) {} - - - Notification_Receiver_dispatch (char *IT_OR, void *IT_p, CORBA::Object *IT_o) - : CORBA::PPTR (IT_OR,IT_p,IT_o) {} - - - Notification_Receiver_dispatch () {} - - Notification_Receiver_dispatch (ObjectReference *IT_OR, void *IT_p, CORBA::Object *IT_o) - : CORBA::PPTR (IT_OR,IT_p,IT_o) {} - - - Notification_Receiver_dispatch (void *IT_p, CORBA::Object *IT_o, const char *IT_m, - char *IT_i, CORBA::Object* IT_ob, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_i,IT_ob,IT_im) {} - - - virtual unsigned char dispatch (CORBA::Request &IT_r, - unsigned char IT_isTarget, void* IT_pp=NULL); - - -}; - -class Notification_Receiver; - -#ifndef Event_Comm_Notification_ReceiverPtr -#define Event_Comm_Notification_ReceiverPtr - - typedef Notification_Receiver* Notification_Receiver_ptr; - - typedef Notification_Receiver* Notification_ReceiverRef; - -#endif - - -#ifndef Event_Comm_Notification_ReceiverForwH -#define Event_Comm_Notification_ReceiverForwH -static CORBA::ObjectRef Notification_Receiver_getBase (void *); -static void Notification_Receiver_release (Notification_Receiver *, CORBA::Environment &IT_env); -static void Notification_Receiver_release (Notification_Receiver_ptr); -static Notification_Receiver* Notification_Receiver_duplicate (Notification_Receiver_ptr, CORBA::Environment &IT_env); -static Notification_Receiver* Notification_Receiver_duplicate (Notification_Receiver_ptr ); -static Notification_Receiver_ptr Notification_Receiver_nil (CORBA::Environment &IT_env); -static Notification_Receiver_ptr Notification_Receiver_nil (); -#endif -#define Event_Comm_Notification_Receiver_IMPL "Event_Comm_Notification_Receiver" - - -class Notification_Receiver; - - typedef Notification_Receiver Notification_ReceiverProxy; -#define Event_Comm_Notification_Receiver_IR "Event_Comm_Notification_Receiver" -#define Event_Comm_Notification_Receiver_IMPL "Event_Comm_Notification_Receiver" - -#ifndef Event_Comm_Notification_ReceiverPtr -#define Event_Comm_Notification_ReceiverPtr - - typedef Notification_Receiver* Notification_Receiver_ptr; - - typedef Notification_Receiver* Notification_ReceiverRef; - -#endif - -class Notification_Receiver: public virtual CORBA::Object { -public: - Notification_Receiver (char *IT_OR); - Notification_Receiver (ObjectReference *IT_OR); - Notification_Receiver () : CORBA::Object (1) {} -protected: - Notification_Receiver_ptr __duplicate( - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::Object::__duplicate (IT_env); - return this; - } -public: - static Notification_Receiver_ptr _duplicate( - Notification_Receiver_ptr obj, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::EnvExcRaiser IT_raise (&IT_env); - if (CORBA::is_nil(obj, IT_env)) { - IT_raise.maybeRaise (); - return (obj); - } - Notification_Receiver_ptr IT_obj = obj->__duplicate (IT_env); - IT_raise.maybeRaise(); - return IT_obj; - } -public: - static Notification_Receiver* _bind (const char* IT_markerServer, const char* host, - const CORBA::Context &IT_c, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notification_Receiver* _bind (CORBA::Environment &IT_env); - static Notification_Receiver* _bind (const char* IT_markerServer=NULL, const char* host=NULL, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notification_Receiver* _narrow (CORBA::Object* , CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notification_Receiver_ptr _nil (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::EnvExcRaiser IT_raise (&IT_env); - IT_raise.maybeRaise(); - return (Notification_Receiver_ptr) CORBA::OBJECT_NIL;} - virtual void receive_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); - virtual void disconnect (const char * reason, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); -}; - - static const CORBA::TypeCode_ptr _tc_Notification_Receiver; - - static const CORBA::TypeCode_ptr _tc_Notification_ReceiverRef; - -#ifndef Event_Comm_Notification_ReceiverVarH -#define Event_Comm_Notification_ReceiverVarH - -#ifndef Event_Comm_Notification_ReceivervPtr -#define Event_Comm_Notification_ReceivervPtr -typedef Notification_Receiver* Notification_Receiver_vPtr; -#endif - -class Notification_Receiver_var : public CORBA::_var -{ - public: - - Notification_Receiver_var () { - _ptr = Notification_Receiver_nil (); - } - - Notification_Receiver_var (Notification_Receiver *IT_p) { - _ptr = IT_p; - } - - Notification_Receiver_var (const Notification_Receiver_var &IT_s) { - _ptr = Notification_Receiver_duplicate (IT_s._ptr); - } - - Notification_Receiver_var &operator= (Notification_Receiver *IT_p) { - Notification_Receiver_release (_ptr); - _ptr = IT_p; - return (*this); - } - - Notification_Receiver_var &operator= (const Notification_Receiver_var &IT_s) { - Notification_Receiver_release (_ptr); - _ptr = Notification_Receiver_duplicate (IT_s._ptr); - return (*this); - } - - ~Notification_Receiver_var () { - Notification_Receiver_release (_ptr); - } - - Notification_Receiver* operator-> () { - return _ptr; - } - - operator const Notification_Receiver_vPtr () const { return _ptr;} - operator Notification_Receiver_vPtr& () { return _ptr;} - - protected: - Notification_Receiver *_ptr; - private: - Notification_Receiver_var &operator= (const CORBA::_var &IT_s); - Notification_Receiver_var (const CORBA::_var &IT_s); - Notification_Receiver_var &operator= (const CORBA::_mgr &IT_s); - Notification_Receiver_var &operator= (const CORBA::_SeqElem &IT_s); - Notification_Receiver_var (const CORBA::_mgr &IT_s); - Notification_Receiver_var (const CORBA::_SeqElem &IT_s); -}; - -#endif - - -#ifndef Event_Comm_Notification_ReceiverMgrH -#define Event_Comm_Notification_ReceiverMgrH - -class Notification_Receiver_mgr : public CORBA::_mgr -{ - public: - - Notification_Receiver_mgr () { - _ptr = Notification_Receiver_nil (); - _release = 1; - } - - Notification_Receiver_mgr (const Notification_Receiver_mgr &IT_s) { - _ptr = Notification_Receiver_duplicate (IT_s._ptr); - _release = 1; - } - - Notification_Receiver_mgr &operator= (Notification_Receiver *IT_p) { - if (_ptr && _release) - Notification_Receiver_release (_ptr); - _ptr = IT_p; - _release = 1; - return (*this); - } - - Notification_Receiver_mgr &operator= (const Notification_Receiver_mgr &IT_s) { - if (_ptr && _release) - Notification_Receiver_release (_ptr); - _ptr = Notification_Receiver_duplicate(IT_s._ptr); - _release = 1; - return (*this); - } - - Notification_Receiver_mgr &operator= (const Notification_Receiver_var &IT_s) { - if (_ptr && _release) - Notification_Receiver_release (_ptr); - _ptr = Notification_Receiver_duplicate(IT_s); - _release = 1; - return (*this); - } - - ~Notification_Receiver_mgr () { - if (_release) - Notification_Receiver_release (_ptr); - } - - unsigned char release () { - return _release; - } - - void release (unsigned char rel) { - _release = rel; - } - - operator int () const { - CORBA::Environment env; - CORBA::EnvExcRaiser IT_raise (&env); - return (!(CORBA::is_nil((CORBA::Object*) _ptr, env))); - } - - operator void* () const { - return _ptr; - } - - operator CORBA::Object * () const { - return (CORBA::Object *) _ptr; - } - - operator Notification_Receiver* () const { - return (Notification_Receiver*) _ptr; - } - - Notification_Receiver *_ptr; - - protected: - - unsigned char _release; -}; - -#endif - -#ifndef Event_Comm_Notification_ReceiverSeqElemH -#define Event_Comm_Notification_ReceiverSeqElemH - -class Notification_Receiver_SeqElem : public CORBA::_SeqElem -{ - public: - - Notification_Receiver_SeqElem (Event_Comm::Notification_Receiver_ptr* IT_p, unsigned char rel) { - _ptr = IT_p; - _release = rel; - } - - Notification_Receiver_SeqElem &operator= (Event_Comm::Notification_Receiver_ptr IT_p) { - if (!_ptr) - return (*this); - if (*(_ptr) && _release) - Notification_Receiver_release (*(_ptr)); - *(_ptr) = IT_p; - return (*this); - } - - Notification_Receiver_SeqElem &operator= (const Notification_Receiver_SeqElem &IT_s) { - if (!_ptr|| !IT_s._ptr) - return (*this); - if (*(_ptr) && _release) - Notification_Receiver_release (*(_ptr)); - *(_ptr) = Notification_Receiver_duplicate(*(IT_s._ptr)); - return (*this); - } - - operator Event_Comm::Notification_Receiver_ptr () const -{ - if (!_ptr) - return (Notification_Receiver_nil()); - return (Event_Comm::Notification_Receiver_ptr) (*_ptr); - } - - Notification_Receiver_ptr operator->() const { return *_ptr;} - - protected: - Event_Comm::Notification_Receiver_ptr *_ptr; - unsigned char _release; -}; - -#endif - - -#define TIE_Event_Comm_Notification_Receiver(X) Event_Comm_Notification_Receiver##X - -#define DEF_TIE_Event_Comm_Notification_Receiver(X) \ - class Event_Comm_Notification_Receiver##X : public virtual Event_Comm::Notification_Receiver { \ - X* m_obj; \ - public: \ - \ - Event_Comm_Notification_Receiver##X (X *objp, const char* m="", CORBA::LoaderClass *l=0)\ - : Event_Comm::Notification_Receiver(), CORBA::Object (), m_obj(objp) { \ - m_pptr = new Event_Comm::Notification_Receiver_dispatch \ - (( Event_Comm::Notification_Receiver*)this,(CORBA::Object*)this,m,l,Event_Comm_Notification_Receiver_IR,m_obj); \ - } \ - Event_Comm_Notification_Receiver##X (CORBA::Object *IT_p, const char* IT_m="", void *IT_q=0)\ - : Event_Comm::Notification_Receiver(), CORBA::Object () { \ - m_pptr = new Event_Comm::Notification_Receiver_dispatch \ - (( Event_Comm::Notification_Receiver*)this,(CORBA::Object*)this,IT_m,Event_Comm_Notification_Receiver_IR,IT_p,IT_q); \ - m_obj = (X*)(m_pptr->getImplObj ()); \ - } \ - \ - virtual ~Event_Comm_Notification_Receiver##X () { \ - if (_okToDeleteImpl ()) delete m_obj; } \ - \ - virtual void* _deref () { \ - return m_obj; } \ - \ - virtual void receive_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->receive_notification ( notification,IT_env);\ -}\ - \ - virtual void disconnect (const char * reason, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->disconnect ( reason,IT_env);\ -}\ - \ - }; - - -#define QUALS_Event_Comm_Notification_Receiver \ - virtual void receive_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->receive_notification ( notification,IT_env);\ -}\ - \ - virtual void disconnect (const char * reason, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->disconnect ( reason,IT_env);\ -}\ - - - - -class Notification_ReceiverProxyFactoryClass : public virtual CORBA::ObjectFactoryClass { -public: - Notification_ReceiverProxyFactoryClass (unsigned char IT_p=0) - : CORBA::ProxyFactory (Event_Comm_Notification_Receiver_IR, IT_p) {} - - virtual void* New (char *IT_OR, CORBA::Environment&); - - virtual void* New (ObjectReference *IT_OR, CORBA::Environment&); - - virtual void* New2 (); - - virtual void* IT_castUp (void *IT_p, char* IT_s); - - virtual CORBA::PPTR* pptr (void *IT_p); - - virtual void baseInterfaces (_IDL_SEQUENCE_string&); - - -}; - -static Notification_ReceiverProxyFactoryClass Notification_ReceiverProxyFactory; - - - -#endif - - -#ifndef _Event_Comm_Notifier_defined -#define _Event_Comm_Notifier_defined -class Notifier_dispatch : public virtual CORBA::PPTR { -public: - - Notifier_dispatch (void *IT_p, CORBA::Object* IT_o, const char *IT_m, - CORBA::LoaderClass *IT_l, char *IT_i, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_l,IT_i,IT_im) {} - - - Notifier_dispatch (char *IT_OR, void *IT_p, CORBA::Object *IT_o) - : CORBA::PPTR (IT_OR,IT_p,IT_o) {} - - - Notifier_dispatch () {} - - Notifier_dispatch (ObjectReference *IT_OR, void *IT_p, CORBA::Object *IT_o) - : CORBA::PPTR (IT_OR,IT_p,IT_o) {} - - - Notifier_dispatch (void *IT_p, CORBA::Object *IT_o, const char *IT_m, - char *IT_i, CORBA::Object* IT_ob, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_i,IT_ob,IT_im) {} - - - virtual unsigned char dispatch (CORBA::Request &IT_r, - unsigned char IT_isTarget, void* IT_pp=NULL); - - -}; - -class Notifier; - -#ifndef Event_Comm_NotifierPtr -#define Event_Comm_NotifierPtr - - typedef Notifier* Notifier_ptr; - - typedef Notifier* NotifierRef; - -#endif - - -#ifndef Event_Comm_NotifierForwH -#define Event_Comm_NotifierForwH -static CORBA::ObjectRef Notifier_getBase (void *); -static void Notifier_release (Notifier *, CORBA::Environment &IT_env); -static void Notifier_release (Notifier_ptr); -static Notifier* Notifier_duplicate (Notifier_ptr, CORBA::Environment &IT_env); -static Notifier* Notifier_duplicate (Notifier_ptr ); -static Notifier_ptr Notifier_nil (CORBA::Environment &IT_env); -static Notifier_ptr Notifier_nil (); -#endif -#define Event_Comm_Notifier_IMPL "Event_Comm_Notifier" - - -class Notifier; - - typedef Notifier NotifierProxy; -#define Event_Comm_Notifier_IR "Event_Comm_Notifier" -#define Event_Comm_Notifier_IMPL "Event_Comm_Notifier" - -#ifndef Event_Comm_NotifierPtr -#define Event_Comm_NotifierPtr - - typedef Notifier* Notifier_ptr; - - typedef Notifier* NotifierRef; - -#endif - -class Notifier: public virtual CORBA::Object { -public: - Notifier (char *IT_OR); - Notifier (ObjectReference *IT_OR); - Notifier () : CORBA::Object (1) {} -protected: - Notifier_ptr __duplicate( - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::Object::__duplicate (IT_env); - return this; - } -public: - static Notifier_ptr _duplicate( - Notifier_ptr obj, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::EnvExcRaiser IT_raise (&IT_env); - if (CORBA::is_nil(obj, IT_env)) { - IT_raise.maybeRaise (); - return (obj); - } - Notifier_ptr IT_obj = obj->__duplicate (IT_env); - IT_raise.maybeRaise(); - return IT_obj; - } -public: - static Notifier* _bind (const char* IT_markerServer, const char* host, - const CORBA::Context &IT_c, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notifier* _bind (CORBA::Environment &IT_env); - static Notifier* _bind (const char* IT_markerServer=NULL, const char* host=NULL, - CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notifier* _narrow (CORBA::Object* , CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()); - static Notifier_ptr _nil (CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) { - CORBA::EnvExcRaiser IT_raise (&IT_env); - IT_raise.maybeRaise(); - return (Notifier_ptr) CORBA::OBJECT_NIL;} - virtual void send_disconnect (const char * reason, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); - virtual void send_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); - virtual void subscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); - virtual void unsubscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env=CORBA::IT_chooseDefaultEnv ()) throw (CORBA::SystemException); -}; - - static const CORBA::TypeCode_ptr _tc_Notifier; - - static const CORBA::TypeCode_ptr _tc_NotifierRef; - -#ifndef Event_Comm_NotifierVarH -#define Event_Comm_NotifierVarH - -#ifndef Event_Comm_NotifiervPtr -#define Event_Comm_NotifiervPtr -typedef Notifier* Notifier_vPtr; -#endif - -class Notifier_var : public CORBA::_var -{ - public: - - Notifier_var () { - _ptr = Notifier_nil (); - } - - Notifier_var (Notifier *IT_p) { - _ptr = IT_p; - } - - Notifier_var (const Notifier_var &IT_s) { - _ptr = Notifier_duplicate (IT_s._ptr); - } - - Notifier_var &operator= (Notifier *IT_p) { - Notifier_release (_ptr); - _ptr = IT_p; - return (*this); - } - - Notifier_var &operator= (const Notifier_var &IT_s) { - Notifier_release (_ptr); - _ptr = Notifier_duplicate (IT_s._ptr); - return (*this); - } - - ~Notifier_var () { - Notifier_release (_ptr); - } - - Notifier* operator-> () { - return _ptr; - } - - operator const Notifier_vPtr () const { return _ptr;} - operator Notifier_vPtr& () { return _ptr;} - - protected: - Notifier *_ptr; - private: - Notifier_var &operator= (const CORBA::_var &IT_s); - Notifier_var (const CORBA::_var &IT_s); - Notifier_var &operator= (const CORBA::_mgr &IT_s); - Notifier_var &operator= (const CORBA::_SeqElem &IT_s); - Notifier_var (const CORBA::_mgr &IT_s); - Notifier_var (const CORBA::_SeqElem &IT_s); -}; - -#endif - - -#ifndef Event_Comm_NotifierMgrH -#define Event_Comm_NotifierMgrH - -class Notifier_mgr : public CORBA::_mgr -{ - public: - - Notifier_mgr () { - _ptr = Notifier_nil (); - _release = 1; - } - - Notifier_mgr (const Notifier_mgr &IT_s) { - _ptr = Notifier_duplicate (IT_s._ptr); - _release = 1; - } - - Notifier_mgr &operator= (Notifier *IT_p) { - if (_ptr && _release) - Notifier_release (_ptr); - _ptr = IT_p; - _release = 1; - return (*this); - } - - Notifier_mgr &operator= (const Notifier_mgr &IT_s) { - if (_ptr && _release) - Notifier_release (_ptr); - _ptr = Notifier_duplicate(IT_s._ptr); - _release = 1; - return (*this); - } - - Notifier_mgr &operator= (const Notifier_var &IT_s) { - if (_ptr && _release) - Notifier_release (_ptr); - _ptr = Notifier_duplicate(IT_s); - _release = 1; - return (*this); - } - - ~Notifier_mgr () { - if (_release) - Notifier_release (_ptr); - } - - unsigned char release () { - return _release; - } - - void release (unsigned char rel) { - _release = rel; - } - - operator int () const { - CORBA::Environment env; - CORBA::EnvExcRaiser IT_raise (&env); - return (!(CORBA::is_nil((CORBA::Object*) _ptr, env))); - } - - operator void* () const { - return _ptr; - } - - operator CORBA::Object * () const { - return (CORBA::Object *) _ptr; - } - - operator Notifier* () const { - return (Notifier*) _ptr; - } - - Notifier *_ptr; - - protected: - - unsigned char _release; -}; - -#endif - -#ifndef Event_Comm_NotifierSeqElemH -#define Event_Comm_NotifierSeqElemH - -class Notifier_SeqElem : public CORBA::_SeqElem -{ - public: - - Notifier_SeqElem (Event_Comm::Notifier_ptr* IT_p, unsigned char rel) { - _ptr = IT_p; - _release = rel; - } - - Notifier_SeqElem &operator= (Event_Comm::Notifier_ptr IT_p) { - if (!_ptr) - return (*this); - if (*(_ptr) && _release) - Notifier_release (*(_ptr)); - *(_ptr) = IT_p; - return (*this); - } - - Notifier_SeqElem &operator= (const Notifier_SeqElem &IT_s) { - if (!_ptr|| !IT_s._ptr) - return (*this); - if (*(_ptr) && _release) - Notifier_release (*(_ptr)); - *(_ptr) = Notifier_duplicate(*(IT_s._ptr)); - return (*this); - } - - operator Event_Comm::Notifier_ptr () const -{ - if (!_ptr) - return (Notifier_nil()); - return (Event_Comm::Notifier_ptr) (*_ptr); - } - - Notifier_ptr operator->() const { return *_ptr;} - - protected: - Event_Comm::Notifier_ptr *_ptr; - unsigned char _release; -}; - -#endif - - -#define TIE_Event_Comm_Notifier(X) Event_Comm_Notifier##X - -#define DEF_TIE_Event_Comm_Notifier(X) \ - class Event_Comm_Notifier##X : public virtual Event_Comm::Notifier { \ - X* m_obj; \ - public: \ - \ - Event_Comm_Notifier##X (X *objp, const char* m="", CORBA::LoaderClass *l=0)\ - : Event_Comm::Notifier(), CORBA::Object (), m_obj(objp) { \ - m_pptr = new Event_Comm::Notifier_dispatch \ - (( Event_Comm::Notifier*)this,(CORBA::Object*)this,m,l,Event_Comm_Notifier_IR,m_obj); \ - } \ - Event_Comm_Notifier##X (CORBA::Object *IT_p, const char* IT_m="", void *IT_q=0)\ - : Event_Comm::Notifier(), CORBA::Object () { \ - m_pptr = new Event_Comm::Notifier_dispatch \ - (( Event_Comm::Notifier*)this,(CORBA::Object*)this,IT_m,Event_Comm_Notifier_IR,IT_p,IT_q); \ - m_obj = (X*)(m_pptr->getImplObj ()); \ - } \ - \ - virtual ~Event_Comm_Notifier##X () { \ - if (_okToDeleteImpl ()) delete m_obj; } \ - \ - virtual void* _deref () { \ - return m_obj; } \ - \ - virtual void send_disconnect (const char * reason, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->send_disconnect ( reason,IT_env);\ -}\ - \ - virtual void send_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->send_notification ( notification,IT_env);\ -}\ - \ - virtual void subscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->subscribe ( notification_receiver, filtering_criteria,IT_env);\ -}\ - \ - virtual void unsubscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->unsubscribe ( notification_receiver, filtering_criteria,IT_env);\ -}\ - \ - }; - - -#define QUALS_Event_Comm_Notifier \ - virtual void send_disconnect (const char * reason, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->send_disconnect ( reason,IT_env);\ -}\ - \ - virtual void send_notification (const Event_Comm::Notification& notification, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->send_notification ( notification,IT_env);\ -}\ - \ - virtual void subscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->subscribe ( notification_receiver, filtering_criteria,IT_env);\ -}\ - \ - virtual void unsubscribe (Event_Comm::Notification_Receiver_ptr notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env) throw (CORBA::SystemException){\ - m_obj->unsubscribe ( notification_receiver, filtering_criteria,IT_env);\ -}\ - - - - -class NotifierProxyFactoryClass : public virtual CORBA::ObjectFactoryClass { -public: - NotifierProxyFactoryClass (unsigned char IT_p=0) - : CORBA::ProxyFactory (Event_Comm_Notifier_IR, IT_p) {} - - virtual void* New (char *IT_OR, CORBA::Environment&); - - virtual void* New (ObjectReference *IT_OR, CORBA::Environment&); - - virtual void* New2 (); - - virtual void* IT_castUp (void *IT_p, char* IT_s); - - virtual CORBA::PPTR* pptr (void *IT_p); - - virtual void baseInterfaces (_IDL_SEQUENCE_string&); - - -}; - -static NotifierProxyFactoryClass NotifierProxyFactory; - - - -#endif - -}; - - -void operator<<= (CORBA::any &IT_a, Event_Comm::Notification_Receiver_ptr IT_t); -CORBA::Boolean operator>>= (const CORBA::any &IT_a, Event_Comm::Notification_Receiver_ptr& IT_t); - - -void operator<<= (CORBA::any &IT_a, Event_Comm::Notifier_ptr IT_t); -CORBA::Boolean operator>>= (const CORBA::any &IT_a, Event_Comm::Notifier_ptr& IT_t); - - -void operator<<= (CORBA::any &IT_a, const Event_Comm::Notification& IT_t); -CORBA::Boolean operator>>= (const CORBA::any &IT_a, Event_Comm::Notification*& IT_t); - - -#endif diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm.idl b/apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm.idl deleted file mode 100644 index 26890129d70..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm.idl +++ /dev/null @@ -1,92 +0,0 @@ -/* -*- C++ -*- */ -// @(#)Event_Comm.idl 1.1 10/18/96 - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Event_Comm.idl -// -// = DESCRIPTION -// The CORBA IDL module for distributed event notification. -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#ifndef _EVENT_COMM_IDL -#define _EVENT_COMM_IDL - -module Event_Comm - // = TITLE - // The CORBA IDL module for distributed event notification. - // - // = DESCRIPTION -{ - struct Notification - // = TITLE - // Defines the interface for an event <Notification>. - // - // = This is the type passed by the Notifier to the Notification_Receiver. - // Since it contains an <any>, it can hold any values. Naturally, - // the consumer must understand how to interpret this! - { - string tag_; - // Tag for the notification. - - // any value_; - // A notification can contain anything. - -// Object object_ref_; - // Object reference for callbacks. - }; - - interface Notification_Receiver - // = TITLE - // Defines the interface for a <Notification_Receiver> of events. - // Note that all operations are <oneway> to avoid blocking. - // - // = DESCRIPTION - { - oneway void receive_notification (in Notification notification); - // Inform the <Notification_Receiver> that <event> has occurred. - - oneway void disconnect (in string reason); - // Disconnect the <Notification_Receiver> from the <Notifier>, - // giving it the <reason>. - }; - - interface Notifier - // = TITLE - // Defines the interface for a <Notifier> of events. - // - // = DESCRIPTION - { - oneway void send_disconnect (in string reason); - // Disconnect all the receivers, giving them the <reason>. - - oneway void send_notification (in Notification notification); - // Send the <Notification> to all the consumers who - // have subscribed and who match the filtering criteria. - - oneway void subscribe (in Notification_Receiver notification_receiver, - in string filtering_criteria); - // Subscribe the <Notification_Receiver> to receive events that - // match the regular expresssion <filtering_criteria> applied by - // the <Notifier>. If <filtering_criteria> is "" then all events - // are matched. - - oneway void unsubscribe (in Notification_Receiver notification_receiver, - in string filtering_criteria); - // Unsubscribe the <Notification_Receiver> that matches the - // filtering criteria. If <filtering_criteria> is "" then - // all <Notification_Receivers> with the matching object reference - // are removed. - }; -}; - -#endif /* _EVENT_COMM_IDL */ diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Event_CommC.cpp b/apps/Orbix-Examples/Event_Comm/libsrc/Event_CommC.cpp deleted file mode 100644 index b7e328c556c..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Event_CommC.cpp +++ /dev/null @@ -1,351 +0,0 @@ - -// $Id$ - -#include "Event_Comm.hh" - - -#ifndef Event_Comm_Notification_Ops -#define Event_Comm_Notification_Ops - -void Event_Comm::Notification:: encodeOp (CORBA::Request &IT_r) const { - IT_r.encodeStringOp (tag_); -} - -void Event_Comm::Notification:: decodeOp (CORBA::Request &IT_r) { - IT_r.decodeStringOp(tag_); -} - -void Event_Comm::Notification:: decodeInOutOp (CORBA::Request &IT_r) { - IT_r.decodeInOutStrOp(tag_, 0); -} - -void* Event_Comm::Notification:: IT_anySupport (CORBA::Request &IT_r, - void *& IT_v, void *IT_to, const CORBA::Flags& IT_f) { - Event_Comm::Notification* IT_l = (Event_Comm::Notification*)IT_v; - - if (IT_f.isSetAll (CORBA::ARG_INOUT)) { - if (!IT_l) - IT_l = new Event_Comm::Notification(); - IT_l -> decodeInOutOp (IT_r); - IT_v = IT_l; - } - else if (IT_f.isSet (CORBA::ARG_IN)) { - IT_l -> encodeOp (IT_r); - } - else if (IT_f.isSet (CORBA::ARG_OUT)) { - if (!IT_l) - IT_l = new Event_Comm::Notification(); - IT_l -> decodeOp (IT_r); - IT_v = IT_l; - } - else if (IT_f.isSet (CORBA::_ANY_ASSIGN)) { - Event_Comm::Notification*IT_s = IT_to ? (Event_Comm::Notification*)IT_to : new Event_Comm::Notification; - *IT_s = *IT_l; return IT_s; - } - else if (IT_f.isSet (CORBA::_ANY_DELETE)) { - if (IT_to) IT_l->Event_Comm::Notification::~Notification(); - else delete IT_l; - return NULL; - } - else if (IT_f.isSet (CORBA::_ANY_SIZEOF)) { - return (void*) (sizeof (Event_Comm::Notification)); - } - else if (IT_f.isNil ()) { - if (!IT_l) - IT_l = new Event_Comm::Notification(); - IT_l -> decodeOp (IT_r); - IT_v = IT_l; - } - return NULL; -} - -const void *Event_Comm::Notification:: IT_fn = -CORBA::anyTable.record ("Event_Comm::Notification", &Event_Comm::Notification:: IT_anySupport); - -Event_Comm::Notification &Event_Comm::Notification:: operator= (const Event_Comm::IONANC_Notification& IT_p) { - this->operator= (*(Event_Comm::Notification*) &IT_p); - return (*this); -} - -Event_Comm::Notification:: operator Event_Comm::IONANC_Notification () { - Event_Comm::IONANC_Notification tmp; - memset (&tmp, 0, sizeof(tmp)); - ((Event_Comm::Notification *) &tmp)->operator= (*this); - return tmp; -} - -Event_Comm::Notification:: operator const Event_Comm::IONANC_Notification () const { - Event_Comm::IONANC_Notification tmp; - memset (&tmp, 0, sizeof(tmp)); - ((Event_Comm::Notification *) &tmp)->operator= (*this); - return tmp; -} - -Event_Comm::Notification::~Notification () { - if (tag_) delete [] tag_; -} - -Event_Comm::Notification:: Notification (const Event_Comm::Notification &IT_s) - { - if (IT_s.tag_) { - tag_=new char [strlen(IT_s.tag_)+1]; - strcpy (tag_, IT_s.tag_); - } - else { - tag_ = NULL; - } -} - -Event_Comm::Notification:: Notification () { - tag_ = NULL; -} - -Event_Comm::Notification &Event_Comm::Notification:: operator= (const Event_Comm::Notification& IT_s) { - if (this == &IT_s) return *this; - if (tag_) delete [] tag_; - if (IT_s.tag_) { - tag_=new char [strlen(IT_s.tag_)+1]; - strcpy (tag_, IT_s.tag_); - } - else { - tag_ = NULL; - } - return *this; -} - -Event_Comm::IONANC_Notification:: operator Event_Comm::Notification () { - return (*((Event_Comm::Notification *) this)); -} - -Event_Comm::IONANC_Notification:: operator const Event_Comm::Notification () const { - return (*((const Event_Comm::Notification *) this)); -} - - -#endif -Event_Comm::Notification_Receiver::Notification_Receiver (char *IT_OR) { - m_pptr = new Notification_Receiver_dispatch (IT_OR, this,(CORBA::Object*)this); -} - -#ifndef Event_Comm_Notification_ReceiverForwC -#define Event_Comm_Notification_ReceiverForwC -CORBA::ObjectRef Event_Comm::Notification_Receiver_getBase(void *IT_p){ - return (Event_Comm::Notification_Receiver*)IT_p;} - -void Event_Comm::Notification_Receiver_release (void *IT_p, CORBA::Environment &IT_env) { - ((Event_Comm::Notification_Receiver*)IT_p)->_release(IT_env);} - -Event_Comm::Notification_Receiver* Event_Comm::Notification_Receiver_duplicate (void *IT_p, CORBA::Environment &IT_env) { - return ((Event_Comm::Notification_Receiver*)IT_p)->_duplicate(IT_env); } -#endif - - - -Event_Comm::Notification_Receiver* Event_Comm::Notification_Receiver:: _bind (const char* IT_markerServer, const char* host, - const CORBA::Context &IT_c, - CORBA::Environment &IT_env) { - Notification_Receiver*IT_p = - (Notification_Receiver*)CORBA::Factory.New (IT_markerServer, IT_env, IT_c, host, - Event_Comm_Notification_Receiver_IMPL, Event_Comm_Notification_Receiver_IR); - return IT_p ? IT_p->_duplicate () : NULL; } - - - -Event_Comm::Notification_Receiver* Event_Comm::Notification_Receiver:: _bind (CORBA::Environment &IT_env) { - return _bind (NULL,NULL,CORBA::Context(), IT_env); } - - -Event_Comm::Notification_Receiver* Event_Comm::Notification_Receiver:: _bind (const char* IT_markerServer, const char* host, - CORBA::Environment &IT_env) { - return _bind (IT_markerServer, host, CORBA::Context (), IT_env); } -Event_Comm::Notification_Receiver* Event_Comm::Notification_Receiver::_narrow (CORBA::Object* IT_obj, CORBA::Environment &IT_env) { - Event_Comm::Notification_Receiver* IT_p = (Event_Comm::Notification_Receiver*)CORBA::Object::_castDown (IT_obj, Event_Comm_Notification_Receiver_IR, IT_env); - return IT_p ? IT_p->_duplicate(IT_env) : NULL; - } - -void* Event_Comm::Notification_ReceiverProxyFactoryClass::New (char *IT_OR, CORBA::Environment&) { - return new Notification_Receiver(IT_OR);} - -void* Event_Comm::Notification_ReceiverProxyFactoryClass::New2 () { - return new Notification_Receiver();} - -void* Event_Comm::Notification_ReceiverProxyFactoryClass::IT_castUp (void *IT_p, char* IT_s) { - void *IT_l; - if (!CORBA::_interfaceCmp (IT_s,Event_Comm_Notification_Receiver_IR)) - return IT_p; - else if (IT_l=CORBA::ObjectFactoryClass::IT_castUp((CORBA::Object*)((Event_Comm::Notification_Receiver*)IT_p),IT_s)) - return IT_l; - else return NULL; - } - - -CORBA::PPTR* Event_Comm::Notification_ReceiverProxyFactoryClass::pptr (void *IT_p) { - return ((Event_Comm::Notification_Receiver*)IT_p)->_pptr ();} - -void Event_Comm::Notification_ReceiverProxyFactoryClass::baseInterfaces (_IDL_SEQUENCE_string& seq) { - add (seq, Event_Comm_Notification_Receiver_IR); - CORBA::ObjectFactoryClass::baseInterfaces (seq); -} - - void Event_Comm::Notification_Receiver:: receive_notification(const Event_Comm::Notification& notification, CORBA::Environment &IT_env) { - - if (IT_env || m_isNull) return ; - CORBA::Request IT_r (this, "receive_notification",IT_env,1,1); - if (!IT_r.isException (IT_env)) { - notification.encodeOp (IT_r); - } - - IT_r.invoke (CORBA::Flags(CORBA::INV_NO_RESPONSE), IT_env); - } - - void Event_Comm::Notification_Receiver:: disconnect(const char * reason, CORBA::Environment &IT_env) { - - if (IT_env || m_isNull) return ; - CORBA::Request IT_r (this, "disconnect",IT_env,1,1); - if (!IT_r.isException (IT_env)) { - IT_r.encodeStringOp (reason); - } - - IT_r.invoke (CORBA::Flags(CORBA::INV_NO_RESPONSE), IT_env); - } - - -Event_Comm::Notification_ReceiverProxyFactoryClass Event_Comm::Notification_ReceiverProxyFactory(1); - - -#ifndef Event_Comm_Notification_Receiver_dispatch_impl - -unsigned char Event_Comm::Notification_Receiver_dispatch::dispatch (CORBA::Request &IT_r, - unsigned char, void *) { - IT_r.makeRuntimeException1 ("Event_Comm::Notification_Receiver"); - return 0; -} - -#endif - -Event_Comm::Notifier::Notifier (char *IT_OR) { - m_pptr = new Notifier_dispatch (IT_OR, this,(CORBA::Object*)this); -} - -#ifndef Event_Comm_NotifierForwC -#define Event_Comm_NotifierForwC -CORBA::ObjectRef Event_Comm::Notifier_getBase(void *IT_p){ - return (Event_Comm::Notifier*)IT_p;} - -void Event_Comm::Notifier_release (void *IT_p, CORBA::Environment &IT_env) { - ((Event_Comm::Notifier*)IT_p)->_release(IT_env);} - -Event_Comm::Notifier* Event_Comm::Notifier_duplicate (void *IT_p, CORBA::Environment &IT_env) { - return ((Event_Comm::Notifier*)IT_p)->_duplicate(IT_env); } -#endif - - - -Event_Comm::Notifier* Event_Comm::Notifier:: _bind (const char* IT_markerServer, const char* host, - const CORBA::Context &IT_c, - CORBA::Environment &IT_env) { - Notifier*IT_p = - (Notifier*)CORBA::Factory.New (IT_markerServer, IT_env, IT_c, host, - Event_Comm_Notifier_IMPL, Event_Comm_Notifier_IR); - return IT_p ? IT_p->_duplicate () : NULL; } - - - -Event_Comm::Notifier* Event_Comm::Notifier:: _bind (CORBA::Environment &IT_env) { - return _bind (NULL,NULL,CORBA::Context(), IT_env); } - - -Event_Comm::Notifier* Event_Comm::Notifier:: _bind (const char* IT_markerServer, const char* host, - CORBA::Environment &IT_env) { - return _bind (IT_markerServer, host, CORBA::Context (), IT_env); } -Event_Comm::Notifier* Event_Comm::Notifier::_narrow (CORBA::Object* IT_obj, CORBA::Environment &IT_env) { - Event_Comm::Notifier* IT_p = (Event_Comm::Notifier*)CORBA::Object::_castDown (IT_obj, Event_Comm_Notifier_IR, IT_env); - return IT_p ? IT_p->_duplicate(IT_env) : NULL; - } - -void* Event_Comm::NotifierProxyFactoryClass::New (char *IT_OR, CORBA::Environment&) { - return new Notifier(IT_OR);} - -void* Event_Comm::NotifierProxyFactoryClass::New2 () { - return new Notifier();} - -void* Event_Comm::NotifierProxyFactoryClass::IT_castUp (void *IT_p, char* IT_s) { - void *IT_l; - if (!CORBA::_interfaceCmp (IT_s,Event_Comm_Notifier_IR)) - return IT_p; - else if (IT_l=CORBA::ObjectFactoryClass::IT_castUp((CORBA::Object*)((Event_Comm::Notifier*)IT_p),IT_s)) - return IT_l; - else return NULL; - } - - -CORBA::PPTR* Event_Comm::NotifierProxyFactoryClass::pptr (void *IT_p) { - return ((Event_Comm::Notifier*)IT_p)->_pptr ();} - -void Event_Comm::NotifierProxyFactoryClass::baseInterfaces (_IDL_SEQUENCE_string& seq) { - add (seq, Event_Comm_Notifier_IR); - CORBA::ObjectFactoryClass::baseInterfaces (seq); -} - - void Event_Comm::Notifier:: send_disconnect(const char * reason, CORBA::Environment &IT_env) { - - if (IT_env || m_isNull) return ; - CORBA::Request IT_r (this, "send_disconnect",IT_env,1,1); - if (!IT_r.isException (IT_env)) { - IT_r.encodeStringOp (reason); - } - - IT_r.invoke (CORBA::Flags(CORBA::INV_NO_RESPONSE), IT_env); - } - - void Event_Comm::Notifier:: send_notification(const Event_Comm::Notification& notification, CORBA::Environment &IT_env) { - - if (IT_env || m_isNull) return ; - CORBA::Request IT_r (this, "send_notification",IT_env,1,1); - if (!IT_r.isException (IT_env)) { - notification.encodeOp (IT_r); - } - - IT_r.invoke (CORBA::Flags(CORBA::INV_NO_RESPONSE), IT_env); - } - - void Event_Comm::Notifier:: subscribe(Event_Comm::Notification_Receiver* notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env) { - - if (IT_env || m_isNull) return ; - CORBA::Request IT_r (this, "subscribe",IT_env,1,1); - if (!IT_r.isException (IT_env)) { - IT_r << (CORBA::Object*)notification_receiver; - - IT_r.encodeStringOp (filtering_criteria); - } - - IT_r.invoke (CORBA::Flags(CORBA::INV_NO_RESPONSE), IT_env); - } - - void Event_Comm::Notifier:: unsubscribe(Event_Comm::Notification_Receiver* notification_receiver, const char * filtering_criteria, CORBA::Environment &IT_env) { - - if (IT_env || m_isNull) return ; - CORBA::Request IT_r (this, "unsubscribe",IT_env,1,1); - if (!IT_r.isException (IT_env)) { - IT_r << (CORBA::Object*)notification_receiver; - - IT_r.encodeStringOp (filtering_criteria); - } - - IT_r.invoke (CORBA::Flags(CORBA::INV_NO_RESPONSE), IT_env); - } - - -Event_Comm::NotifierProxyFactoryClass Event_Comm::NotifierProxyFactory(1); - - -#ifndef Event_Comm_Notifier_dispatch_impl - -unsigned char Event_Comm::Notifier_dispatch::dispatch (CORBA::Request &IT_r, - unsigned char, void *) { - IT_r.makeRuntimeException1 ("Event_Comm::Notifier"); - return 0; -} - -#endif - diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Event_CommS.cpp b/apps/Orbix-Examples/Event_Comm/libsrc/Event_CommS.cpp deleted file mode 100644 index 7609370a2e6..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Event_CommS.cpp +++ /dev/null @@ -1,166 +0,0 @@ - -// $Id$ - -#include "Event_Comm.hh" - - -#define Event_Comm_Notification_Receiver_dispatch_impl - -unsigned char Event_Comm::Notification_Receiver_dispatch::dispatch (CORBA::Request &IT_r, - unsigned char IT_isTarget, void *IT_pp) { - if (!IT_pp) - IT_pp = m_obj; - const char *IT_s = IT_r.getOperation (); - if (!strcmp(IT_s,"receive_notification")) { - CORBA::Environment IT_env (IT_r); - CORBA::Filter* IT_f = CORBA::Orbix.getFilter (); - if (!IT_r.tcAssert ("\ -Ro~receive_notification~+notification{R~Event_Comm::Notification~tag_{0}},>{v},O{}\ -")) - return 1; - Event_Comm::Notification notification; - notification.decodeOp (IT_r); - - if (IT_f && !IT_r.isException (IT_env)) - IT_f->inRequestPostM (IT_r, IT_env); - if (!IT_r.isException (IT_env)) - ((Event_Comm::Notification_Receiver*)IT_pp)->receive_notification ( notification, IT_env); - - IT_r.replyNoResults (CORBA::Flags(CORBA::INV_NO_RESPONSE),IT_env); - return 1; - } - - else if (!strcmp(IT_s,"disconnect")) { - CORBA::Environment IT_env (IT_r); - CORBA::Filter* IT_f = CORBA::Orbix.getFilter (); - if (!IT_r.tcAssert ("\ -Ro~disconnect~+reason{0},>{v},O{}\ -")) - return 1; - char * reason; - IT_r.decodeStringOp(reason); - - if (IT_f && !IT_r.isException (IT_env)) - IT_f->inRequestPostM (IT_r, IT_env); - if (!IT_r.isException (IT_env)) - ((Event_Comm::Notification_Receiver*)IT_pp)->disconnect ( reason, IT_env); - - delete [] reason; - IT_r.replyNoResults (CORBA::Flags(CORBA::INV_NO_RESPONSE),IT_env); - return 1; - } - - else if (IT_isTarget) - IT_r.makeRuntimeException2 (); - - return 0; -} - -#define Event_Comm_Notifier_dispatch_impl - -unsigned char Event_Comm::Notifier_dispatch::dispatch (CORBA::Request &IT_r, - unsigned char IT_isTarget, void *IT_pp) { - if (!IT_pp) - IT_pp = m_obj; - const char *IT_s = IT_r.getOperation (); - if (!strcmp(IT_s,"send_disconnect")) { - CORBA::Environment IT_env (IT_r); - CORBA::Filter* IT_f = CORBA::Orbix.getFilter (); - if (!IT_r.tcAssert ("\ -Ro~send_disconnect~+reason{0},>{v},O{}\ -")) - return 1; - char * reason; - IT_r.decodeStringOp(reason); - - if (IT_f && !IT_r.isException (IT_env)) - IT_f->inRequestPostM (IT_r, IT_env); - if (!IT_r.isException (IT_env)) - ((Event_Comm::Notifier*)IT_pp)->send_disconnect ( reason, IT_env); - - delete [] reason; - IT_r.replyNoResults (CORBA::Flags(CORBA::INV_NO_RESPONSE),IT_env); - return 1; - } - - else if (!strcmp(IT_s,"send_notification")) { - CORBA::Environment IT_env (IT_r); - CORBA::Filter* IT_f = CORBA::Orbix.getFilter (); - if (!IT_r.tcAssert ("\ -Ro~send_notification~+notification{R~Event_Comm::Notification~tag_{0}},>{v},O{}\ -")) - return 1; - Event_Comm::Notification notification; - notification.decodeOp (IT_r); - - if (IT_f && !IT_r.isException (IT_env)) - IT_f->inRequestPostM (IT_r, IT_env); - if (!IT_r.isException (IT_env)) - ((Event_Comm::Notifier*)IT_pp)->send_notification ( notification, IT_env); - - IT_r.replyNoResults (CORBA::Flags(CORBA::INV_NO_RESPONSE),IT_env); - return 1; - } - - else if (!strcmp(IT_s,"subscribe")) { - CORBA::Environment IT_env (IT_r); - CORBA::Filter* IT_f = CORBA::Orbix.getFilter (); - if (!IT_r.tcAssert ("\ -Ro~subscribe~+notification_receiver{O~Event_Comm::Notification_Receiver},+filtering_criteria{0},>{v},O{}\ -")) - return 1; - Event_Comm::Notification_Receiver* notification_receiver; - notification_receiver = (Event_Comm::Notification_Receiver*) IT_r.decodeObjRef (Event_Comm_Notification_Receiver_IR); - if (notification_receiver) notification_receiver->_duplicate (); - - char * filtering_criteria; - IT_r.decodeStringOp(filtering_criteria); - - if (IT_f && !IT_r.isException (IT_env)) - IT_f->inRequestPostM (IT_r, IT_env); - if (!IT_r.isException (IT_env)) - ((Event_Comm::Notifier*)IT_pp)->subscribe ( notification_receiver, filtering_criteria, IT_env); - - if (notification_receiver) notification_receiver->_release (); - - delete [] filtering_criteria; - IT_r.replyNoResults (CORBA::Flags(CORBA::INV_NO_RESPONSE),IT_env); - - return 1; - } - - else if (!strcmp(IT_s,"unsubscribe")) { - CORBA::Environment IT_env (IT_r); - CORBA::Filter* IT_f = CORBA::Orbix.getFilter (); - if (!IT_r.tcAssert ("\ -Ro~unsubscribe~+notification_receiver{O~Event_Comm::Notification_Receiver},+filtering_criteria{0},>{v},O{}\ -")) - return 1; - Event_Comm::Notification_Receiver* notification_receiver; - notification_receiver = (Event_Comm::Notification_Receiver*) IT_r.decodeObjRef (Event_Comm_Notification_Receiver_IR); - if (notification_receiver) notification_receiver->_duplicate (); - - char * filtering_criteria; - IT_r.decodeStringOp(filtering_criteria); - - if (IT_f && !IT_r.isException (IT_env)) - IT_f->inRequestPostM (IT_r, IT_env); - if (!IT_r.isException (IT_env)) - ((Event_Comm::Notifier*)IT_pp)->unsubscribe ( notification_receiver, filtering_criteria, IT_env); - - if (notification_receiver) notification_receiver->_release (); - - delete [] filtering_criteria; - IT_r.replyNoResults (CORBA::Flags(CORBA::INV_NO_RESPONSE),IT_env); - - return 1; - } - - else if (IT_isTarget) - IT_r.makeRuntimeException2 (); - - return 0; -} - -#include "Event_CommC.cpp" - diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm_i.h b/apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm_i.h deleted file mode 100644 index 430af42ae63..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Event_Comm_i.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Event_Comm_i.h -// -// = DESCRIPTION -// Class interface for the implementation of the distributed -// event notification mechanism. -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#if !defined (_EVENT_COMM_I_H) -#define _EVENT_COMM_I_H - -#include "Notification_Receiver_i.h" -#include "Notifier_i.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) -#define nil 0 - -// Tie the Notification_Receiver and Notifier implementation classes -// together with the IDL interface. - -DEF_TIE_Event_Comm_Notification_Receiver (Notification_Receiver_i) -DEF_TIE_Event_Comm_Notifier (Notifier_i) - -#endif /* ACE_HAS_ORBIX */ -#endif /* _EVENT_COMM_I_H */ diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Makefile b/apps/Orbix-Examples/Event_Comm/libsrc/Makefile deleted file mode 100644 index 227e718d44f..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Makefile +++ /dev/null @@ -1,113 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the Event Communications library -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -LIB = libEvent_Comm.a -SHLIB = libEvent_Comm.so - -FILES = Event_CommS \ - Event_CommC \ - Notifier_i \ - Notification_Receiver_i - -LSRC = $(addsuffix .cpp,$(FILES)) -LOBJ = $(addsuffix .o,$(FILES)) -SHOBJ = $(addsuffix .so,$(FILES)) - -VLDLIBS = $(LDLIBS:%=%$(VAR)) - -BUILD = $(VLIB) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Orbix related macros and target settings. -#---------------------------------------------------------------------------- - -ORBIX_BINDIR = $(ORBIX_ROOT)/bin -ORBIX_LIBDIR = $(ORBIX_ROOT)/lib -ORBIX_INCDIR = $(ORBIX_ROOT)/include - -CPPFLAGS += -DEXCEPTIONS -I$(ORBIX_INCDIR) -DWANT_ORBIX_FDS -LDFLAGS += -L$(ORBIX_LIBDIR) -R $(ORBIX_LIBDIR) - -IDLFLAGS = -A -s S.cpp -c C.cpp - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- - -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -Event_CommS.o: Event_CommS.cpp Event_Comm.hh Event_CommC.cpp -Event_CommC.o: Event_CommC.cpp Event_Comm.hh -Notifier_i.o: Notifier_i.cpp \ - ${ACE_ROOT}ace/Log_Msg.h \ - ${ACE_ROOT}ace/Log_Record.h \ - ${ACE_ROOT}ace/sysincludes.h \ - ${ACE_ROOT}ace/config.h \ - ${ACE_ROOT}ace/Log_Priority.h \ - ${ACE_ROOT}ace/Log_Record.i \ - ${ACE_ROOT}ace/Log_Msg.i \ - ${ACE_ROOT}ace/Thread_Specific.h \ - ${ACE_ROOT}ace/Synch.h \ - ${ACE_ROOT}ace/Time_Value.h \ - ${ACE_ROOT}ace/Synch_T.h \ - ${ACE_ROOT}ace/Thread_Specific.i \ - Notification_Receiver_i.h Notifier_i.h \ - ${ACE_ROOT}ace/Map_Manager.h \ - ${ACE_ROOT}ace/SString.h \ - ${ACE_ROOT}ace/SString.i \ - Event_Comm.hh -Notification_Receiver_i.o: Notification_Receiver_i.cpp \ - ${ACE_ROOT}ace/Log_Msg.h \ - ${ACE_ROOT}ace/Log_Record.h \ - ${ACE_ROOT}ace/sysincludes.h \ - ${ACE_ROOT}ace/config.h \ - ${ACE_ROOT}ace/Log_Priority.h \ - ${ACE_ROOT}ace/Log_Record.i \ - ${ACE_ROOT}ace/Log_Msg.i \ - ${ACE_ROOT}ace/Thread_Specific.h \ - ${ACE_ROOT}ace/Synch.h \ - ${ACE_ROOT}ace/Time_Value.h \ - ${ACE_ROOT}ace/Synch_T.h \ - ${ACE_ROOT}ace/Thread_Specific.i \ - ${ACE_ROOT}ace/Service_Config.h \ - ${ACE_ROOT}ace/Reactor.h \ - ${ACE_ROOT}ace/Handle_Set.h \ - ${ACE_ROOT}ace/Handle_Set.i \ - ${ACE_ROOT}ace/Timer_Queue.h \ - ${ACE_ROOT}ace/Event_Handler.h \ - ${ACE_ROOT}ace/Timer_Queue.i \ - ${ACE_ROOT}ace/Signal.h \ - ${ACE_ROOT}ace/Set.h \ - ${ACE_ROOT}ace/Thread.h \ - ${ACE_ROOT}ace/Token.h \ - ${ACE_ROOT}ace/Reactor.i \ - ${ACE_ROOT}ace/Service_Object.h \ - ${ACE_ROOT}ace/Shared_Object.h \ - ${ACE_ROOT}ace/Service_Types.h \ - ${ACE_ROOT}ace/Thread_Manager.h \ - Notification_Receiver_i.h - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Notification.idl b/apps/Orbix-Examples/Event_Comm/libsrc/Notification.idl deleted file mode 100644 index ecfd5adb8e0..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Notification.idl +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- C++ -*- */ -// @(#)Notification.idl 1.1 10/18/96 - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Notification.idl -// -// = DESCRIPTION -// This is the CORBA IDL interface for the Event Communication <Notification>. -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#ifndef _NOTIFICATION_IDL -#define _NOTIFICATION_IDL - -struct Notification - // = TITLE - // Defines the interface for an event <Notification>. - // - // = This is the type passed by the Notifier to the Notification_Receiver. - // Since it contains an <any>, it can hold any values. Naturally, - // the consumer must understand how to interpret this! -{ - string tag_; - // Tag for the notification. - -// any value_; - // A notification can contain anything. - - Object object_ref_; - // Object reference for callbacks. -}; - -#endif /* _NOTIFICATION_IDL */ diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver.idl b/apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver.idl deleted file mode 100644 index 222f18782f7..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver.idl +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- C++ -*- */ -// @(#)Notification_Receiver.idl 1.1 10/18/96 - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Notification_Receiver.idl -// -// = DESCRIPTION -// The CORBA IDL interface for the Event Communication -// <Notification_Receiver> component. -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#include "Notification.idl" - -#ifndef _Notification_Receiver_iDL -#define _Notification_Receiver_iDL - -interface Notification_Receiver - // = TITLE - // Defines the interface for a <Notification_Receiver> of events. - // Note that all operations are <oneway> to avoid blocking. - // - // = DESCRIPTION -{ - oneway void receive_notification (in Notification notification); - // Inform the <Notification_Receiver> that <event> has occurred. - - oneway void disconnect (in string reason); - // Disconnect the <Notification_Receiver> from the <Notifier>, - // giving it the <reason>. -}; - -#endif /* _Notification_Receiver_iDL */ diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver_i.cpp b/apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver_i.cpp deleted file mode 100644 index 938ac8eb7c8..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver_i.cpp +++ /dev/null @@ -1,39 +0,0 @@ - -// $Id$ - -#include "ace/Service_Config.h" -#include "Notification_Receiver_i.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -Notification_Receiver_i::Notification_Receiver_i (void) -{ -} - -Notification_Receiver_i::~Notification_Receiver_i (void) -{ -} - -// Inform the <Event_Comm::Notification_Receiver> that <event> has occurred. - -void -Notification_Receiver_i::receive_notification - (const Event_Comm::Notification ¬ification, - CORBA::Environment &IT_env) -{ - const char *tmpstr = notification.tag_; - - ACE_DEBUG ((LM_DEBUG, "**** got notification = %s\n", tmpstr)); -} - -// Disconnect the <Event_Comm::Notification_Receiver> from the <Event_Comm::Notifier>. - -void -Notification_Receiver_i::disconnect (const char *reason, - CORBA::Environment &IT_env) -{ - ACE_DEBUG ((LM_DEBUG, "**** got disconnected due to %s\n", reason)); - ACE_Reactor::end_event_loop(); -} - -#endif /* ACE_HAS_ORBIX */ diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver_i.h b/apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver_i.h deleted file mode 100644 index eb5efa718dd..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Notification_Receiver_i.h +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Notification_Receiver__i.h -// -// = DESCRIPTION -// Class interface for the implementation of the <Notification_Receiver> -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#if !defined (_Notification_Receiver_i_H) -#define _Notification_Receiver_i_H - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) -#include "Event_Comm.hh" - -class Notification_Receiver_i - // = TITLE - // Defines the implementation class for event <Notification_Receivers>. - // - // = DESCRIPTION -{ -public: - Notification_Receiver_i (void); - ~Notification_Receiver_i (void); - - virtual void receive_notification (const Event_Comm::Notification ¬ification, - CORBA::Environment &IT_env); - // Pass the <Notification> to the <Notification_Receiver>. - - virtual void disconnect (const char *reason, - CORBA::Environment &IT_env); - // Disconnect the <Notification_Receiver> from the <Notifier>, - // giving it the <reason>. -}; - -#endif /* ACE_HAS_ORBIX */ -#endif /* _Notification_Receiver_i_H */ diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Notifier.idl b/apps/Orbix-Examples/Event_Comm/libsrc/Notifier.idl deleted file mode 100644 index 75e738e0627..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Notifier.idl +++ /dev/null @@ -1,49 +0,0 @@ -/* -*- C++ -*- */ -// @(#)Notifier.idl 1.1 10/18/96 - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Notifier.idl -// -// = DESCRIPTION -// This is the CORBA IDL interface for the Event Communication <Notifier>. -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#ifndef _Notifier_iDL -#define _Notifier_iDL - -#include "Notification.idl" -#include "Notification_Receiver.idl" - -interface Notifier - // = TITLE - // Defines the interface for a <Notifier> of events. - // - // = DESCRIPTION -{ - oneway void send_disconnect (in string reason); - // Disconnect all the receivers, giving them the <reason>. - - oneway void send_notification (in Notification notification); - // Send the <Notification> to all the consumers who - // have subscribed and who match the filtering criteria. - - oneway void subscribe (in Notification_Receiver notification_receiver, - in string filtering_criteria); - // Subscribe the <Notification_Receiver> to receive events that - // match <filtering_criteria> applied by the <Notifier>. - - oneway void unsubscribe (in Notification_Receiver notification_receiver); - // Unsubscribe the <Notification_Receiver>. -}; - -#endif /* _Notifier_iDL */ diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Notifier_i.cpp b/apps/Orbix-Examples/Event_Comm/libsrc/Notifier_i.cpp deleted file mode 100644 index 59d311c50d7..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Notifier_i.cpp +++ /dev/null @@ -1,324 +0,0 @@ - -// $Id$ - -#include "Notification_Receiver_i.h" -#include "Notifier_i.h" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -class Notification_Receiver_Entry - // = TITLE - // Keeps track of context information associated with - // a <Event_Comm::Notification_Receiver> entry. - // - // = DESCRIPTION - // -{ -public: - Notification_Receiver_Entry (Event_Comm::Notification_Receiver *notification_receiver, - const char *filtering_criteria); - ~Notification_Receiver_Entry (void); - - // = Set/get filtering criteria. - void criteria (const char *criteria); - const char *criteria (void); - - // = Set/get Event_Comm::Notification_Receiver object reference. - Event_Comm::Notification_Receiver *receiver (void); - void receiver (Event_Comm::Notification_Receiver *); - - // = Set/get the compiled regular expression buffer. - const char *regexp (void); - void regexp (char *); - -private: - const char *filtering_criteria_; - // String containing the filtering criteria. - - char *compiled_regexp_; - // Compiled representation of the regular expression (see - // regexpr(3g)). - - Event_Comm::Notification_Receiver *receiver_; - // Object reference for the Event_Comm::Notification_Receiver. -}; - -// = Set/get filtering criteria. - -void -Notification_Receiver_Entry::criteria (const char *criteria) -{ - ACE_OS::free (ACE_MALLOC_T (this->filtering_criteria_)); - this->filtering_criteria_ = ACE_OS::strdup (criteria); -} - -const char * -Notification_Receiver_Entry::criteria (void) -{ - return this->filtering_criteria_; -} - -// = Set/get Event_Comm::Notification_Receiver object reference. - -Event_Comm::Notification_Receiver * -Notification_Receiver_Entry::receiver (void) -{ - return this->receiver_; -} - -void -Notification_Receiver_Entry::receiver (Event_Comm::Notification_Receiver *receiver) -{ - this->receiver_ = receiver; -} - -const char * -Notification_Receiver_Entry::regexp (void) -{ - return this->compiled_regexp_; -} - -void -Notification_Receiver_Entry::regexp (char *regexp) -{ - ACE_OS::free (ACE_MALLOC_T (this->compiled_regexp_)); - this->compiled_regexp_ = regexp; -} - -Notification_Receiver_Entry::Notification_Receiver_Entry (Event_Comm::Notification_Receiver *receiver, - const char *filtering_criteria) - : receiver_ (receiver), - filtering_criteria_ (0), - compiled_regexp_ (0) -{ - char *compile_buffer = 0; - - this->criteria (filtering_criteria); - ACE_ASSERT (this->criteria ()); - - // Check for wildcard case first. - if (ACE_OS::strcmp (filtering_criteria, "") == 0) - compile_buffer = ACE_OS::strdup (""); - else // Compile the regular expression (the 0's cause ACE_OS::compile to allocate space). - compile_buffer = ACE_OS::compile (filtering_criteria, 0, 0); - - // Should throw an exception here! - ACE_ASSERT (compile_buffer != 0); - - this->regexp (compile_buffer); - ACE_ASSERT (this->regexp ()); - - // Increment the reference count since we are keeping a copy of - // this... - this->receiver_->_duplicate (this->receiver_); -} - -Notification_Receiver_Entry::~Notification_Receiver_Entry (void) -{ - ACE_OS::free (this->filtering_criteria_); - ACE_OS::free (this->compiled_regexp_); - // Decrement the object reference count. - CORBA::release (this->receiver_); -} - -Notifier_i::Notifier_i (size_t size) - : map_ (size) -{ -} - -// Add a new receiver to the table, being careful to check for -// duplicate entries. A receiver is considered a duplicate under -// the following circumstances: -// 1. It has the same marker name and the same filtering criteria -// 2. It has the same marker name and its filtering criteria is "" (the wild card). - -void -Notifier_i::subscribe (Event_Comm::Notification_Receiver *receiver_ref, - const char *filtering_criteria, - CORBA::Environment &IT_env) -{ - ACE_DEBUG ((LM_DEBUG, - "in Notifier_i::subscribe for %s with filtering criteria \"%s\"\n", - receiver_ref->_marker (), filtering_criteria)); - ACE_SString key (receiver_ref->_marker ()); - MAP_ITERATOR mi (this->map_); - - // Try to locate an entry using its marker name (which should be - // unique across the system). If we don't find the entry, or if the - // filtering criteria is different that is good news since we - // currently don't allow duplicates... In particular, if @@ Should - // duplicates be allowed? - - for (MAP_ENTRY *me = 0; mi.next (me) != 0; mi.advance ()) - { - Notification_Receiver_Entry *nr_entry = me->int_id_; - - // Check for a duplicate entry. - if (key == me->ext_id_ - && (ACE_OS::strcmp (filtering_criteria, "") == 0 - || ACE_OS::strcmp (filtering_criteria, nr_entry->criteria ()) == 0)) - { - // Inform the caller that the - // Event_Comm::Notification_Receiver * is already being - // used. - - errno = EADDRINUSE; - ACE_ERROR ((LM_ERROR, - "duplicate entry for receiver %s with criteria \"%s\"", - receiver_ref->_marker (), filtering_criteria)); - // Raise exception here??? - return; - } - } - - // If we get this far then we didn't find a duplicate, so add the - // new entry! - Notification_Receiver_Entry *nr_entry = - new Notification_Receiver_Entry (receiver_ref, filtering_criteria); - - if (nr_entry == 0) - { - errno = ENOMEM; - ACE_ERROR ((LM_ERROR, "%p\n", "new failed")); - // Raise exception here... - } - // Try to add new <Notification_Receiver_Entry> to the map. - else if (this->map_.bind (key, nr_entry) == -1) - { - // Prevent memory leaks. - delete nr_entry; - // Raise exception here... - ACE_ERROR ((LM_ERROR, "%p\n", "bind failed")); - } -} - -// Remove a receiver from the table. - -void -Notifier_i::unsubscribe (Event_Comm::Notification_Receiver *receiver_ref, - const char *filtering_criteria, - CORBA::Environment &IT_env) -{ - ACE_DEBUG ((LM_DEBUG, "in Notifier_i::unsubscribe for %s\n", - receiver_ref->_marker ())); - Notification_Receiver_Entry *nr_entry = 0; - ACE_SString key; - MAP_ITERATOR mi (this->map_); - int found = 0; - - // Don't make a copy since we are deleting... - key.rep ((char *) receiver_ref->_marker ()); - - // Locate <Notification_Receiver_Entry> and free up resources. @@ - // Note, we don't properly handle deallocation of KEYS! - - for (MAP_ENTRY *me = 0; mi.next (me) != 0; mi.advance ()) - { - if (key == me->ext_id_ - && (ACE_OS::strcmp (filtering_criteria, "") == 0 - || ACE_OS::strcmp (filtering_criteria, nr_entry->criteria ()) == 0)) - { - ACE_DEBUG ((LM_DEBUG, "removed entry %s with criteria \"%s\"\n", - receiver_ref->_marker (), filtering_criteria)); - found = 1; - // @@ This is a hack, we need a better approach! - if (this->map_.unbind (key, nr_entry) == -1) - ACE_ERROR ((LM_ERROR, "unbind failed for %s\n", - receiver_ref->_marker ())); - else - delete nr_entry; - } - } - - if (found == 0) - ACE_ERROR ((LM_ERROR, "entry %s with criteria \"%s\" not found\n", - receiver_ref->_marker (), filtering_criteria)); -} - -// Disconnect all the receivers, giving them the <reason>. - -void -Notifier_i::send_disconnect (const char *reason, - CORBA::Environment &IT_env) -{ - ACE_DEBUG ((LM_DEBUG, "in Notifier_i::send_disconnect = %s\n", reason)); - - MAP_ITERATOR mi (this->map_); - int count = 0; - - // Notify all the receivers, taking into account the filtering criteria. - - for (MAP_ENTRY *me = 0; mi.next (me) != 0; mi.advance ()) - { - Event_Comm::Notification_Receiver *receiver_ref = me->int_id_->receiver (); - ACE_ASSERT (receiver_ref->_marker () != 0); - ACE_DEBUG ((LM_DEBUG, "disconnecting client %s\n", receiver_ref->_marker ())); - TRY { - receiver_ref->disconnect (reason, IT_X); - } - CATCHANY { - cerr << "Unexpected exception " << IT_X << endl; - } - ENDTRY; - delete me->int_id_; - delete me->ext_id_.rep (); - count++; - } - - this->map_.close (); - if (count == 1) - ACE_DEBUG ((LM_DEBUG, "there was 1 receiver\n")); - else - ACE_DEBUG ((LM_DEBUG, "there were %d receivers\n", count)); -} - -// Notify all receivers whose filtering criteria match the event. - -void -Notifier_i::send_notification (const Event_Comm::Notification ¬ification, - CORBA::Environment &IT_env) -{ - ACE_DEBUG ((LM_DEBUG, "in Notifier_i::send_notification = %s\n", - notification.tag_)); - MAP_ITERATOR mi (this->map_); - int count = 0; - - // Notify all the receivers. - // @@ Later on we need to consider the filtering_criteria! - - for (MAP_ENTRY *me = 0; mi.next (me) != 0; mi.advance ()) - { - Event_Comm::Notification_Receiver *receiver_ref = me->int_id_->receiver (); - ACE_ASSERT (receiver_ref->_marker () != 0); - const char *regexp = me->int_id_->regexp (); - const char *criteria = me->int_id_->criteria (); - ACE_ASSERT (regexp); - ACE_ASSERT (criteria); - - // Do a regular expression comparison to determine matching. - if (ACE_OS::strcmp ("", criteria) == 0 // Everything matches the wildcard. -// || ACE_OS::strcmp (notification.tag_, regexp) == 0) - || ACE_OS::step (notification.tag_, regexp) != 0) - { - ACE_DEBUG ((LM_DEBUG, "string %s matched regexp \"%s\" for client %s\n", - notification.tag_, me->int_id_->criteria (), - receiver_ref->_marker ())); - TRY { - receiver_ref->receive_notification (notification, IT_X); - } - CATCHANY { - cerr << "Unexpected exception " << IT_X << endl; - continue; - } - ENDTRY; - count++; - } - } - - if (count == 1) - ACE_DEBUG ((LM_DEBUG, "there was 1 receiver\n")); - else - ACE_DEBUG ((LM_DEBUG, "there were %d receivers\n", count)); -} - -#endif /* ACE_HAS_ORBIX */ diff --git a/apps/Orbix-Examples/Event_Comm/libsrc/Notifier_i.h b/apps/Orbix-Examples/Event_Comm/libsrc/Notifier_i.h deleted file mode 100644 index 5e7ac590f37..00000000000 --- a/apps/Orbix-Examples/Event_Comm/libsrc/Notifier_i.h +++ /dev/null @@ -1,82 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -// ============================================================================ -// -// = LIBRARY -// EventComm -// -// = FILENAME -// Notifier_i.h -// -// = DESCRIPTION -// Class interface for the implementation of the <Notifier> -// -// = AUTHOR -// Douglas C. Schmidt (schmidt@cs.wustl.edu) -// -// ============================================================================ - -#if !defined (_Notifier_i_H) -#define _Notifier_i_H - -#include "ace/Map_Manager.h" -#include "ace/Synch.h" -#include "ace/SString.h" -#include "Event_Comm.hh" - -#if defined (ACE_HAS_ORBIX) && (ACE_HAS_ORBIX != 0) - -// Forward reference. -class Notification_Receiver_Entry; - -class Notifier_i - // = TITLE - // Defines the implementation class for event <Notifiers>. - // - // = DESCRIPTION -{ -public: - enum - { - DEFAULT_SIZE = 1024 // Default max number of Event_Comm::Notification_Receivers. - }; - - Notifier_i (size_t size_hint = Notifier_i::DEFAULT_SIZE); - // Initialize a Notifier_i object with the specified size hint. - - void send_disconnect (const char *reason, - CORBA::Environment &IT_env); - // Disconnect all the receivers, giving them the <reason>. - - void send_notification (const Event_Comm::Notification ¬ification, - CORBA::Environment &IT_env); - // Send the <Notification> to all the consumers who - // have subscribed and who match the filtering criteria. - - void subscribe (Event_Comm::Notification_Receiver *notification_receiver, - const char *filtering_criteria, - CORBA::Environment &IT_env); - // Subscribe the <Notification_Receiver> to receive events that - // match <filtering_criteria> applied by the <Notifier>. - - void unsubscribe (Event_Comm::Notification_Receiver *notification_receiver, - const char *filtering_criteria, - CORBA::Environment &IT_env); - // Unsubscribe the <Notification_Receiver>. - -private: - // The following implementation should be replaced - // by a standard container class from STL... - - typedef ACE_Map_Manager <ACE_SString, Notification_Receiver_Entry *, ACE_Null_Mutex> MAP_MANAGER; - typedef ACE_Map_Iterator <ACE_SString, Notification_Receiver_Entry *, ACE_Null_Mutex> MAP_ITERATOR; - typedef ACE_Map_Entry <ACE_SString, Notification_Receiver_Entry *> MAP_ENTRY; - - MAP_MANAGER map_; - // Table that maps a <Event_Comm::Notification_Receiver *> to a <Notification_Receiver_Entry *>. -}; - -#endif /* ACE_HAS_ORBIX */ -#endif /* _Notifier_i_H */ diff --git a/apps/Orbix-Examples/Logger/Logger.cpp b/apps/Orbix-Examples/Logger/Logger.cpp deleted file mode 100644 index e5a9f4b76ef..00000000000 --- a/apps/Orbix-Examples/Logger/Logger.cpp +++ /dev/null @@ -1,131 +0,0 @@ -#include <iostream.h> -// $Id$ - -#include "Logger.h" - -Logger::~Logger (void) -{ - // Release and free up the object reference. - this->logref_->_release (); - - // Must use free since we used strdup(3C). - ACE_OS::free (ACE_MALLOC_T (this->server_)); -} - -// Constructor takes the name of the host where the server -// is located. If server == 0, then use the locator service. - -Logger::Logger (char *server, size_t max_message_size) - : server_ (server == 0 ? 0 : ACE_OS::strdup (server)), - ip_ (0), - pid_ (ACE_OS::getpid ()) -{ - struct utsname name; - -#if 0 - // Could also use sysinfo(2)... - - ACE_OS::sysinfo (SI_HOSTNAME, clienthost, MAXHOSTNAMELEN); -#endif - - ACE_OS::uname (&name); - hostent *hp = ACE_OS::gethostbyname (name.nodename); - - if (hp != 0) - memcpy ((void *) &this->ip_, (void *) hp->h_addr, hp->h_length); - - TRY { - // First bind to the logger object. - // argv[1] has the hostname (if any) of the target logger object; - // The default is the local host: - this->logref_ = profile_logger::_bind ("", this->server_, IT_X); - } CATCHANY { - // an error occurred while trying to bind to the logger object. - cerr << "Bind to object failed" << endl; - cerr << "Unexpected exception " << IT_X << endl; - } ENDTRY; - // Pre-assign certain values that don't change. - this->log_msg_.app_id = this->pid_; - this->log_msg_.host_addr = this->ip_; - this->log_msg_.msg_data._maximum = max_message_size; -} - -// Transmit the message to the logging server. - -int -Logger::log (logger::Log_Priority priority, char message[], int length) -{ - // The following values change with every logging operation. - this->log_msg_.type = priority; - this->log_msg_.time = ACE_OS::time (0); - this->log_msg_.msg_data._length = length; - this->log_msg_.msg_data._buffer = message; - - TRY { - // Try to log a message. - this->logref_->log (this->log_msg_, IT_X); - } CATCHANY { - // an error occurred while trying to read the height and width: - cerr << "call to log failed" << endl; - cerr << "Unexpected exception " << IT_X << endl; - return -1; - } ENDTRY; - // success. - return 0; -} - -// Get the value of verbose. - -int -Logger::verbose (void) -{ - int verbosity = 0; - - TRY { - verbosity = this->logref_->verbose (); - } CATCHANY { - return -1; - } ENDTRY; - return verbosity; -} - -// Set the value of verbose. - -int -Logger::verbose (int value) -{ - int verbosity = 0; - - TRY { - this->logref_->verbose (value); - } CATCHANY { - return -1; - } ENDTRY; - return 0; -} - -// Activate the timer. - -int -Logger::start_timer (void) -{ - TRY { - this->logref_->start_timer (); - } CATCHANY { - return -1; - } ENDTRY; - return 0; -} - -// Deactivate the timer and return the elapsed time. - -int -Logger::stop_timer (profile_logger::Elapsed_Time &et) -{ - TRY { - this->logref_->stop_timer (et); - } CATCHANY { - return -1; - } ENDTRY; - return 0; -} diff --git a/apps/Orbix-Examples/Logger/Logger.h b/apps/Orbix-Examples/Logger/Logger.h deleted file mode 100644 index 5832c96aab6..00000000000 --- a/apps/Orbix-Examples/Logger/Logger.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -#if !defined (_LOGGER_H) -#define _LOGGER_H - -#include "ace/OS.h" -#include "logger.hh" - -class Logger - // = TITLE - // Wrapper class that uses CORBA object reference - // as the transport mechanism to simplify implementation. -{ -public: - Logger (char *server, size_t max_message_size); - // Constructor takes the name of the host where the server - // is located. If server == 0, then use the locator service. - - ~Logger (void); - // Destructor releases the object reference. - - int log (logger::Log_Priority prio, char msg[], int len); - // Log a <msg> of length <len> with priority <prio>. - - int verbose (void); - // Report current level of verbosity. - - int verbose (int verbosity); - // Set the level of verbosity (0 == no verbose, > 0 == verbose). - - int start_timer (void); - // Activate the timer. - - int stop_timer (profile_logger::Elapsed_Time &et); - // Deactivate the timer and return the elapsed time. - -private: - profile_logger *logref_; - // CORBA object reference proxy. - - int pid_; - // Process ID. - - u_long ip_; - // IP address of self. - - logger::Log_Record log_msg_; - // Cache certain non-changing values to avoid recomputing them. - - char *server_; - // Name of server that we are bound to. -}; - -#endif /* _LOGGER_H */ diff --git a/apps/Orbix-Examples/Logger/Makefile b/apps/Orbix-Examples/Logger/Makefile deleted file mode 100644 index de1c8e86265..00000000000 --- a/apps/Orbix-Examples/Logger/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the Logger. -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -SVR_OBJS = loggerS.o logger_i.o server.o -CLT_OBJS = loggerC.o client.o Logger.o - -LDLIBS = - -VLDLIBS = $(LDLIBS:%=%$(VAR)) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -#---------------------------------------------------------------------------- -# Orbix related macros and target settings. -#---------------------------------------------------------------------------- - -ORBIX_BINDIR = $(ORBIX_ROOT)/bin -ORBIX_LIBDIR = $(ORBIX_ROOT)/lib -ORBIX_INCDIR = $(ORBIX_ROOT)/include - -CPPFLAGS += -DEXCEPTIONS -I$(ORBIX_INCDIR) -DWANT_ORBIX_FDS -LDFLAGS += -L$(ORBIX_LIBDIR) -R $(ORBIX_LIBDIR) - -IDLFLAGS = -s S.cpp -c C.cpp -B - -#---------------------------------------------------------------------------- -# Local targets -#---------------------------------------------------------------------------- - -all: client server - -client: $(addprefix $(VDIR),$(CLT_OBJS)) - $(LINK.cc) -o client $(addprefix $(VDIR),$(CLT_OBJS)) $(LDFLAGS) -lITsrvmt $(VLDLIBS) - -server: $(addprefix $(VDIR),$(SVR_OBJS)) - $(LINK.cc) -o server $(addprefix $(VDIR),$(SVR_OBJS)) $(LDFLAGS) -lITsrvmt $(VLDLIBS) - -#---------------------------------------------------------------------------- -# Dependencies -#---------------------------------------------------------------------------- -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - - - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/apps/Orbix-Examples/Logger/Orbix.hostgroups b/apps/Orbix-Examples/Logger/Orbix.hostgroups deleted file mode 100644 index 013636e79c4..00000000000 --- a/apps/Orbix-Examples/Logger/Orbix.hostgroups +++ /dev/null @@ -1 +0,0 @@ -all:tango diff --git a/apps/Orbix-Examples/Logger/Orbix.hosts b/apps/Orbix-Examples/Logger/Orbix.hosts deleted file mode 100644 index 2e11d889bed..00000000000 --- a/apps/Orbix-Examples/Logger/Orbix.hosts +++ /dev/null @@ -1,3 +0,0 @@ -profile_logger:tango: -logger:tango: -IT_daemon:tango: diff --git a/apps/Orbix-Examples/Logger/README b/apps/Orbix-Examples/Logger/README deleted file mode 100644 index 19b1db681f2..00000000000 --- a/apps/Orbix-Examples/Logger/README +++ /dev/null @@ -1,35 +0,0 @@ -The directory contains the source code that implements an Orbix -version of the distributed Logger. Other ACE versions of this code -appear in the ./apps/Logger directory. It is interesting to compare -and contrast the alternative implementations. - -RUNNING: - -The client is run as follows: - -client -h host -m max_message_size - -The -h host is optional if the locator service is properly configured. -The -m specifies the maximum number of kilobytes to be sent per log. This -is useful when redirecting messages to stdin. - -TIMING: - -I recommend timing the log's by specifying a max_message_size and -redirecting /usr/dict/words. This will give you several trials from -which to take an average. - -CLIENT: - -While using the client and typing in messages manually, capital Q and V -must be used to quit and toggle verbose respectively. This allows you -to redirect /usr/dict/words without quiting at the q's!! - -SERVER: - -To turn off message reporting on the server side, do a - -setenv NO_MESSAGES - -in the enviroment where the server will be run. If this is done, the server -will only report that a message was received, but not display the messages. diff --git a/apps/Orbix-Examples/Logger/a1.tex b/apps/Orbix-Examples/Logger/a1.tex deleted file mode 100644 index 5d10042e26e..00000000000 --- a/apps/Orbix-Examples/Logger/a1.tex +++ /dev/null @@ -1,232 +0,0 @@ -\documentstyle[times,11pt,moretext] {article} -\input macros -\input widen -\input psfig - -\begin{document} -\centerline{\Large Washington University} -\centerline{\Large Department of Computer Science} -\bigskip -\centerline{\large CS523: Distributed Operating Systems} -%\smallskip -%\centerline{\large Spring 1995} -\bigskip -\centerline{\large Programming Project} -% \centerline{\large Due Tuesday, January $31^{st}$, 1995} - -\section{Overview} - -In this assignment, you will implement a distributed logging service -shown in Figure~\ref{logenv}. Applications use this service to log -information (such as error notifications, debugging traces, and status -updates) in a distributed environment. In this service, CORBA remote -operations are used to send logging records to a central logging -server. The logging server outputs the logging records to a console, -a printer, a file, or a network management database, etc. - -\section{Design and Implementation Issues} - -The distributed logging service will be designed as a client/server -pair, containing the objects shown in Figure~\ref{simplog}. - -\subsection{CORBA IDL Specification} -The following CORBA IDL specification defines the logging interface: - -{ -\small -\ls{0.9} -\begin{verbatim} -// IDL schema definition -interface Logger -{ - // Types of logging messages. - enum Log_Priority { - LM_DEBUG, // Debugging messages - LM_WARNING, // Warning messages - LM_ERROR, // Errors - LM_EMERG // A panic condition - }; - - // Format of the logging record. - struct Log_Record { - Log_Priority type; // Type of logging message. - long time; // Time stamp at sender. - long app_id; // Process ID of sender. - long host_addr; // IP address of the sender. - sequence<char> msg_data; // Sender-specific logging message. - }; - - // Transmit a Log_Record to the logging server. - oneway void log (in Log_Record log_rec); - - // Toggle verbose formatting - attribute char verbose; -}; -\end{verbatim}} - -\begin{figure} -\center{\ \psfig{figure=graphics/logsimp.eps,width=13cm}\ } -\vspace{-0.12in} -\caption{Distributed Logging Service} -\label{logenv} -\end{figure} - -You will use a CORBA IDL compiler to translate this specification into -client-side {\em stubs} and server-side {\em skeletons}. The client -application (which you must write) will use the stubs as a {\em proxy} -to access the logging services provided by the server. You must also -write the implementation of the server, which provides the logging -service. - -\subsection{Client and Server Functionality} -For the purposes of the assignment, you can make the client driver -program very simple. The client can read a line from its standard -input and send it to the logging server. The server can then format -and print the line on its standard output. For example, if you type -this line to the client: - -\begin{verbatim} -To boldly go where no one has gone before -\end{verbatim} - -\noindent Then the server should output something like this: - -\begin{verbatim} -Jan 24 14:50:28 1995@tango.cs.wustl.edu@18352@LM_DEBUG -::To boldly go where no one has gone before -\end{verbatim} - -\noindent Note that the server has printed out the logging message -timestamp, sender's hostname and process id, and the message priority, -followed by the logging message data. - -\begin{figure} -\center{\ \psfig{figure=graphics/simplog.eps,width=13cm}\ } -\vspace{-0.12in} -\caption{CORBA-based Logger Design} -\label{simplog} -\end{figure} - -Note that in order to pass the client's IP address (which is -represented as a 4-byte {\tt long}) in the logging message, you'll -need to learn about several other UNIX routines. On the client-side -you'll need to use {\tt uname(2)} and {\tt gethostbyname(2)} to -determine the IP address of the client host. On the server-side, -you'll need to use the {\tt gethostbyaddr(2)} function to convert the -4-byte IP host address into an ASCII version of the host name. I -recommend that you check the manual pages and read Richard Steven's -book ``UNIX Network Programming'' for more details on using these -functions. - -\subsection{Invoking the Client and Server} -Once the client and server components are written, compiled, and -linked together you will use the {\tt putit} command to register the -server with the Orbix daemon. You'll then need to start up a copy of -{\tt orbixd} (if there isn't already one running). {\tt orbixd} -serves as the Object Request Broker for the local endpoint. - -A client will bind to the {\tt Logger} interface via the generated -{\tt Logger::\_bind} method. There are two general ways to use this -method. The first is to explicitly pass in the name of the server -where {\tt orbixd} is running (your client should accept a -command-line argument that is the name of the server, {\em e.g.,} -``tango.cs.wustl.edu''). - -The second method is to use the CORBA locator service to get an object -reference for the logging service. You'll need to read the Orbix -documentation to learn how to set up a location file. This file will -enable you to omit the name of the server in the call to {\tt -Logger::\_bind}. By using the locator server, your clients can bind -to object's implicitly. Make sure that your solution will work for -either implicit or explicit service location. - -Once the client application has bound (either explicitly or -implicitly) to an object reference for the {\tt Logger}, it can log -messages by calling the {\tt log} method via the object reference -proxy. - -\subsection{Performance Measurement} - -An important part of developing distributed systems is understanding -the performance implications of different design approaches. In order -to measure the performance overhead of using CORBA to build the -Logger, you will write a simple extension to the original {\tt Logger} -interface, as follows: - -{ -\small -\ls{0.9} -\begin{verbatim} -// IDL schema definition -interface Profile_Logger - : Logger // Profile_Logger IS-A Logger -{ - // Stores the amount of time that has elapsed. - struct Elapsed_Time - { - double real_time; - double user_time; - double system_time; - }; - - // Activate the timer. - void start_timer (void); - - // Deactivate the timer and return the elapsed time. - void stop_timer (out Elapsed_Time et); -}; -\end{verbatim}} - -\noindent You will need to modify your client program so that it can -time a series of {\tt Logger::log} operations for various sizes of -logging messages. This will help us understand the performance -overhead of CORBA. - -The main benchmarking should take place within a loop in your client -program. Basically, your client call {\tt -Profile\_Logger::start\_timer} just before sending the first of the -logging messages. After a suitable number of iterations (defined on -the command-line), you client will call {\tt -Profile\_Logger::stop\_timer} to determine and report the elapsed time -to the user. You should print out the ``real'' time, as well as the -``system $+$ user'' times. Make sure that you print out the -throughput in terms of megabits/sec (rather than bytes/sec or -kbytes/sec). Be sure to include the fixed-sized {\tt Log\_Record} -object, as well as the variable-sized {\tt msg\_data} portion in your -computations. - -The number of iterations and the size of the messages sent by the -client should be parameterizable on the command-line. Make sure that -your timing tests are run between processes on two different machines -(rather than processes on the same machine). If possible, try to run -the client and server processes on two machines on the same subnet. - -When you are finished with your timing test, you should explain the -timing results and indicate trends that you observed. - -\section{Learning and Using CORBA} - -To help you learn how CORBA works, I will be making copies of the -Orbix programmer's manual available for a small reproduction fee. -This manual explains how to program in CORBA. I will announce in -class where this will be available. - -We will be using IONA's Orbix CORBA Object Request Broker (ORB) -implementation. The libraries, executables, CORBA IDL compiler, and -example demo applications are located in {\tt -/project/adaptive/Orbix}. Please note that this is an automounted -directory, so you will need to {\tt cd} directly to it in order to see -the contents. To configure Orbix for your environment, copy the {\tt -/project/adaptive/Orbix/Orbix.cfg} file to your account. You'll need -to set the environment variable {\tt IT\_CONFIG\_PATH} to the complete -path where this file is located. - -\section{Concluding Remarks} -In office hours and in class, we will discuss how to use C++ and CORBA -in order to develop your solutions. Note that this assignment will -teach you many skills required to become adept at network programming. -However, it also will require a great deal of thought and planning. -Please make sure you start early, come to office hours, and ask lots -of questions. - -\end{document} diff --git a/apps/Orbix-Examples/Logger/client.cpp b/apps/Orbix-Examples/Logger/client.cpp deleted file mode 100644 index 6a0104bd07e..00000000000 --- a/apps/Orbix-Examples/Logger/client.cpp +++ /dev/null @@ -1,142 +0,0 @@ -// A client for the distributed logger example. This program reads -// $Id$ - -// from either stdin or from a redirected file and sends all the -// contents to the logging server. It also computes how long it takes -// to send this stuff. - - -#include "Logger.h" - -// maximum message size -static size_t max_message_size = BUFSIZ; - -// Default behavior is to use the locator service. -static char *hostname = 0; - -// Should we prompt the user? -static int user_prompt; - -static void -parse_args (int argc, char *argv[]) -{ - extern char *optarg; - extern int optind; - int c; - - ACE_LOG_MSG->open (argv[0]); - - // If a file has been redirected, don't activate user prompts - if (ACE_OS::isatty (0)) - user_prompt = 1; - else - user_prompt = 0; - - while ((c = ACE_OS::getopt (argc, argv, "m:h:")) != -1) - switch (c) - { - case 'm': - max_message_size = ACE_OS::atoi (optarg) * BUFSIZ; - break; - case 'h': - hostname = optarg; - break; - default: - ACE_ERROR ((LM_ERROR, "%n: -h host -m max_message_size (in kbytes)\n%a", 1)); - /* NOTREACHED */ - } -} - -// Enable/disable verbose logging. - -static int -toggle_verbose (Logger &logger) -{ - int verbose_value; - - verbose_value = logger.verbose (); - logger.verbose (!verbose_value); - return 0; -} - -// Transmit messages to the server. - -int -transmit (Logger &logger, char buf[], ACE_HANDLE handle = 0) -{ - if (user_prompt) - cout << "\nEnter message ('Q':quit,'V':toggle verbose):\n" << flush; - - ssize_t nbytes = ACE_OS::read (handle, buf, max_message_size); - - if (nbytes <= 0) - return nbytes; // End of file or error. - buf[nbytes] = '\0'; - - if (user_prompt) - { - if (buf[0] == 'Q' || buf[0] == 'q') - return 0; - // toggle verbose? - else if (buf[0] == 'V' || buf[0] == 'v') - toggle_verbose (logger); - } - - // send the message to the logger - if (logger.log (logger::LM_DEBUG, buf, nbytes) == -1) - return -1; - else - return nbytes; -} - -// Print the results of the tests. - -void -report_results (profile_logger::Elapsed_Time &et, size_t total_bytes) -{ - ACE_DEBUG ((LM_DEBUG, - "real time = %8.2f\n" - "user time = %8.2f\n" - "sys time = %8.2f\n" - "mbits sec = %8.2f\n", - et.real_time, et.user_time, et.system_time, - (total_bytes / et.real_time) * 8.0 / 1024.0 / 1024.0)); -} - -int -main (int argc, char **argv) -{ - parse_args (argc,argv); - - // Pointer to the logger object that will be used. - Logger logger (hostname, max_message_size); - char *buf = new char [max_message_size]; - size_t total_bytes = 0; - size_t nbytes = 0; - - logger.start_timer (); - - // Transmit logging records until user quits. - - for (int done = 0; done == 0;) - switch (nbytes = transmit (logger, buf)) - { - case -1: - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "transmit"), -1); - /* NOTREACHED */ - case 0: - done = 1; - break; - default: - total_bytes += nbytes; - break; - } - - profile_logger::Elapsed_Time et; - - if (logger.stop_timer (et) == -1) - ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "stop timer"), -1); - - report_results (et, total_bytes); - return 0; -} diff --git a/apps/Orbix-Examples/Logger/logger.hh b/apps/Orbix-Examples/Logger/logger.hh deleted file mode 100644 index 0d0eeeca2f0..00000000000 --- a/apps/Orbix-Examples/Logger/logger.hh +++ /dev/null @@ -1,434 +0,0 @@ - -#ifndef logger_hh -#define logger_hh - -#include <CORBA.h> - -#include <string.h> - - -#ifndef _IDL_SEQUENCE_char_defined -#define _IDL_SEQUENCE_char_defined - -struct IONANC__IDL_SEQUENCE_char; -struct _IDL_SEQUENCE_char { - unsigned long _maximum; - unsigned long _length; - char *_buffer; - - operator IONANC__IDL_SEQUENCE_char(); - operator const IONANC__IDL_SEQUENCE_char() const; - _IDL_SEQUENCE_char& operator= (const IONANC__IDL_SEQUENCE_char&); - - _IDL_SEQUENCE_char& operator= (const _IDL_SEQUENCE_char&); - _IDL_SEQUENCE_char (const _IDL_SEQUENCE_char&); - - _IDL_SEQUENCE_char (unsigned long IT_size = 0); - - ~_IDL_SEQUENCE_char () { if (_buffer) delete [] _buffer; } - - char& operator [] (unsigned long IT_i) const {return _buffer[IT_i]; } - - void encodeOp (CORBA::Request &IT_r) const; - void decodeOp (CORBA::Request &IT_r); - void decodeInOutOp (CORBA::Request &IT_r); -}; - -struct IONANC__IDL_SEQUENCE_char { - unsigned long _maximum; - unsigned long _length; - char *_buffer; - - char& operator [] (unsigned long IT_i) const; - - operator _IDL_SEQUENCE_char (); - - operator const _IDL_SEQUENCE_char () const; - -}; - - - -#endif - - -#ifndef _logger_defined -#define _logger_defined -class logger_dispatch : public virtual CORBA::PPTR { -public: - - logger_dispatch (void *IT_p, CORBA::Object* IT_o, const char *IT_m, - CORBA::LoaderClass *IT_l, char *IT_i, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_l,IT_i,IT_im) {} - - - logger_dispatch (char *IT_OR, void *IT_p, CORBA::Object *IT_o) - : CORBA::PPTR (IT_OR,IT_p,IT_o) {} - - - logger_dispatch () {} - - logger_dispatch (void *IT_p, CORBA::Object *IT_o, const char *IT_m, - char *IT_i, CORBA::Object* IT_ob, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_i,IT_ob,IT_im) {} - - - virtual unsigned char dispatch (CORBA::Request &IT_r, - unsigned char IT_isTarget, void* IT_pp=NULL); - - -}; - -class logger; - - -#ifndef loggerForwH -#define loggerForwH -CORBA::ObjectRef logger_getBase (void *); -void logger_release (void *, CORBA::Environment &IT_env=CORBA::default_environment); -logger* logger_duplicate (void *, CORBA::Environment &IT_env=CORBA::default_environment); -#endif -#define logger_IMPL "logger" - - -class logger; -#define logger_IR "logger" -#define logger_IMPL "logger" - -typedef logger* loggerRef; -typedef logger* logger_ptr; -class logger: public virtual CORBA::Object { -public: - logger (char *IT_OR); - logger () : CORBA::Object (1) {} - logger* _duplicate( - CORBA::Environment &IT_env=CORBA::default_environment) { - CORBA::Object::_duplicate (IT_env); return this; } - static logger* _bind (const char* IT_markerServer, const char* host, - const CORBA::Context &IT_c, - CORBA::Environment &IT_env=CORBA::default_environment); - static logger* _bind (CORBA::Environment &IT_env); - static logger* _bind (const char* IT_markerServer=NULL, const char* host=NULL, - CORBA::Environment &IT_env=CORBA::default_environment); - static logger* _narrow (CORBA::Object* , CORBA::Environment &IT_env=CORBA::default_environment); -enum Log_Priority {LM_MESSAGE,LM_DEBUG,LM_WARNING,LM_ERROR,LM_EMERG}; - -#ifndef logger_Log_Record_defined -#define logger_Log_Record_defined - -struct IONANC_Log_Record; -struct Log_Record { - logger::Log_Priority type; - long time; - long app_id; - long host_addr; - _IDL_SEQUENCE_char msg_data; - - void encodeOp (CORBA::Request &IT_r) const; - void decodeOp (CORBA::Request &IT_r); - void decodeInOutOp (CORBA::Request &IT_r); - Log_Record(const Log_Record &); - Log_Record(); - operator logger::IONANC_Log_Record(); - operator const logger::IONANC_Log_Record() const; - Log_Record& operator= (const IONANC_Log_Record&); - ~Log_Record(); - Log_Record& operator= (const Log_Record&); -}; - -struct IONANC_Log_Record { - logger::Log_Priority type; - long time; - long app_id; - long host_addr; - IONANC__IDL_SEQUENCE_char msg_data; - operator logger::Log_Record (); - operator const logger::Log_Record () const; - }; - - -#endif - - virtual void log (const logger::Log_Record& log_rec, CORBA::Environment &IT_env=CORBA::default_environment); - virtual void verbose (char verbose, CORBA::Environment &IT_env=CORBA::default_environment); - virtual char verbose (CORBA::Environment &IT_env=CORBA::default_environment); -}; - - -#define TIE_logger(X) logger##X - -#define DEF_TIE_logger(X) \ - class logger##X : public virtual logger { \ - X* m_obj; \ - public: \ - \ - logger##X (X *objp, const char* m="", CORBA::LoaderClass *l=nil)\ - : logger(), CORBA::Object (), m_obj(objp) { \ - m_pptr = new logger_dispatch \ - (( logger*)this,(CORBA::Object*)this,m,l,logger_IR,m_obj); \ - } \ - logger##X (CORBA::Object *IT_p, const char* IT_m="", void *IT_q=nil)\ - : logger(), CORBA::Object () { \ - m_pptr = new logger_dispatch \ - (( logger*)this,(CORBA::Object*)this,IT_m,logger_IR,IT_p,IT_q); \ - m_obj = (X*)(m_pptr->getImplObj ()); \ - } \ - \ - virtual ~logger##X () { \ - if (_okToDeleteImpl ()) delete m_obj; } \ - \ - virtual void* _deref () { \ - return m_obj; } \ - \ - virtual void log (const logger::Log_Record& log_rec, CORBA::Environment &IT_env) {\ -m_obj->log ( log_rec,IT_env);\ -}\ - \ -virtual void verbose (char verbose, CORBA::Environment &IT_env) {\ - m_obj->verbose(verbose,IT_env); }\ - \ -virtual char verbose (CORBA::Environment &IT_env) {\ -return m_obj->verbose(IT_env); }\ - \ - }; - - -#define QUALS_logger \ - virtual void log (const logger::Log_Record& log_rec, CORBA::Environment &IT_env) {\ -m_obj->log ( log_rec,IT_env);\ -}\ - \ -virtual void verbose (char verbose, CORBA::Environment &IT_env) {\ - m_obj->verbose(verbose,IT_env); }\ - \ -virtual char verbose (CORBA::Environment &IT_env) {\ -return m_obj->verbose(IT_env); }\ - - - - -class loggerProxyFactoryClass : public virtual CORBA::ObjectFactoryClass { -public: - loggerProxyFactoryClass (unsigned char IT_p=0) - : CORBA::ProxyFactory (logger_IR, IT_p) {} - - virtual void* New (char *IT_OR, CORBA::Environment&); - - virtual void* New2 (); - - virtual void* IT_castUp (void *IT_p, char* IT_s); - - virtual CORBA::PPTR* pptr (void *IT_p); - - virtual void baseInterfaces (_IDL_SEQUENCE_string&); - - -}; - -extern loggerProxyFactoryClass loggerProxyFactory; - - - -class loggerBOAImpl : public virtual logger { -public: - loggerBOAImpl (const char *m="", CORBA::LoaderClass *l=NULL) { - if (CORBA::PPTR::isOK (m_pptr, logger_IR)) - m_pptr = new logger_dispatch ( (logger*)this, - (CORBA::Object*)this, m, l, logger_IR, this); -} - - virtual void log (const logger::Log_Record& log_rec, CORBA::Environment &IT_env=CORBA::default_environment) =0; - virtual void verbose (char verbose, CORBA::Environment &IT_env=CORBA::default_environment)=0; - virtual char verbose (CORBA::Environment &IT_env=CORBA::default_environment)=0; -}; - - -#endif - - -#ifndef _profile_logger_defined -#define _profile_logger_defined -class profile_logger_dispatch : public virtual logger_dispatch { -public: - - profile_logger_dispatch (void *IT_p, CORBA::Object* IT_o, const char *IT_m, - CORBA::LoaderClass *IT_l, char *IT_i, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_l,IT_i,IT_im) {} - - - profile_logger_dispatch (char *IT_OR, void *IT_p, CORBA::Object *IT_o) - : CORBA::PPTR (IT_OR,IT_p,IT_o) {} - - - profile_logger_dispatch () {} - - profile_logger_dispatch (void *IT_p, CORBA::Object *IT_o, const char *IT_m, - char *IT_i, CORBA::Object* IT_ob, void* IT_im) - : CORBA::PPTR (IT_p,IT_o,IT_m,IT_i,IT_ob,IT_im) {} - - - virtual unsigned char dispatch (CORBA::Request &IT_r, - unsigned char IT_isTarget, void* IT_pp=NULL); - - -}; - -class profile_logger; - - -#ifndef profile_loggerForwH -#define profile_loggerForwH -CORBA::ObjectRef profile_logger_getBase (void *); -void profile_logger_release (void *, CORBA::Environment &IT_env=CORBA::default_environment); -profile_logger* profile_logger_duplicate (void *, CORBA::Environment &IT_env=CORBA::default_environment); -#endif -#define profile_logger_IMPL "profile_logger" - - -class profile_logger; -#define profile_logger_IR "profile_logger" -#define profile_logger_IMPL "profile_logger" - -typedef profile_logger* profile_loggerRef; -typedef profile_logger* profile_logger_ptr; -class profile_logger: public virtual logger { -public: - profile_logger (char *IT_OR); - profile_logger () : CORBA::Object (1) {} - profile_logger* _duplicate( - CORBA::Environment &IT_env=CORBA::default_environment) { - CORBA::Object::_duplicate (IT_env); return this; } - static profile_logger* _bind (const char* IT_markerServer, const char* host, - const CORBA::Context &IT_c, - CORBA::Environment &IT_env=CORBA::default_environment); - static profile_logger* _bind (CORBA::Environment &IT_env); - static profile_logger* _bind (const char* IT_markerServer=NULL, const char* host=NULL, - CORBA::Environment &IT_env=CORBA::default_environment); - static profile_logger* _narrow (CORBA::Object* , CORBA::Environment &IT_env=CORBA::default_environment); - -#ifndef profile_logger_Elapsed_Time_defined -#define profile_logger_Elapsed_Time_defined - -struct Elapsed_Time { - double real_time; - double user_time; - double system_time; - - void encodeOp (CORBA::Request &IT_r) const; - void decodeOp (CORBA::Request &IT_r); - void decodeInOutOp (CORBA::Request &IT_r); -}; - - -#endif - - virtual void start_timer (CORBA::Environment &IT_env=CORBA::default_environment); - virtual void stop_timer (profile_logger::Elapsed_Time& et, CORBA::Environment &IT_env=CORBA::default_environment); -}; - - -#define TIE_profile_logger(X) profile_logger##X - -#define DEF_TIE_profile_logger(X) \ - class profile_logger##X : public virtual profile_logger { \ - X* m_obj; \ - public: \ - \ - profile_logger##X (X *objp, const char* m="", CORBA::LoaderClass *l=nil)\ - : profile_logger(), CORBA::Object (), m_obj(objp) { \ - m_pptr = new profile_logger_dispatch \ - (( profile_logger*)this,(CORBA::Object*)this,m,l,profile_logger_IR,m_obj); \ - } \ - profile_logger##X (CORBA::Object *IT_p, const char* IT_m="", void *IT_q=nil)\ - : profile_logger(), CORBA::Object () { \ - m_pptr = new profile_logger_dispatch \ - (( profile_logger*)this,(CORBA::Object*)this,IT_m,profile_logger_IR,IT_p,IT_q); \ - m_obj = (X*)(m_pptr->getImplObj ()); \ - } \ - \ - virtual ~profile_logger##X () { \ - if (_okToDeleteImpl ()) delete m_obj; } \ - \ - virtual void* _deref () { \ - return m_obj; } \ - \ - virtual void log (const logger::Log_Record& log_rec, CORBA::Environment &IT_env) {\ -m_obj->log ( log_rec,IT_env);\ -}\ - \ -virtual void verbose (char verbose, CORBA::Environment &IT_env) {\ - m_obj->verbose(verbose,IT_env); }\ - \ -virtual char verbose (CORBA::Environment &IT_env) {\ -return m_obj->verbose(IT_env); }\ - virtual void start_timer (CORBA::Environment &IT_env) {\ -m_obj->start_timer (IT_env);\ -}\ - \ - virtual void stop_timer (profile_logger::Elapsed_Time& et, CORBA::Environment &IT_env) {\ -m_obj->stop_timer ( et,IT_env);\ -}\ - \ - }; - - -#define QUALS_profile_logger \ - virtual void log (const logger::Log_Record& log_rec, CORBA::Environment &IT_env) {\ -m_obj->log ( log_rec,IT_env);\ -}\ - \ -virtual void verbose (char verbose, CORBA::Environment &IT_env) {\ - m_obj->verbose(verbose,IT_env); }\ - \ -virtual char verbose (CORBA::Environment &IT_env) {\ -return m_obj->verbose(IT_env); }\ - virtual void start_timer (CORBA::Environment &IT_env) {\ -m_obj->start_timer (IT_env);\ -}\ - \ - virtual void stop_timer (profile_logger::Elapsed_Time& et, CORBA::Environment &IT_env) {\ -m_obj->stop_timer ( et,IT_env);\ -}\ - - - - -class profile_loggerProxyFactoryClass : public virtual loggerProxyFactoryClass { -public: - profile_loggerProxyFactoryClass (unsigned char IT_p=0) - : CORBA::ProxyFactory (profile_logger_IR, IT_p) {} - - virtual void* New (char *IT_OR, CORBA::Environment&); - - virtual void* New2 (); - - virtual void* IT_castUp (void *IT_p, char* IT_s); - - virtual CORBA::PPTR* pptr (void *IT_p); - - virtual void baseInterfaces (_IDL_SEQUENCE_string&); - - -}; - -extern profile_loggerProxyFactoryClass profile_loggerProxyFactory; - - - -class profile_loggerBOAImpl : public virtual profile_logger { -public: - profile_loggerBOAImpl (const char *m="", CORBA::LoaderClass *l=NULL) { - if (CORBA::PPTR::isOK (m_pptr, profile_logger_IR)) - m_pptr = new profile_logger_dispatch ( (profile_logger*)this, - (CORBA::Object*)this, m, l, profile_logger_IR, this); -} - - virtual void start_timer (CORBA::Environment &IT_env=CORBA::default_environment) =0; - virtual void stop_timer (profile_logger::Elapsed_Time& et, CORBA::Environment &IT_env=CORBA::default_environment) =0; -}; - - -#endif - - -#endif diff --git a/apps/Orbix-Examples/Logger/logger.idl b/apps/Orbix-Examples/Logger/logger.idl deleted file mode 100644 index 0fe673a84b9..00000000000 --- a/apps/Orbix-Examples/Logger/logger.idl +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- C++ -*- */ -// @(#)logger.idl 1.1 10/18/96 - -// logger.idl - -interface logger -// = TITLE -// This is the CORBA interface for the logger class. -{ - // = Types of logging messages. - enum Log_Priority - { - LM_MESSAGE, - LM_DEBUG, - LM_WARNING, - LM_ERROR, - LM_EMERG - }; - - // = Format of the logging record. - struct Log_Record - { - Log_Priority type; // Type of logging message. - long time; // Time stamp at sender. - long app_id; // Process ID of sender. - long host_addr; // IP address of the sender. - sequence<char> msg_data; // Sender-specific logging message. - }; - - oneway void log (in Log_Record log_rec); - // Transmit a Log_Record to the logging server. - - attribute char verbose; - // Toggle verbose formatting -}; - -interface profile_logger - : logger // Profile_Logger IS-A Logger -// = TITLE -// IDL Profile Logger definition that is used -// to compute statistics about the logging. -{ - // = Stores the amount of time that has elapsed. - struct Elapsed_Time - { - double real_time; - double user_time; - double system_time; - }; - - void start_timer (); - // Activate the timer. - - void stop_timer (out Elapsed_Time et); - // Deactivate the timer and return the elapsed time. -}; diff --git a/apps/Orbix-Examples/Logger/loggerS.cpp b/apps/Orbix-Examples/Logger/loggerS.cpp deleted file mode 100644 index 51d9a70fd03..00000000000 --- a/apps/Orbix-Examples/Logger/loggerS.cpp +++ /dev/null @@ -1,141 +0,0 @@ - -// $Id$ - -#include "logger.hh" - - -#define logger_dispatch_impl - -unsigned char logger_dispatch::dispatch (CORBA::Request &IT_r, - unsigned char IT_isTarget, void *IT_pp) { - if (!IT_pp) - IT_pp = m_obj; - const char *IT_s = IT_r.getOperation (); - if (!strcmp(IT_s,"log")) { - CORBA::Environment IT_env (IT_r); - CORBA::Filter* IT_f = CORBA::Orbix.getFilter (); - if (!IT_r.tcAssert ("\ -Ro~log~+log_rec{R~logger::Log_Record~type{E~logger::Log_Priority~LM_MESSAGE,LM_DEBUG,LM_WARNING,LM_ERROR,LM_EMERG},time{l},app_id{l},host_addr{l},msg_data{S{c},0}},>{v},O{}\ -")) - return 1; - logger::Log_Record log_rec; - log_rec.decodeOp (IT_r); - - if (IT_f && !IT_r.isException (IT_env)) - IT_f->inRequestPostM (IT_r, IT_env); - if (!IT_r.isException (IT_env)) - ((logger*)IT_pp)->log ( log_rec, IT_env); - - IT_r.replyNoResults (CORBA::Flags(CORBA::INV_NO_RESPONSE),IT_env); - return 1; - } - - else if (!strcmp (IT_s,"_get_verbose")) { - char verbose; - CORBA::Environment IT_env (IT_r); - CORBA::Filter* IT_f = CORBA::Orbix.getFilter (); - if (!IT_r.tcAssert ("\ -Ro~_get_verbose~>{c},N{}\ -")) - return 1; - if (IT_f) - IT_f->inRequestPostM (IT_r, IT_env); - if (!IT_r.isException (IT_env)) - verbose = ((logger*)IT_pp)->verbose(IT_env); - - if (!IT_r.isException (IT_env)) { - if (!IT_r.convertToReply ("\ -c\ -", IT_env)) return 1; - IT_r << verbose; - } - else IT_r.makeSystemException (IT_env); - - return 1; - } - else if (!strcmp (IT_s,"_set_verbose")) { - CORBA::Environment IT_env (IT_r); - CORBA::Filter* IT_f = CORBA::Orbix.getFilter (); - if (IT_r.tcAssert ("\ -Ro~_set_verbose~+{c},>{v},N{}\ -")) { - char verbose; - IT_r >> verbose; - if (IT_f && !IT_r.isException (IT_env)) - IT_f->inRequestPostM (IT_r, IT_env); - if (!IT_r.isException (IT_env)) - ((logger*)IT_pp)->verbose(verbose, IT_env); - } - IT_r.replyNoResults (IT_env); - return 1; - } - - else if (IT_isTarget) - IT_r.makeRuntimeException2 (); - - return 0; -} - -#define profile_logger_dispatch_impl - -unsigned char profile_logger_dispatch::dispatch (CORBA::Request &IT_r, - unsigned char IT_isTarget, void *IT_pp) { - if (!IT_pp) - IT_pp = m_obj; - const char *IT_s = IT_r.getOperation (); - if (!strcmp(IT_s,"start_timer")) { - CORBA::Environment IT_env (IT_r); - CORBA::Filter* IT_f = CORBA::Orbix.getFilter (); - if (!IT_r.tcAssert ("\ -Ro~start_timer~>{v},N{}\ -")) - return 1; - - if (IT_f && !IT_r.isException (IT_env)) - IT_f->inRequestPostM (IT_r, IT_env); - if (!IT_r.isException (IT_env)) - ((profile_logger*)IT_pp)->start_timer (IT_env); - - IT_r.replyNoResults (IT_env); - return 1; - } - - else if (!strcmp(IT_s,"stop_timer")) { - CORBA::Environment IT_env (IT_r); - CORBA::Filter* IT_f = CORBA::Orbix.getFilter (); - if (!IT_r.tcAssert ("\ -Ro~stop_timer~-et{R~profile_logger::Elapsed_Time~real_time{d},user_time{d},system_time{d}},>{v},N{}\ -")) - return 1; - profile_logger::Elapsed_Time et; - - if (IT_f && !IT_r.isException (IT_env)) - IT_f->inRequestPostM (IT_r, IT_env); - if (!IT_r.isException (IT_env)) - ((profile_logger*)IT_pp)->stop_timer ( et, IT_env); - - - if (!IT_r.isException (IT_env)) { - if (!IT_r.convertToReply ("\ -v\ -", IT_env)) return 1; - et.encodeOp (IT_r); - } - - else IT_r.makeSystemException (IT_env); - return 1; - } - - else if (logger_dispatch::dispatch (IT_r, 0, - (logger*)((profile_logger*)IT_pp))) { - return 1; - } - - else if (IT_isTarget) - IT_r.makeRuntimeException2 (); - - return 0; -} - -#include "loggerC.cpp" - diff --git a/apps/Orbix-Examples/Logger/logger_i.cpp b/apps/Orbix-Examples/Logger/logger_i.cpp deleted file mode 100644 index 1bee6b3f7e1..00000000000 --- a/apps/Orbix-Examples/Logger/logger_i.cpp +++ /dev/null @@ -1,120 +0,0 @@ -// Implementation of the logger object. -// $Id$ - - -#include "ace/OS.h" -#include <iostream.h> -#include "logger_i.h" - -// Select non-verbose logging by default. - -logger_i::logger_i (int verbose) - : verbose_value_ (verbose) -{ - if (ACE_OS::getenv ("NO_MESSAGES") == 0) - this->verbose_message_ = 1; - else - this->verbose_message_ = 0; -} - -// Implement the log method. - -void -logger_i::log (const logger::Log_Record &log_rec, CORBA::Environment &IT_env) -{ - if (this->verbose_value_) // If verbose mode is on - { - char *tm; - - // Convert time - if ((tm = ACE_OS::ctime (&log_rec.time)) == 0) - cerr << "ctime failed" << endl; - else - { - hostent *hp; - - /* 01234567890123456789012345 */ - /* Wed Oct 18 14:25:36 1989n0 */ - tm[24] = '@'; - cout << tm; - - // Get host name of client - - if ((hp = gethostbyaddr((char *) &log_rec.host_addr, - sizeof log_rec.host_addr, AF_INET)) == NULL) - { - cerr << "server: error in calling gethostbyaddr" << endl; - cerr << "h_errno = " << h_errno << endl; - return; - } - else // Output client hostname. - cout << hp->h_name << "@"; - - // Output PID of client - cout << log_rec.app_id << "@"; - - // Output priority - - switch (log_rec.type) - { - case logger::LM_DEBUG: - cout << "LM_DEBUG"; - break; - case logger::LM_WARNING: - cout << "LM_WARNING"; - break; - case logger::LM_ERROR: - cout << "LM_ERROR"; - break; - case logger::LM_EMERG: - cout << "LM_EMERG"; - break; - } - } - } - if (this->verbose_message_) - { - cout << "::"; - // Output message - cout.write (log_rec.msg_data._buffer, log_rec.msg_data._length) << flush; - } -} - -// Enable/disable verbosity. - -void -logger_i::verbose (char verbose, CORBA::Environment &IT_env) -{ - this->verbose_value_ = verbose; -} - -// Report current verbosity level. - -char -logger_i::verbose (CORBA::Environment &IT_env) -{ - return this->verbose_value_; -} - -// Profile_Logger_i - -void -profile_logger_i::start_timer (CORBA::Environment &IT_env) -{ - this->pt_.start (); -} - -void -profile_logger_i::stop_timer (profile_logger::Elapsed_Time& et, - CORBA::Environment &IT_env) -{ - this->pt_.stop (); - - ACE_Profile_Timer::ACE_Elapsed_Time e; - - this->pt_.elapsed_time (e); - - et.real_time = e.real_time; - et.user_time = e.user_time; - et.system_time = e.system_time; -} diff --git a/apps/Orbix-Examples/Logger/logger_i.h b/apps/Orbix-Examples/Logger/logger_i.h deleted file mode 100644 index 40d7b77c6bf..00000000000 --- a/apps/Orbix-Examples/Logger/logger_i.h +++ /dev/null @@ -1,75 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - - -#include "ace/Profile_Timer.h" -#define EXCEPTIONS -#include "logger.hh" - -class logger_i -#if defined (USE_BOA_IMPL) - : virtual public loggerBOAImpl -#endif /* USE_BOA_IMPL */ - // = TITLE - // Implementation of the logger interface. - // - // = DESCRIPTION - // Uses either the BOAImpl or the DEF_TIE approach, - // depending on the #ifdef -{ -public: - logger_i (int verbose = 0); - // Select non-verbose logging by default. - - virtual void log (const logger::Log_Record &log_rec, CORBA::Environment &IT_env); - // Implement the log method. - - virtual void verbose (char verbose, CORBA::Environment &IT_env); - // Enable/disable verbosity. - - virtual char verbose (CORBA::Environment &IT_env); - // Report current verbosity level. - -private: - unsigned char verbose_value_; - // Indicate if we are using verbose logging or not. - - unsigned char verbose_message_; - // Indicate if we outputting the messages (turn off if you - // want to conduct timing tests that just measure throughput). -}; - -class profile_logger_i : -#if defined (USE_BOA_IMPL) - public virtual profile_loggerBOAImpl, - public virtual Logger_i -#else /* USE_TIE */ - public logger_i -#endif /* USE_BOA_IMPL */ - // = TITLE - // Implementation of the profiler logger interface. - // - // = DESCRIPTION - // Uses the BOAImpl approach. -{ -public: - virtual void start_timer (CORBA::Environment &env); - // Activate the timer. - - virtual void stop_timer (profile_logger::Elapsed_Time &et, - CORBA::Environment &env); - // Deactivate the timer and return the elapsed time. - -private: - ACE_Profile_Timer pt_; - // Object that keeps track of the user and system execution time. -}; - -#if !defined (USE_BOA_IMPL) -// Indicate that the C++ classes logger_i and profile_logger_i implement -// the IDL interface logger and profile_logger, respectively: - -DEF_TIE_logger (logger_i) -DEF_TIE_profile_logger (profile_logger_i) - -#endif /* USE_BOA_IMPL */ diff --git a/apps/Orbix-Examples/Logger/server.cpp b/apps/Orbix-Examples/Logger/server.cpp deleted file mode 100644 index 0e9339a7028..00000000000 --- a/apps/Orbix-Examples/Logger/server.cpp +++ /dev/null @@ -1,40 +0,0 @@ -// server.C -// $Id$ - - -// The server for the logger example. -// This uses the TRY,CATCHANY,ENDTRY macros for error testing. - -// The executable file generated from this code should be registered -// (under the name 'logger') using the 'putit' command. - -#include <iostream.h> -#include "logger_i.h" - -int -main (int, char *[]) -{ - // Tell the server not to hang up while clients are connected. - CORBA::Orbix.setNoHangup (1); - - // create a logger object - using the implementation class logger_i -#if defined (USE_BOA_IMPL) - profile_logger_i profile_logger; -#else - TIE_profile_logger (profile_logger_i) profile_logger (new profile_logger_i); -#endif /* USE_BOA_IMPL */ - - TRY { - // tell Orbix that we have completed the server's initialisation: - CORBA::Orbix.impl_is_ready (profile_logger_IMPL, IT_X); - } CATCHANY { - // an error occured calling impl_is_ready () - output the error. - cout << IT_X << endl; - } ENDTRY; - - // impl_is_ready() returns only when Orbix times-out an idle server - // (or an error occurs). - cerr << "server exiting" << endl; - - return 0; -} diff --git a/apps/Orbix-Examples/Makefile b/apps/Orbix-Examples/Makefile deleted file mode 100644 index 466fe2e0132..00000000000 --- a/apps/Orbix-Examples/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the Orbix applications -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -INFO = README - -DIRS = Event_Comm \ - Logger - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU - diff --git a/apps/README b/apps/README deleted file mode 100644 index 9a21781fced..00000000000 --- a/apps/README +++ /dev/null @@ -1,18 +0,0 @@ -The subdirectories in this directory provide a number of complete -applications that utilize the ACE features. - - . Gateway -- Implements a connection-oriented application-level - gateway that uses source-based and destination-based routing - of messages between peers connected via TCP/IP networks. - - . JAWS -- This is a high-performance HTTP Web server written - with ACE. It illustrates a number of sophisticated ACE - concurrency and event demultiplexing strategies. - - . Orbix-Examples -- Implements several applications that - integrate ACE and Orbix (which is IONA's implementation of - CORBA). By default, these aren't compiled since most - platforms don't have Orbix. These examples are completely - unsupported and may not work... - - . gperf -- The GNU perfect hash function generator. diff --git a/apps/gperf/COPYING b/apps/gperf/COPYING deleted file mode 100644 index 9a170375811..00000000000 --- a/apps/gperf/COPYING +++ /dev/null @@ -1,249 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - Version 1, February 1989 - - Copyright (C) 1989 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The license agreements of most software companies try to keep users -at the mercy of those companies. By contrast, our General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. The -General Public License applies to the Free Software Foundation's -software and to any other program whose authors commit to using it. -You can use it for your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Specifically, the General Public License is designed to make -sure that you have the freedom to give away or sell copies of free -software, that you receive source code or can get it if you want it, -that you can change the software or use pieces of it in new free -programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of a such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must tell them their rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any program or other work which -contains a notice placed by the copyright holder saying it may be -distributed under the terms of this General Public License. The -"Program", below, refers to any such program or work, and a "work based -on the Program" means either the Program or any work containing the -Program or a portion of it, either verbatim or with modifications. Each -licensee is addressed as "you". - - 1. You may copy and distribute verbatim copies of the Program's source -code as you receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice and -disclaimer of warranty; keep intact all the notices that refer to this -General Public License and to the absence of any warranty; and give any -other recipients of the Program a copy of this General Public License -along with the Program. You may charge a fee for the physical act of -transferring a copy. - - 2. You may modify your copy or copies of the Program or any portion of -it, and copy and distribute such modifications under the terms of Paragraph -1 above, provided that you also do the following: - - a) cause the modified files to carry prominent notices stating that - you changed the files and the date of any change; and - - b) cause the whole of any work that you distribute or publish, that - in whole or in part contains the Program or any part thereof, either - with or without modifications, to be licensed at no charge to all - third parties under the terms of this General Public License (except - that you may choose to grant warranty protection to some or all - third parties, at your option). - - c) If the modified program normally reads commands interactively when - run, you must cause it, when started running for such interactive use - in the simplest and most usual way, to print or display an - announcement including an appropriate copyright notice and a notice - that there is no warranty (or else, saying that you provide a - warranty) and that users may redistribute the program under these - conditions, and telling the user how to view a copy of this General - Public License. - - d) You may charge a fee for the physical act of transferring a - copy, and you may at your option offer warranty protection in - exchange for a fee. - -Mere aggregation of another independent work with the Program (or its -derivative) on a volume of a storage or distribution medium does not bring -the other work under the scope of these terms. - - 3. You may copy and distribute the Program (or a portion or derivative of -it, under Paragraph 2) in object code or executable form under the terms of -Paragraphs 1 and 2 above provided that you also do one of the following: - - a) accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of - Paragraphs 1 and 2 above; or, - - b) accompany it with a written offer, valid for at least three - years, to give any third party free (except for a nominal charge - for the cost of distribution) a complete machine-readable copy of the - corresponding source code, to be distributed under the terms of - Paragraphs 1 and 2 above; or, - - c) accompany it with the information you received as to where the - corresponding source code may be obtained. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form alone.) - -Source code for a work means the preferred form of the work for making -modifications to it. For an executable file, complete source code means -all the source code for all modules it contains; but, as a special -exception, it need not include source code for modules which are standard -libraries that accompany the operating system on which the executable -file runs, or for standard header files or definitions files that -accompany that operating system. - - 4. You may not copy, modify, sublicense, distribute or transfer the -Program except as expressly provided under this General Public License. -Any attempt otherwise to copy, modify, sublicense, distribute or transfer -the Program is void, and will automatically terminate your rights to use -the Program under this License. However, parties who have received -copies, or rights to use copies, from you under this General Public -License will not have their licenses terminated so long as such parties -remain in full compliance. - - 5. By copying, distributing or modifying the Program (or any work based -on the Program) you indicate your acceptance of this license to do so, -and all its terms and conditions. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the original -licensor to copy, distribute or modify the Program subject to these -terms and conditions. You may not impose any further restrictions on the -recipients' exercise of the rights granted herein. - - 7. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of the license which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -the license, you may choose any version ever published by the Free Software -Foundation. - - 8. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to humanity, the best way to achieve this is to make it -free software which everyone can redistribute and change under these -terms. - - To do so, attach the following notices to the program. It is safest to -attach them to the start of each source file to most effectively convey -the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) 19yy <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 1, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19xx name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the -appropriate parts of the General Public License. Of course, the -commands you use may be called something other than `show w' and `show -c'; they could even be mouse-clicks or menu items--whatever suits your -program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (a program to direct compilers to make passes - at assemblers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/apps/gperf/ChangeLog b/apps/gperf/ChangeLog deleted file mode 100644 index d0e86c82103..00000000000 --- a/apps/gperf/ChangeLog +++ /dev/null @@ -1,1335 +0,0 @@ -Sun Apr 14 14:31:10 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) - - * src: Changed things so that there's no longer any use of the - Read_Line and Std_Err code. All of this has been pushed into - the ACE components, which is where it belongs... - - * src: Changed things so that there's no longer any use of the - pointless inheritance in the code. This was a result of my not - understanding inheritance back in 1989... ;-) - - * Began to integrate GNU gperf into the ACE release. Started off - by bringing the standard GNU version up to date wrt to the - changes I made back in 1991! - -Tue Oct 10 16:37:28 1995 Mike Stump <mrs@cygnus.com> - - * src/new.cc: Since malloc/delete are not paired, we cannot call - free. - -Wed Jan 4 12:40:14 1995 Per Bothner <bothner@kalessin.cygnus.com> - - * src/Makefile.in ($(TARGETPROG)): Link with $(LDFLAGS). - Patch from John Interrante <interran@uluru.stanford.edu>. - -Sat Nov 5 19:12:48 1994 Jason Merrill (jason@phydeaux.cygnus.com) - - * src/Makefile.in (LIBS): Remove. - -Tue Oct 18 17:51:14 1994 Per Bothner <bothner@kalessin.cygnus.com> - - * src/std-err.cc: Use stderror, instead of the non-standard - sys_nerr and sys_errlist. - -Sat Sep 17 22:02:13 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * src/key-list.cc (output_hash_function): - Patch from William Bader <wbader@CSEE.Lehigh.Edu>. - -Fri Jul 15 09:38:11 1994 Per Bothner (bothner@cygnus.com) - - * src/std-err.cc: #include <errno.h>, and only declare - extern int errno if errno is not a macro. - -Mon May 30 17:29:34 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (src_all, install): Make sure to add '/' after - `pwd` in $rootme, as expected by FLAGS_TO_PASS. - -Wed May 11 00:47:22 1994 Jason Merrill (jason@deneb.cygnus.com) - - Make libg++ build with gcc -ansi -pedantic-errors - * src/options.h: Lose commas at end of enumerator lists. - -Sun Dec 5 19:16:40 1993 Brendan Kehoe (brendan@lisa.cygnus.com) - - * src/hash-table.cc (Hash_Table::~Hash_Table): Don't pass an - argument to fprintf, since it's not expecting one. - -Fri Nov 26 19:03:18 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * src/list-node.cc: #undef index, for the sake of broken NeXT, - -Thu Nov 4 11:16:03 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (install): Use INSTALL_DATA for gperf.1. - -Mon Oct 25 18:40:51 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * src/key-list.cc (Key_List::read_keys): Use POW macro - to increase hash table size to power of 2. - - * options.h (LARGE_STACK_ARRAYS): New flag. Defaults to zero. - * gen-perf.cc, key-list.cc, read-line.cc: - Only stack-allocate large arrays if LARGE_STACK_ARRAYS is set. - * main.cc (main): Only call setrlimit (RLIMIT_STACK, ...) - if LARGE_STACK_ARRAYS. - -Mon Oct 4 17:45:08 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * src/gen-perf.cc: Always use ANSI rand/srand instead of BSDisms. - -Wed Aug 18 12:19:53 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (src_all): Make less verbose output. - -Fri May 28 14:01:18 1993 Per Bothner (bothner@rtl.cygnus.com) - - * src/gen-perf.cc (Gen_Perf::change): Don't use gcc-specific - 2-operand conditional expression. - * src/key-list.cc (Key_List::output_lookup_array): - Don't use variable-size stack arrays, unless compiled by g++. - -Tue May 4 14:08:44 1993 Per Bothner (bothner@cygnus.com) - - Changes (mostly from Peter Schauer) to permit compilation - using cfront 3.0 and otherwise be ARM-conforming. - * src/key-list.h: class Key_List must use public derivation - of base class Std_Err (because Gen_Perf::operator() in gen-perf.cc - calls Std_Err::report_error). - * src/gen-perf.cc (Gen_Perf::affects_prev), src/hash-table.cc - (Hash_Table::operator()): Don't use gcc-specific 2-operand - conditional expression. - * src/iterator.cc (Iterator::operator()): Don't use gcc-specific - range construct in case label. - * key-list.cc (Key_List::output_lookup_array, Key_List::read_keys), - src/gen-perf.cc (Gen_Perf::operator(), src/read-line.cc - (Read_Line::readln_aux): If not gcc, don't allocate - variable-sized arrays on stack. - * src/new.cc (operator new): Argument type should be size_t. - * key-list.cc (Key_List::output_lookup_array, Key_List::read_keys), - new/cc (::operator new): Don't use non-standard >?= operator. - -Tue Apr 27 20:11:30 1993 Per Bothner (bothner@cygnus.com) - - * src/Makefile.in: Define TARGETPROG, and use it. - -Mon Apr 19 00:29:18 1993 Per Bothner (bothner@cygnus.com) - - * Makefile.in, configure.in: Re-vamped configure scheme. - * gperf.texinfo: Renamed to gperf.texi. - * src/bool-array.{h,cc}: ANSIfy bzero->memset. - -Sat Jan 30 20:21:28 1993 Brendan Kehoe (brendan@lisa.cygnus.com) - - * tests/Makefile.in (mostlyclean): Also delete aout, cout, m3out, - pout, and preout. - -Tue Dec 29 08:58:17 1992 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in: pass $(FLAGS_TO_PASS) to all calls to make. - (FLAGS_TO_PASS): added INSTALL, INSTALL_DATA, INSTALL_PROGRAM. - -Mon Dec 21 18:46:46 1992 Per Bothner (bothner@rtl.cygnus.com) - - * tests/expected.* renamed to *.exp to fit in 14 chars. - * tests/Makefile.in: Update accordingly. - Also rename output.* to *.out. - * src/Makefile.in (clean): Remove gperf program. - -Wed Dec 9 14:33:34 1992 Per Bothner (bothner@cygnus.com) - - * src/hash-table.cc, src/bool-array.h: ANSIfy bzero->memset. - -Thu Dec 3 19:34:12 1992 Per Bothner (bothner@cygnus.com) - - * Makefile.in (distclean, realclean): Don't delete - Makefile before recursing. - -Fri Nov 6 13:41:49 1992 Per Bothner (bothner@rtl.cygnus.com) - - * key-list.{h,cc}: Remove MAX_INT (and similar) constant - fields from Key_List class, and use INT_MAX (etc) from limits.h. - * key-list.{h,cc}, options.{h,cc}, vectors.h: Removed all - uses of initialized const fields, as they are non-standard - - and their use was easy to do away with. Mostly, just - made the constants static non-fields in the .cc file. - -Mon Nov 2 13:10:11 1992 Per Bothner (bothner@cygnus.com) - - * tests/Makefile.in: When generating cinset.c, don't pass -C, - since -C assumes an ANSI compiler. Add the -C flag (with -a) - when generating test.out.3 instead. - * tests/expected.out.3: Update accordingly. - -Wed Aug 12 11:47:54 1992 Per Bothner (bothner@cygnus.com) - - * Makefile.in: Factor out common flags into $(FLAGS_TO_PASS). - * Makefile.in: 'install-info' depends on gperf.info. - -Mon Aug 10 11:39:52 1992 Ian Lance Taylor (ian@dumbest.cygnus.com) - - * Makefile.in, src/Makefile.in: always create installation - directories. - -Mon Jul 20 15:33:21 1992 Mike Stump (mrs@cygnus.com) - - * src/new.cc (operator new): Add cast from void * to char *, - since it is not a standard conversion. - -Wed Jun 17 16:25:30 1992 Per Bothner (bothner@rtl.cygnus.com) - - * src/gen-perf.cc: #include <_G_config.h> for _G_SYSV. - * src/key-list.cc: alloca() hair. - * src/main.cc (main): Only call getrlimit if _G_HAVE_SYS_RESOURCE. - * Makefile,in, {src,test}/Makefile.in: Fix *clean rules. - -Fri May 29 13:21:13 1992 Per Bothner (bothner@rtl.cygnus.com) - - * src/gen-perf.cc: Replace USG -> _G_SYSV. - -Thu May 14 13:58:36 1992 Per Bothner (bothner@rtl.cygnus.com) - - * src/Makefile.in: Don't pass obsolete flag -DUNLIMIT_STACK. - * tests/Makefile.in (clean): Fix. - -Sat Mar 7 00:03:56 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * gperf.texinfo: added menu item hook. - -Wed Feb 26 18:04:40 1992 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in, configure.in: removed traces of namesubdir, - -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced - copyrights to '92, changed some from Cygnus to FSF. - -Sun Jan 26 19:21:58 1992 Per Bothner (bothner at cygnus.com) - - * tests/Makefile.in: Use re-directed stdin instead of file - name in argv. This allows us to remove the filename - from the output, the expected output, and hence the diffs. - (Note that the input file is in $(srcdir), which we cannot - place in the expected out files.) - * tests/expected.out.[1235]: Edit out input filename, - to match new output. - -Mon Nov 4 15:04:41 1991 Douglas C. Schmidt (schmidt at bastille.ics.uci.edu) - - * Need to do something about the end-of-line marker being - hard-coded to '\n'... - - * Need to do something about the comment character being - hard-coded to '#'... - -Fri Sep 27 09:30:15 1991 Douglas C. Schmidt (schmidt at net4.ics.uci.edu) - - * Fixed a stupid problem with printout out a local enum with the - -E option (I forgot to check for the case of 0 duplicates, so it - was saying 1 duplicate instead!). - -Mon Aug 19 00:39:40 1991 Douglas C. Schmidt (schmidt at javel.ics.uci.edu) - - * Yow, all finished making gperf run with cfront/Saber C++. Not - really all that hard, actually, though did need to remove some - GNU specific hacks, like dynamically sized arrays and - initializing class data members in their declarations, etc. - - * Bumped up the version # to reflect the recent changes. - -Sun Aug 18 22:25:32 1991 Douglas C. Schmidt (schmidt at javel.ics.uci.edu) - - * Changed passage of Options::usage function in Options.C to have - a leading `&' so that Saber C++ wouldn't complain... - - * Added a new header file called gperf.h that includes system-wide - info. - - * Hacked up the release to work with Saber C++! Changed all *.cc - files to *.C. - -Mon Aug 5 21:18:47 1991 Douglas C. Schmidt (schmidt at net1.ics.uci.edu) - - * Yow, hacked in the nifty changes to the Std_Err error handling - abstraction. This now adds format string support for printing - out signals and the name of the function when things go wrong. - Make changes throughout the source to make use of the new - facilities and also to make sure all previous uses of - Std_Err::report_error are now prefixed by the name of the class. - -Tue Jul 30 00:02:39 1991 Douglas C. Schmidt (schmidt at net4.ics.uci.edu) - - * Make sure to add 1 to the Key_List::total_duplicates value when - printing it out since any time we have more than zero duplicates - we really have two or more duplicates! - - * Added support for the -O (optimize option). This option - optimizes the generated lookup function by assuming that all - input keywords are members of the keyset from the keyfile. - - * Added #define DUPLICATES and #define HASH_VALUE_RANGE (and of - course the enum equivalent) to the generated output. Don't know - how useful this will be, but it allows us to determine at a - glance whether we've got a minimal perfect hash function (in - which case TOTAL_KEYWORDS = HASH_VALUE_RANGE, and DUPLICATES = - 0). - - * Fixed a small bug in the Key_List::output_keyword_table routine - that caused an extra newline to be printed if there where no - leading blank entries... (who cares, right?!) - -Mon Jul 29 22:05:40 1991 Douglas C. Schmidt (schmidt at net4.ics.uci.edu) - - * Modified the handling of the -E (emit enums rather than - #defines) option in conjunction with the -G option. Now, if -G - and -E are given the enums are generated outside the lookup - function, rather than within it! - - * Yow, as part of my Software Practice and Experience submission - writeup I realized I needed to make the # comment character work - correctly. Now if you put a backslash character ('\') in front - of the # it treats the first character as a #. Naturally, to - put a '\' character on the front of the line you need to escape - it also, i.e., - \\I'm a line that starts with only one \ - # I'm a comment line - \#define I'm walking a fine line... ;-) - -Wed Jun 26 11:21:02 1991 Douglas C. Schmidt (schmidt at bastille.ics.uci.edu) - - * Changed all uses of the identifier `iteration_number' to - `generation_number' (also updated the paper!). - -Tue Apr 9 07:59:42 1991 Doug Schmidt (schmidt at net4.ics.uci.edu) - - * Had to change a whole bunch of little thangs in key-list.cc and - list-node.cc to make the -I option work. - - * Changed an alloca statement in key-list.cc to reflect the - strncasecmp modification (i.e., we now need to be able to - allocate a longer buffer if the -I option is used). - -Mon Apr 8 18:17:04 1991 Doug Schmidt (schmidt at net4.ics.uci.edu) - - * Yucko, there was a bug in the handling of -c (and of course the - new -I command in key-list.cc). Apparently when I added the - super-duper hack that provided support for duplicate keys I - forgot to update the strcmp output... - - * Boy, it has been a *long* time since I hacked this puppy. Let's - see, I'm about to add long-overdue support for case-insensitive - string comparisons to gperf's generated output code. We are - going to employ the hitherto unused option -I to indicte this! - -Thu Jun 28 16:17:27 1990 Doug Schmidt (schmidt at brilliant) - - * Wow, first fix on the new job! There was a dumb error - in Key_List::output_lookup_function, where I printed the - string "&wordlist[key]" instead of the correct "&wordlist[index]". - - * Added a couple of #ifdefs for USG support. - -Sun Jun 3 17:16:36 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Updated the version number to 2.5 and sent to Doug Lea for release - with the latest GNU libg++. - - * Changed the error handling when a keyword file cannot be opened - (now calls perror). - -Wed May 30 14:49:40 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Instrumented the source code with trace statements automagically - inserted using my new automated trace instrumentation tool! - -Wed May 9 11:47:41 1990 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Really fixed the previous bug. Turns out that a small amount - of logic had to be duplicated to handle static links that occur - as part of dynamic link chains. What a pain!!! - -Tue May 8 23:11:44 1990 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Fixed a stupid bug in Key_List::output_lookup_array that was - causing incorrect counts to be generated when there were both - static and dynamic links occurring for the same hash value. - Also simplified the code that performs the logic in this routine. - -Mon Apr 30 17:37:24 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Fixed stupid bug in Key_List::output_lookup_array that was - making the generated lookup[] array contain `chars' even - when the values stored in the chars are greater than 127! - - * Changed the behavior of the -G (global table) option so that it - will output the `length[]' array in the global scope along with - the `word_list[]' array. - - * Fixed a stupid bug in Key_List::output_lookup_function that - would always output the complicated `duplicate-handling' lookup - logic, even when there were no duplicates in the input! - - * Yikes, had to modify a bunch of stuff in key-list.cc to correctly - handle duplicate entries. Changed the generated code so that - the MIN_HASH_VALUE is no longer subtracted off when calculating - the hash value for a keyword. This required changing some other - code by substituting MAX_HASH_VALUE for TOTAL_KEYS in several places. - Finally, this means that the generated tables may contain leading - null entries, but I suppose it is better to trade-off space to get - faster performance... - -Mon Mar 26 13:08:43 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Updated version number to 2.4 to reflect the latest changes. - - * Changed the main program so that it always prints out gperf's - execution timings to the generated output file. - -Sun Mar 25 12:39:30 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Added the -Z option so that users can specify the name of the - generated class explicitly. Updated documentation to reflect - this change. - - * Modified the generated C++ class interface so that the functions - are declared static (to remove the overhead of passing the `this' - pointer). This means that operator()() can no longer be used, - since it only works on non-static member functions. - Also changed things so that there is no constructor (why waste - the extra call, when it doesn't do anything, eh?) - - * Modified the behavior of Key_List::output when the -L C++ option - is enabled. Previously the code generated use const data members - to record MIN_WORD_LENGTH, MIN_HASH_VALUE, etc. However, as - pointed out by James Clark this may result in suboptimal behavior - on the part of C++ compilers that can't inline these values. - Therefore, the new behavior is identical to what happens with - -L C, i.e., either #defines or function-specific enums are used. - Why sacrifice speed for some abstract notion of `code purity?' ;-) - -Tue Mar 6 18:17:42 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Added the -E option that defines constant values using an enum - local to the lookup function rather than with #defines. This - also means that different lookup functions can reside in the - same file. Thanks to James Clark (jjc@ai.mit.edu). - -Sat Mar 3 20:19:00 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Added a special case to key_list::output_switch that doesn't - generate extra comparisons when the `-S' is given an argument - of 1 (the normal case). This should speed up the generated - code output a tad... - -Fri Feb 23 14:21:28 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Renamed all instances of member function get_keysig_size - to get_max_keysig_size, since this is more precise... - - * Changed all occurrences of charset to keysig (stands for ``key - signature'') to reflect the new naming convention used in the - USENIX paper. - -Thu Feb 22 11:28:36 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Changed the name of the generated associated values table from - asso_value to asso_values to reflect conventions in the USENIX - C++ paper. - -Thu Feb 15 23:29:03 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Updated the gperf.texinfo file to fix some formatting problems - that had crept in since last time. - -Wed Feb 14 23:27:24 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Fixed stupid bug in key-list.cc (get_special_input), wher - gperf replaced each '%' with the succeeding character. - - * Added support for multiple target language generation. Currently - handled languages are C and C++, with C as the default. Updated - documentation and option handler to reflect the changes. - - * Added a global destructor to new.cc and removed the #ifdef, since - the bloody thing now works with libg++. - -Mon Feb 14 13:00:00 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Found out that my gperf paper was accepted at the upcoming - USENIX C++ Conference in San Francisco. Yow! - -Tue Jan 30 09:00:29 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * #ifdef'd out the new.cc memory allocator, since there are - problems with this and the libg++ stuff. - - * Changed key-list.h so that class Vectors is a public (rather - than private) base class for class Key_List. The previous - form was illegal C++, but wasn't being caught by the old - g++ compiler. Should work now... ;-) - -Sun Dec 10 14:08:23 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added several changes from rfg@ics.uci.edu. These changes - help to automate the build process. - -Wed Nov 15 15:49:33 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Removed conditional compilation for GATHER_STATISTICS. There's - really no good reason to avoid collecting this info at run-time, - since that section of code is *hardly* the bottleneck... ;-) - - * Simplified the C output routines in Key_List::set_output_types - and Key_List::output_keyword_table a bit in order to - speed-up and clean up the code generation. - - * Modified function Key_List::get_special_input so that it does - not try to `delete' a buffer that turned out to be too short. - This is important since the new memory management scheme - does not handle deletions. However, adding a small amount of - garbage won't hurt anything, since we generally don't do this - operation more than a couple times *at most*! - - * Created a new file (new.cc) which includes my own overloaded - operator new. This function should dramatically reduce the - number of calls to malloc since it grabs large chunks and - doles them out in small pieces. As a result of this change - the class-specific `operator new' was removed from class List_Node. - -Tue Nov 14 21:45:30 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Continued to refine the great hack. The latest trick is to - try and replace most uses of dynamic memory (i.e., calls to - new) with uses of gcc dynamic arrays (i.e., an alloca solution). - This makes life much easier for the overall process-size, since - it reduces the amount of overhead for memory management. As a - side-effect from this change there is no reason to have the - Bool_Array::dispose member function, so it's outta here! - - * Fixed a stupid bug that was an disaster waiting to happen... - Instead of making the boolean array large enough to index - max_hash_value it was only large enough to index max_hash_value - - 1. Once again, an off-by-one mistake in C/C++!!!! - -Mon Nov 13 19:38:27 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added the final great hack! This allows us to generate hash tables - for near-perfect hash functions that contain duplicates, *without* - having to use switch statements! Since many compilers die on large - switch statements this feature is essential. Furthermore, it appears - that the generated code is often *smaller* than that put out by - compilers, even though a large, sparse array must be created. - Here's the general idea: - - a. Generate the wordlist as a contiguous block of keywords, - just as before when using a switch statement. This - wordlist *must* be sorted by hash value. - - b. Generate the lookup array, which is an array of signed - {chars,shorts,ints}, (which ever allows full coverage of - the wordlist dimensions). If the value v, where v = - lookup[hash(str,len)], is >= 0 and < TOTAL_KEYWORDS, then we - simply use this result as a direct access into the wordlist - array to snag the keyword for comparison. - - c. Otherwise, if v is < -TOTAL_KEYWORDS or > TOTAL_KEYWORDS - this is an indication that we'll need to search through - some number of duplicates hash values. Using a hash - linking scheme we'd then index into a different part of - the hash table that provides the starting index and total - length of the duplicate entries to find via linear search! - -Sun Nov 12 13:48:10 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Simplified Key_List::output_min_max considerably by recognizing - that since the keyword list was already sorted by hash value finding - the min and max values is trivial! - - * Improved the debugging diagnostics considerably in classes Key_List, - Hash_Table, and Gen_Perf. - - * Modified the `-s' option so that a negative argument is now - interpreted to mean `allow the maximum associated value to be - about x times *smaller* than the number of input keys.' This - should help prevent massive explosion of generated hash table - size for large keysets. - -Sat Nov 11 11:31:13 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added a field in class Key_List that counts the total number - of duplicate keywords, both static and dynamic. - - * Added a new member function Bool_Array that deletes the dynamic - memory allocated to Bool_Array::storage_array. This space may - be needed for subsequent options, so it made sense to free it as - soon as possible... - - * Renamed file/class Alpha_Vectors to Vectors, to avoid problems - with 14 character length filenames on SYSV. Also changed file - adapredefined.gperf to adadefs.gperf in the ./tests directory. - - * Modified class Options by changing the member function - Options::total_positions to Options::get_charset_size and - Options::set_charset_size. These two routines now either return - the total charset size *or* the length of the largest keyword - if the user specifies the -k'*' (ALLCHARS) option. This change - cleans up client code. - - * Merged all the cperf changes into gperf. - - * Made sure to explicitly initialize perfect.fewest_collisions to - 0. - - * Cleaned up some loose ends noticed by Nels Olson. - 1. Removed `if (collisions <= perfect.fewest_collisions)' - from Gen_Perf::affects_prev since it was superfluous. - 2. Removed the fields best_char_value and best_asso_value - from Gen_Perf. There were also unnecessary. - 3. Fixed a braino in the Bool_Array::bool_array_reset - function. Since iteration numbers can never be zero - the `if (bool_array.iteration_number++ == 0)' must be - `if (++bool_array.iteration_number == 0).' - 4. Modified Std_Err::report_error so that it correctly handles - "%%". - - * It is important to note that -D no longer enables -S. - There is a good reason for this change, which will become - manifested in the next release... (suspense!). - - * Made some subtle changes to Key_List::print_switch so that if finally - seems to work correctly. Needs more stress testing, however... - - * Made a major change to the Key_List::print_switch function. - The user can now specify the number of switch statements to generate - via an argument to the -S option, i.e., -S1 means `generate 1 - switch statement with all keywords in it,' -S2 means generate - 2 switch statements with 1/2 the elements in each one, etc. - Hopefully this will fix the problem with C compilers not being - able to generate code for giant switch statements (but don't - hold your breath!) - - * Changed Key_List::length function to Key_List::keyword_list_length. - - * Added a feature to main.c that prints out the starting wall-clock - time before the program begins and prints out the ending wall-clock - time when the program is finished. - - * Added the GATHER_STATISTICS code in hash-table.c so we can - keep track of how well double hashing is doing. Eventually, - GATHER_STATISTICS will be added so that all instrumentation - code can be conditionally compiled in. - - * Fixed a stupid bug in Key_List::print_switch routine. This - was necessary to make sure the generated switch statement worked - correctly when *both* `natural,' i.e., static links and dynamic - links, i.e., unresolved duplicates, hash to the same value. - - * Modified Bool_Array::~Bool_Array destructor so that - it now frees the bool_array.storage_array when it is no longer - needed. Since this array is generally very large it makes sense - to return the memory to the freelist when it is no longer in use. - - * Changed the interface to constructor Hash_Table::Hash_Table. This - constructor now passed a pointer to a power-of-two sized buffer that - serve as storage for the hash table. Although this weakens information - hiding a little bit it greatly reduces dynamic memory fragmentation, - since we can now obtain the memory via a call to alloca, rather - than malloc. This change modified Key_List::read_keys calling - interface. - - * Since alloca is now being used more aggressively a conditional - compilation section was added in main.c. Taken from GNU GCC, - this code gets rid of any avoidable limit on stack size so that - alloca does not fail. It is only used if the -DRLIMIT_STACK - symbol is defined when gperf is compiled. - - * Added warnings in option.c so that user's would be informed - that -r superceeds -i on the command-line. - - * Rewrote Gen_Perf::affects_prev. First, the code structure - was cleaned up considerably (removing the need for a dreaded - goto!). Secondly, a major change occurred so that Gen_Perf::affects_prev - returns FALSE (success) when fewest_hits gets down to whatever - it was after inserting the previous key (instead of waiting for - it to reach 0). In other words, it stops trying if it can - resolve the new collisions added by a key, even if there are - still other old, unresolved collisions. This modification was - suggested by Nels Olson and seems to *greatly* increase the - speed of gperf for large keyfiles. Thanks Nels! - - * In a similar vein, inside the Gen_Perf::change routine - the variable `perfect.fewest_collisions is no longer initialized - with the length of the keyword list. Instead it starts out at - 0 and is incremented by 1 every time change () is called. - The rationale for this behavior is that there are times when a - collision causes the number of duplicates (collisions) to - increase by a large amount when it would presumably just have - gone up by 1 if none of the asso_values were changed. That is, - at the beginning of change(), you could initialize fewest_hits - to 1+(previous value of fewest_hits) instead of to the number of - keys. Thanks again, Nels. - - * Replaced alloca with new in the Gen_Perf::change function. - This should eliminate some overhead at the expense of a little - extra memory that is never reclaimed. - - * Renamed Gen_Perf::merge_sets to Gen_Perf::compute_disjoint_union - to reflect the change in behavior. - - * Added the -e option so users can supply a string containing - the characters used to separate keywords from their attributes. - The default behavior is ",\n". - - * Removed the char *uniq_set field from LIST_NODE and modified - uses of uniq_set in perfect.c and keylist.c. Due to changes - to Gen_Perf::compute_disjoint_sets this field was no longer - necessary, and its removal makes the program smaller and - potentially faster. - - * Added lots of changes/fixes suggested by Nels Olson - (umls.UUCP!olson@mis.ucsf.edu). In particular: - 1. Changed Bool_Array so that it would dynamically create - an array of unsigned shorts rather than ints if the - LO_CAL symbol was defined during program compilation. - This cuts the amount of dynamic memory usage in half, - which is important for large keyfile input. - 2. Added some additional debugging statements that print extra - info to stderr when the -d option is enabled. - 3. Fixed a really stupid bug in Key_List::print_switch - A right paren was placed at the wrong location, which broke - strlen (). - 4. Fixed a subtle problem with printing case values when keylinks - appear. The logic failed to account for the fact that there - can be keylinks *and* regular node info also! - 5. Changed the behavior of Key_List::read_keys so that it would - honor -D unequivocally, i.e., it doesn't try to turn off dup - handling if the user requests it, even if there are no - immediate links in the keyfile input. - 6. Modified the -j option so that -j 0 means `try random values - when searching for a way to resolve collisions.' - 7. Added a field `num_done' to the Gen_Perf struct. This is used - to report information collected when trying to resolve - hash collisions. - 8. Modified the merge_sets algorithm to perform a disjoint - union of two multisets. This ensures that subsequent - processing in Gen_Perf::affect_prev doesn't - waste time trying to change an associated value that is - shared between two conflicting keywords. - 9. Modified Gen_Perf::affects_prev so that it doesn't try - random jump values unless the -j 0 option is enabled. - 10. Fixed a silly bug in Gen_Perf::change. This problem caused - gperf to seg fault when the -k* option was given and the - keyfile file had long keywords. - -Sun Oct 29 00:18:55 1989 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Modified class-specific new operations for Read_Line and - List_Node so they don't fail if SIZE is larger than twice - the previous buffer size. Note we double buffer size - everytime the previous buffer runs out, as a heuristic - to reduce future calls to malloc. - -Sun Oct 22 13:49:43 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Updated gperf version number to 2.0. Send to Doug Lea for - incorporation into the long-awaited `official' libg++ 1.36 - release! - - * Thanks to Nels Olson a silly bug in Gen_Perf::change () - was fixed. This problem caused gperf to seg fault when - the -k* option was given and the keyfile file had long - keywords. - - * Modified Key_List::print_hash_function so that it output - max_hash_value + 1 (rather than just max_hash_value) for - any associated value entries that don't correspond to - keyword charset characters. This should speed up rejection - of non-keyword strings a little in some cases. - -Sat Oct 21 19:28:36 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Fixed Key_List::print_hash_function so that it no longer output - things like `return 0 + ...' Although this probably gets - optimized away by even the worst C compilers there isn't any - point tempting fate... ;-) - - * Fixed class List_Node's constructor so that it wouldn't a priori - refuse to consider trying to hash keys whose length is less - than the smallest user-specified key position. It turns out - this is not a problem unless the user also specifies the -n - (NOLENGTH) option, in which case such keys most likely - don't have a prayer of being hashed correctly! - - * Changed the name of the generated lookup table from `Hash_Table' - to `asso_value' to be consistent with the gperf paper. - -Tue Oct 17 14:19:48 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added a flag GATHER_STATISTICS in the Makefile. If defined - during compilation this turns on certain collection facilities - that track the performance of gperf during its execution. In - particular, I want to see how many collisions occur for the - double hashing Hash_Table. - - * Added a safety check so that we don't screw up if the total - number of `resets' of the Bool_Array exceeds MAX_INT. Since - this number is around 2^31 it is unlikely that this would ever - occur for most input, but why take the risk? - - * Changed the behavior for the -a (ANSI) option so that the - generated prototypes use int rather than size_t for the LEN - parameter. It was too ugly having to #include <stddef.h> all - over the place... - -Mon Oct 16 11:00:35 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Continued to work on the gperf paper for the USENIX C++ - conference. At some point this will be merged back into - the gperf documentation... - -Sat Oct 14 20:29:43 1989 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Added a majorly neat hack to Bool_Array, suggested by rfg. - The basic idea was to throw away the Ullman array technique. - The Ullman array was used to remove the need to reinitialize all - the Bool_Array elements to zero everytime we needed to determine - whether there were duplicate hash values in the keyword list. - The current trick uses an `iteration number' scheme, which takes - about 1/3 the space and reduces the overall program running a - time by about 20 percent for large input! The hack works as - follows: - - 1. Dynamically allocation 1 boolean array of size k. - 2. Initialize the boolean array to zeros, and consider the first - iteration to be iteration 1. - 2. Then on all subsequent iterations we `reset' the bool array by - kicking the iteration count by 1. - 3. When it comes time to check whether a hash value is currently - in the boolean array we simply check its index location. If - the value stored there is *not* equal to the current iteration - number then the item is clearly *not* in the set. In that - case we assign the iteration number to that array's index - location for future reference. Otherwise, if the item at - the index location *is* equal to the iteration number we've - found a duplicate. No muss, no fuss! - -Mon Oct 2 12:30:54 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Changed some consts in options.h to enumerals, since g++ - doesn't seem to like them at the moment! - -Sat Sep 30 12:55:24 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed a stupid bug in Key_List::print_hash_function that manifested - itself if the `-k$' option was given (i.e., only use the key[length] - character in the hash function). - - * Added support for the -C option. This makes the contents of - all generated tables `readonly'. - - * Changed the handling of generated switches so that there is - only one call to str[n]?cmp. This *greatly* reduces the size of - the generated assembly code on all compilers I've seen. - - * Fixed a subtle bug that occurred when the -l and -S option - was given. Code produced looked something like: - - if (len != key_len || !strcmp (s1, resword->name)) return resword; - - which doesn't make any sense. Clearly, this should be: - - if (len == key_len && !strcmp (s1, resword->name)) return resword; - -Tue Sep 26 10:36:50 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Changed class Read_Line's definition so that it no longer - needs to know about the buffering scheme used to speed up - dynamic memory allocation of input keywords and their - associated attributes. This means that operator new is no longer - a friend of Read_Line. - -Mon Sep 25 23:17:10 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Decided that Obstacks had too much overhead, so they were - removed in favor of super-efficient, low-overhead buffered - storage allocation hacks in Read_Line and List_Node. - - * No longer try to inline functions that g++ complains about - (Key_List::Merge and Key_List::Merge_Sort). - -Sun Sep 24 13:11:24 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Changed classes Read_Line and List_Node to use Obstacks in order - to cache memory allocation for keyword strings and List_Nodes. - - * Continued to experiment with inheritance schemes. - - * Added a new file `alpha.h', that declares static data shared - (i.e., inherited) between classes List_Node and Key_List. - -Tue Sep 12 16:14:41 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Made numerous changes to incorporate multiple inheritance in - gperf. - -Wed Aug 16 23:04:08 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added the -DCOMPILER_FIXED flag to the ./src/Makefile. This - implies that people trying to compile gperf need to have a - working version of the new g++ compiler (1.36.0). - - * Removed some extra spaces that were being added in the generated - C code. - -Mon Jul 24 17:09:46 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed PRINT_HASH_FUNCTION and PRINT_LOOKUP_FUNCTION in keylist.c - so that the generated functions take an unsigned int length argument. - If -a is enabled the prototype is (const char *str, size_t len). - -Fri Jul 21 13:06:15 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Fixed a typo in PRINT_KEYWORD_TABLE in keylist.cc that prevented - the indentation from working correctly. - - * Fixed a horrible typo in PRINT_KEYWORD_TABLE in keylist.cc - that prevented links from being printed correctly. - -Tue Jul 18 16:04:31 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Fixed up readline.cc and readline.h so that they work OK - with g++ compilers that aren't completely up-to-date. - If symbol COMPILER_FIXED is defined then the behavior - that works on my more recent version of g++ is enabled. - -Sun Jul 9 17:53:28 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Changed the ./tests subdirectory Makefile so that it - uses $(CC) instead of gcc. - -Sun Jul 2 21:52:15 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed a number of subtle bugs that occurred when -S was - combined with various and sundry options. - - * Added the -G option, that makes the generated keyword table - a global static variable, rather than hiding it inside - the lookup function. This allows other functions to directly - access the contents in this table. - - * Added the "#" feature, that allows comments inside the keyword - list from the input file. Comment handling takes place in readline.c. - This simplifies the code and reduces the number of malloc calls. - - * Also added the -H option (user can give the name of the hash - function) and the -T option (prevents the transfer of the type decl - to the output file, which is useful if the type is already defined - elsewhere). - -Thu Jun 22 20:39:39 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Modified many classes so that they would inherit Std_Err as - a base class. This makes things more abstract... - -Fri Jun 16 14:23:00 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Modified the -f (FAST) option. This now takes an argument. - The argument corresponds to the number of iterations used - to resolve collisions. -f 0 uses the length of the - keyword list (which is what -f did before). This makes - life much easier when dealing with large keyword files. - -Tue Jun 6 17:53:27 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added the -c (comparison) option. Enabling this - will use the strncmp function for string comparisons. - The default is to use strcmp. - - * Fixed a typo in key_list.cc (PRINT_SWITCH). This caused - faulty C code to be generated when the -D, -p, and -t - options were all enabled. - -Thu May 25 14:07:21 1989 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Once again, changed class Read_Line to overload global operator - new. Hopefully, this will work...! - -Sun May 21 01:51:45 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Modified Key_List::print_hash_function () so that it properly - formats the associated values in the hash table according to - the maximum number of digits required to represent the largest - value. - - * Removed the named return value from class Hash_Table's - operator (), since this causes a seg fault when -O is enabled. - No sense tripping subtle g++ bugs if we don't have to.... ;-) - - * Removed the operator new hack from Read_Line, since this seemed - to create horrible bus error problems. - - * Changed many class member functions and data members to be `static', - if they don't manipulate this! - -Fri May 12 23:06:56 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Changed class Std_Err to use static member functions, a la - Ada or Modula 2. This eliminates the need for an explicit - error-handler class object. - - * Added the ``named return value'' feature to Hash_Table::operator () - and Bool_Array::operator [], just for the heck of it.... ;-) - - * Changed the previous hack in Read_Line so that we now use - the overloaded global `new' instead of NEW_STRING! - -Wed May 3 17:36:55 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Updated to version 1.7. This reflects the recent major changes - and the new C port. - - * Modified the GNU getopt.cc routine to have a class-based interface. - - * Fixed a typo in Perfect.cc ~Perfect that prevented the actual maximum - hash table size from being printed (maybe the stream classes - weren't so bad after all.... ;-). - - * Added support for the -f option. This generates the perfect - hash function ``fast.'' It reduces the execution time of - gperf, at the cost of minimizing the range of hash values. - -Tue May 2 16:23:29 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Added an efficiency hack to Read_Line. Instead of making - a call to operator NEW (a.k.a. malloc) for each input string - a new member function NEW_STRING stores a large buffer from - which new strings are carved out, growing the buffer if - necessary. It might be useful to add this throughout the - program.... - - * Removed all unnecessary calls to DELETE. If the program is about - to exit it is silly to waste time freeing memory. - - * Added the GNU getopt program to the distribution. This makes - GPERF portable to systems that don't include getopt in libc. - - * Added a strcspn member to class Key_List. This also increases - portability. - - * Added the get_include_src function from keylist.c as a member - function in class Key_List. Hopefully every function is - now associated with a class. This aids abstraction and - modularity. - - * Ported gperf to C. From now on both K&R C and GNU G++ versions - will be supported. There will be two ChangeLog files, one - for each version of the program. - -Mon May 1 16:41:45 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed a bug with -k'*'. This now prints out *all* the cases - up to the length of the longest word in the keyword set. - -Sun Apr 30 12:15:25 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Removed all use of the stream classes. Too ugly, slow, and - not handled by the c++-mode formatter.... - - * Modified the handling of links (i.e., keywords that have - identical hash values as other keywords). This should - speed up hash function generation for keyword sets with - many duplicate entries. The trick is to treat duplicate - values as equivalence classes, so that each set of duplicate - values is represented only once in the main list processing. - - * Fixed some capitialization typos and indentations mistakes in - Key_List::print_hash_function. - -Sat Apr 29 12:04:03 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Fixed a typo/logico in Key_List::print_switch that prevented - the last keyword in the keyword list to be print out. This - requires further examination..... - - * Fixed a stupid bug in List_Node::List_node. If the -k'*' option - was enabled the KEY_SET string wasn't getting terminated with - '\0'! - -Fri Apr 28 12:38:35 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Renamed strexp.h and strexp.cc to iterator.h and iterator.cc. - Also changed the strexp class to iterator. Continued to work - on style... - - * Updated the version number to 1.6. This reflects all the - recent changes. - -Thu Apr 27 00:14:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added the -D option that properly handles keyword sets that - contain duplicate hash values. - - * Continued the stylistic changes. Added the #pragma once - directive to all the *.h files. Removed all #defines and - replaced them with static consts. Also moved the key_sort - routine from options.cc into the options class as a - member function. - -Mon Apr 3 13:26:55 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Made massive stylistic changes to bring source code into - conformance with GNU style guidelines. - -Thu Mar 30 23:28:45 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Fixed up the output routines so that they generate code - corresponding to the GNU style guidelines. - -Sat Mar 11 13:12:37 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed Stderr constructors so that they wouldn't try to - use the base class initializer syntax for the static - class variable Program_Name. G++ 1.34 is stricter in - enforcing the rules! - -Fri Mar 10 11:24:14 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Removed -v and ``| more'' from the Makefile to keep rfg happy... - -Thu Mar 2 12:37:30 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Sent latest GNU gperf version 1.5 to Doug Lea for inclusion - into libg++ 1.34. Note that there is a small bug with - the new %{ ... %} source inclusion facility, since it doesn't - understand comments and will barf if %{ or %} appear nested - inside the outermost delimiters. This is too trivial of - a defect to fix at the moment... - -Tue Feb 28 11:19:58 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added the -K option, which allows the user to provide a - alternative name for the keyword structure component. - The default is still ``name.'' - - * Added the LEX and YACC-like ability to include arbitrary - text at the beginning of the generated C source code output. - This required two new functions Get_Special_Input, - Key_List::Save_Include_Src; - - * Fixed memory allocation bug in Key_List::Set_Types. - Variable Return_Type needs 1 additional location - to store the "*" if the -p option is used. - - * Added code to NULL terminate both Struct_Tag and Return_Type, - *after* the strncpy (stupid mistake). - -Mon Feb 27 14:39:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added a new option -N. This allows the user to specify the - name to be used for the generated lookup function. The - default name is still ``in_word_set.'' This makes it - possible to completely automate the perfect hash function - generation process! - -Mon Feb 20 23:33:14 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Corrected the Hash_Table::operator () function so that - *it* is responsible for deciding when a new key has the - same signature as a previously seen key. The key length - information is now used internally to this function to - decide whether to add to the hash table those keys with - the same key sets, but different lengths. Before, this - was handled by the Key_List::Read_Keys function. However, - this failed to work for certain duplicate keys, since - they weren't being entered into the hash table properly. - -Sun Feb 19 16:02:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Modified class Options by moving the enum Option_Type out - of the class. This is to satisfy the new enumeration - scope rules in C++. - -Sun Jan 15 15:12:09 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Incremented the version number upto 1.4 to reflect the new - options that affect the generated code. Send the new - distribution off to Michael for use with g++ 1.33. - - * Added a fix to Key_List::Read_Keys so that it checks for links - properly when the -n option is used. Previously, it didn't - catch obvious links, which caused it to spend large amount - of time searching for a solution that could never occur! - - * Modified the Key_List data structure to record *both* the - minimum and the maximum key lengths. This information - is now computed in Key_List::Read_Keys, and thus - Key_List::Print_Min_Max doesn't need to bother. - - * Modifed the key position iterator scheme in options.cc to - eliminate the need for member function Options::Advance. - Now, the Options::Get function performs the advancement - automatically, obviating the need for an extra function call. - - * Added the new function Options::Print_Options, to print out - the user-specified command line options to generated C - output file. - - * Added a new function, Key_List::Print_Keylength_Table, - which creates a table of lengths for use in speeding - up the keyword search. This also meant that a new - option, -l (LENTABLE) is recognized. It controls - whether the length table is printed and the comparison - made in the generated function ``in_word_set.'' - - * Added a comment at the top of the generated C code - output file that tells what version of gperf was used. - Next, I'll also dump out the command line options - as a comment too. Thanks to Michael Tiemann for the - feedback on this. - - * Fixed the -n option to make it work correctly with - other parts of the program (most notably the Perfect::Hash - function and the computation of minimum and maximum lengths. - -Fri Jan 13 21:25:27 1989 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Realized the the need to add a test that will enable - optimziation of the generated C code in the ``hash'' function - by checking whether all the requested key positions are - guaranteed to exist due to the comparison in `in_word_set.'' - I'll put this in soon.... - -Thu Jan 12 20:09:21 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added pascal, modula3, and modula2 tests inputs to the - Makefile - - * Recognised that there is a bug with the -n option. However - I'm too busy to fix it properly, right now. The problem - is that the generated #define end up being 0, since that's - my hack to make -n work. This needs complete rethinking! - -Tue Jan 10 00:08:16 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Added a new option, -n, that instructs gperf to not use the - length of an identifier when computing the hash functions. - I'm not sure how useful this is! - - * Retransmitted the distribution to rocky.oswego.edu. Hopefully, - this will work! - - * Began fixing the indentation and capitalization to conform - to the GNU coding guidelines. - -Mon Jan 9 22:23:18 1989 Doug Schmidt (schmidt at pompe.ics.uci.edu) - - * Fixed horrible bug in Read_Line::Readln_Aux. This was - a subtle and pernicous off-by-1 error, that overwrote - past the last character of the input string buffer. I - think this fault was killing the vax! - - * Yow, fixed an oversight in List_Node::List_Node, where the - pointer field Next was uninitialized. Luckily, the new routine - seems to return 0 filled objects the first time through! - -Sun Jan 8 13:43:14 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Modified the ``key linked'' diagnostic in Key_List::Read_Keys - to be more helpful and easy to read. - - * Fixed the List_Node::List_Node so that it would ignore trailing - fields if the -t option was not enabled. - - * Moved the List_Node declarations out of keylist.h and - into a file of its own, called listnode.cc and listnode.h - Made Set_Sort a member function of class List_Node. - - * Massively updated the documentation in the gperf.texinfo file. - - * Polished off the major revision to the print functions, - added a few new tests in the Makefile to check for the - validity of the program and ftp'ed the entire distribution - off to Doug Lea for libg++. ( changed it to - 1.3 to reflect the major changes with the generated - C code ). - - * Fixed Key_List::Print_Switch to deal with the -p and -t options. - This meant that the ``still-born'' function Key_List:: - Print_Type_Switch was superflous, so I removed it. - Also, removed the restriction in Option that the -p and - -t options couldn't be used simultaneously. - - * Modified List_Node::List_Node, to perform only 1 call to - ``new'' when dynamically allocating memory for the Key_Set - and the Uniq_Set. - -Sat Jan 7 14:10:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed a big bug with the new policy of nesting the - wordlist inside of generated function ``in_word_set.'' - I'd forgotten to declare the wordlist array as static! - ( arrgh ). - - * Added a new function Key_List::Set_Types, that figures out - the return type for generated function ``in_word_set,'' - the user-defined ``struct tag,'' if one is used, and also - formates the array type for the static local array. - - * Changed the print routines to take advantage of the - new -p option. - - * Began adding the hooks to allow the return of a pointer - to a user defined struct location from the generated - ``in_word_set'' function instead of the current 0 or 1 - return value. Created function Key_List::Print_Type_Switch - and added option -p to class Option, allowing the user to - request generation of the aforementioned pointers returned - instead of booleans. - - * Put in checks in class Option to make sure that -S and -t - options are not used simultaneously. This restriction - will be removed in subsequent releases, once I decide on - a clean way to implement it. - - * Sent version 1.2 to Doug Lea for possible inclusion into - the libg++ distribution. - - * Moved the static word_list array inside the generated function - in_word_set. This supports better data hiding. - - * Added a texinfo file, gperf.texinfo - - * Revised the Makefile to cleanup the droppings from texinfo - and changed the name of gperf.cc and gperf.h to perfect.cc - and perfect.h. - -Fri Jan 6 13:04:45 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Implemented the switch statement output format. Much better - for large datasets in terms of space used. - - * Added new functions to break up the Key_List::Output function. - Functions added were Key_List::Print_Switch, - Key_List::Print_Min_Max, Key_List::Print_Keyword_Table, - Key_List::Print_Hash_Function, and - Key_List::Print_Lookup_Function. This simplifies the big mess - in Key_List::Output considerably! - - * Added switch statement option to Options, which potentially - trades time for space in the generated lookup code. - -Thu Jan 5 22:46:34 1989 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Released version 1.1 - - * Fixed a bug with Gperf::Merge_Set, it was skipping letters - shared between the Set_1 and Set_2. - - * Added the optimal min/max algorithm in Key_List::Output. This - runs in O (3n/2), rather than O (2n) time. - - * Changed Gperf::Sort_Set to use insertion sort, rather than - bubble sort. - - * Added a check in Key_List::Output for the special case where - the keys used are 1,$. It is possible to generate more - efficient C code in this case. diff --git a/apps/gperf/Makefile b/apps/gperf/Makefile deleted file mode 100644 index efc98915cc0..00000000000 --- a/apps/gperf/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for the Orbix applications -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- -# Local macros -#---------------------------------------------------------------------------- - -INFO = README - -DIRS = src \ - tests - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nolocal.GNU - diff --git a/apps/gperf/README b/apps/gperf/README deleted file mode 100644 index 956db3e570f..00000000000 --- a/apps/gperf/README +++ /dev/null @@ -1,28 +0,0 @@ -While teaching a data structures course at University of California, -Irvine, I developed a program called GPERF that generates perfect hash -functions for sets of key words. A perfect hash function is simply: - - A hash function and a data structure that allows - recognition of a key word in a set of words using - exactly 1 probe into the data structure. - -The gperf.texinfo file explains how the program works, the form of the -input, what options are available, and hints on choosing the best -options for particular key word sets. The texinfo file is readable -both via the GNU emacs `info' command, and is also suitable for -typesetting with TeX. - -The enclosed Makefile creates the executable program ``gperf'' and -also runs some tests. - -Output from the GPERF program is used to recognize reserved words in -the GNU C, GNU C++, and GNU Pascal compilers, as well as with the GNU -indent program. - -For more information on GPERF, please see - -http://www.cs.wustl.edu/~schmidt/C++-USENIX-90.ps.gz - -Happy hacking! - -Douglas C. Schmidt diff --git a/apps/gperf/gperf.1 b/apps/gperf/gperf.1 deleted file mode 100644 index 5673c80062a..00000000000 --- a/apps/gperf/gperf.1 +++ /dev/null @@ -1,23 +0,0 @@ -.TH GPERF 1 "December 16, 1988 -.UC 4 -.SH NAME -gperf \- generate a perfect hash function from a key set -.SH SYNOPSIS -.B gperf -[ -.B \-adghijklnoprsStv -] [ -.I keyfile -] -.SH DESCRIPTION - -\fIgperf\fP reads a set of ``keys'' from \fIkeyfile\fP (or, by -default, from the standard input) and attempts to find a non-minimal -perfect hashing function that recognizes a member of the key set in -constant, i.e., O(1), time. If such a function is found the program -generates a pair of \fIC\fP source code routines that perform the -hashing and table lookup. All generated code is directed to the -standard output. - -Please refer to the \fIgperf.texinfo\fP file for more information. -This file is distributed with \fIgperf\fP release. diff --git a/apps/gperf/gperf.info b/apps/gperf/gperf.info deleted file mode 100644 index a0947230573..00000000000 --- a/apps/gperf/gperf.info +++ /dev/null @@ -1,1127 +0,0 @@ -This is Info file gperf.info, produced by Makeinfo-1.55 from the input -file ./gperf.texi. - -START-INFO-DIR-ENTRY -* Gperf: (gperf). Perfect Hash Function Generator. -END-INFO-DIR-ENTRY - - This file documents the features of the GNU Perfect Hash Function -Generator - - Copyright (C) 1989 Free Software Foundation, Inc. - - Permission is granted to make and distribute verbatim copies of this -manual provided the copyright notice and this permission notice are -preserved on all copies. - - Permission is granted to copy and distribute modified versions of -this manual under the conditions for verbatim copying, provided also -that the section entitled "GNU General Public License" is included -exactly as in the original, and provided that the entire resulting -derived work is distributed under the terms of a permission notice -identical to this one. - - Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that the section entitled "GNU `gperf' General Public -License" an d this permission notice may be included in translations -approved by the Free Software Foundation instead of in the original -English. - - -File: gperf.info, Node: Top, Next: Copying, Prev: (dir), Up: (dir) - -Introduction -************ - - This manual documents the GNU `gperf' perfect hash function generator -utility, focusing on its features and how to use them, and how to report -bugs. - -* Menu: - -* Copying:: GNU `gperf' General Public License says - how you can copy and share `gperf'. -* Contributors:: People who have contributed to `gperf'. -* Motivation:: Static search structures and GNU GPERF. -* Search Structures:: Static search structures and GNU `gperf' -* Description:: High-level discussion of how GPERF functions. -* Options:: A description of options to the program. -* Bugs:: Known bugs and limitations with GPERF. -* Projects:: Things still left to do. -* Implementation:: Implementation Details for GNU GPERF. -* Bibliography:: Material Referenced in this Report. - - -- The Detailed Node Listing -- - -High-Level Description of GNU `gperf' - -* Input Format:: Input Format to `gperf' -* Output Format:: Output Format for Generated C Code with `gperf' - -Input Format to `gperf' - -* Declarations:: `struct' Declarations and C Code Inclusion. -* Keywords:: Format for Keyword Entries. -* Functions:: Including Additional C Functions. - - -File: gperf.info, Node: Copying, Next: Contributors, Prev: Top, Up: Top - -GNU GENERAL PUBLIC LICENSE -************************** - - Version 1, February 1989 - - Copyright (C) 1989 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, USA - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -Preamble -======== - - The license agreements of most software companies try to keep users -at the mercy of those companies. By contrast, our General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. The -General Public License applies to the Free Software Foundation's -software and to any other program whose authors commit to using it. -You can use it for your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Specifically, the General Public License is designed to make -sure that you have the freedom to give away or sell copies of free -software, that you receive source code or can get it if you want it, -that you can change the software or use pieces of it in new free -programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of a such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must tell them their rights. - - We protect your rights with two steps: (1) copyright the software, -and (2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 1. This License Agreement applies to any program or other work which - contains a notice placed by the copyright holder saying it may be - distributed under the terms of this General Public License. The - "Program", below, refers to any such program or work, and a "work - based on the Program" means either the Program or any work - containing the Program or a portion of it, either verbatim or with - modifications. Each licensee is addressed as "you". - - 2. You may copy and distribute verbatim copies of the Program's source - code as you receive it, in any medium, provided that you - conspicuously and appropriately publish on each copy an - appropriate copyright notice and disclaimer of warranty; keep - intact all the notices that refer to this General Public License - and to the absence of any warranty; and give any other recipients - of the Program a copy of this General Public License along with - the Program. You may charge a fee for the physical act of - transferring a copy. - - 3. You may modify your copy or copies of the Program or any portion of - it, and copy and distribute such modifications under the terms of - Paragraph 1 above, provided that you also do the following: - - * cause the modified files to carry prominent notices stating - that you changed the files and the date of any change; and - - * cause the whole of any work that you distribute or publish, - that in whole or in part contains the Program or any part - thereof, either with or without modifications, to be licensed - at no charge to all third parties under the terms of this - General Public License (except that you may choose to grant - warranty protection to some or all third parties, at your - option). - - * If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the simplest and most usual way, to print - or display an announcement including an appropriate copyright - notice and a notice that there is no warranty (or else, - saying that you provide a warranty) and that users may - redistribute the program under these conditions, and telling - the user how to view a copy of this General Public License. - - * You may charge a fee for the physical act of transferring a - copy, and you may at your option offer warranty protection in - exchange for a fee. - - Mere aggregation of another independent work with the Program (or - its derivative) on a volume of a storage or distribution medium - does not bring the other work under the scope of these terms. - - 4. You may copy and distribute the Program (or a portion or - derivative of it, under Paragraph 2) in object code or executable - form under the terms of Paragraphs 1 and 2 above provided that you - also do one of the following: - - * accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of - Paragraphs 1 and 2 above; or, - - * accompany it with a written offer, valid for at least three - years, to give any third party free (except for a nominal - charge for the cost of distribution) a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Paragraphs 1 and 2 above; or, - - * accompany it with the information you received as to where the - corresponding source code may be obtained. (This alternative - is allowed only for noncommercial distribution and only if you - received the program in object code or executable form alone.) - - Source code for a work means the preferred form of the work for - making modifications to it. For an executable file, complete - source code means all the source code for all modules it contains; - but, as a special exception, it need not include source code for - modules which are standard libraries that accompany the operating - system on which the executable file runs, or for standard header - files or definitions files that accompany that operating system. - - 5. You may not copy, modify, sublicense, distribute or transfer the - Program except as expressly provided under this General Public - License. Any attempt otherwise to copy, modify, sublicense, - distribute or transfer the Program is void, and will automatically - terminate your rights to use the Program under this License. - However, parties who have received copies, or rights to use - copies, from you under this General Public License will not have - their licenses terminated so long as such parties remain in full - compliance. - - 6. By copying, distributing or modifying the Program (or any work - based on the Program) you indicate your acceptance of this license - to do so, and all its terms and conditions. - - 7. Each time you redistribute the Program (or any work based on the - Program), the recipient automatically receives a license from the - original licensor to copy, distribute or modify the Program - subject to these terms and conditions. You may not impose any - further restrictions on the recipients' exercise of the rights - granted herein. - - 8. The Free Software Foundation may publish revised and/or new - versions of the General Public License from time to time. Such - new versions will be similar in spirit to the present version, but - may differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the - Program specifies a version number of the license which applies to - it and "any later version", you have the option of following the - terms and conditions either of that version or of any later - version published by the Free Software Foundation. If the Program - does not specify a version number of the license, you may choose - any version ever published by the Free Software Foundation. - - 9. If you wish to incorporate parts of the Program into other free - programs whose distribution conditions are different, write to the - author to ask for permission. For software which is copyrighted - by the Free Software Foundation, write to the Free Software - Foundation; we sometimes make exceptions for this. Our decision - will be guided by the two goals of preserving the free status of - all derivatives of our free software and of promoting the sharing - and reuse of software generally. - - NO WARRANTY - - 10. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO - WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE - LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT - HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT - WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT - NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE - QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE - PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY - SERVICING, REPAIR OR CORRECTION. - - 11. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN - WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY - MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE - LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, - INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR - INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF - DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU - OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY - OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -Appendix: How to Apply These Terms to Your New Programs -======================================================= - - If you develop a new program, and you want it to be of the greatest -possible use to humanity, the best way to achieve this is to make it -free software which everyone can redistribute and change under these -terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. - Copyright (C) 19YY NAME OF AUTHOR - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 1, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - Also add information on how to contact you by electronic and paper -mail. - - If the program is interactive, make it output a short notice like -this when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - - The hypothetical commands `show w' and `show c' should show the -appropriate parts of the General Public License. Of course, the -commands you use may be called something other than `show w' and `show -c'; they could even be mouse-clicks or menu items--whatever suits your -program. - - You should also get your employer (if you work as a programmer) or -your school, if any, to sign a "copyright disclaimer" for the program, -if necessary. Here a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - program `Gnomovision' (a program to direct compilers to make passes - at assemblers) written by James Hacker. - - SIGNATURE OF TY COON, 1 April 1989 - Ty Coon, President of Vice - - That's all there is to it! - - -File: gperf.info, Node: Contributors, Next: Motivation, Prev: Copying, Up: Top - -Contributors to GNU `gperf' Utility -*********************************** - - * The GNU `gperf' perfect hash function generator utility was - originally written in GNU C++ by Douglas C. Schmidt. It is now - also available in a highly-portable "old-style" C version. The - general idea for the perfect hash function generator was inspired - by Keith Bostic's algorithm written in C, and distributed to - net.sources around 1984. The current program is a heavily - modified, enhanced, and extended implementation of Keith's basic - idea, created at the University of California, Irvine. Bugs, - patches, and suggestions should be reported to schmidt at - ics.uci.edu. - - * Special thanks is extended to Michael Tiemann and Doug Lea, for - providing a useful compiler, and for giving me a forum to exhibit - my creation. - - In addition, Adam de Boor and Nels Olson provided many tips and - insights that greatly helped improve the quality and functionality - of `gperf'. - - -File: gperf.info, Node: Motivation, Next: Search Structures, Prev: Contributors, Up: Top - -Introduction -************ - - `gperf' is a perfect hash function generator written in C++. It -transforms an *n* element user-specified keyword set *W* into a perfect -hash function *F*. *F* uniquely maps keywords in *W* onto the range -0..*k*, where *k* >= *n*. If *k = n* then *F* is a *minimal* perfect -hash function. `gperf' generates a 0..*k* element static lookup table -and a pair of C functions. These functions determine whether a given -character string *s* occurs in *W*, using at most one probe into the -lookup table. - - `gperf' currently generates the reserved keyword recognizer for -lexical analyzers in several production and research compilers and -language processing tools, including GNU C, GNU C++, GNU Pascal, GNU -Modula 3, and GNU indent. Complete C++ source code for `gperf' is -available via anonymous ftp from ics.uci.edu. `gperf' also is -distributed along with the GNU libg++ library. A highly portable, -functionally equivalent K&R C version of `gperf' is archived in -comp.sources.unix, volume 20. Finally, a paper describing `gperf''s -design and implementation in greater detail is available in the Second -USENIX C++ Conference proceedings. - - -File: gperf.info, Node: Search Structures, Next: Description, Prev: Motivation, Up: Top - -Static search structures and GNU `gperf' -**************************************** - - A "static search structure" is an Abstract Data Type with certain -fundamental operations, *e.g.*, *initialize*, *insert*, and *retrieve*. -Conceptually, all insertions occur before any retrievals. In -practice, `gperf' generates a `static' array containing search set -keywords and any associated attributes specified by the user. Thus, -there is essentially no execution-time cost for the insertions. It is -a useful data structure for representing *static search sets*. Static -search sets occur frequently in software system applications. Typical -static search sets include compiler reserved words, assembler -instruction opcodes, and built-in shell interpreter commands. Search -set members, called "keywords", are inserted into the structure only -once, usually during program initialization, and are not generally -modified at run-time. - - Numerous static search structure implementations exist, *e.g.*, -arrays, linked lists, binary search trees, digital search tries, and -hash tables. Different approaches offer trade-offs between space -utilization and search time efficiency. For example, an *n* element -sorted array is space efficient, though the average-case time -complexity for retrieval operations using binary search is proportional -to log *n*. Conversely, hash table implementations often locate a -table entry in constant time, but typically impose additional memory -overhead and exhibit poor worst case performance. - - *Minimal perfect hash functions* provide an optimal solution for a -particular class of static search sets. A minimal perfect hash -function is defined by two properties: - - * It allows keyword recognition in a static search set using at most - *one* probe into the hash table. This represents the "perfect" - property. - - * The actual memory allocated to store the keywords is precisely - large enough for the keyword set, and *no larger*. This is the - "minimal" property. - - For most applications it is far easier to generate *perfect* hash -functions than *minimal perfect* hash functions. Moreover, non-minimal -perfect hash functions frequently execute faster than minimal ones in -practice. This phenomena occurs since searching a sparse keyword table -increases the probability of locating a "null" entry, thereby reducing -string comparisons. `gperf''s default behavior generates -*near-minimal* perfect hash functions for keyword sets. However, -`gperf' provides many options that permit user control over the degree -of minimality and perfection. - - Static search sets often exhibit relative stability over time. For -example, Ada's 63 reserved words have remained constant for nearly a -decade. It is therefore frequently worthwhile to expend concerted -effort building an optimal search structure *once*, if it subsequently -receives heavy use multiple times. `gperf' removes the drudgery -associated with constructing time- and space-efficient search -structures by hand. It has proven a useful and practical tool for -serious programming projects. Output from `gperf' is currently used in -several production and research compilers, including GNU C, GNU C++, -GNU Pascal, and GNU Modula 3. The latter two compilers are not yet -part of the official GNU distribution. Each compiler utilizes `gperf' -to automatically generate static search structures that efficiently -identify their respective reserved keywords. - - -File: gperf.info, Node: Description, Next: Options, Prev: Search Structures, Up: Top - -High-Level Description of GNU `gperf' -************************************* - -* Menu: - -* Input Format:: Input Format to `gperf' -* Output Format:: Output Format for Generated C Code with `gperf' - - The perfect hash function generator `gperf' reads a set of -"keywords" from a "keyfile" (or from the standard input by default). -It attempts to derive a perfect hashing function that recognizes a -member of the "static keyword set" with at most a single probe into the -lookup table. If `gperf' succeeds in generating such a function it -produces a pair of C source code routines that perform hashing and -table lookup recognition. All generated C code is directed to the -standard output. Command-line options described below allow you to -modify the input and output format to `gperf'. - - By default, `gperf' attempts to produce time-efficient code, with -less emphasis on efficient space utilization. However, several options -exist that permit trading-off execution time for storage space and vice -versa. In particular, expanding the generated table size produces a -sparse search structure, generally yielding faster searches. -Conversely, you can direct `gperf' to utilize a C `switch' statement -scheme that minimizes data space storage size. Furthermore, using a C -`switch' may actually speed up the keyword retrieval time somewhat. -Actual results depend on your C compiler, of course. - - In general, `gperf' assigns values to the characters it is using for -hashing until some set of values gives each keyword a unique value. A -helpful heuristic is that the larger the hash value range, the easier -it is for `gperf' to find and generate a perfect hash function. -Experimentation is the key to getting the most from `gperf'. - - -File: gperf.info, Node: Input Format, Next: Output Format, Prev: Description, Up: Description - -Input Format to `gperf' -======================= - - You can control the input keyfile format by varying certain -command-line arguments, in particular the `-t' option. The input's -appearance is similar to GNU utilities `flex' and `bison' (or UNIX -utilities `lex' and `yacc'). Here's an outline of the general format: - - declarations - %% - keywords - %% - functions - - *Unlike* `flex' or `bison', all sections of `gperf''s input are -optional. The following sections describe the input format for each -section. - -* Menu: - -* Declarations:: `struct' Declarations and C Code Inclusion. -* Keywords:: Format for Keyword Entries. -* Functions:: Including Additional C Functions. - - -File: gperf.info, Node: Declarations, Next: Keywords, Prev: Input Format, Up: Input Format - -`struct' Declarations and C Code Inclusion ------------------------------------------- - - The keyword input file optionally contains a section for including -arbitrary C declarations and definitions, as well as provisions for -providing a user-supplied `struct'. If the `-t' option *is* enabled, -you *must* provide a C `struct' as the last component in the -declaration section from the keyfile file. The first field in this -struct must be a `char *' identifier called "name," although it is -possible to modify this field's name with the `-K' option described -below. - - Here is simple example, using months of the year and their -attributes as input: - - struct months { char *name; int number; int days; int leap_days; }; - %% - january, 1, 31, 31 - february, 2, 28, 29 - march, 3, 31, 31 - april, 4, 30, 30 - may, 5, 31, 31 - june, 6, 30, 30 - july, 7, 31, 31 - august, 8, 31, 31 - september, 9, 30, 30 - october, 10, 31, 31 - november, 11, 30, 30 - december, 12, 31, 31 - - Separating the `struct' declaration from the list of key words and -other fields are a pair of consecutive percent signs, `%%', appearing -left justified in the first column, as in the UNIX utility `lex'. - - Using a syntax similar to GNU utilities `flex' and `bison', it is -possible to directly include C source text and comments verbatim into -the generated output file. This is accomplished by enclosing the region -inside left-justified surrounding `%{', `%}' pairs. Here is an input -fragment based on the previous example that illustrates this feature: - - %{ - #include <assert.h> - /* This section of code is inserted directly into the output. */ - int return_month_days (struct months *months, int is_leap_year); - %} - struct months { char *name; int number; int days; int leap_days; }; - %% - january, 1, 31, 31 - february, 2, 28, 29 - march, 3, 31, 31 - ... - - It is possible to omit the declaration section entirely. In this -case the keyfile begins directly with the first keyword line, *e.g.*: - - january, 1, 31, 31 - february, 2, 28, 29 - march, 3, 31, 31 - april, 4, 30, 30 - ... - - -File: gperf.info, Node: Keywords, Next: Functions, Prev: Declarations, Up: Input Format - -Format for Keyword Entries --------------------------- - - The second keyfile format section contains lines of keywords and any -associated attributes you might supply. A line beginning with `#' in -the first column is considered a comment. Everything following the `#' -is ignored, up to and including the following newline. - - The first field of each non-comment line is always the key itself. -It should be given as a simple name, *i.e.*, without surrounding string -quotation marks, and be left-justified flush against the first column. -In this context, a "field" is considered to extend up to, but not -include, the first blank, comma, or newline. Here is a simple example -taken from a partial list of C reserved words: - - # These are a few C reserved words, see the c.`gperf' file - # for a complete list of ANSI C reserved words. - unsigned - sizeof - switch - signed - if - default - for - while - return - - Note that unlike `flex' or `bison' the first `%%' marker may be -elided if the declaration section is empty. - - Additional fields may optionally follow the leading keyword. Fields -should be separated by commas, and terminate at the end of line. What -these fields mean is entirely up to you; they are used to initialize the -elements of the user-defined `struct' provided by you in the -declaration section. If the `-t' option is *not* enabled these fields -are simply ignored. All previous examples except the last one contain -keyword attributes. - - -File: gperf.info, Node: Functions, Prev: Keywords, Up: Input Format - -Including Additional C Functions --------------------------------- - - The optional third section also corresponds closely with conventions -found in `flex' and `bison'. All text in this section, starting at the -final `%%' and extending to the end of the input file, is included -verbatim into the generated output file. Naturally, it is your -responsibility to ensure that the code contained in this section is -valid C. - - -File: gperf.info, Node: Output Format, Prev: Input Format, Up: Description - -Output Format for Generated C Code with `gperf' -=============================================== - - Several options control how the generated C code appears on the -standard output. Two C function are generated. They are called `hash' -and `in_word_set', although you may modify the name for `in_word_set' -with a command-line option. Both functions require two arguments, a -string, `char *' STR, and a length parameter, `int' LEN. Their default -function prototypes are as follows: - - static int hash (char *str, int len); - int in_word_set (char *str, int len); - - By default, the generated `hash' function returns an integer value -created by adding LEN to several user-specified STR key positions -indexed into an "associated values" table stored in a local static -array. The associated values table is constructed internally by -`gperf' and later output as a static local C array called HASH_TABLE; -its meaning and properties are described below. *Note -Implementation::. The relevant key positions are specified via the `-k' -option when running `gperf', as detailed in the *Options* section -below. *Note Options::. - - Two options, `-g' (assume you are compiling with GNU C and its -`inline' feature) and `-a' (assume ANSI C-style function prototypes), -alter the content of both the generated `hash' and `in_word_set' -routines. However, function `in_word_set' may be modified more -extensively, in response to your option settings. The options that -affect the `in_word_set' structure are: - - `-p' - Have function `in_word_set' return a pointer rather than a - boolean. - - `-t' - Make use of the user-defined `struct'. - - `-S TOTAL SWITCH STATEMENTS' - Generate 1 or more C `switch' statement rather than use a - large, (and potentially sparse) static array. Although the - exact time and space savings of this approach vary according - to your C compiler's degree of optimization, this method - often results in smaller and faster code. - - If the `-t', `-S', and `-p' options are omitted the default action -is to generate a `char *' array containing the keys, together with -additional null strings used for padding the array. By experimenting -with the various input and output options, and timing the resulting C -code, you can determine the best option choices for different keyword -set characteristics. - - -File: gperf.info, Node: Options, Next: Bugs, Prev: Description, Up: Top - -Options to the `gperf' Utility -****************************** - - There are *many* options to `gperf'. They were added to make the -program more convenient for use with real applications. "On-line" help -is readily available via the `-h' option. Other options include: - - `-a' - Generate ANSI Standard C code using function prototypes. The - default is to use "classic" K&R C function declaration syntax. - - `-c' - Generates C code that uses the `strncmp' function to perform - string comparisons. The default action is to use `strcmp'. - - `-C' - Makes the contents of all generated lookup tables constant, - *i.e.*, "readonly." Many compilers can generate more - efficient code for this by putting the tables in readonly - memory. - - `-d' - Enables the debugging option. This produces verbose - diagnostics to "standard error" when `gperf' is executing. - It is useful both for maintaining the program and for - determining whether a given set of options is actually - speeding up the search for a solution. Some useful - information is dumped at the end of the program when the `-d' - option is enabled. - - `-D' - Handle keywords whose key position sets hash to duplicate - values. Duplicate hash values occur for two reasons: - - * Since `gperf' does not backtrack it is possible for it - to process all your input keywords without finding a - unique mapping for each word. However, frequently only - a very small number of duplicates occur, and the - majority of keys still require one probe into the table. - - * Sometimes a set of keys may have the same names, but - possess different attributes. With the -D option - `gperf' treats all these keys as part of an equivalence - class and generates a perfect hash function with multiple - comparisons for duplicate keys. It is up to you to - completely disambiguate the keywords by modifying the - generated C code. However, `gperf' helps you out by - organizing the output. - - Option `-D' is extremely useful for certain large or highly - redundant keyword sets, *i.e.*, assembler instruction opcodes. - Using this option usually means that the generated hash - function is no longer perfect. On the other hand, it permits - `gperf' to work on keyword sets that it otherwise could not - handle. - - `-e KEYWORD DELIMITER LIST' - Allows the user to provide a string containing delimiters - used to separate keywords from their attributes. The default - is ",\n". This option is essential if you want to use - keywords that have embedded commas or newlines. One useful - trick is to use -e'TAB', where TAB is the literal tab - character. - - `-E' - Define constant values using an enum local to the lookup - function rather than with #defines. This also means that - different lookup functions can reside in the same file. - Thanks to James Clark (jjc at ai.mit.edu). - - `-f ITERATION AMOUNT' - Generate the perfect hash function "fast." This decreases - `gperf''s running time at the cost of minimizing generated - table-size. The iteration amount represents the number of - times to iterate when resolving a collision. `0' means - `iterate by the number of keywords. This option is probably - most useful when used in conjunction with options `-D' and/or - `-S' for *large* keyword sets. - - `-g' - Assume a GNU compiler, *e.g.*, `g++' or `gcc'. This makes - all generated routines use the "inline" keyword to remove the - cost of function calls. Note that `-g' does *not* imply - `-a', since other non-ANSI C compilers may have provisions - for a function `inline' feature. - - `-G' - Generate the static table of keywords as a static global - variable, rather than hiding it inside of the lookup function - (which is the default behavior). - - `-h' - Prints a short summary on the meaning of each program option. - Aborts further program execution. - - `-H HASH FUNCTION NAME' - Allows you to specify the name for the generated hash - function. Default name is `hash.' This option permits the - use of two hash tables in the same file. - - `-i INITIAL VALUE' - Provides an initial VALUE for the associate values array. - Default is 0. Increasing the initial value helps inflate the - final table size, possibly leading to more time efficient - keyword lookups. Note that this option is not particularly - useful when `-S' is used. Also, `-i' is overriden when the - `-r' option is used. - - `-j JUMP VALUE' - Affects the "jump value," *i.e.*, how far to advance the - associated character value upon collisions. JUMP VALUE is - rounded up to an odd number, the default is 5. If the JUMP - VALUE is 0 `gper f' jumps by random amounts. - - `-k KEYS' - Allows selection of the character key positions used in the - keywords' hash function. The allowable choices range between - 1-126, inclusive. The positions are separated by commas, - *e.g.*, `-k 9,4,13,14'; ranges may be used, *e.g.*, `-k 2-7'; - and positions may occur in any order. Furthermore, the - meta-character '*' causes the generated hash function to - consider *all* character positions in each key, whereas '$' - instructs the hash function to use the "final character" of a - key (this is the only way to use a character position greater - than 126, incidentally). - - For instance, the option `-k 1,2,4,6-10,'$'' generates a hash - function that considers positions 1,2,4,6,7,8,9,10, plus the - last character in each key (which may differ for each key, - obviously). Keys with length less than the indicated key - positions work properly, since selected key positions - exceeding the key length are simply not referenced in the - hash function. - - `-K KEY NAME' - By default, the program assumes the structure component - identifier for the keyword is "name." This option allows an - arbitrary choice of identifier for this component, although - it still must occur as the first field in your supplied - `struct'. - - `-l' - Compare key lengths before trying a string comparison. This - might cut down on the number of string comparisons made - during the lookup, since keys with different lengths are - never compared via `strcmp'. However, using `-l' might - greatly increase the size of the generated C code if the - lookup table range is large (which implies that the switch - option `-S' is not enabled), since the length table contains - as many elements as there are entries in the lookup table. - - `-L GENERATED LANGUAGE NAME' - Instructs `gperf' to generate code in the language specified - by the option's argument. Languages handled are currently - C++ and C. The default is C. - - `-n' - Instructs the generator not to include the length of a - keyword when computing its hash value. This may save a few - assembly instructions in the generated lookup table. - - `-N LOOKUP FUNCTION NAME' - Allows you to specify the name for the generated lookup - function. Default name is `in_word_set.' This option - permits completely automatic generation of perfect hash - functions, especially when multiple generated hash functions - are used in the same application. - - `-o' - Reorders the keywords by sorting the keywords so that - frequently occuring key position set components appear first. - A second reordering pass follows so that keys with "already - determined values" are placed towards the front of the - keylist. This may decrease the time required to generate a - perfect hash function for many keyword sets, and also produce - more minimal perfect hash functions. The reason for this is - that the reordering helps prune the search time by handling - inevitable collisions early in the search process. On the - other hand, if the number of keywords is *very* large using - `-o' may *increase* `gperf''s execution time, since - collisions will begin earlier and continue throughout the - remainder of keyword processing. See Cichelli's paper from - the January 1980 Communications of the ACM for details. - - `-p' - Changes the return value of the generated function - `in_word_set' from boolean (*i.e.*, 0 or 1), to either type - "pointer to user-defined struct," (if the `-t' option is - enabled), or simply to `char *', if `-t' is not enabled. - This option is most useful when the `-t' option (allowing - user-defined structs) is used. For example, it is possible - to automatically generate the GNU C reserved word lookup - routine with the options `-p' and `-t'. - - `-r' - Utilizes randomness to initialize the associated values - table. This frequently generates solutions faster than using - deterministic initialization (which starts all associated - values at 0). Furthermore, using the randomization option - generally increases the size of the table. If `gperf' has - difficultly with a certain keyword set try using `-r' or `-D'. - - `-s SIZE-MULTIPLE' - Affects the size of the generated hash table. The numeric - argument for this option indicates "how many times larger or - smaller" the maximum associated value range should be, in - relationship to the number of keys. If the SIZE-MULTIPLE is - negative the maximum associated value is calculated by - *dividing* it into the total number of keys. For example, a - value of 3 means "allow the maximum associated value to be - about 3 times larger than the number of input keys." - - Conversely, a value of -3 means "allow the maximum associated - value to be about 3 times smaller than the number of input - keys." Negative values are useful for limiting the overall - size of the generated hash table, though this usually - increases the number of duplicate hash values. - - If `generate switch' option `-S' is *not* enabled, the maximum - associated value influences the static array table size, and - a larger table should decrease the time required for an - unsuccessful search, at the expense of extra table space. - - The default value is 1, thus the default maximum associated - value about the same size as the number of keys (for - efficiency, the maximum associated value is always rounded up - to a power of 2). The actual table size may vary somewhat, - since this technique is essentially a heuristic. In - particular, setting this value too high slows down `gperf''s - runtime, since it must search through a much larger range of - values. Judicious use of the `-f' option helps alleviate this - overhead, however. - - `-S TOTAL SWITCH STATEMENTS' - Causes the generated C code to use a `switch' statement - scheme, rather than an array lookup table. This can lead to - a reduction in both time and space requirements for some - keyfiles. The argument to this option determines how many - `switch' statements are generated. A value of 1 generates 1 - `switch' containing all the elements, a value of 2 generates - 2 tables with 1/2 the elements in each `switch', etc. This - is useful since many C compilers cannot correctly generate - code for large `switch' statements. This option was inspired - in part by Keith Bostic's original C program. - - `-t' - Allows you to include a `struct' type declaration for - generated code. Any text before a pair of consecutive %% is - consider part of the type declaration. Key words and - additional fields may follow this, one group of fields per - line. A set of examples for generating perfect hash tables - and functions for Ada, C, and G++, Pascal, and Modula 2 and 3 - reserved words are distributed with this release. - - `-T' - Prevents the transfer of the type declaration to the output - file. Use this option if the type is already defined - elsewhere. - - `-v' - Prints out the current version number. - - `-Z CLASS NAME' - Allow user to specify name of generated C++ class. Default - name is `Perfect_Hash'. - - -File: gperf.info, Node: Bugs, Next: Projects, Prev: Options, Up: Top - -Known Bugs and Limitations with `gperf' -*************************************** - - The following are some limitations with the current release of -`gperf': - - * The `gperf' utility is tuned to execute quickly, and works quickly - for small to medium size data sets (around 1000 keywords). It is - extremely useful for maintaining perfect hash functions for - compiler keyword sets. Several recent enhancements now enable - `gperf' to work efficiently on much larger keyword sets (over - 15,000 keywords). When processing large keyword sets it helps - greatly to have over 8 megs of RAM. - - However, since `gperf' does not backtrack no guaranteed solution - occurs on every run. On the other hand, it is usually easy to - obtain a solution by varying the option parameters. In - particular, try the `-r' option, and also try changing the default - arguments to the `-s' and `-j' options. To *guarantee* a - solution, use the `-D' and `-S' options, although the final - results are not likely to be a *perfect* hash function anymore! - Finally, use the `-f' option if you want `gperf' to generate the - perfect hash function *fast*, with less emphasis on making it - minimal. - - * The size of the generate static keyword array can get *extremely* - large if the input keyword file is large or if the keywords are - quite similar. This tends to slow down the compilation of the - generated C code, and *greatly* inflates the object code size. If - this situation occurs, consider using the `-S' option to reduce - data size, potentially increasing keyword recognition time a - negligible amount. Since many C compilers cannot correctly - generated code for large switch statements it is important to - qualify the -S option with an appropriate numerical argument that - controls the number of switch statements generated. - - * The maximum number of key positions selected for a given key has an - arbitrary limit of 126. This restriction should be removed, and if - anyone considers this a problem write me and let me know so I can - remove the constraint. - - * The C++ source code only compiles correctly with GNU G++, version - 1.36 (and hopefully later versions). Porting to AT&T cfront would - be tedious, but possible (and desirable). There is also a K&R C - version available now. This should compile without change on most - BSD systems, but may require a bit of work to run on SYSV, since - `gperf' uses ALLOCA in several places. Send mail to schmidt at - ics.uci.edu for information. - - -File: gperf.info, Node: Projects, Next: Implementation, Prev: Bugs, Up: Top - -Things Still Left to Do -*********************** - - It should be "relatively" easy to replace the current perfect hash -function algorithm with a more exhaustive approach; the perfect hash -module is essential independent from other program modules. Additional -worthwhile improvements include: - - * Make the algorithm more robust. At present, the program halts - with an error diagnostic if it can't find a direct solution and - the `-D' option is not enabled. A more comprehensive, albeit - computationally expensive, approach would employ backtracking or - enable alternative options and retry. It's not clear how helpful - this would be, in general, since most search sets are rather small - in practice. - - * Another useful extension involves modifying the program to generate - "minimal" perfect hash functions (under certain circumstances, the - current version can be rather extravagant in the generated table - size). Again, this is mostly of theoretical interest, since a - sparse table often produces faster lookups, and use of the `-S' - `switch' option can minimize the data size, at the expense of - slightly longer lookups (note that the gcc compiler generally - produces good code for `switch' statements, reducing the need for - more complex schemes). - - * In addition to improving the algorithm, it would also be useful to - generate a C++ class or Ada package as the code output, in - addition to the current C routines. - - -File: gperf.info, Node: Implementation, Next: Bibliography, Prev: Projects, Up: Top - -Implementation Details of GNU `gperf' -************************************* - - A paper describing the high-level description of the data structures -and algorithms used to implement `gperf' will soon be available. This -paper is useful not only from a maintenance and enhancement perspective, -but also because they demonstrate several clever and useful programming -techniques, *e.g.*, `Iteration Number' boolean arrays, double hashing, -a "safe" and efficient method for reading arbitrarily long input from a -file, and a provably optimal algorithm for simultaneously determining -both the minimum and maximum elements in a list. - - -File: gperf.info, Node: Bibliography, Prev: Implementation, Up: Top - -Bibliography -************ - - [1] Chang, C.C.: A Scheme for Constructing Ordered Minimal Perfect -Hashing Functions Information Sciences 39(1986), 187-195. - - [2] Cichelli, Richard J. Author's Response to "On Cichelli's Minimal -Perfec t Hash Functions Method" Communications of the ACM, 23, -12(December 1980), 729. - - [3] Cichelli, Richard J. Minimal Perfect Hash Functions Made Simple -Communications of the ACM, 23, 1(January 1980), 17-19. - - [4] Cook, C. R. and Oldehoeft, R.R. A Letter Oriented Minimal -Perfect Hashing Function SIGPLAN Notices, 17, 9(September 1982), 18-27. - - [5] Cormack, G. V. and Horspool, R. N. S. and Kaiserwerth, M. -Practical Perfect Hashing Computer Journal, 28, 1(January 1985), 54-58. - - [6] Jaeschke, G. Reciprocal Hashing: A Method for Generating Minimal -Perfect Hashing Functions Communications of the ACM, 24, 12(December -1981), 829-833. - - [7] Jaeschke, G. and Osterburg, G. On Cichelli's Minimal Perfect -Hash Functions Method Communications of the ACM, 23, 12(December 1980), -728-729. - - [8] Sager, Thomas J. A Polynomial Time Generator for Minimal Perfect -Hash Functions Communications of the ACM, 28, 5(December 1985), 523-532 - - [9] Schmidt, Douglas C. GPERF: A Perfect Hash Function Generator -Second USENIX C++ Conference Proceedings, April 1990. - - [10] Sebesta, R.W. and Taylor, M.A. Minimal Perfect Hash Functions -for Reserved Word Lists SIGPLAN Notices, 20, 12(September 1985), 47-53. - - [11] Sprugnoli, R. Perfect Hashing Functions: A Single Probe -Retrieving Method for Static Sets Communications of the ACM, 20 -11(November 1977), 841-850. - - [12] Stallman, Richard M. Using and Porting GNU CC Free Software -Foundation, 1988. - - [13] Stroustrup, Bjarne The C++ Programming Language. -Addison-Wesley, 1986. - - [14] Tiemann, Michael D. User's Guide to GNU C++ Free Software -Foundation, 1989. - - - -Tag Table: -Node: Top1218 -Node: Copying2456 -Node: Contributors15759 -Node: Motivation16859 -Node: Search Structures18126 -Node: Description21679 -Node: Input Format23499 -Node: Declarations24294 -Node: Keywords26601 -Node: Functions28192 -Node: Output Format28686 -Node: Options31156 -Node: Bugs44526 -Node: Projects47213 -Node: Implementation48790 -Node: Bibliography49509 - -End Tag Table diff --git a/apps/gperf/gperf.texi b/apps/gperf/gperf.texi deleted file mode 100644 index 649d05f7ec6..00000000000 --- a/apps/gperf/gperf.texi +++ /dev/null @@ -1,1184 +0,0 @@ -\input texinfo @c -*-texinfo-*- - -@settitle User's Guide to @code{gperf} -@setfilename gperf.info - -@ifinfo -@format -START-INFO-DIR-ENTRY -* Gperf: (gperf). Perfect Hash Function Generator. -END-INFO-DIR-ENTRY -@end format -@end ifinfo - -@ifinfo -This file documents the features of the GNU Perfect Hash Function Generator - -Copyright (C) 1989 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -@ignore -Permission is granted to process this file through @TeX{} and print the -results, provided the printed document carries copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). - -@end ignore - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that the -section entitled ``GNU General Public License'' is included exactly as -in the original, and provided that the entire resulting derived work is -distributed under the terms of a permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that the section entitled ``GNU @code{gperf} General Public License'' an -d -this permission notice may be included in translations approved by the -Free Software Foundation instead of in the original English. -@end ifinfo - -@setchapternewpage odd - -@titlepage -@center @titlefont{User's Guide} -@sp 2 -@center @titlefont{for the} -@sp 2 -@center @titlefont{GNU GPERF Utility} -@sp 4 -@center Douglas C. Schmidt -@sp 3 -@center last updated 1 November 1989 -@sp 1 -@center for version 2.0 -@page -@vskip 0pt plus 1filll -Copyright @copyright{} 1989 Free Software Foundation, Inc. - - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided also that the -section entitled ``GNU @code{gperf} General Public License'' is included exactl -y as -in the original, and provided that the entire resulting derived work is -distributed under the terms of a permission notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that the section entitled ``GNU @code{gperf} General Public License'' ma -y be -included in a translation approved by the author instead of in the original -English. -@end titlepage - -@ifinfo -@node Top, Copying, (dir), (dir) -@ichapter Introduction - -This manual documents the GNU @code{gperf} perfect hash function generator -utility, focusing on its features and how to use them, and how to report -bugs. - -@end ifinfo -@menu -* Copying:: GNU @code{gperf} General Public License says - how you can copy and share @code{gperf}. -* Contributors:: People who have contributed to @code{gperf}. -* Motivation:: Static search structures and GNU GPERF. -* Search Structures:: Static search structures and GNU @code{gperf} -* Description:: High-level discussion of how GPERF functions. -* Options:: A description of options to the program. -* Bugs:: Known bugs and limitations with GPERF. -* Projects:: Things still left to do. -* Implementation:: Implementation Details for GNU GPERF. -* Bibliography:: Material Referenced in this Report. - - --- The Detailed Node Listing --- - -High-Level Description of GNU @code{gperf} - -* Input Format:: Input Format to @code{gperf} -* Output Format:: Output Format for Generated C Code with @code{gperf} - -Input Format to @code{gperf} - -* Declarations:: @code{struct} Declarations and C Code Inclusion. -* Keywords:: Format for Keyword Entries. -* Functions:: Including Additional C Functions. -@end menu - -@node Copying, Contributors, Top, Top -@unnumbered GNU GENERAL PUBLIC LICENSE -@center Version 1, February 1989 - -@display -Copyright @copyright{} 1989 Free Software Foundation, Inc. -675 Mass Ave, Cambridge, MA 02139, USA - -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. -@end display - -@unnumberedsec Preamble - - The license agreements of most software companies try to keep users -at the mercy of those companies. By contrast, our General Public -License is intended to guarantee your freedom to share and change free -software---to make sure the software is free for all its users. The -General Public License applies to the Free Software Foundation's -software and to any other program whose authors commit to using it. -You can use it for your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Specifically, the General Public License is designed to make -sure that you have the freedom to give away or sell copies of free -software, that you receive source code or can get it if you want it, -that you can change the software or use pieces of it in new free -programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of a such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must tell them their rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - The precise terms and conditions for copying, distribution and -modification follow. - -@iftex -@unnumberedsec TERMS AND CONDITIONS -@end iftex -@ifinfo -@center TERMS AND CONDITIONS -@end ifinfo - -@enumerate -@item -This License Agreement applies to any program or other work which -contains a notice placed by the copyright holder saying it may be -distributed under the terms of this General Public License. The -``Program'', below, refers to any such program or work, and a ``work based -on the Program'' means either the Program or any work containing the -Program or a portion of it, either verbatim or with modifications. Each -licensee is addressed as ``you''. - -@item -You may copy and distribute verbatim copies of the Program's source -code as you receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice and -disclaimer of warranty; keep intact all the notices that refer to this -General Public License and to the absence of any warranty; and give any -other recipients of the Program a copy of this General Public License -along with the Program. You may charge a fee for the physical act of -transferring a copy. - -@item -You may modify your copy or copies of the Program or any portion of -it, and copy and distribute such modifications under the terms of Paragraph -1 above, provided that you also do the following: - -@itemize @bullet -@item -cause the modified files to carry prominent notices stating that -you changed the files and the date of any change; and - -@item -cause the whole of any work that you distribute or publish, that -in whole or in part contains the Program or any part thereof, either -with or without modifications, to be licensed at no charge to all -third parties under the terms of this General Public License (except -that you may choose to grant warranty protection to some or all -third parties, at your option). - -@item -If the modified program normally reads commands interactively when -run, you must cause it, when started running for such interactive use -in the simplest and most usual way, to print or display an -announcement including an appropriate copyright notice and a notice -that there is no warranty (or else, saying that you provide a -warranty) and that users may redistribute the program under these -conditions, and telling the user how to view a copy of this General -Public License. - -@item -You may charge a fee for the physical act of transferring a -copy, and you may at your option offer warranty protection in -exchange for a fee. -@end itemize - -Mere aggregation of another independent work with the Program (or its -derivative) on a volume of a storage or distribution medium does not bring -the other work under the scope of these terms. - -@item -You may copy and distribute the Program (or a portion or derivative of -it, under Paragraph 2) in object code or executable form under the terms of -Paragraphs 1 and 2 above provided that you also do one of the following: - -@itemize @bullet -@item -accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of -Paragraphs 1 and 2 above; or, - -@item -accompany it with a written offer, valid for at least three -years, to give any third party free (except for a nominal charge -for the cost of distribution) a complete machine-readable copy of the -corresponding source code, to be distributed under the terms of -Paragraphs 1 and 2 above; or, - -@item -accompany it with the information you received as to where the -corresponding source code may be obtained. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form alone.) -@end itemize - -Source code for a work means the preferred form of the work for making -modifications to it. For an executable file, complete source code means -all the source code for all modules it contains; but, as a special -exception, it need not include source code for modules which are standard -libraries that accompany the operating system on which the executable -file runs, or for standard header files or definitions files that -accompany that operating system. - -@item -You may not copy, modify, sublicense, distribute or transfer the -Program except as expressly provided under this General Public License. -Any attempt otherwise to copy, modify, sublicense, distribute or transfer -the Program is void, and will automatically terminate your rights to use -the Program under this License. However, parties who have received -copies, or rights to use copies, from you under this General Public -License will not have their licenses terminated so long as such parties -remain in full compliance. - -@item -By copying, distributing or modifying the Program (or any work based -on the Program) you indicate your acceptance of this license to do so, -and all its terms and conditions. - -@item -Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the original -licensor to copy, distribute or modify the Program subject to these -terms and conditions. You may not impose any further restrictions on the -recipients' exercise of the rights granted herein. - -@item -The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of the license which applies to it and ``any -later version'', you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -the license, you may choose any version ever published by the Free Software -Foundation. - -@item -If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - -@iftex -@heading NO WARRANTY -@end iftex -@ifinfo -@center NO WARRANTY -@end ifinfo - -@item -BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -@item -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL -ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES -ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT -LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES -SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE -WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN -ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -@end enumerate - -@iftex -@heading END OF TERMS AND CONDITIONS -@end iftex -@ifinfo -@center END OF TERMS AND CONDITIONS -@end ifinfo - -@page -@unnumberedsec Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to humanity, the best way to achieve this is to make it -free software which everyone can redistribute and change under these -terms. - - To do so, attach the following notices to the program. It is safest to -attach them to the start of each source file to most effectively convey -the exclusion of warranty; and each file should have at least the -``copyright'' line and a pointer to where the full notice is found. - -@smallexample -@var{one line to give the program's name and a brief idea of what it does.} -Copyright (C) 19@var{yy} @var{name of author} - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -@end smallexample - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -@smallexample -Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author} -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. -@end smallexample - -The hypothetical commands `show w' and `show c' should show the -appropriate parts of the General Public License. Of course, the -commands you use may be called something other than `show w' and `show -c'; they could even be mouse-clicks or menu items---whatever suits your -program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a ``copyright disclaimer'' for the program, if -necessary. Here a sample; alter the names: - -@example -Yoyodyne, Inc., hereby disclaims all copyright interest in the -program `Gnomovision' (a program to direct compilers to make passes -at assemblers) written by James Hacker. - -@var{signature of Ty Coon}, 1 April 1989 -Ty Coon, President of Vice -@end example - -That's all there is to it! - -@node Contributors, Motivation, Copying, Top -@unnumbered Contributors to GNU @code{gperf} Utility - -@itemize @bullet -@item -The GNU @code{gperf} perfect hash function generator utility was -originally written in GNU C++ by Douglas C. Schmidt. It is now also -available in a highly-portable ``old-style'' C version. The general -idea for the perfect hash function generator was inspired by Keith -Bostic's algorithm written in C, and distributed to net.sources around -1984. The current program is a heavily modified, enhanced, and extended -implementation of Keith's basic idea, created at the University of -California, Irvine. Bugs, patches, and suggestions should be reported -to schmidt at ics.uci.edu. - -@item -Special thanks is extended to Michael Tiemann and Doug Lea, for -providing a useful compiler, and for giving me a forum to exhibit my -creation. - -In addition, Adam de Boor and Nels Olson provided many tips and insights -that greatly helped improve the quality and functionality of @code{gperf}. -@end itemize - -@node Motivation, Search Structures, Contributors, Top -@chapter Introduction - -@code{gperf} is a perfect hash function generator written in C++. It -transforms an @emph{n} element user-specified keyword set @emph{W} into -a perfect hash function @emph{F}. @emph{F} uniquely maps keywords in -@emph{W} onto the range 0..@emph{k}, where @emph{k} >= @emph{n}. If -@emph{k = n} then @emph{F} is a @emph{minimal} perfect hash function. -@code{gperf} generates a 0..@emph{k} element static lookup table and a -pair of C functions. These functions determine whether a given -character string @emph{s} occurs in @emph{W}, using at most one probe -into the lookup table. - -@code{gperf} currently generates the reserved keyword recognizer for -lexical analyzers in several production and research compilers and -language processing tools, including GNU C, GNU C++, GNU Pascal, GNU -Modula 3, and GNU indent. Complete C++ source code for @code{gperf} is -available via anonymous ftp from ics.uci.edu. @code{gperf} also is -distributed along with the GNU libg++ library. A highly portable, -functionally equivalent K&R C version of @code{gperf} is archived in -comp.sources.unix, volume 20. Finally, a paper describing -@code{gperf}'s design and implementation in greater detail is available -in the Second USENIX C++ Conference proceedings. - -@node Search Structures, Description, Motivation, Top -@chapter Static search structures and GNU @code{gperf} - -A @dfn{static search structure} is an Abstract Data Type with certain -fundamental operations, @emph{e.g.}, @emph{initialize}, @emph{insert}, -and @emph{retrieve}. Conceptually, all insertions occur before any -retrievals. In practice, @code{gperf} generates a @code{static} array -containing search set keywords and any associated attributes specified -by the user. Thus, there is essentially no execution-time cost for the -insertions. It is a useful data structure for representing @emph{static -search sets}. Static search sets occur frequently in software system -applications. Typical static search sets include compiler reserved -words, assembler instruction opcodes, and built-in shell interpreter -commands. Search set members, called @dfn{keywords}, are inserted into -the structure only once, usually during program initialization, and are -not generally modified at run-time. - -Numerous static search structure implementations exist, @emph{e.g.}, -arrays, linked lists, binary search trees, digital search tries, and -hash tables. Different approaches offer trade-offs between space -utilization and search time efficiency. For example, an @emph{n} element -sorted array is space efficient, though the average-case time -complexity for retrieval operations using binary search is -proportional to log @emph{n}. Conversely, hash table implementations -often locate a table entry in constant time, but typically impose -additional memory overhead and exhibit poor worst case performance. - - -@emph{Minimal perfect hash functions} provide an optimal solution for a -particular class of static search sets. A minimal perfect hash -function is defined by two properties: - -@itemize @bullet -@item -It allows keyword recognition in a static search set using at most -@emph{one} probe into the hash table. This represents the ``perfect'' -property. -@item -The actual memory allocated to store the keywords is precisely large -enough for the keyword set, and @emph{no larger}. This is the -``minimal'' property. -@end itemize - -For most applications it is far easier to generate @emph{perfect} hash -functions than @emph{minimal perfect} hash functions. Moreover, -non-minimal perfect hash functions frequently execute faster than -minimal ones in practice. This phenomena occurs since searching a -sparse keyword table increases the probability of locating a ``null'' -entry, thereby reducing string comparisons. @code{gperf}'s default -behavior generates @emph{near-minimal} perfect hash functions for -keyword sets. However, @code{gperf} provides many options that permit -user control over the degree of minimality and perfection. - -Static search sets often exhibit relative stability over time. For -example, Ada's 63 reserved words have remained constant for nearly a -decade. It is therefore frequently worthwhile to expend concerted -effort building an optimal search structure @emph{once}, if it -subsequently receives heavy use multiple times. @code{gperf} removes -the drudgery associated with constructing time- and space-efficient -search structures by hand. It has proven a useful and practical tool -for serious programming projects. Output from @code{gperf} is currently -used in several production and research compilers, including GNU C, GNU -C++, GNU Pascal, and GNU Modula 3. The latter two compilers are not yet -part of the official GNU distribution. Each compiler utilizes -@code{gperf} to automatically generate static search structures that -efficiently identify their respective reserved keywords. - -@node Description, Options, Search Structures, Top -@chapter High-Level Description of GNU @code{gperf} - -@menu -* Input Format:: Input Format to @code{gperf} -* Output Format:: Output Format for Generated C Code with @code{gperf} -@end menu - -The perfect hash function generator @code{gperf} reads a set of -``keywords'' from a @dfn{keyfile} (or from the standard input by -default). It attempts to derive a perfect hashing function that -recognizes a member of the @dfn{static keyword set} with at most a -single probe into the lookup table. If @code{gperf} succeeds in -generating such a function it produces a pair of C source code routines -that perform hashing and table lookup recognition. All generated C code -is directed to the standard output. Command-line options described -below allow you to modify the input and output format to @code{gperf}. - -By default, @code{gperf} attempts to produce time-efficient code, with -less emphasis on efficient space utilization. However, several options -exist that permit trading-off execution time for storage space and vice -versa. In particular, expanding the generated table size produces a -sparse search structure, generally yielding faster searches. -Conversely, you can direct @code{gperf} to utilize a C @code{switch} -statement scheme that minimizes data space storage size. Furthermore, -using a C @code{switch} may actually speed up the keyword retrieval time -somewhat. Actual results depend on your C compiler, of course. - -In general, @code{gperf} assigns values to the characters it is using -for hashing until some set of values gives each keyword a unique value. -A helpful heuristic is that the larger the hash value range, the easier -it is for @code{gperf} to find and generate a perfect hash function. -Experimentation is the key to getting the most from @code{gperf}. - -@node Input Format, Output Format, Description, Description -@section Input Format to @code{gperf} - -You can control the input keyfile format by varying certain command-line -arguments, in particular the @samp{-t} option. The input's appearance -is similar to GNU utilities @code{flex} and @code{bison} (or UNIX -utilities @code{lex} and @code{yacc}). Here's an outline of the general -format: - -@example -@group -declarations -%% -keywords -%% -functions -@end group -@end example - -@emph{Unlike} @code{flex} or @code{bison}, all sections of @code{gperf}'s input -are optional. The following sections describe the input format for each -section. - -@menu -* Declarations:: @code{struct} Declarations and C Code Inclusion. -* Keywords:: Format for Keyword Entries. -* Functions:: Including Additional C Functions. -@end menu - -@node Declarations, Keywords, Input Format, Input Format -@subsection @code{struct} Declarations and C Code Inclusion - -The keyword input file optionally contains a section for including -arbitrary C declarations and definitions, as well as provisions for -providing a user-supplied @code{struct}. If the @samp{-t} option -@emph{is} enabled, you @emph{must} provide a C @code{struct} as the last -component in the declaration section from the keyfile file. The first -field in this struct must be a @code{char *} identifier called ``name,'' -although it is possible to modify this field's name with the @samp{-K} -option described below. - -Here is simple example, using months of the year and their attributes as -input: - -@example -@group -struct months @{ char *name; int number; int days; int leap_days; @}; -%% -january, 1, 31, 31 -february, 2, 28, 29 -march, 3, 31, 31 -april, 4, 30, 30 -may, 5, 31, 31 -june, 6, 30, 30 -july, 7, 31, 31 -august, 8, 31, 31 -september, 9, 30, 30 -october, 10, 31, 31 -november, 11, 30, 30 -december, 12, 31, 31 -@end group -@end example - -Separating the @code{struct} declaration from the list of key words and -other fields are a pair of consecutive percent signs, @code{%%}, -appearing left justified in the first column, as in the UNIX utility -@code{lex}. - -Using a syntax similar to GNU utilities @code{flex} and @code{bison}, it -is possible to directly include C source text and comments verbatim into -the generated output file. This is accomplished by enclosing the region -inside left-justified surrounding @code{%@{}, @code{%@}} pairs. Here is -an input fragment based on the previous example that illustrates this -feature: - -@example -@group -%@{ -#include <assert.h> -/* This section of code is inserted directly into the output. */ -int return_month_days (struct months *months, int is_leap_year); -%@} -struct months @{ char *name; int number; int days; int leap_days; @}; -%% -january, 1, 31, 31 -february, 2, 28, 29 -march, 3, 31, 31 -... -@end group -@end example - -It is possible to omit the declaration section entirely. In this case -the keyfile begins directly with the first keyword line, @emph{e.g.}: - -@example -@group -january, 1, 31, 31 -february, 2, 28, 29 -march, 3, 31, 31 -april, 4, 30, 30 -... -@end group -@end example - -@node Keywords, Functions, Declarations, Input Format -@subsection Format for Keyword Entries - -The second keyfile format section contains lines of keywords and any -associated attributes you might supply. A line beginning with @samp{#} -in the first column is considered a comment. Everything following the -@samp{#} is ignored, up to and including the following newline. - -The first field of each non-comment line is always the key itself. It -should be given as a simple name, @emph{i.e.}, without surrounding -string quotation marks, and be left-justified flush against the first -column. In this context, a ``field'' is considered to extend up to, but -not include, the first blank, comma, or newline. Here is a simple -example taken from a partial list of C reserved words: - -@example -@group -# These are a few C reserved words, see the c.@code{gperf} file -# for a complete list of ANSI C reserved words. -unsigned -sizeof -switch -signed -if -default -for -while -return -@end group -@end example - -Note that unlike @code{flex} or @code{bison} the first @code{%%} marker -may be elided if the declaration section is empty. - -Additional fields may optionally follow the leading keyword. Fields -should be separated by commas, and terminate at the end of line. What -these fields mean is entirely up to you; they are used to initialize the -elements of the user-defined @code{struct} provided by you in the -declaration section. If the @samp{-t} option is @emph{not} enabled -these fields are simply ignored. All previous examples except the last -one contain keyword attributes. - -@node Functions, , Keywords, Input Format -@subsection Including Additional C Functions - -The optional third section also corresponds closely with conventions -found in @code{flex} and @code{bison}. All text in this section, -starting at the final @code{%%} and extending to the end of the input -file, is included verbatim into the generated output file. Naturally, -it is your responsibility to ensure that the code contained in this -section is valid C. - -@node Output Format, , Input Format, Description -@section Output Format for Generated C Code with @code{gperf} - -Several options control how the generated C code appears on the standard -output. Two C function are generated. They are called @code{hash} and -@code{in_word_set}, although you may modify the name for -@code{in_word_set} with a command-line option. Both functions require -two arguments, a string, @code{char *} @var{str}, and a length -parameter, @code{int} @var{len}. Their default function prototypes are -as follows: - -@example -@group -static int hash (char *str, int len); -int in_word_set (char *str, int len); -@end group -@end example - -By default, the generated @code{hash} function returns an integer value -created by adding @var{len} to several user-specified @var{str} key -positions indexed into an @dfn{associated values} table stored in a -local static array. The associated values table is constructed -internally by @code{gperf} and later output as a static local C array called -@var{hash_table}; its meaning and properties are described below. -@xref{Implementation}. The relevant key positions are specified via the -@samp{-k} option when running @code{gperf}, as detailed in the @emph{Options} -section below. @xref{Options}. - -Two options, @samp{-g} (assume you are compiling with GNU C and its -@code{inline} feature) and @samp{-a} (assume ANSI C-style function -prototypes), alter the content of both the generated @code{hash} and -@code{in_word_set} routines. However, function @code{in_word_set} may -be modified more extensively, in response to your option settings. The -options that affect the @code{in_word_set} structure are: - -@itemize @bullet -@table @samp -@item -p -Have function @code{in_word_set} return a pointer rather than a boolean. - -@item -t -Make use of the user-defined @code{struct}. - -@item -S @var{total switch statements} -Generate 1 or more C @code{switch} statement rather than use a large, -(and potentially sparse) static array. Although the exact time and -space savings of this approach vary according to your C compiler's -degree of optimization, this method often results in smaller and faster -code. -@end table -@end itemize - -If the @samp{-t}, @samp{-S}, and @samp{-p} options are omitted the -default action is to generate a @code{char *} array containing the keys, -together with additional null strings used for padding the array. By -experimenting with the various input and output options, and timing the -resulting C code, you can determine the best option choices for -different keyword set characteristics. - -@node Options, Bugs, Description, Top -@chapter Options to the @code{gperf} Utility - -There are @emph{many} options to @code{gperf}. They were added to make -the program more convenient for use with real applications. ``On-line'' -help is readily available via the @samp{-h} option. Other options -include: - -@itemize @bullet -@table @samp -@item -a -Generate ANSI Standard C code using function prototypes. The default is -to use ``classic'' K&R C function declaration syntax. - -@item -c -Generates C code that uses the @code{strncmp} function to perform -string comparisons. The default action is to use @code{strcmp}. - -@item -C -Makes the contents of all generated lookup tables constant, @emph{i.e.}, -``readonly.'' Many compilers can generate more efficient code for this -by putting the tables in readonly memory. - -@item -d -Enables the debugging option. This produces verbose diagnostics to -``standard error'' when @code{gperf} is executing. It is useful both for -maintaining the program and for determining whether a given set of -options is actually speeding up the search for a solution. Some useful -information is dumped at the end of the program when the @samp{-d} -option is enabled. - -@item -D -Handle keywords whose key position sets hash to duplicate values. -Duplicate hash values occur for two reasons: - -@itemize @bullet -@item -Since @code{gperf} does not backtrack it is possible for it to process -all your input keywords without finding a unique mapping for each word. -However, frequently only a very small number of duplicates occur, and -the majority of keys still require one probe into the table. -@item -Sometimes a set of keys may have the same names, but possess different -attributes. With the -D option @code{gperf} treats all these keys as part of -an equivalence class and generates a perfect hash function with multiple -comparisons for duplicate keys. It is up to you to completely -disambiguate the keywords by modifying the generated C code. However, -@code{gperf} helps you out by organizing the output. -@end itemize - -Option @samp{-D} is extremely useful for certain large or highly -redundant keyword sets, @emph{i.e.}, assembler instruction opcodes. -Using this option usually means that the generated hash function is no -longer perfect. On the other hand, it permits @code{gperf} to work on -keyword sets that it otherwise could not handle. - -@item -e @var{keyword delimiter list} -Allows the user to provide a string containing delimiters used to -separate keywords from their attributes. The default is ",\n". This -option is essential if you want to use keywords that have embedded -commas or newlines. One useful trick is to use -e'TAB', where TAB is -the literal tab character. - -@item -E -Define constant values using an enum local to the lookup function rather -than with #defines. This also means that different lookup functions can -reside in the same file. Thanks to James Clark (jjc at ai.mit.edu). - -@item -f @var{iteration amount} -Generate the perfect hash function ``fast.'' This decreases @code{gperf}'s -running time at the cost of minimizing generated table-size. The -iteration amount represents the number of times to iterate when -resolving a collision. `0' means `iterate by the number of keywords. -This option is probably most useful when used in conjunction with options -@samp{-D} and/or @samp{-S} for @emph{large} keyword sets. - -@item -g -Assume a GNU compiler, @emph{e.g.}, @code{g++} or @code{gcc}. This -makes all generated routines use the ``inline'' keyword to remove the -cost of function calls. Note that @samp{-g} does @emph{not} imply -@samp{-a}, since other non-ANSI C compilers may have provisions for a -function @code{inline} feature. - -@item -G -Generate the static table of keywords as a static global variable, -rather than hiding it inside of the lookup function (which is the -default behavior). - -@item -h -Prints a short summary on the meaning of each program option. Aborts -further program execution. - -@item -H @var{hash function name} -Allows you to specify the name for the generated hash function. Default -name is `hash.' This option permits the use of two hash tables in the -same file. - -@item -i @var{initial value} -Provides an initial @var{value} for the associate values array. Default -is 0. Increasing the initial value helps inflate the final table size, -possibly leading to more time efficient keyword lookups. Note that this -option is not particularly useful when @samp{-S} is used. Also, -@samp{-i} is overriden when the @samp{-r} option is used. - -@item -j @var{jump value} -Affects the ``jump value,'' @emph{i.e.}, how far to advance the -associated character value upon collisions. @var{Jump value} is rounded -up to an odd number, the default is 5. If the @var{jump value} is 0 @code{gper -f} -jumps by random amounts. - -@item -k @var{keys} -Allows selection of the character key positions used in the keywords' -hash function. The allowable choices range between 1-126, inclusive. -The positions are separated by commas, @emph{e.g.}, @samp{-k 9,4,13,14}; -ranges may be used, @emph{e.g.}, @samp{-k 2-7}; and positions may occur -in any order. Furthermore, the meta-character '*' causes the generated -hash function to consider @strong{all} character positions in each key, -whereas '$' instructs the hash function to use the ``final character'' -of a key (this is the only way to use a character position greater than -126, incidentally). - -For instance, the option @samp{-k 1,2,4,6-10,'$'} generates a hash -function that considers positions 1,2,4,6,7,8,9,10, plus the last -character in each key (which may differ for each key, obviously). Keys -with length less than the indicated key positions work properly, since -selected key positions exceeding the key length are simply not -referenced in the hash function. - -@item -K @var{key name} -By default, the program assumes the structure component identifier for -the keyword is ``name.'' This option allows an arbitrary choice of -identifier for this component, although it still must occur as the first -field in your supplied @code{struct}. - -@item -l -Compare key lengths before trying a string comparison. This might cut -down on the number of string comparisons made during the lookup, since -keys with different lengths are never compared via @code{strcmp}. -However, using @samp{-l} might greatly increase the size of the -generated C code if the lookup table range is large (which implies that -the switch option @samp{-S} is not enabled), since the length table -contains as many elements as there are entries in the lookup table. - -@item -L @var{generated language name} -Instructs @code{gperf} to generate code in the language specified by the -option's argument. Languages handled are currently C++ and C. The -default is C. - -@item -n -Instructs the generator not to include the length of a keyword when -computing its hash value. This may save a few assembly instructions in -the generated lookup table. - -@item -N @var{lookup function name} -Allows you to specify the name for the generated lookup function. -Default name is `in_word_set.' This option permits completely automatic -generation of perfect hash functions, especially when multiple generated -hash functions are used in the same application. - -@item -o -Reorders the keywords by sorting the keywords so that frequently -occuring key position set components appear first. A second reordering -pass follows so that keys with ``already determined values'' are placed -towards the front of the keylist. This may decrease the time required -to generate a perfect hash function for many keyword sets, and also -produce more minimal perfect hash functions. The reason for this is -that the reordering helps prune the search time by handling inevitable -collisions early in the search process. On the other hand, if the -number of keywords is @emph{very} large using @samp{-o} may -@emph{increase} @code{gperf}'s execution time, since collisions will begin -earlier and continue throughout the remainder of keyword processing. -See Cichelli's paper from the January 1980 Communications of the ACM for -details. - -@item -p -Changes the return value of the generated function @code{in_word_set} -from boolean (@emph{i.e.}, 0 or 1), to either type ``pointer to -user-defined struct,'' (if the @samp{-t} option is enabled), or simply -to @code{char *}, if @samp{-t} is not enabled. This option is most -useful when the @samp{-t} option (allowing user-defined structs) is -used. For example, it is possible to automatically generate the GNU C -reserved word lookup routine with the options @samp{-p} and @samp{-t}. - -@item -r -Utilizes randomness to initialize the associated values table. This -frequently generates solutions faster than using deterministic -initialization (which starts all associated values at 0). Furthermore, -using the randomization option generally increases the size of the -table. If @code{gperf} has difficultly with a certain keyword set try using -@samp{-r} or @samp{-D}. - -@item -s @var{size-multiple} -Affects the size of the generated hash table. The numeric argument for -this option indicates ``how many times larger or smaller'' the maximum -associated value range should be, in relationship to the number of keys. -If the @var{size-multiple} is negative the maximum associated value is -calculated by @emph{dividing} it into the total number of keys. For -example, a value of 3 means ``allow the maximum associated value to be -about 3 times larger than the number of input keys.'' - -Conversely, a value of -3 means ``allow the maximum associated value to -be about 3 times smaller than the number of input keys.'' Negative -values are useful for limiting the overall size of the generated hash -table, though this usually increases the number of duplicate hash -values. - -If `generate switch' option @samp{-S} is @emph{not} enabled, the maximum -associated value influences the static array table size, and a larger -table should decrease the time required for an unsuccessful search, at -the expense of extra table space. - -The default value is 1, thus the default maximum associated value about -the same size as the number of keys (for efficiency, the maximum -associated value is always rounded up to a power of 2). The actual -table size may vary somewhat, since this technique is essentially a -heuristic. In particular, setting this value too high slows down -@code{gperf}'s runtime, since it must search through a much larger range -of values. Judicious use of the @samp{-f} option helps alleviate this -overhead, however. - -@item -S @var{total switch statements} -Causes the generated C code to use a @code{switch} statement scheme, -rather than an array lookup table. This can lead to a reduction in both -time and space requirements for some keyfiles. The argument to this -option determines how many @code{switch} statements are generated. A -value of 1 generates 1 @code{switch} containing all the elements, a -value of 2 generates 2 tables with 1/2 the elements in each -@code{switch}, etc. This is useful since many C compilers cannot -correctly generate code for large @code{switch} statements. This option -was inspired in part by Keith Bostic's original C program. - -@item -t -Allows you to include a @code{struct} type declaration for generated -code. Any text before a pair of consecutive %% is consider part of the -type declaration. Key words and additional fields may follow this, one -group of fields per line. A set of examples for generating perfect hash -tables and functions for Ada, C, and G++, Pascal, and Modula 2 and 3 -reserved words are distributed with this release. - -@item -T -Prevents the transfer of the type declaration to the output file. Use -this option if the type is already defined elsewhere. - -@item -v -Prints out the current version number. - -@item -Z @var{class name} -Allow user to specify name of generated C++ class. Default name is -@code{Perfect_Hash}. -@end table -@end itemize - -@node Bugs, Projects, Options, Top -@chapter Known Bugs and Limitations with @code{gperf} - -The following are some limitations with the current release of -@code{gperf}: - -@itemize @bullet -@item -The @code{gperf} utility is tuned to execute quickly, and works quickly -for small to medium size data sets (around 1000 keywords). It is -extremely useful for maintaining perfect hash functions for compiler -keyword sets. Several recent enhancements now enable @code{gperf} to -work efficiently on much larger keyword sets (over 15,000 keywords). -When processing large keyword sets it helps greatly to have over 8 megs -of RAM. - -However, since @code{gperf} does not backtrack no guaranteed solution -occurs on every run. On the other hand, it is usually easy to obtain a -solution by varying the option parameters. In particular, try the -@samp{-r} option, and also try changing the default arguments to the -@samp{-s} and @samp{-j} options. To @emph{guarantee} a solution, use -the @samp{-D} and @samp{-S} options, although the final results are not -likely to be a @emph{perfect} hash function anymore! Finally, use the -@samp{-f} option if you want @code{gperf} to generate the perfect hash -function @emph{fast}, with less emphasis on making it minimal. - -@item -The size of the generate static keyword array can get @emph{extremely} -large if the input keyword file is large or if the keywords are quite -similar. This tends to slow down the compilation of the generated C -code, and @emph{greatly} inflates the object code size. If this -situation occurs, consider using the @samp{-S} option to reduce data -size, potentially increasing keyword recognition time a negligible -amount. Since many C compilers cannot correctly generated code for -large switch statements it is important to qualify the @var{-S} option -with an appropriate numerical argument that controls the number of -switch statements generated. - -@item -The maximum number of key positions selected for a given key has an -arbitrary limit of 126. This restriction should be removed, and if -anyone considers this a problem write me and let me know so I can remove -the constraint. - -@item -The C++ source code only compiles correctly with GNU G++, version 1.36 -(and hopefully later versions). Porting to AT&T cfront would be -tedious, but possible (and desirable). There is also a K&R C version -available now. This should compile without change on most BSD systems, -but may require a bit of work to run on SYSV, since @code{gperf} uses -@var{alloca} in several places. Send mail to schmidt at ics.uci.edu for -information. -@end itemize - -@node Projects, Implementation, Bugs, Top -@chapter Things Still Left to Do - -It should be ``relatively'' easy to replace the current perfect hash -function algorithm with a more exhaustive approach; the perfect hash -module is essential independent from other program modules. Additional -worthwhile improvements include: - -@itemize @bullet -@item -Make the algorithm more robust. At present, the program halts with an -error diagnostic if it can't find a direct solution and the @samp{-D} -option is not enabled. A more comprehensive, albeit computationally -expensive, approach would employ backtracking or enable alternative -options and retry. It's not clear how helpful this would be, in -general, since most search sets are rather small in practice. - -@item -Another useful extension involves modifying the program to generate -``minimal'' perfect hash functions (under certain circumstances, the -current version can be rather extravagant in the generated table size). -Again, this is mostly of theoretical interest, since a sparse table -often produces faster lookups, and use of the @samp{-S} @code{switch} -option can minimize the data size, at the expense of slightly longer -lookups (note that the gcc compiler generally produces good code for -@code{switch} statements, reducing the need for more complex schemes). - -@item -In addition to improving the algorithm, it would also be useful to -generate a C++ class or Ada package as the code output, in addition to -the current C routines. -@end itemize - -@node Implementation, Bibliography, Projects, Top -@chapter Implementation Details of GNU @code{gperf} - -A paper describing the high-level description of the data structures and -algorithms used to implement @code{gperf} will soon be available. This -paper is useful not only from a maintenance and enhancement perspective, -but also because they demonstrate several clever and useful programming -techniques, @emph{e.g.}, `Iteration Number' boolean arrays, double -hashing, a ``safe'' and efficient method for reading arbitrarily long -input from a file, and a provably optimal algorithm for simultaneously -determining both the minimum and maximum elements in a list. - -@page - -@node Bibliography, , Implementation, Top -@chapter Bibliography - -[1] Chang, C.C.: @i{A Scheme for Constructing Ordered Minimal Perfect -Hashing Functions} Information Sciences 39(1986), 187-195. - -[2] Cichelli, Richard J. @i{Author's Response to ``On Cichelli's Minimal Perfec -t Hash -Functions Method''} Communications of the ACM, 23, 12(December 1980), 729. - -[3] Cichelli, Richard J. @i{Minimal Perfect Hash Functions Made Simple} -Communications of the ACM, 23, 1(January 1980), 17-19. - -[4] Cook, C. R. and Oldehoeft, R.R. @i{A Letter Oriented Minimal -Perfect Hashing Function} SIGPLAN Notices, 17, 9(September 1982), 18-27. - -[5] Cormack, G. V. and Horspool, R. N. S. and Kaiserwerth, M. -@i{Practical Perfect Hashing} Computer Journal, 28, 1(January 1985), 54-58. - -[6] Jaeschke, G. @i{Reciprocal Hashing: A Method for Generating Minimal -Perfect Hashing Functions} Communications of the ACM, 24, 12(December -1981), 829-833. - -[7] Jaeschke, G. and Osterburg, G. @i{On Cichelli's Minimal Perfect -Hash Functions Method} Communications of the ACM, 23, 12(December 1980), -728-729. - -[8] Sager, Thomas J. @i{A Polynomial Time Generator for Minimal Perfect -Hash Functions} Communications of the ACM, 28, 5(December 1985), 523-532 - -[9] Schmidt, Douglas C. @i{GPERF: A Perfect Hash Function Generator} -Second USENIX C++ Conference Proceedings, April 1990. - -[10] Sebesta, R.W. and Taylor, M.A. @i{Minimal Perfect Hash Functions -for Reserved Word Lists} SIGPLAN Notices, 20, 12(September 1985), 47-53. - -[11] Sprugnoli, R. @i{Perfect Hashing Functions: A Single Probe -Retrieving Method for Static Sets} Communications of the ACM, 20 -11(November 1977), 841-850. - -[12] Stallman, Richard M. @i{Using and Porting GNU CC} Free Software Foundation, -1988. - -[13] Stroustrup, Bjarne @i{The C++ Programming Language.} Addison-Wesley, 1986. - -[14] Tiemann, Michael D. @i{User's Guide to GNU C++} Free Software -Foundation, 1989. - -@contents -@bye diff --git a/apps/gperf/src/Bool_Array.cpp b/apps/gperf/src/Bool_Array.cpp deleted file mode 100644 index f308c08c24c..00000000000 --- a/apps/gperf/src/Bool_Array.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* Fast lookup table abstraction implemented as an Iteration Number Array -// $Id$ - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "Bool_Array.h" - -// Prints out debugging diagnostics. - -Bool_Array::~Bool_Array (void) -{ - if (option[DEBUG]) - fprintf (stderr, "\ndumping boolean array information\n" - "size = %d\niteration number = %d\nend of array dump\n", - size, generation_number); -} - -Bool_Array::Bool_Array (void) - : storage_array (0), - generation_number (0), - size (0) -{ -} - -void -Bool_Array::init (STORAGE_TYPE *buffer, STORAGE_TYPE s) -{ - size = s; - generation_number = 1; - storage_array = buffer; - - memset (storage_array, 0, s * sizeof *storage_array); - - if (option[DEBUG]) - fprintf (stderr, "\nbool array size = %d, total bytes = %d\n", - size, size * sizeof *storage_array); -} - -int -Bool_Array::find (int index) -{ - if (storage_array[index] == generation_number) - return 1; - else - { - storage_array[index] = generation_number; - return 0; - } -} - -void -Bool_Array::reset (void) -{ - if (++generation_number == 0) - { - if (option[DEBUG]) - { - fprintf (stderr, "(re-initializing bool_array)..."); - fflush (stderr); - } - - generation_number = 1; - memset (storage_array, 0, size * sizeof *storage_array); - - if (option[DEBUG]) - { - fprintf (stderr, "done\n"); - fflush (stderr); - } - } -} - diff --git a/apps/gperf/src/Bool_Array.h b/apps/gperf/src/Bool_Array.h deleted file mode 100644 index 0a2757dbc8e..00000000000 --- a/apps/gperf/src/Bool_Array.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -/* This may look like C code, but it is really -*- C++ -*- */ - -/* Simple lookup table abstraction implemented as an Generation Number Array. - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.*/ - -/* Define and implement a simple boolean array abstraction, - uses an Generation Numbering implementation to save on initialization time. */ - -#ifndef bool_array_h -#define bool_array_h 1 - -#include "Options.h" - -#ifdef LO_CAL -/* If we are on a memory diet then we'll only make these use a limited - amount of storage space. */ -typedef u_short STORAGE_TYPE; -#else -typedef int STORAGE_TYPE; -#endif - -class Bool_Array -{ -public: - Bool_Array (void); - ~Bool_Array (void); - - void init (STORAGE_TYPE *buffer, STORAGE_TYPE s); - int find (int hash_value); - void reset (void); - -private: - STORAGE_TYPE *storage_array; - // Initialization of the index space. - - STORAGE_TYPE generation_number; - // Keep track of the current Generation. - - int size; - // Keep track of array size. -}; - - -#endif diff --git a/apps/gperf/src/Gen_Perf.cpp b/apps/gperf/src/Gen_Perf.cpp deleted file mode 100644 index 57418ccc047..00000000000 --- a/apps/gperf/src/Gen_Perf.cpp +++ /dev/null @@ -1,345 +0,0 @@ -/* Provides high-level routines to manipulate the keywork list -// $Id$ - - structures the code generation output. - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "Vectors.h" -#include "Gen_Perf.h" - -/* Current release version. */ -extern char *version_string; - -/* Reads input keys, possibly applies the reordering heuristic, sets - the maximum associated value size (rounded up to the nearest power - of 2), may initialize the associated values array, and determines - the maximum hash table size. Note: using the random numbers is - often helpful, though not as deterministic, of course! */ - -Gen_Perf::Gen_Perf (void) -{ - int asso_value_max; - int non_linked_length; - - this->key_list.read_keys (); - if (option[ORDER]) - this->key_list.reorder (); - asso_value_max = option.get_asso_max (); - non_linked_length = this->key_list.keyword_list_length (); - num_done = 1; - fewest_collisions = 0; - if (asso_value_max == 0) - asso_value_max = non_linked_length; - else if (asso_value_max > 0) - asso_value_max *= non_linked_length; - else /* if (asso_value_max < 0) */ - asso_value_max = non_linked_length / -asso_value_max; - option.set_asso_max (ACE_POW (asso_value_max)); - - if (option[RANDOM]) - { - srand (time (0)); - - for (int i = 0; i < ALPHA_SIZE; i++) - Vectors::asso_values[i] = (rand () & asso_value_max - 1); - } - else - { - int asso_value = option.initial_value (); - - if (asso_value) /* Initialize array if user requests non-zero default. */ - for (int i = ALPHA_SIZE - 1; i >= 0; i--) - Vectors::asso_values[i] = asso_value & option.get_asso_max () - 1; - } - max_hash_value = this->key_list.max_key_length () + option.get_asso_max () * - option.get_max_keysig_size (); - - printf ("/* "); - if (option[C]) - printf ("C"); - else if (option[CPLUSPLUS]) - printf ("C++"); - printf (" code produced by gperf version %s */\n", version_string); - Options::print_options (); - - if (option[DEBUG]) - fprintf (stderr, "total non-linked keys = %d\nmaximum associated value is %d" - "\nmaximum size of generated hash table is %d\n", - non_linked_length, asso_value_max, max_hash_value); -} - -/* Merge two disjoint hash key multisets to form the ordered disjoint union of the sets. - (In a multiset, an element can occur multiple times). - Precondition: both set_1 and set_2 must be ordered. Returns the length - of the combined set. */ - -inline int -Gen_Perf::compute_disjoint_union (char *set_1, char *set_2, char *set_3) -{ - char *base = set_3; - - while (*set_1 && *set_2) - if (*set_1 == *set_2) - set_1++, set_2++; - else - { - *set_3 = *set_1 < *set_2 ? *set_1++ : *set_2++; - if (set_3 == base || *set_3 != *(set_3-1)) set_3++; - } - - while (*set_1) - { - *set_3 = *set_1++; - if (set_3 == base || *set_3 != *(set_3-1)) set_3++; - } - - while (*set_2) - { - *set_3 = *set_2++; - if (set_3 == base || *set_3 != *(set_3-1)) set_3++; - } - *set_3 = '\0'; - return set_3 - base; -} - -/* Sort the UNION_SET in increasing frequency of occurrence. - This speeds up later processing since we may assume the resulting - set (Set_3, in this case), is ordered. Uses insertion sort, since - the UNION_SET is typically short. */ - -inline void -Gen_Perf::sort_set (char *union_set, int len) -{ - int i, j; - - for (i = 0, j = len - 1; i < j; i++) - { - char curr, tmp; - - for (curr = i + 1, tmp = union_set[curr]; - curr > 0 && Vectors::occurrences[tmp] < Vectors::occurrences[union_set[curr-1]]; - curr--) - union_set[curr] = union_set[curr - 1]; - - union_set[curr] = tmp; - } -} - -/* Generate a key set's hash value. */ - -inline int -Gen_Perf::hash (List_Node *key_node) -{ - int sum = option[NOLENGTH] ? 0 : key_node->length; - - for (char *ptr = key_node->char_set; *ptr; ptr++) - sum += Vectors::asso_values[*ptr]; - - return key_node->hash_value = sum; -} - -/* Find out how character value change affects successfully hashed - items. Returns FALSE if no other hash values are affected, else - returns TRUE. Note that because Option.Get_Asso_Max is a power of - two we can guarantee that all legal Vectors::Asso_Values are visited without - repetition since Option.Get_Jump was forced to be an odd value! */ - -inline int -Gen_Perf::affects_prev (char c, List_Node *curr) -{ - int original_char = Vectors::asso_values[c]; - int total_iterations = !option[FAST] - ? option.get_asso_max () : option.get_iterations () ? option.get_iterations () : this->key_list.keyword_list_length (); - - /* Try all legal associated values. */ - - for (int i = total_iterations - 1; i >= 0; i--) - { - int collisions = 0; - - Vectors::asso_values[c] = Vectors::asso_values[c] + (option.get_jump () ? option.get_jump () : rand ()) - & option.get_asso_max () - 1; - - /* Iteration Number array is a win, O(1) intialization time! */ - this->char_search.reset (); - - /* See how this asso_value change affects previous keywords. If - it does better than before we'll take it! */ - - for (List_Node *ptr = this->key_list.head; - !this->char_search.find (hash (ptr)) || ++collisions < fewest_collisions; - ptr = ptr->next) - if (ptr == curr) - { - fewest_collisions = collisions; - if (option[DEBUG]) - fprintf (stderr, "- resolved after %d iterations", total_iterations - i); - return 0; - } - } - - /* Restore original values, no more tries. */ - Vectors::asso_values[c] = original_char; - /* If we're this far it's time to try the next character.... */ - return 1; -} - -/* Change a character value, try least-used characters first. */ - -void -Gen_Perf::change (List_Node *prior, List_Node *curr) -{ - static char *union_set; - - if (!union_set) - union_set = new char [2 * option.get_max_keysig_size () + 1]; - - if (option[DEBUG]) - { - fprintf (stderr, "collision on keyword #%d, prior = \"%s\", curr = \"%s\" hash = %d\n", - num_done, prior->key, curr->key, curr->hash_value); - fflush (stderr); - } - sort_set (union_set, compute_disjoint_union (prior->char_set, curr->char_set, union_set)); - - /* Try changing some values, if change doesn't alter other values continue normal action. */ - fewest_collisions++; - - for (char *temp = union_set; *temp; temp++) - if (!affects_prev (*temp, curr)) - { - if (option[DEBUG]) - { - fprintf (stderr, " by changing asso_value['%c'] (char #%d) to %d\n", - *temp, temp - union_set + 1, Vectors::asso_values[*temp]); - fflush (stderr); - } - return; /* Good, doesn't affect previous hash values, we'll take it. */ - } - - for (List_Node *ptr = this->key_list.head; ptr != curr; ptr = ptr->next) - hash (ptr); - - hash (curr); - - if (option[DEBUG]) - { - fprintf (stderr, "** collision not resolved after %d iterations, %d duplicates remain, continuing...\n", - !option[FAST] ? option.get_asso_max () : option.get_iterations () ? option.get_iterations () : this->key_list.keyword_list_length (), - fewest_collisions + this->key_list.total_duplicates); - fflush (stderr); - } -} - -/* Does the hard stuff.... - Initializes the Iteration Number array, and attempts to find a perfect - function that will hash all the key words without getting any - duplications. This is made much easier since we aren't attempting - to generate *minimum* functions, only perfect ones. - If we can't generate a perfect function in one pass *and* the user - hasn't enabled the DUP option, we'll inform the user to try the - randomization option, use -D, or choose alternative key positions. - The alternatives (e.g., back-tracking) are too time-consuming, i.e, - exponential in the number of keys. */ - -int -Gen_Perf::generate (void) -{ -#if LARGE_STACK_ARRAYS - STORAGE_TYPE buffer[max_hash_value + 1]; -#else - // Note: we don't use new, because that invokes a custom operator new. - STORAGE_TYPE *buffer - = (STORAGE_TYPE*) malloc (sizeof(STORAGE_TYPE) * (max_hash_value + 1)); - if (buffer == NULL) - abort (); -#endif - - this->char_search.init (buffer, max_hash_value + 1); - - List_Node *curr; - - for (curr = this->key_list.head; - curr; - curr = curr->next) - { - hash (curr); - - for (List_Node *ptr = this->key_list.head; - ptr != curr; - ptr = ptr->next) - if (ptr->hash_value == curr->hash_value) - { - change (ptr, curr); - break; - } - num_done++; - } - - /* Make one final check, just to make sure nothing weird happened.... */ - - this->char_search.reset (); - - for (curr = this->key_list.head; - curr; - curr = curr->next) - if (this->char_search.find (hash (curr))) - if (option[DUP]) /* Keep track of this number... */ - this->key_list.total_duplicates++; - else /* Yow, big problems. we're outta here! */ - { - ACE_ERROR ((LM_ERROR, "\nInternal error, duplicate value %d:\n" - "try options -D or -r, or use new key positions.\n\n", hash (curr))); -#if !LARGE_STACK_ARRAYS - free (buffer); -#endif - return 1; - } - - /* Sorts the key word list by hash value, and then outputs the list. - The generated hash table code is only output if the early stage of - processing turned out O.K. */ - - this->key_list.sort (); - this->key_list.output (); -#if !LARGE_STACK_ARRAYS - free (buffer); -#endif - return 0; -} - -/* Prints out some diagnostics upon completion. */ - -Gen_Perf::~Gen_Perf (void) -{ - if (option[DEBUG]) - { - fprintf (stderr, "\ndumping occurrence and associated values tables\n"); - - for (int i = 0; i < ALPHA_SIZE; i++) - if (Vectors::occurrences[i]) - fprintf (stderr, "Vectors::asso_values[%c] = %6d, Vectors::occurrences[%c] = %6d\n", - i, Vectors::asso_values[i], i, Vectors::occurrences[i]); - - fprintf (stderr, "end table dumping\n"); - - } -} - diff --git a/apps/gperf/src/Gen_Perf.h b/apps/gperf/src/Gen_Perf.h deleted file mode 100644 index 50d2ab95c0f..00000000000 --- a/apps/gperf/src/Gen_Perf.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -/* This may look like C code, but it is really -*- C++ -*- */ - -/* Provides high-level routines to manipulate the keyword list - structures the code generation output. - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#ifndef gen_perf_h -#define gen_perf_h 1 - -#include "Options.h" -#include "Key_List.h" -#include "Bool_Array.h" - -class Gen_Perf -{ -public: - Gen_Perf (void); - ~Gen_Perf (void); - int generate (void); - -private: - void change (List_Node *prior, List_Node *curr); - int affects_prev (char c, List_Node *curr); - static int hash (List_Node *key_node); - static int compute_disjoint_union (char *set_1, char *set_2, char *set_3); - static void sort_set (char *union_set, int len); - - int max_hash_value; - // Maximum possible hash value. - - int fewest_collisions; - // Records fewest # of collisions for asso value. - - int num_done; - // Number of keywords processed without a collision. - - Bool_Array char_search; - // Table that keeps track of key collisions. - - Key_List key_list; - // List of the keys we're trying to map into a perfect hash - // function. -}; -#endif diff --git a/apps/gperf/src/Hash_Table.cpp b/apps/gperf/src/Hash_Table.cpp deleted file mode 100644 index fa165715abc..00000000000 --- a/apps/gperf/src/Hash_Table.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* Hash table for checking keyword links. Implemented using double hashing. -// $Id$ - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "ace/ACE.h" -#include "Hash_Table.h" - -#define NIL(TYPE) (TYPE *)0 - -// The size of the hash table is always the smallest power of 2 >= the -// size indicated by the user. This allows several optimizations, -// including the use of double hashing and elimination of the mod -// instruction. Note that the size had better be larger than the -// number of items in the hash table, else there's trouble!!! Note -// that the memory for the hash table is allocated *outside* the -// intialization routine. This compromises information hiding -// somewhat, but greatly reduces memory fragmentation, since we can -// now use alloca! - -Hash_Table::Hash_Table (List_Node **table_ptr, int s) - : collisions (0), - size (s), - table (table_ptr) -{ - memset ((char *) table, 0, size * sizeof *table); -} - -Hash_Table::~Hash_Table (void) -{ - if (option[DEBUG]) - { - int field_width = option.get_max_keysig_size (); - - fprintf (stderr, "\ndumping the hash table\ntotal available table slots = %d, total bytes = %d, total collisions = %d\n" - "location, %*s, keyword\n", size, size * sizeof *table, collisions, field_width, "keysig"); - - for (int i = size - 1; i >= 0; i--) - if (table[i]) - fprintf (stderr, "%8d, %*s, %s\n", - i, field_width, table[i]->char_set, table[i]->key); - - fprintf (stderr, "\nend dumping hash table\n\n"); - } -} - -// If the ITEM is already in the hash table return the item found in -// the table. Otherwise inserts the ITEM, and returns FALSE. Uses -// double hashing. - -List_Node * -Hash_Table::operator() (List_Node *item, int ignore_length) -{ - unsigned hash_val = ACE::hash_pjw (item->char_set); - int probe = hash_val & size - 1; - int increment = (hash_val ^ item->length | 1) & size - 1; - - while (table[probe] - && (strcmp (table[probe]->char_set, item->char_set) - || (!ignore_length && table[probe]->length != item->length))) - { - collisions++; - probe = probe + increment & size - 1; - } - - return table[probe] ? table[probe] : (table[probe] = item, NIL (List_Node)); -} diff --git a/apps/gperf/src/Hash_Table.h b/apps/gperf/src/Hash_Table.h deleted file mode 100644 index 80cba1e9e34..00000000000 --- a/apps/gperf/src/Hash_Table.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -/* This may look like C code, but it is really -*- C++ -*- */ - -/* Hash table used to check for duplicate keyword entries. - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#ifndef hash_table_h -#define hash_table_h 1 - -#include "Options.h" -#include "List_Node.h" - -class Hash_Table -{ -public: - Hash_Table (List_Node **t, int s); - ~Hash_Table (void); - List_Node *operator () (List_Node *item, int ignore_length); - -private: - List_Node **table; - // Vector of pointers to linked lists of List_Node's. - - int size; - // Size of the vector. - - int collisions; - // Find out how well our double hashing is working! -}; -#endif diff --git a/apps/gperf/src/Iterator.cpp b/apps/gperf/src/Iterator.cpp deleted file mode 100644 index 94768115231..00000000000 --- a/apps/gperf/src/Iterator.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* Provides an Iterator for keyword characters. -// $Id$ - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "Iterator.h" - -// Constructor for Iterator. - -Iterator::Iterator (char *s, - int lo, - int hi, - int word_end, - int bad_val, - int key_end) - : end (key_end), - error_value (bad_val), - end_word (word_end), - str (s), - hi_bound (hi), - lo_bound (lo) -{ -} - -// Provide an Iterator, returning the ``next'' value from the list of -// valid values given in the constructor. - -int -Iterator::operator() (void) -{ - // Variables to record the Iterator's status when handling ranges, - // e.g., 3-12. - - static int size; - static int curr_value; - static int upper_bound; - - if (size) - { - if (++curr_value >= upper_bound) - size = 0; - return curr_value; - } - else - { - while (*str) - switch (*str) - { - default: return error_value; - case ',': str++; break; - case '$': str++; return end_word; - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - for (curr_value = 0; isdigit (*str); str++) - curr_value = curr_value * 10 + *str - '0'; - - if (*str == '-') - { - - for (size = 1, upper_bound = 0; - isdigit (*++str); - upper_bound = upper_bound * 10 + *str - '0'); - - if (upper_bound <= curr_value || upper_bound > hi_bound) - return error_value; - } - return curr_value >= lo_bound && curr_value <= hi_bound - ? curr_value : error_value; - } - - return end; - } -} diff --git a/apps/gperf/src/Iterator.h b/apps/gperf/src/Iterator.h deleted file mode 100644 index d1fe416859d..00000000000 --- a/apps/gperf/src/Iterator.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -/* This may look like C code, but it is really -*- C++ -*- */ - -/* Provides an Iterator for keyword characters. - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Provides an Iterator that expands and decodes a control string - containing digits and ranges, returning an integer every time the - generator function is called. This is used to decode the user's - key position requests. For example: "-k 1,2,5-10,$" will return 1, - 2, 5, 6, 7, 8, 9, 10, and 0 ( representing the abstract ``last - character of the key'' on successive calls to the member function - operator (). No errors are handled in these routines, they are - passed back to the calling routines via a user-supplied Error_Value */ - -#ifndef iterator_h -#define iterator_h 1 - -#include "Options.h" - -class Iterator -{ -public: - Iterator (char *s, int lo, int hi, int word_end, int bad_val, int key_end); - int operator () (void); - -private: - char *str; - // A pointer to the string provided by the user. - - int end; - // Value returned after last key is processed. - - int end_word; - // A value marking the abstract ``end of word'' (usually '$'). - - int error_value; - // Error value returned when input is syntactically erroneous. - - int hi_bound; - // Greatest possible value, inclusive. - - int lo_bound; - // Smallest possible value, inclusive. -}; - -#endif diff --git a/apps/gperf/src/Key_List.cpp b/apps/gperf/src/Key_List.cpp deleted file mode 100644 index c1009b3441c..00000000000 --- a/apps/gperf/src/Key_List.cpp +++ /dev/null @@ -1,1345 +0,0 @@ -/* Routines for building, ordering, and printing the keyword list. -// $Id$ - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "ace/Read_Buffer.h" -#include "Hash_Table.h" -#include "Vectors.h" -#include "Key_List.h" - -/* Make the hash table 10 times larger than the number of keyword entries. */ -static const int TABLE_MULTIPLE = 10; - -/* Default type for generated code. */ -static char *const default_array_type = "char *"; - -/* in_word_set return type, by default. */ -static char *const default_return_type = "char *"; - -/* How wide the printed field width must be to contain the maximum hash value. */ -static int field_width = 0; - -static int determined[ALPHA_SIZE]; - -/* Destructor dumps diagnostics during debugging. */ - -Key_List::~Key_List (void) -{ - if (option[DEBUG]) - { - fprintf (stderr, "\nDumping key list information:\ntotal non-static linked keywords = %d" - "\ntotal keywords = %d\ntotal duplicates = %d\nmaximum key length = %d\n", - list_len, total_keys, total_duplicates ? total_duplicates + 1 : 0, max_key_len); - dump (); - ACE_ERROR ((LM_ERROR, "End dumping list.\n\n")); - } -} - -/* Gathers the input stream into a buffer until one of two things occur: - - 1. We read a '%' followed by a '%' - 2. We read a '%' followed by a '}' - - The first symbolizes the beginning of the keyword list proper, - The second symbolizes the end of the C source code to be generated - verbatim in the output file. - - I assume that the keys are separated from the optional preceding struct - declaration by a consecutive % followed by either % or } starting in - the first column. The code below uses an expandible buffer to scan off - and return a pointer to all the code (if any) appearing before the delimiter. */ - -char * -Key_List::get_special_input (char delimiter) -{ - int size = 80; - char *buf = new char[size]; - int c, i; - - for (i = 0; (c = getchar ()) != EOF; i++) - { - if (c == '%') - { - if ((c = getchar ()) == delimiter) - { - - while ((c = getchar ()) != '\n') - ; /* discard newline */ - - if (i == 0) - return ""; - else - { - buf[delimiter == '%' && buf[i - 2] == ';' ? i - 2 : i - 1] = '\0'; - return buf; - } - } - else - buf[i++] = '%'; - } - else if (i >= size) /* Yikes, time to grow the buffer! */ - { - char *temp = new char[size *= 2]; - int j; - - for (j = 0; j < i; j++) - temp[j] = buf[j]; - - buf = temp; - } - buf[i] = c; - } - - return 0; /* Problem here. */ -} - -/* Stores any C text that must be included verbatim into the - generated code output. */ - -char * -Key_List::save_include_src (void) -{ - int c; - - if ((c = getchar ()) != '%') - ungetc (c, stdin); - else if ((c = getchar ()) != '{') - ACE_ERROR ((LM_ERROR, "internal error, %c != '{' on line %d in file %s%a", c, __LINE__, __FILE__, 1)); - else - return get_special_input ('}'); - return ""; -} - -/* Determines from the input file whether the user wants to build a table - from a user-defined struct, or whether the user is content to simply - use the default array of keys. */ - -char * -Key_List::get_array_type (void) -{ - return get_special_input ('%'); -} - -/* strcspn - find length of initial segment of S consisting entirely - ANSI string package, when GNU libc comes out I'll replace this...). */ - -inline int -Key_List::strcspn (const char *s, const char *reject) -{ - const char *scan; - const char *rej_scan; - int count = 0; - - for (scan = s; *scan; scan++) - { - - for (rej_scan = reject; *rej_scan; rej_scan++) - if (*scan == *rej_scan) - return count; - - count++; - } - - return count; -} - -/* Sets up the Return_Type, the Struct_Tag type and the Array_Type - based upon various user Options. */ - -void -Key_List::set_output_types (void) -{ - if (option[TYPE] && !(array_type = get_array_type ())) - return; /* Something's wrong, bug we'll catch it later on.... */ - else if (option[TYPE]) /* Yow, we've got a user-defined type... */ - { - int struct_tag_length = strcspn (array_type, "{\n\0"); - - if (option[POINTER]) /* And it must return a pointer... */ - { - return_type = new char[struct_tag_length + 2]; - strncpy (return_type, array_type, struct_tag_length); - return_type[struct_tag_length] = '*'; - return_type[struct_tag_length + 1] = '\0'; - } - - struct_tag = new char[struct_tag_length + 1]; - strncpy (struct_tag, array_type, struct_tag_length); - struct_tag[struct_tag_length] = '\0'; - } - else if (option[POINTER]) /* Return a char *. */ - return_type = default_array_type; -} - -/* Reads in all keys from standard input and creates a linked list pointed - to by Head. This list is then quickly checked for ``links,'' i.e., - unhashable elements possessing identical key sets and lengths. */ - -void -Key_List::read_keys (void) -{ - include_src = save_include_src (); - set_output_types (); - - ACE_Read_Buffer input (stdin); - - char *ptr = input.read ('\n'); - - if (ptr == 0) - // Oops, problem with the input file. - ACE_ERROR ((LM_ERROR, "No words in input file, did you forget to prepend %s" - " or use -t accidentally?\n%a", "%%", 1)); - - /* Read in all the keywords from the input file. */ - else - { - const char *delimiter = option.get_delimiter (); - List_Node *temp, *trail = 0; - - head = new List_Node (ptr, strcspn (ptr, delimiter)); - - for (temp = head; - (ptr = input.read ('\n')) && strcmp (ptr, "%%"); - temp = temp->next) - { - temp->next = new List_Node (ptr, strcspn (ptr, delimiter)); - total_keys++; - } - - /* See if any additional source code is included at end of this file. */ - if (ptr) - additional_code = 1; - - /* Hash table this number of times larger than keyword number. */ - int table_size = (list_len = total_keys) * TABLE_MULTIPLE; - -#if LARGE_STACK_ARRAYS - /* By allocating the memory here we save on dynamic allocation overhead. - Table must be a power of 2 for the hash function scheme to work. */ - List_Node *table[ACE_POW (table_size)]; -#else - // Note: we don't use new, because that invokes a custom operator new. - int malloc_size = ACE_POW (table_size) * sizeof(List_Node*); - if (malloc_size == 0) malloc_size = 1; - List_Node **table = (List_Node**)malloc(malloc_size); - if (table == NULL) - abort (); -#endif - - /* Make large hash table for efficiency. */ - Hash_Table found_link (table, table_size); - - /* Test whether there are any links and also set the maximum length of - an identifier in the keyword list. */ - - for (temp = head; temp; temp = temp->next) - { - List_Node *ptr = found_link (temp, option[NOLENGTH]); - - /* Check for links. We deal with these by building an equivalence class - of all duplicate values (i.e., links) so that only 1 keyword is - representative of the entire collection. This *greatly* simplifies - processing during later stages of the program. */ - - if (ptr) - { - total_duplicates++; - list_len--; - trail->next = temp->next; - temp->link = ptr->link; - ptr->link = temp; - - /* Complain if user hasn't enabled the duplicate option. */ - if (!option[DUP] || option[DEBUG]) - ACE_ERROR ((LM_ERROR, "Key link: \"%s\" = \"%s\", with key set \"%s\".\n", - temp->key, ptr->key, temp->char_set)); - } - else - trail = temp; - - /* Update minimum and maximum keyword length, if needed. */ - if (max_key_len < temp->length) - max_key_len = temp->length; - if (min_key_len > temp->length) - min_key_len = temp->length; - } - -#if !LARGE_STACK_ARRAYS - free (table); -#endif - - /* Exit program if links exists and option[DUP] not set, since we can't continue */ - if (total_duplicates) - ACE_ERROR ((LM_ERROR, option[DUP] - ? "%d input keys have identical hash values, examine output carefully...\n" - : "%d input keys have identical hash values,\ntry different key positions or use option -D.\n%a", total_duplicates, 1)); - if (option[ALLCHARS]) - option.set_keysig_size (max_key_len); - } -} - -/* Recursively merges two sorted lists together to form one sorted list. The - ordering criteria is by frequency of occurrence of elements in the key set - or by the hash value. This is a kludge, but permits nice sharing of - almost identical code without incurring the overhead of a function - call comparison. */ - -List_Node * -Key_List::merge (List_Node *list1, List_Node *list2) -{ - if (!list1) - return list2; - else if (!list2) - return list1; - else if (occurrence_sort && list1->occurrence < list2->occurrence - || hash_sort && list1->hash_value > list2->hash_value) - { - list2->next = merge (list2->next, list1); - return list2; - } - else - { - list1->next = merge (list1->next, list2); - return list1; - } -} - -/* Applies the merge sort algorithm to recursively sort the key list by - frequency of occurrence of elements in the key set. */ - -List_Node * -Key_List::merge_sort (List_Node *a_head) -{ - if (!a_head || !a_head->next) - return a_head; - else - { - List_Node *middle = a_head; - List_Node *temp = a_head->next->next; - - while (temp) - { - temp = temp->next; - middle = middle->next; - if (temp) - temp = temp->next; - } - - temp = middle->next; - middle->next = 0; - return merge (merge_sort (a_head), merge_sort (temp)); - } -} - -/* Returns the frequency of occurrence of elements in the key set. */ - -inline int -Key_List::get_occurrence (List_Node *ptr) -{ - int value = 0; - - for (char *temp = ptr->char_set; *temp; temp++) - value += Vectors::occurrences[*temp]; - - return value; -} - -/* Enables the index location of all key set elements that are now - determined. */ - -inline void -Key_List::set_determined (List_Node *ptr) -{ - for (char *temp = ptr->char_set; *temp; temp++) - determined[*temp] = 1; -} - -/* Returns TRUE if PTR's key set is already completely determined. */ - -inline int -Key_List::already_determined (List_Node *ptr) -{ - int is_determined = 1; - - for (char *temp = ptr->char_set; is_determined && *temp; temp++) - is_determined = determined[*temp]; - - return is_determined; -} - -/* Reorders the table by first sorting the list so that frequently occuring - keys appear first, and then the list is reorded so that keys whose values - are already determined will be placed towards the front of the list. This - helps prune the search time by handling inevitable collisions early in the - search process. See Cichelli's paper from Jan 1980 JACM for details.... */ - -void -Key_List::reorder (void) -{ - List_Node *ptr; - - for (ptr = head; ptr; ptr = ptr->next) - ptr->occurrence = get_occurrence (ptr); - - occurrence_sort = !(hash_sort = 0); /* Pretty gross, eh?! */ - - for (ptr = head = merge_sort (head); ptr->next; ptr = ptr->next) - { - set_determined (ptr); - - if (already_determined (ptr->next)) - continue; - else - { - List_Node *trail_ptr = ptr->next; - List_Node *run_ptr = trail_ptr->next; - - for (; run_ptr; run_ptr = trail_ptr->next) - { - - if (already_determined (run_ptr)) - { - trail_ptr->next = run_ptr->next; - run_ptr->next = ptr->next; - ptr = ptr->next = run_ptr; - } - else - trail_ptr = run_ptr; - } - } - } -} - -/* Outputs the maximum and minimum hash values. Since the - list is already sorted by hash value all we need to do is - find the final item! */ - -void -Key_List::output_min_max () -{ - List_Node *temp; - for (temp = head; temp->next; temp = temp->next) - ; - - min_hash_value = head->hash_value; - max_hash_value = temp->hash_value; - - if (!option[ENUM]) - printf ("\n#define TOTAL_KEYWORDS %d\n#define MIN_WORD_LENGTH %d" - "\n#define MAX_WORD_LENGTH %d\n#define MIN_HASH_VALUE %d" - "\n#define MAX_HASH_VALUE %d\n#define HASH_VALUE_RANGE %d" - "\n#define DUPLICATES %d\n\n", - total_keys, min_key_len, max_key_len, min_hash_value, - max_hash_value, max_hash_value - min_hash_value + 1, - total_duplicates ? total_duplicates + 1 : 0); - else if (option[GLOBAL]) - printf ("enum\n{\n" - " TOTAL_KEYWORDS = %d,\n" - " MIN_WORD_LENGTH = %d,\n" - " MAX_WORD_LENGTH = %d,\n" - " MIN_HASH_VALUE = %d,\n" - " MAX_HASH_VALUE = %d,\n" - " HASH_VALUE_RANGE = %d,\n" - " DUPLICATES = %d\n};\n\n", - total_keys, min_key_len, max_key_len, min_hash_value, - max_hash_value, max_hash_value - min_hash_value + 1, - total_duplicates ? total_duplicates + 1 : 0); -} - -/* Generates the output using a C switch. This trades increased - search time for decreased table space (potentially *much* less - space for sparse tables). It the user has specified their own - struct in the keyword file *and* they enable the POINTER option we - have extra work to do. The solution here is to maintain a local - static array of user defined struct's, as with the - Output_Lookup_Function. Then we use for switch statements to - perform either a strcmp or strncmp, returning 0 if the str fails to - match, and otherwise returning a pointer to appropriate index - location in the local static array. */ - -void -Key_List::output_switch (void) -{ - char *comp_buffer; - List_Node *curr = head; - int pointer_and_type_enabled = option[POINTER] && option[TYPE]; - int total_switches = option.get_total_switches (); - int switch_size = keyword_list_length () / total_switches; - - if (pointer_and_type_enabled) - { -#if defined (__GNUG__) - comp_buffer = (char *) alloca (strlen ("charmap[*str] == *resword->%s && !strncasecmp (str + 1, resword->%s + 1, len - 1)") - + 2 * strlen (option.get_key_name ()) + 1); -#else - comp_buffer = new char [strlen ("charmap[*str] == *resword->%s && !strncasecmp (str + 1, resword->%s + 1, len - 1)") - + 2 * strlen (option.get_key_name ()) + 1]; -#endif - if (option[COMP]) - sprintf (comp_buffer, "%s == *resword->%s && !%s (str + 1, resword->%s + 1, len - 1)", - option[STRCASECMP] ? "charmap[*str]" : "*str", option.get_key_name (), - option[STRCASECMP] ? "strncasecmp" : "strncmp", option.get_key_name ()); - else - sprintf (comp_buffer, "%s == *resword->%s && !%s (str + 1, resword->%s + 1)", - option[STRCASECMP] ? "charmap[*str]" : "*str", option.get_key_name (), - option[STRCASECMP] ? "strcasecmp" : "strcmp", option.get_key_name ()); - } - else - { - if (option[COMP]) - comp_buffer = option[STRCASECMP] - ? "charmap[*str] == *resword && !strncasecmp (str + 1, resword + 1, len - 1)" - : "*str == *resword && !strncmp (str + 1, resword + 1, len - 1)"; - else - comp_buffer = option[STRCASECMP] - ? "charmap[*str] == *resword && !strcasecmp (str + 1, resword + 1, len - 1)" - : "*str == *resword && !strcmp (str + 1, resword + 1, len - 1)"; - } - if (!option[OPTIMIZE]) - printf (" if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)\n {\n"); - printf (" register int key = %s (str, len);\n\n", option.get_hash_name ()); - if (!option[OPTIMIZE]) - printf (" if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)\n"); - - printf (" {\n"); - - /* Properly deal with user's who request multiple switch statements. */ - - while (curr) - { - List_Node *temp = curr; - int lowest_case_value = curr->hash_value; - int number_of_cases = 0; - - /* Figure out a good cut point to end this switch. */ - - for (; temp && ++number_of_cases < switch_size; temp = temp->next) - if (temp->next && temp->hash_value == temp->next->hash_value) - while (temp->next && temp->hash_value == temp->next->hash_value) - temp = temp->next; - - if (temp && total_switches != 1) - printf (" if (key <= %d)\n {\n", temp->hash_value); - else - printf (" {\n"); - - /* Output each keyword as part of a switch statement indexed by hash value. */ - - if (option[POINTER] || option[DUP]) - { - int i = 0; - - printf (" %s%s *resword; %s\n\n", - option[CONST] ? "const " : "", - pointer_and_type_enabled ? struct_tag : "char", - option[LENTABLE] && !option[DUP] ? "int key_len;" : ""); - if (total_switches == 1) - { - printf (" switch (key)\n {\n"); - lowest_case_value = 0; - } - else - printf (" switch (key - %d)\n {\n", lowest_case_value); - - for (temp = curr; temp && ++i <= number_of_cases; temp = temp->next) - { - printf (" case %*d:", field_width, temp->hash_value - lowest_case_value); - if (option[DEBUG]) - printf (" /* hash value = %4d, keyword = \"%s\" */", temp->hash_value, temp->key); - putchar ('\n'); - - /* Handle `natural links,' i.e., those that occur statically. */ - - if (temp->link) - { - List_Node *links; - - for (links = temp; links; links = links->link) - { - if (pointer_and_type_enabled) - printf (" resword = &wordlist[%d];\n", links->index); - else - printf (" resword = \"%s\";\n", links->key); - printf (" if (%s) return resword;\n", comp_buffer); - } - } - /* Handle unresolved duplicate hash values. These are guaranteed - to be adjacent since we sorted the keyword list by increasing - hash values. */ - if (temp->next && temp->hash_value == temp->next->hash_value) - { - - for ( ; temp->next && temp->hash_value == temp->next->hash_value; - temp = temp->next) - { - if (pointer_and_type_enabled) - printf (" resword = &wordlist[%d];\n", temp->index); - else - printf (" resword = \"%s\";\n", temp->key); - printf (" if (%s) return resword;\n", comp_buffer); - } - if (pointer_and_type_enabled) - printf (" resword = &wordlist[%d];\n", temp->index); - else - printf (" resword = \"%s\";\n", temp->key); - printf (" return %s ? resword : 0;\n", comp_buffer); - } - else if (temp->link) - printf (" return 0;\n"); - else - { - if (pointer_and_type_enabled) - printf (" resword = &wordlist[%d];", temp->index); - else - printf (" resword = \"%s\";", temp->key); - if (option[LENTABLE] && !option[DUP]) - printf (" key_len = %d;", temp->length); - printf (" break;\n"); - } - } - printf (" default: return 0;\n }\n"); - if (option[OPTIMIZE]) - printf (" return resword;\n"); - else - { - printf (option[LENTABLE] && !option[DUP] - ? " if (len == key_len && %s)\n return resword;\n" - : " if (%s)\n return resword;\n", comp_buffer); - printf (" return 0;\n"); - } - printf (" }\n"); - curr = temp; - } - else /* Nothing special required here. */ - { - int i = 0; - printf (" char *s;\n\n switch (key - %d)\n {\n", - lowest_case_value); - - for (temp = curr; temp && ++i <= number_of_cases; temp = temp->next) - if (option[LENTABLE]) - printf (" case %*d: if (len == %d) s = \"%s\"; else return 0; break;\n", - field_width, temp->hash_value - lowest_case_value, - temp->length, temp->key); - else - printf (" case %*d: s = \"%s\"; break;\n", - field_width, temp->hash_value - lowest_case_value, temp->key); - - printf (" default: return 0;\n }\n "); - if (option[COMP]) - printf ("return %s == *s && !%s;\n }\n", - option[STRCASECMP] ? "charmap[*str]" : "*str", - option[STRCASECMP] ? "strncasecmp (s + 1, str + 1, len - 1)" : "strcmp (s + 1, str + 1)"); - else - printf ("return %s == *s && !%s;\n }\n", - option[STRCASECMP] ? "charmap[*str]" : "*str", - option[STRCASECMP] ? "strcasecmp (s + 1, str + 1, len - 1)" : "strcmp (s + 1, str + 1)"); - curr = temp; - } - } - printf (" }\n %s\n}\n", option[OPTIMIZE] ? "" : "}\n return 0;"); -} - -/* Prints out a table of keyword lengths, for use with the - comparison code in generated function ``in_word_set.'' */ - -void -Key_List::output_keylength_table (void) -{ - const int max_column = 15; - int index = 0; - int column = 0; - char *indent = option[GLOBAL] ? "" : " "; - List_Node *temp; - - if (!option[DUP] && !option[SWITCH]) - { - printf ("\n%sstatic %sunsigned %s lengthtable[] =\n%s%s{\n ", - indent, option[CONST] ? "const " : "", - max_key_len <= UCHAR_MAX ? "char" : (max_key_len <= USHRT_MAX ? "short" : "long"), - indent, indent); - - for (temp = head; temp; temp = temp->next, index++) - { - - if (index < temp->hash_value) - for ( ; index < temp->hash_value; index++) - printf ("%3d,%s", 0, ++column % (max_column - 1) ? "" : "\n "); - - printf ("%3d,%s", temp->length, ++column % (max_column - 1 ) ? "" : "\n "); - } - - printf ("\n%s%s};\n", indent, indent); - } -} -/* Prints out the array containing the key words for the Gen_Perf - hash function. */ - -void -Key_List::output_keyword_table (void) -{ - char *l_brace = *head->rest ? "{" : ""; - char *r_brace = *head->rest ? "}," : ""; - char *indent = option[GLOBAL] ? "" : " "; - int index = 0; - List_Node *temp; - - printf ("%sstatic %s%swordlist[] =\n%s%s{\n", - indent, option[CONST] ? "const " : "", struct_tag, indent, indent); - - /* Skip over leading blank entries if there are no duplicates. */ - - if (0 < head->hash_value) - printf (" "); - for (int column = 1; index < head->hash_value; index++, column++) - printf ("%s\"\",%s %s", l_brace, r_brace, column % 9 ? "" : "\n "); - if (0 < head->hash_value && column % 10) - printf ("\n"); - - /* Generate an array of reserved words at appropriate locations. */ - - for (temp = head ; temp; temp = temp->next, index++) - { - temp->index = index; - - if (!option[SWITCH] && (total_duplicates == 0 || !option[DUP]) && index < temp->hash_value) - { - int column; - - printf (" "); - - for (column = 1; index < temp->hash_value; index++, column++) - printf ("%s\"\",%s %s", l_brace, r_brace, column % 9 ? "" : "\n "); - - if (column % 10) - printf ("\n"); - else - { - printf ("%s\"%s\", %s%s", l_brace, temp->key, temp->rest, r_brace); - if (option[DEBUG]) - printf (" /* hash value = %d, index = %d */", temp->hash_value, temp->index); - putchar ('\n'); - continue; - } - } - - printf (" %s\"%s\", %s%s", l_brace, temp->key, temp->rest, r_brace); - if (option[DEBUG]) - printf (" /* hash value = %d, index = %d */", temp->hash_value, temp->index); - putchar ('\n'); - - /* Deal with links specially. */ - if (temp->link) - for (List_Node *links = temp->link; links; links = links->link) - { - links->index = ++index; - printf (" %s\"%s\", %s%s", l_brace, links->key, links->rest, r_brace); - if (option[DEBUG]) - printf (" /* hash value = %d, index = %d */", links->hash_value, links->index); - putchar ('\n'); - } - } - printf ("%s%s};\n\n", indent, indent); -} - -/* Generates C code for the hash function that returns the - proper encoding for each key word. */ - -void -Key_List::output_hash_function (void) -{ - const int max_column = 10; - int count = max_hash_value; - - /* Calculate maximum number of digits required for MAX_HASH_VALUE. */ - - for (field_width = 2; (count /= 10) > 0; field_width++) - ; - - if (option[GNU]) - printf ("#ifdef __GNUC__\ninline\n#endif\n"); - - if (option[C]) - printf ("static "); - printf ("unsigned int\n"); - if (option[CPLUSPLUS]) - printf ("%s::", option.get_class_name ()); - - printf (option[ANSI] - ? "%s (register const char *str, register int len)\n{\n static %sunsigned %s asso_values[] =\n {" - : "%s (str, len)\n register char *str;\n register int unsigned len;\n{\n static %sunsigned %s asso_values[] =\n {", - option.get_hash_name (), option[CONST] ? "const " : "", - max_hash_value <= UCHAR_MAX ? "char" : (max_hash_value <= USHRT_MAX ? "short" : "int")); - - for (count = 0; count < ALPHA_SIZE; ++count) - { - if (!(count % max_column)) - printf ("\n "); - - printf ("%*d,", - field_width, - Vectors::occurrences[count] ? Vectors::asso_values[count] : max_hash_value + 1); - } - - /* Optimize special case of ``-k 1,$'' */ - if (option[DEFAULTCHARS]) - { - if (option[STRCASECMP]) - printf ("\n };\n return %sasso_values[charmap[str[len - 1]]] + asso_values[charmap[str[0]]];\n}\n\n", - option[NOLENGTH] ? "" : "len + "); - else - printf ("\n };\n return %sasso_values[str[len - 1]] + asso_values[str[0]];\n}\n\n", - option[NOLENGTH] ? "" : "len + "); - } - else - { - int key_pos; - - option.reset (); - - /* Get first (also highest) key position. */ - key_pos = option.get (); - - /* We can perform additional optimizations here. */ - if (!option[ALLCHARS] && key_pos <= min_key_len) - { - printf ("\n };\n return %s", option[NOLENGTH] ? "" : "len + "); - - for (; key_pos != WORD_END; ) - { - printf (option[STRCASECMP] ? "asso_values[charmap[str[%d]]]" : "asso_values[str[%d]]", key_pos - 1); - if ((key_pos = option.get ()) != EOS) - printf (" + "); - else - break; - } - - printf ("%s;\n}\n\n", key_pos == WORD_END - ? (option[STRCASECMP] ? "asso_values[charmap[str[len - 1]]]" : "asso_values[str[len - 1]]") - : ""); - } - - /* We've got to use the correct, but brute force, technique. */ - else - { - printf ("\n };\n register int hval = %s;\n\n switch (%s)\n {\n default:\n", - option[NOLENGTH] ? "0" : "len", option[NOLENGTH] ? "len" : "hval"); - - /* User wants *all* characters considered in hash. */ - if (option[ALLCHARS]) - { - int i; - - /* Break these options up for speed (gee, is this misplaced efficiency or what?! */ - if (option[STRCASECMP]) - - for (i = max_key_len; i > 0; i--) - printf (" case %d:\n hval += asso_values[charmap[str[%d]]];\n", i, i - 1); - - else - - for (i = max_key_len; i > 0; i--) - printf (" case %d:\n hval += asso_values[str[%d]];\n", i, i - 1); - - printf (" }\n return hval;\n}\n\n"); - } - else /* do the hard part... */ - { - count = key_pos + 1; - - do - { - - while (--count > key_pos) - printf (" case %d:\n", count); - - printf (option[STRCASECMP] - ? " case %d:\n hval += asso_values[charmap[str[%d]]];\n" - : " case %d:\n hval += asso_values[str[%d]];\n", - key_pos, key_pos - 1); - } - while ((key_pos = option.get ()) != EOS && key_pos != WORD_END); - - printf (" }\n return hval%s;\n}\n\n", - key_pos == WORD_END - ? (option[STRCASECMP] ? " + asso_values[charmap[str[len - 1]]]" : " + asso_values[str[len - 1]]") - : ""); - } - } - } -} - -/* Generates the large, sparse table that maps hash values into - the smaller, contiguous range of the keyword table. */ - -void -Key_List::output_lookup_array (void) -{ - if (total_duplicates > 0) - { - const int DEFAULT_VALUE = -1; - - struct duplicate_entry - { - int hash_value; /* Hash value for this particular duplicate set. */ - int index; /* Index into the main keyword storage array. */ - int count; /* Number of consecutive duplicates at this index. */ - }; -#if LARGE_STACK_ARRAYS - duplicate_entry duplicates[total_duplicates]; - int lookup_array[max_hash_value + 1]; -#else - // Note: we don't use new, because that invokes a custom operator new. - duplicate_entry *duplicates = (duplicate_entry*) - malloc (total_duplicates * sizeof(duplicate_entry)); - int *lookup_array = (int*)malloc(sizeof(int) * (max_hash_value + 1)); - if (duplicates == NULL || lookup_array == NULL) - abort(); -#endif - duplicate_entry *dup_ptr = duplicates; - int *lookup_ptr = lookup_array + max_hash_value + 1; - - while (lookup_ptr > lookup_array) - *--lookup_ptr = DEFAULT_VALUE; - - for (List_Node *temp = head; temp; temp = temp->next) - { - int hash_value = temp->hash_value; - lookup_array[hash_value] = temp->index; - if (option[DEBUG]) - fprintf (stderr, "keyword = %s, index = %d\n", temp->key, temp->index); - if (!temp->link && - (!temp->next || hash_value != temp->next->hash_value)) - continue; -#if LARGE_STACK_ARRAYS - *dup_ptr = (duplicate_entry) { hash_value, temp->index, 1 }; -#else - duplicate_entry _dups; - _dups.hash_value = hash_value; - _dups.index = temp->index; - _dups.count = 1; - *dup_ptr = _dups; -#endif - - for (List_Node *ptr = temp->link; ptr; ptr = ptr->link) - { - dup_ptr->count++; - if (option[DEBUG]) - fprintf (stderr, "static linked keyword = %s, index = %d\n", ptr->key, ptr->index); - } - - while (temp->next && hash_value == temp->next->hash_value) - { - temp = temp->next; - dup_ptr->count++; - if (option[DEBUG]) - fprintf (stderr, "dynamic linked keyword = %s, index = %d\n", temp->key, temp->index); - - for (List_Node *ptr = temp->link; ptr; ptr = ptr->link) - { - dup_ptr->count++; - if (option[DEBUG]) - fprintf (stderr, "static linked keyword = %s, index = %d\n", ptr->key, ptr->index); - } - } - dup_ptr++; - } - - while (--dup_ptr >= duplicates) - { - if (option[DEBUG]) - fprintf (stderr, "dup_ptr[%d]: hash_value = %d, index = %d, count = %d\n", - dup_ptr - duplicates, dup_ptr->hash_value, dup_ptr->index, dup_ptr->count); - - /* Start searching for available space towards the right part of the lookup array. */ - int i; - for (i = dup_ptr->hash_value; i < max_hash_value; i++) - if (lookup_array[i] == DEFAULT_VALUE && lookup_array[i + 1] == DEFAULT_VALUE) - { - lookup_array[i] = -dup_ptr->index; - lookup_array[i + 1] = -dup_ptr->count; - lookup_array[dup_ptr->hash_value] = max_hash_value + (i - dup_ptr->hash_value); - break; - } - - /* If we didn't find it to the right look to the left instead... */ - if (i == max_hash_value) - { - - for (i = dup_ptr->hash_value; i > 0; i--) - if (lookup_array[i] == DEFAULT_VALUE && lookup_array[i - 1] == DEFAULT_VALUE) - { - lookup_array[i - 1] = -dup_ptr->index; - lookup_array[i] = -dup_ptr->count; - lookup_array[dup_ptr->hash_value] = -(max_hash_value + (dup_ptr->hash_value - i + 1)); - break; - } - - /* We are in *big* trouble if this happens! */ - assert (i != 0); - } - } - - int max = INT_MIN; - lookup_ptr = lookup_array + max_hash_value + 1; - while (lookup_ptr > lookup_array) - { - int val = abs (*--lookup_ptr); - if (max < val) - max = val; - } - - char *indent = option[GLOBAL] ? "" : " "; - printf ("%sstatic %s%s lookup[] =\n%s%s{\n ", indent, option[CONST] ? "const " : "", - max <= SCHAR_MAX ? "char" : (max <= USHRT_MAX ? "short" : "int"), - indent, indent); - - int count = max; - - /* Calculate maximum number of digits required for MAX_HASH_VALUE. */ - - for (field_width = 2; (count /= 10) > 0; field_width++) - ; - - const int max_column = 15; - int column = 0; - - for (lookup_ptr = lookup_array; - lookup_ptr < lookup_array + max_hash_value + 1; - lookup_ptr++) - printf ("%*d,%s", field_width, *lookup_ptr, ++column % (max_column - 1) ? "" : "\n "); - - printf ("\n%s%s};\n\n", indent, indent); -#if !LARGE_STACK_ARRAYS - free (duplicates); - free (lookup_array); -#endif - } -} -/* Generates C code to perform the keyword lookup. */ - -void -Key_List::output_lookup_function (void) -{ - if (!option[OPTIMIZE]) - printf (" if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)\n {\n"); - printf (" register int key = %s (str, len);\n\n", option.get_hash_name ()); - if (!option[OPTIMIZE]) - printf (" if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)\n"); - printf (" {\n"); - - if (option[DUP] && total_duplicates > 0) - { - printf (" register int index = lookup[key];\n\n" - " if (index >= 0 && index < MAX_HASH_VALUE)\n"); - if (option[OPTIMIZE]) - printf (" return %swordlist[index];\n", option[TYPE] && option[POINTER] ? "&" : ""); - else - { - printf (" {\n" - " register %schar *s = wordlist[index]", option[CONST] ? "const " : ""); - if (array_type != default_array_type) - printf (".%s", option.get_key_name ()); - - printf (";\n\n if (%s%s == *s && !%s)\n return %s;\n }\n", - option[LENTABLE] ? "len == lengthtable[key]\n && " : "", - option[STRCASECMP] ? "charmap[*str]" : "*str", - option[COMP] ? (option[STRCASECMP] ? "strncasecmp (str + 1, s + 1, len - 1)" : "strncmp (str + 1, s + 1, len - 1)") - : (option[STRCASECMP] ? "strcasecmp (str + 1, s + 1)" : "strcmp (str + 1, s + 1)"), - option[TYPE] && option[POINTER] ? "&wordlist[index]" : "s"); - printf (" else if (index < 0 && index >= -MAX_HASH_VALUE)\n" - " return 0;\n"); - } - printf (" else\n {\n" - " register int offset = key + index + (index > 0 ? -MAX_HASH_VALUE : MAX_HASH_VALUE);\n" - " register %s%s*base = &wordlist[-lookup[offset]];\n" - " register %s%s*ptr = base + -lookup[offset + 1];\n\n" - " while (--ptr >= base)\n ", - option[CONST] ? "const " : "", struct_tag, - option[CONST] ? "const " : "", struct_tag); - if (array_type != default_array_type) - { - if (option[COMP]) - printf ("if (%s == *ptr->%s && !%s (str + 1, ptr->%s + 1, len - 1", - option[STRCASECMP] ? "charmap[*str]" : "*str", option.get_key_name (), - option[STRCASECMP] ? "strncasecmp" : "strncmp", option.get_key_name ()); - else - printf ("if (%s == *ptr->%s && !%s (str + 1, ptr->%s + 1", - option[STRCASECMP] ? "charmap[*str]" : "*str", option.get_key_name (), - option[STRCASECMP] ? "strcasecmp" : "strcmp", option.get_key_name ()); - } - else - printf (option[STRCASECMP] ? "if (charmap[*str] == **ptr && !%s" : "if (*str == **ptr && !%s", - option[COMP] - ? (option[STRCASECMP] ? "strncasecmp (str + 1, *ptr + 1, len - 1" : "strncmp (str + 1, *ptr + 1, len - 1") - : (option[STRCASECMP] ? "strcasecmp (str + 1, *ptr + 1" : "strcmp (str + 1, *ptr + 1")); - printf ("))\n return %sptr;" - "\n }\n }\n %s\n}\n", array_type == - default_array_type ? "*" : "", option[OPTIMIZE] ? "" : "}\n return 0;"); - } - else - { - if (option[OPTIMIZE]) - printf (" return %swordlist[key]", option[TYPE] && option[POINTER] ? "&" : ""); - else - { - printf (" register %schar *s = wordlist[key]", option[CONST] ? "const " : ""); - - if (array_type != default_array_type) - printf (".%s", option.get_key_name ()); - - printf (";\n\n if (%s%s == *s && !%s)\n return %s", - option[LENTABLE] ? "len == lengthtable[key]\n && " : "", - option[STRCASECMP] ? "charmap[*str]" : "*str", - option[COMP] - ? (option[STRCASECMP] ? "strncasecmp (str + 1, s + 1, len - 1)" : "strncmp (str + 1, s + 1, len - 1)") - : (option[STRCASECMP] ? "strcasecmp (str + 1, s + 1)" : "strcmp (str + 1, s + 1)"), - option[TYPE] && option[POINTER] ? "&wordlist[key]" : "s"); - } - printf (";\n }\n %s\n}\n", option[OPTIMIZE] ? "" : "}\n return 0;"); - } -} - -/* Output the table and the functions that map upper case into lower case! */ - -void -Key_List::output_strcasecmp (void) -{ - printf ("%s", - "/* This array is designed for mapping upper and lower case letter\n" - " * together for a case independent comparison. The mappings are\n" - " * based upon ascii character sequences.\n */" - "static char charmap[] = {\n" - " '\\000', '\\001', '\\002', '\\003', '\\004', '\\005', '\\006', '\\007',\n" - " '\\010', '\\011', '\\012', '\\013', '\\014', '\\015', '\\016', '\\017',\n" - " '\\020', '\\021', '\\022', '\\023', '\\024', '\\025', '\\026', '\\027',\n" - " '\\030', '\\031', '\\032', '\\033', '\\034', '\\035', '\\036', '\\037',\n" - " '\\040', '\\041', '\\042', '\\043', '\\044', '\\045', '\\046', '\\047',\n" - " '\\050', '\\051', '\\052', '\\053', '\\054', '\\055', '\\056', '\\057',\n" - " '\\060', '\\061', '\\062', '\\063', '\\064', '\\065', '\\066', '\\067',\n" - " '\\070', '\\071', '\\072', '\\073', '\\074', '\\075', '\\076', '\\077',\n" - " '\\100', '\\141', '\\142', '\\143', '\\144', '\\145', '\\146', '\\147',\n" - " '\\150', '\\151', '\\152', '\\153', '\\154', '\\155', '\\156', '\\157',\n" - " '\\160', '\\161', '\\162', '\\163', '\\164', '\\165', '\\166', '\\167',\n" - " '\\170', '\\171', '\\172', '\\133', '\\134', '\\135', '\\136', '\\137',\n" - " '\\140', '\\141', '\\142', '\\143', '\\144', '\\145', '\\146', '\\147',\n" - " '\\150', '\\151', '\\152', '\\153', '\\154', '\\155', '\\156', '\\157',\n" - " '\\160', '\\161', '\\162', '\\163', '\\164', '\\165', '\\166', '\\167',\n" - " '\\170', '\\171', '\\172', '\\173', '\\174', '\\175', '\\176', '\\177',\n" - " '\\200', '\\201', '\\202', '\\203', '\\204', '\\205', '\\206', '\\207',\n" - " '\\210', '\\211', '\\212', '\\213', '\\214', '\\215', '\\216', '\\217',\n" - " '\\220', '\\221', '\\222', '\\223', '\\224', '\\225', '\\226', '\\227',\n" - " '\\230', '\\231', '\\232', '\\233', '\\234', '\\235', '\\236', '\\237',\n" - " '\\240', '\\241', '\\242', '\\243', '\\244', '\\245', '\\246', '\\247',\n" - " '\\250', '\\251', '\\252', '\\253', '\\254', '\\255', '\\256', '\\257',\n" - " '\\260', '\\261', '\\262', '\\263', '\\264', '\\265', '\\266', '\\267',\n" - " '\\270', '\\271', '\\272', '\\273', '\\274', '\\275', '\\276', '\\277',\n" - " '\\300', '\\341', '\\342', '\\343', '\\344', '\\345', '\\346', '\\347',\n" - " '\\350', '\\351', '\\352', '\\353', '\\354', '\\355', '\\356', '\\357',\n" - " '\\360', '\\361', '\\362', '\\363', '\\364', '\\365', '\\366', '\\367',\n" - " '\\370', '\\371', '\\372', '\\333', '\\334', '\\335', '\\336', '\\337',\n" - " '\\340', '\\341', '\\342', '\\343', '\\344', '\\345', '\\346', '\\347',\n" - " '\\350', '\\351', '\\352', '\\353', '\\354', '\\355', '\\356', '\\357',\n" - " '\\360', '\\361', '\\362', '\\363', '\\364', '\\365', '\\366', '\\367',\n" - " '\\370', '\\371', '\\372', '\\373', '\\374', '\\375', '\\376', '\\377',\n};\n\nstatic int\n"); - if (option[COMP]) - { - printf ("%s", option[ANSI] - ? "strncasecmp (register char *s1, register char *s2, register int n)" - : "strncasecmp (s1, s2, n)\n register char *s1, *s2;\n register int n;"); - printf ("\n{\n register char *cm = charmap;\n\n while (--n >= 0 && cm[*s1] == cm[*s2++])\n" - " if (*s1++ == '\\0')\n return 0;\n" - "\n return n < 0 ? 0 : cm[*s1] - cm[*--s2];\n}\n\n"); - } - else - { - printf ("%s", option[ANSI] - ? "strcasecmp (register char *s1, register char *s2)" - : "strcasecmp (s1, s2)\n register char *s1, *s2;"); - printf ("\n{\n register char *cm = charmap;\n\n while (cm[*s1] == cm[*s2++])\n" - " if (*s1++ == '\\0')\n return 0;\n" - "\n return cm[*s1] - cm[*--s2];\n}\n\n"); - } -} - -/* Generates the hash function and the key word recognizer function - based upon the user's Options. */ - -void -Key_List::output (void) -{ - printf ("%s\n", include_src); - - if (option[TYPE] && !option[NOTYPE]) /* Output type declaration now, reference it later on.... */ - printf ("%s;\n", array_type); - - output_min_max (); - - if (option[STRCASECMP]) - output_strcasecmp (); - if (option[CPLUSPLUS]) - printf ("class %s\n{\nprivate:\n" - " static unsigned int hash (const char *str, int len);\npublic:\n" - " static %s%s%s (const char *str, int len);\n};\n\n", - option.get_class_name (), option[CONST] ? "const " : "", - return_type, option.get_function_name ()); - - output_hash_function (); - - if (option[GLOBAL]) - if (option[SWITCH]) - { - if (option[LENTABLE] && option[DUP]) - output_keylength_table (); - if (option[POINTER] && option[TYPE]) - output_keyword_table (); - } - else - { - if (option[LENTABLE]) - output_keylength_table (); - output_keyword_table (); - output_lookup_array (); - } - - if (option[GNU]) /* Use the inline keyword to remove function overhead. */ - printf ("#ifdef __GNUC__\ninline\n#endif\n"); - - printf ("%s%s\n", option[CONST] ? "const " : "", return_type); - if (option[CPLUSPLUS]) - printf ("%s::", option.get_class_name ()); - - printf (option[ANSI] - ? "%s (register const char *str, register int len)\n{\n" - : "%s (str, len)\n register char *str;\n register unsigned int len;\n{\n", - option.get_function_name ()); - - if (option[ENUM] && !option[GLOBAL]) - printf (" enum\n {\n" - " TOTAL_KEYWORDS = %d,\n" - " MIN_WORD_LENGTH = %d,\n" - " MAX_WORD_LENGTH = %d,\n" - " MIN_HASH_VALUE = %d,\n" - " MAX_HASH_VALUE = %d,\n" - " HASH_VALUE_RANGE = %d,\n" - " DUPLICATES = %d\n };\n\n", - total_keys, min_key_len, max_key_len, min_hash_value, - max_hash_value, max_hash_value - min_hash_value + 1, - total_duplicates ? total_duplicates + 1 : 0); - /* Use the switch in place of lookup table. */ - if (option[SWITCH]) - { - if (!option[GLOBAL]) - { - if (option[LENTABLE] && option[DUP]) - output_keylength_table (); - if (option[POINTER] && option[TYPE]) - output_keyword_table (); - } - output_switch (); - } - /* Use the lookup table, in place of switch. */ - else - { - if (!option[GLOBAL]) - { - if (option[LENTABLE]) - output_keylength_table (); - output_keyword_table (); - } - if (!option[GLOBAL]) - output_lookup_array (); - output_lookup_function (); - } - - if (additional_code) - { - for (;;) - { - int c = getchar (); - - if (c == EOF) - break; - else - putchar (c); - } - } - - fflush (stdout); -} - -/* Sorts the keys by hash value. */ - -void -Key_List::sort (void) -{ - hash_sort = 1; - occurrence_sort = 0; - - head = merge_sort (head); -} - -/* Dumps the key list to stderr stream. */ - -void -Key_List::dump () -{ - int field_width = option.get_max_keysig_size (); - - fprintf (stderr, "\nList contents are:\n(hash value, key length, index, %*s, keyword):\n", - field_width, "char_set"); - - for (List_Node *ptr = head; ptr; ptr = ptr->next) - fprintf (stderr, "%11d,%11d,%6d, %*s, %s\n", - ptr->hash_value, ptr->length, ptr->index, - field_width, ptr->char_set, ptr->key); -} - -/* Simple-minded constructor action here... */ - -Key_List::Key_List (void) -{ - total_keys = 1; - max_key_len = INT_MIN; - min_key_len = INT_MAX; - return_type = default_return_type; - array_type = struct_tag = default_array_type; - head = 0; - total_duplicates = 0; - additional_code = 0; -} - -/* Returns the length of entire key list. */ - -int -Key_List::keyword_list_length (void) -{ - return list_len; -} - -/* Returns length of longest key read. */ - -int -Key_List::max_key_length (void) -{ - return max_key_len; -} - diff --git a/apps/gperf/src/Key_List.h b/apps/gperf/src/Key_List.h deleted file mode 100644 index bad5e0a2ffa..00000000000 --- a/apps/gperf/src/Key_List.h +++ /dev/null @@ -1,116 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -/* This may look like C code, but it is really -*- C++ -*- */ - -/* Data and function member declarations for the keyword list class. - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -// The key word list is a useful abstraction that keeps track of -// various pieces of information that enable that fast generation of -// the Gen_Perf.hash function. A Key_List is a singly-linked list of -// List_Nodes. - -#ifndef key_list_h -#define key_list_h 1 - -#include "Options.h" -#include "List_Node.h" - -class Key_List -{ -public: - Key_List (void); - ~Key_List (void); - int keyword_list_length (void); - int max_key_length (void); - void reorder (void); - void sort (void); - void read_keys (void); - void output (void); - - List_Node *head; - // Points to the head of the linked list. - - int total_duplicates; - // Total number of duplicate hash values. - -private: - static int get_occurrence (List_Node *ptr); - static int strcspn (const char *s, const char *reject); - static int already_determined (List_Node *ptr); - static void set_determined (List_Node *ptr); - void output_min_max (void); - void output_switch (void); - void output_keyword_table (void); - void output_keylength_table (void); - void output_hash_function (void); - void output_lookup_function (void); - void output_lookup_array (void); - void output_strcasecmp (void); - void set_output_types (void); - void dump (void); - char *get_array_type (void); - char *save_include_src (void); - char *get_special_input (char delimiter); - List_Node *merge (List_Node *list1, List_Node *list2); - List_Node *merge_sort (List_Node *head); - - char *array_type; - // Pointer to the type for word list. - - char *return_type; - // Pointer to return type for lookup function. - - char *struct_tag; - // Shorthand for user-defined struct tag type. - - char *include_src; - // C source code to be included verbatim. - - int max_key_len; - // Maximum length of the longest keyword. - - int min_key_len; - // Minimum length of the shortest keyword. - - int min_hash_value; - // Minimum hash value for all keywords. - - int max_hash_value; - // Maximum hash value for all keywords. - - int occurrence_sort; - // True if sorting by occurrence. - - int hash_sort; - // True if sorting by hash value. - - int additional_code; - // True if any additional C code is included. - - int list_len; - // Length of head's Key_List, not counting duplicates. - - int total_keys; - // Total number of keys, counting duplicates. -}; -#endif diff --git a/apps/gperf/src/List_Node.cpp b/apps/gperf/src/List_Node.cpp deleted file mode 100644 index 59643b97b17..00000000000 --- a/apps/gperf/src/List_Node.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/* Creates and initializes a new list node. -// $Id$ - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "Vectors.h" -#include "List_Node.h" - -/* Defined as a macro in string.h on some systems, which causes - conflicts. */ -#undef index - -/* Sorts the key set alphabetically to speed up subsequent operations. - Uses insertion sort since the set is probably quite small. */ - -inline void -List_Node::set_sort (char *base, int len) -{ - int i, j; - - for (i = 0, j = len - 1; i < j; i++) - { - char curr, tmp; - - for (curr = i + 1, tmp = base[curr]; curr > 0 && tmp < base[curr-1]; curr--) - base[curr] = base[curr - 1]; - - base[curr] = tmp; - - } -} - -/* Initializes a List_Node. This requires obtaining memory for the - CHAR_SET initializing them using the information stored in the - KEY_POSITIONS array in Options, and checking for simple errors. - It's important to note that KEY and REST are both pointers to the - different offsets into the same block of dynamic memory pointed to - by parameter K. The data member REST is used to store any - additional fields of the input file (it is set to the "" string if - Option[TYPE] is not enabled). This is useful if the user wishes to - incorporate a lookup structure, rather than just an array of keys. - Finally, KEY_NUMBER contains a count of the total number of keys - seen so far. This is used to initialize the INDEX field to some - useful value. */ - -List_Node::List_Node (char *k, int len) - : key (k), - next (0), - index (0), - length (len), - link (0), - rest (option[TYPE] ? k + len + 1 : "") -{ - char *ptr = new char[(option[ALLCHARS] ? len : option.get_max_keysig_size ()) + 1]; - char_set = ptr; - k[len] = '\0'; /* Null terminate KEY to separate it from REST. */ - - /* Lower case if STRCASECMP option is enabled. */ - if (option[STRCASECMP]) - for (char *p = k; *p; p++) - if (isupper (*p)) - *p = tolower (*p); - - if (option[ALLCHARS]) /* Use all the character position in the KEY. */ - for (; *k; k++, ptr++) - ++Vectors::occurrences[*ptr = *k]; - else /* Only use those character positions specified by the user. */ - { - int i; - - /* Iterate thru the list of key_positions, initializing occurrences table - and char_set (via char * pointer ptr). */ - - for (option.reset (); (i = option.get ()) != EOS; ) - { - if (i == WORD_END) /* Special notation for last KEY position, i.e. '$'. */ - *ptr = key[len - 1]; - else if (i <= len) /* Within range of KEY length, so we'll keep it. */ - *ptr = key[i - 1]; - else /* Out of range of KEY length, so we'll just skip it. */ - continue; - ++Vectors::occurrences[*ptr++]; - } - - /* Didn't get any hits and user doesn't want to consider the - keylength, so there are essentially no usable hash positions! */ - if (ptr == char_set && option[NOLENGTH]) - ACE_ERROR ((LM_ERROR, "Can't hash keyword %s with chosen key positions.\n%a", key, 1)); - } - *ptr = '\0'; /* Terminate this bastard.... */ - /* Sort the KEY_SET items alphabetically. */ - set_sort (char_set, ptr - char_set); -} diff --git a/apps/gperf/src/List_Node.h b/apps/gperf/src/List_Node.h deleted file mode 100644 index 6b3e86ce694..00000000000 --- a/apps/gperf/src/List_Node.h +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -/* This may look like C code, but it is really -*- C++ -*- */ - -/* Data and function members for defining values and operations of a list node. - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#ifndef list_node_h -#define list_node_h 1 - -#include "Options.h" - -struct List_Node -{ - List_Node (char *key, int len); - static void set_sort (char *base, int len); - - List_Node *link; - // TRUE if key has an identical KEY_SET as another key. - - List_Node *next; - // Points to next element on the list. - - char *key; - // Each keyword string stored here. - - char *rest; - // Additional information for building hash function. - - char *char_set; - // Set of characters to hash, specified by user. - - int length; - // Length of the key. - - int hash_value; - // Hash value for the key. - - int occurrence; - // A metric for frequency of key set occurrences. - - int index; - // Position of this node relative to other nodes. -}; - -#endif diff --git a/apps/gperf/src/Makefile b/apps/gperf/src/Makefile deleted file mode 100644 index 865e2b1fab2..00000000000 --- a/apps/gperf/src/Makefile +++ /dev/null @@ -1,155 +0,0 @@ -#---------------------------------------------------------------------------- -# @(#)Makefile 1.1 10/18/96 -# -# Makefile for GPERF release -#---------------------------------------------------------------------------- - -BIN = gperf -LIB = libGperf.a - -FILES = new \ - Options \ - Iterator \ - Gen_Perf \ - Key_List \ - List_Node \ - Hash_Table \ - Bool_Array \ - Vectors \ - Version - -LSRC = $(addsuffix .cpp,$(FILES)) -LOBJ = $(addsuffix .o,$(FILES)) - -LDLIBS = -lGperf - -VLDLIBS = $(LDLIBS:%=%$(VAR)) - -BUILD = $(VLIB) $(VBIN) - -#---------------------------------------------------------------------------- -# Include macros and targets -#---------------------------------------------------------------------------- - -include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU -include $(ACE_ROOT)/include/makeinclude/macros.GNU -include $(ACE_ROOT)/include/makeinclude/rules.common.GNU -include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU -include $(ACE_ROOT)/include/makeinclude/rules.lib.GNU -include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU -include $(ACE_ROOT)/include/makeinclude/rules.local.GNU - -# DO NOT DELETE THIS LINE -- g++dep uses it. -# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. - -.obj/new.o .shobj/new.so: new.cpp Options.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i -.obj/Options.o .shobj/Options.so: Options.cpp \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - Options.h Iterator.h -.obj/Iterator.o .shobj/Iterator.so: Iterator.cpp Iterator.h Options.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i -.obj/Gen_Perf.o .shobj/Gen_Perf.so: Gen_Perf.cpp Gen_Perf.h Options.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - Key_List.h List_Node.h Bool_Array.h -.obj/Key_List.o .shobj/Key_List.so: Key_List.cpp \ - $(ACE_ROOT)/ace/Read_Buffer.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - $(ACE_ROOT)/ace/Malloc.h \ - $(ACE_ROOT)/ace/Malloc_T.h \ - $(ACE_ROOT)/ace/Synch.h \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Memory_Pool.h \ - $(ACE_ROOT)/ace/Event_Handler.h \ - $(ACE_ROOT)/ace/Signal.h \ - $(ACE_ROOT)/ace/Set.h \ - $(ACE_ROOT)/ace/Mem_Map.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.h \ - $(ACE_ROOT)/ace/SV_Semaphore_Simple.i \ - $(ACE_ROOT)/ace/SV_Semaphore_Complex.i \ - $(ACE_ROOT)/ace/Read_Buffer.i \ - Hash_Table.h Options.h List_Node.h Vectors.h Key_List.h -.obj/List_Node.o .shobj/List_Node.so: List_Node.cpp Vectors.h List_Node.h Options.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i -.obj/Hash_Table.o .shobj/Hash_Table.so: Hash_Table.cpp \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i \ - Hash_Table.h Options.h List_Node.h -.obj/Bool_Array.o .shobj/Bool_Array.so: Bool_Array.cpp Bool_Array.h Options.h \ - $(ACE_ROOT)/ace/Log_Msg.h \ - $(ACE_ROOT)/ace/Log_Record.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/Time_Value.h \ - $(ACE_ROOT)/ace/config.h \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Log_Priority.h \ - $(ACE_ROOT)/ace/Log_Record.i -.obj/Version.o .shobj/Version.so: Version.cpp - -# IF YOU PUT ANYTHING HERE IT WILL GO AWAY diff --git a/apps/gperf/src/Options.cpp b/apps/gperf/src/Options.cpp deleted file mode 100644 index 1aa819503e7..00000000000 --- a/apps/gperf/src/Options.cpp +++ /dev/null @@ -1,616 +0,0 @@ -/* Handles parsing the Options provided to the user. -// $Id$ - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "ace/Get_Opt.h" -#include "Options.h" -#include "Iterator.h" - -/* Global option coordinator for the entire program. */ -Options option; - -/* Current program version. */ -extern char *version_string; - -/* Size to jump on a collision. */ -static const int DEFAULT_JUMP_VALUE = 5; - -/* Default name for generated lookup function. */ -static const char *const DEFAULT_NAME = "in_word_set"; - -/* Default name for the key component. */ -static const char *const DEFAULT_KEY = "name"; - -/* Default name for the generated class. */ -static const char *const DEFAULT_CLASS_NAME = "Perfect_Hash"; - -/* Default name for generated hash function. */ -static const char *const DEFAULT_HASH_NAME = "hash"; - -/* Default delimiters that separate keywords from their attributes. */ -static const char *const DEFAULT_DELIMITERS = ",\n"; - -int Options::option_word; -int Options::total_switches; -int Options::total_keysig_size; -int Options::size; -int Options::key_pos; -int Options::jump; -int Options::initial_asso_value; -int Options::argument_count; -int Options::iterations; -char **Options::argument_vector; -const char *Options::function_name; -const char *Options::key_name; -const char *Options::class_name; -const char *Options::hash_name; -const char *Options::delimiters; -char Options::key_positions[MAX_KEY_POS]; - -/* Prints program usage to standard error stream. */ - -inline void -Options::usage (void) -{ - ACE_ERROR ((LM_ERROR, "Usage: %n [-acCdDef[num]gGhH<hashname>i<init>Ijk<keys>K<keyname>lL<language>nN<function name>oOprs<size>S<switches>tTvZ<class name>].\n" - "(type %n -h for help)\n")); -} - -/* Output command-line Options. */ - -void -Options::print_options (void) -{ - int i; - - printf ("/* Command-line: "); - - for (i = 0; i < argument_count; i++) - printf ("%s ", argument_vector[i]); - - printf (" */"); -} - -/* Sorts the key positions *IN REVERSE ORDER!!* - This makes further routines more efficient. Especially when generating code. - Uses a simple Insertion Sort since the set is probably ordered. - Returns 1 if there are no duplicates, 0 otherwise. */ - -inline int -Options::key_sort (char *base, int len) -{ - int i, j; - - for (i = 0, j = len - 1; i < j; i++) - { - int curr, tmp; - - for (curr = i + 1,tmp = base[curr]; curr > 0 && tmp >= base[curr - 1]; curr--) - if ((base[curr] = base[curr - 1]) == tmp) /* oh no, a duplicate!!! */ - return 0; - - base[curr] = tmp; - } - - return 1; -} - -/* Sets the default Options. */ - -Options::Options (void) -{ - key_positions[0] = WORD_START; - key_positions[1] = WORD_END; - key_positions[2] = EOS; - total_keysig_size = 2; - delimiters = DEFAULT_DELIMITERS; - jump = DEFAULT_JUMP_VALUE; - option_word = DEFAULTCHARS | C; - function_name = DEFAULT_NAME; - key_name = DEFAULT_KEY; - hash_name = DEFAULT_HASH_NAME; - class_name = DEFAULT_CLASS_NAME; - total_switches = size = 1; - initial_asso_value = iterations = 0; -} - -/* Dumps option status when debug is set. */ - -Options::~Options (void) -{ - if (option_word & DEBUG) - { - char *ptr; - - fprintf (stderr, "\ndumping Options:\nDEBUG is.......: %s\nORDER is.......: %s" - "\nANSI is........: %s\nTYPE is........: %s\nGNU is.........: %s" - "\nRANDOM is......: %s\nDEFAULTCHARS is: %s\nSWITCH is......: %s" - "\nPOINTER is.....: %s\nNOLENGTH is....: %s\nLENTABLE is....: %s" - "\nDUP is.........: %s\nFAST is........: %s\nCOMP is.....: %s" - "\nNOTYPE is......: %s\nGLOBAL is......: %s\nCONST is....: %s" - "\nCPLUSPLUS is...: %s\nC is...........: %s\nENUM is.....: %s" - "\nSTRCASECMP is...: %s\nOPTIMIZE is...........: %s" - "\niterations = %d\nlookup function name = %s\nhash function name = %s" - "\nkey name = %s\njump value = %d\nmax associcated value = %d" - "\ninitial associated value = %d\ndelimiters = %s\nnumber of switch statements = %d\n", - option_word & DEBUG ? "enabled" : "disabled", - option_word & ORDER ? "enabled" : "disabled", - option_word & ANSI ? "enabled" : "disabled", - option_word & TYPE ? "enabled" : "disabled", - option_word & GNU ? "enabled" : "disabled", - option_word & RANDOM ? "enabled" : "disabled", - option_word & DEFAULTCHARS ? "enabled" : "disabled", - option_word & SWITCH ? "enabled" : "disabled", - option_word & POINTER ? "enabled" : "disabled", - option_word & NOLENGTH ? "enabled" : "disabled", - option_word & LENTABLE ? "enabled" : "disabled", - option_word & DUP ? "enabled" : "disabled", - option_word & FAST ? "enabled" : "disabled", - option_word & COMP ? "enabled" : "disabled", - option_word & NOTYPE ? "enabled" : "disabled", - option_word & GLOBAL ? "enabled" : "disabled", - option_word & CONST ? "enabled" : "disabled", - option_word & CPLUSPLUS ? "enabled" : "disabled", - option_word & C ? "enabled" : "disabled", - option_word & ENUM ? "enabled" : "disabled", - option_word & STRCASECMP ? "enabled" : "disabled", - option_word & OPTIMIZE ? "enabled" : "disabled", - iterations, function_name, hash_name, key_name, jump, size - 1, - initial_asso_value, delimiters, total_switches); - if (option_word & ALLCHARS) - fprintf (stderr, "all characters are used in the hash function\n"); - - fprintf (stderr, "maximum keysig size = %d\nkey positions are: \n", - total_keysig_size); - - for (ptr = key_positions; *ptr != EOS; ptr++) - if (*ptr == WORD_END) - fprintf (stderr, "$\n"); - else - fprintf (stderr, "%d\n", *ptr); - - fprintf (stderr, "finished dumping Options\n"); - } -} - - -/* Parses the command line Options and sets appropriate flags in option_word. */ - -void -Options::operator() (int argc, char *argv[]) -{ - ACE_LOG_MSG->open (argv[0]); - - ACE_Get_Opt getopt (argc, argv, "adcCDe:Ef:gGhH:i:Ij:k:K:lL:nN:oOprs:S:tTvZ:"); - int option_char; - - argument_count = argc; - argument_vector = argv; - - while ((option_char = getopt ()) != -1) - { - switch (option_char) - { - case 'a': /* Generated coded uses the ANSI prototype format. */ - { - option_word |= ANSI; - break; - } - case 'c': /* Generate strncmp rather than strcmp. */ - { - option_word |= COMP; - break; - } - case 'C': /* Make the generated tables readonly (const). */ - { - option_word |= CONST; - break; - } - case 'd': /* Enable debugging option. */ - { - option_word |= DEBUG; - ACE_ERROR ((LM_ERROR, "Starting program %n, version %s, with debuggin on.\n", - version_string)); - break; - } - case 'D': /* Enable duplicate option. */ - { - option_word |= DUP; - break; - } - case 'e': /* Allows user to provide keyword/attribute separator */ - { - option.delimiters = getopt.optarg; - break; - } - case 'E': - { - option_word |= ENUM; - break; - } - case 'f': /* Generate the hash table ``fast.'' */ - { - option_word |= FAST; - if ((iterations = atoi (getopt.optarg)) < 0) - { - ACE_ERROR ((LM_ERROR, "iterations value must not be negative, assuming 0\n")); - iterations = 0; - } - break; - } - case 'g': /* Use the ``inline'' keyword for generated sub-routines. */ - { - option_word |= GNU; - break; - } - case 'G': /* Make the keyword table a global variable. */ - { - option_word |= GLOBAL; - break; - } - case 'h': /* Displays a list of helpful Options to the user. */ - { - ACE_ERROR ((LM_ERROR, - "-a\tGenerate ANSI standard C output code, i.e., function prototypes.\n" - "-c\tGenerate comparison code using strncmp rather than strcmp.\n" - "-C\tMake the contents of generated lookup tables constant, i.e., readonly.\n" - "-d\tEnables the debugging option (produces verbose output to the standard error).\n" - "-D\tHandle keywords that hash to duplicate values. This is useful\n" - "\tfor certain highly redundant keyword sets. It enables the -S option.\n" - "-e\tAllow user to provide a string containing delimiters used to separate\n" - "\tkeywords from their attributes. Default is \",\\n\"\n" - "-E\tDefine constant values using an enum local to the lookup function\n" - "\trather than with defines\n" - "-f\tGenerate the gen-perf.hash function ``fast.'' This decreases GPERF's\n" - "\trunning time at the cost of minimizing generated table-size.\n" - "\tThe numeric argument represents the number of times to iterate when\n" - "\tresolving a collision. `0' means ``iterate by the number of keywords.''\n" - "-g\tAssume a GNU compiler, e.g., g++ or gcc. This makes all generated\n" - "\troutines use the ``inline'' keyword to remove cost of function calls.\n" - "-G\tGenerate the static table of keywords as a static global variable,\n" - "\trather than hiding it inside of the lookup function (which is the\n" - "\tdefault behavior).\n" - "-h\tPrints this mesage.\n" - "-H\tAllow user to specify name of generated hash function. Default\n" - "\tis `hash'.\n" - "-i\tProvide an initial value for the associate values array. Default is 0.\n" - "-I\tGenerate comparison code using case insensitive string comparison, e.g.,\n" - "\tstrncasecmp or strcasecmp.\n" - "\tSetting this value larger helps inflate the size of the final table.\n" - "-j\tAffects the ``jump value,'' i.e., how far to advance the associated\n" - "\tcharacter value upon collisions. Must be an odd number, default is %d.\n" - "-k\tAllows selection of the key positions used in the hash function.\n" - "\tThe allowable choices range between 1-%d, inclusive. The positions\n" - "\tare separated by commas, ranges may be used, and key positions may\n" - "\toccur in any order. Also, the meta-character '*' causes the generated\n" - "\thash function to consider ALL key positions, and $ indicates the\n" - "\t``final character'' of a key, e.g., $,1,2,4,6-10.\n" - "-K\tAllow use to select name of the keyword component in the keyword structure.\n" - "-l\tCompare key lengths before trying a string comparison. This helps\n" - "\tcut down on the number of string comparisons made during the lookup.\n" - "-L\tGenerates code in the language specified by the option's argument. Languages\n" - "\thandled are currently C++ and C. The default is C.\n" - "-n\tDo not include the length of the keyword when computing the hash function\n" - "-N\tAllow user to specify name of generated lookup function. Default\n" - "\tname is `in_word_set.'\n" - "-o\tReorders input keys by frequency of occurrence of the key sets.\n" - "\tThis should decrease the search time dramatically.\n" - "-O\tOptimize the generated lookup function by assuming that all input keywords \n" - "\tare members of the keyset from the keyfile.\n" - "-p\tChanges the return value of the generated function ``in_word_set''\n" - "\tfrom its default boolean value (i.e., 0 or 1), to type ``pointer\n" - "\tto wordlist array'' This is most useful when the -t option, allowing\n" - "\tuser-defined structs, is used.\n" - "-r\tUtilizes randomness to initialize the associated values table.\n" - "-s\tAffects the size of the generated hash table. The numeric argument\n" - "\tfor this option indicates ``how many times larger or smaller'' the associated\n" - "\tvalue range should be, in relationship to the number of keys, e.g. a value of 3\n" - "\tmeans ``allow the maximum associated value to be about 3 times larger than the\n" - "\tnumber of input keys.'' Conversely, a value of -3 means ``make the maximum\n" - "\tassociated value about 3 times smaller than the number of input keys.\n" - "\tA larger table should decrease the time required for an unsuccessful search,\n" - "\tat the expense of extra table space. Default value is 1.\n" - "-S\tCauses the generated C code to use a switch statement scheme, rather\n" - "\tthan an array lookup table. This can lead to a reduction in both\n" - "\ttime and space requirements for some keyfiles. The argument to\n" - "\tthis option determines how many switch statements are generated.\n" - "\tA value of 1 generates 1 switch containing all the elements, a value of 2\n" - "\tgenerates 2 tables with 1/2 the elements in each table, etc. This\n" - "\tis useful since many C compilers cannot correctly generate code for\n" - "\tlarge switch statements.\n" - "-t\tAllows the user to include a structured type declaration for \n" - "\tgenerated code. Any text before %%%% is consider part of the type\n" - "\tdeclaration. Key words and additional fields may follow this, one\n" - "\tgroup of fields per line.\n" - "-T\tPrevents the transfer of the type declaration to the output file.\n" - "\tUse this option if the type is already defined elsewhere.\n" - "-v\tPrints out the current version number\n" - "-Z\tAllow user to specify name of generated C++ class. Default\n" - "\tname is `Perfect_Hash.'\n%e%a", DEFAULT_JUMP_VALUE, (MAX_KEY_POS - 1), usage, 1)); - } - case 'H': /* Sets the name for the hash function */ - { - hash_name = getopt.optarg; - break; - } - case 'i': /* Sets the initial value for the associated values array. */ - { - if ((initial_asso_value = atoi (getopt.optarg)) < 0) - ACE_ERROR ((LM_ERROR, "Initial value %d should be non-zero, ignoring and continuing.\n", initial_asso_value)); - if (option[RANDOM]) - ACE_ERROR ((LM_ERROR, "warning, -r option superceeds -i, ignoring -i option and continuing\n")); - break; - } - case 'I': - { - option_word |= STRCASECMP; - break; - } - case 'j': /* Sets the jump value, must be odd for later algorithms. */ - { - if ((jump = atoi (getopt.optarg)) < 0) - ACE_ERROR ((LM_ERROR, "Jump value %d must be a positive number.\n%e%a", jump, usage, 1)); - else if (jump && ACE_EVEN (jump)) - ACE_ERROR ((LM_ERROR, "Jump value %d should be odd, adding 1 and continuing...\n", jump++)); - break; - } - case 'k': /* Sets key positions used for hash function. */ - { - const int BAD_VALUE = -1; - int value; - Iterator expand (getopt.optarg, 1, MAX_KEY_POS - 1, WORD_END, BAD_VALUE, EOS); - - if (*getopt.optarg == '*') /* Use all the characters for hashing!!!! */ - option_word = (option_word & ~DEFAULTCHARS) | ALLCHARS; - else - { - char *l_key_pos; - - for (l_key_pos = key_positions; (value = expand ()) != EOS; l_key_pos++) - if (value == BAD_VALUE) - ACE_ERROR ((LM_ERROR, "Illegal key value or range, use 1,2,3-%d,'$' or '*'.\n%e%a", - MAX_KEY_POS - 1, usage, 1)); - else - *l_key_pos = value;; - - *l_key_pos = EOS; - - if (! (total_keysig_size = (l_key_pos - key_positions))) - ACE_ERROR ((LM_ERROR, "No keys selected.\n%e%a", usage, 1)); - else if (! key_sort (key_positions, total_keysig_size)) - ACE_ERROR ((LM_ERROR, "Duplicate keys selected\n%e%a", usage, 1)); - - if (total_keysig_size != 2 - || (key_positions[0] != 1 || key_positions[1] != WORD_END)) - option_word &= ~DEFAULTCHARS; - } - break; - } - case 'K': /* Make this the keyname for the keyword component field. */ - { - key_name = getopt.optarg; - break; - } - case 'l': /* Create length table to avoid extra string compares. */ - { - option_word |= LENTABLE; - break; - } - case 'L': /* Deal with different generated languages. */ - { - option_word &= ~C; - if (!strcmp (getopt.optarg, "C++")) - option_word |= (CPLUSPLUS | ANSI); - else if (!strcmp (getopt.optarg, "C")) - option_word |= C; - else - { - ACE_ERROR ((LM_ERROR, "unsupported language option %s, defaulting to C\n", getopt.optarg)); - option_word |= C; - } - break; - } - case 'n': /* Don't include the length when computing hash function. */ - { - option_word |= NOLENGTH; - break; - } - case 'N': /* Make generated lookup function name be optarg */ - { - function_name = getopt.optarg; - break; - } - case 'o': /* Order input by frequency of key set occurrence. */ - { - option_word |= ORDER; - break; - } - case 'O': - { - option_word |= OPTIMIZE; - break; - } - case 'p': /* Generated lookup function now a pointer instead of int. */ - { - option_word |= POINTER; - break; - } - case 'r': /* Utilize randomness to initialize the associated values table. */ - { - option_word |= RANDOM; - if (option.initial_asso_value != 0) - ACE_ERROR ((LM_ERROR, "warning, -r option superceeds -i, disabling -i option and continuing\n")); - break; - } - case 's': /* Range of associated values, determines size of final table. */ - { - if (abs (size = atoi (getopt.optarg)) > 50) - ACE_ERROR ((LM_ERROR, "%d is excessive, did you really mean this?! (type %n -h for help)\n", size)); - break; - } - case 'S': /* Generate switch statement output, rather than lookup table. */ - { - option_word |= SWITCH; - if ((option.total_switches = atoi (getopt.optarg)) <= 0) - ACE_ERROR ((LM_ERROR, "number of switches %s must be a positive number\n%e%a", getopt.optarg, usage, 1)); - break; - } - case 't': /* Enable the TYPE mode, allowing arbitrary user structures. */ - { - option_word |= TYPE; - break; - } - case 'T': /* Don't print structure definition. */ - { - option_word |= NOTYPE; - break; - } - case 'v': /* Print out the version and quit. */ - ACE_ERROR ((LM_ERROR, "%n: version %s\n%e\n%a", version_string, usage, 1)); - case 'Z': /* Set the class name. */ - { - class_name = getopt.optarg; - break; - } - default: - ACE_ERROR ((LM_ERROR, "%e%a", usage, 1)); - } - - } - - if (argv[getopt.optind] && ! freopen (argv[getopt.optind], "r", stdin)) - ACE_ERROR ((LM_ERROR, "Cannot open keyword file %p\n%e%a", argv[getopt.optind], usage, 1)); - - if (++getopt.optind < argc) - ACE_ERROR ((LM_ERROR, "Extra trailing arguments to %n.\n%e%a", usage, 1)); -} - -int -Options::operator[] (Option_Type option) /* True if option enable, else false. */ -{ - return option_word & option; -} - -void -Options::operator = (enum Option_Type opt) /* Enables option OPT. */ -{ - option_word |= opt; -} - -void -Options::operator != (enum Option_Type opt) /* Disables option OPT. */ -{ - option_word &= ~opt; -} - -void -Options::reset (void) /* Initializes the key Iterator. */ -{ - key_pos = 0; -} - -int -Options::get (void) /* Returns current key_position and advanced index. */ -{ - return key_positions[key_pos++]; -} - -void -Options::set_asso_max (int r) /* Sets the size of the table size. */ -{ - size = r; -} - -int -Options::get_asso_max (void) /* Returns the size of the table size. */ -{ - return size; -} - -int -Options::get_max_keysig_size (void) /* Returns total distinct key positions. */ -{ - return total_keysig_size; -} - -void -Options::set_keysig_size (int a_size) /* Sets total distinct key positions. */ -{ - total_keysig_size = a_size; -} - -int -Options::get_jump (void) /* Returns the jump value. */ -{ - return jump; -} - -const char * -Options::get_function_name (void) /* Returns the generated function name. */ -{ - return function_name; -} - -const char * -Options::get_key_name (void) /* Returns the keyword key name. */ -{ - return key_name; -} - -const char * -Options::get_hash_name (void) /* Returns the hash function name. */ -{ - return hash_name; -} - -const char * -Options::get_class_name (void) /* Returns the generated class name. */ -{ - return class_name; -} - -int -Options::initial_value (void) /* Returns the initial associated character value. */ -{ - return initial_asso_value; -} - -int -Options::get_iterations (void) /* Returns the iterations value. */ -{ - return iterations; -} - -const char * -Options::get_delimiter () /* Returns the string used to delimit keywords from other attributes. */ -{ - return delimiters; -} - -int -Options::get_total_switches () /* Gets the total number of switch statements to generate. */ -{ - return total_switches; -} - - - - diff --git a/apps/gperf/src/Options.h b/apps/gperf/src/Options.h deleted file mode 100644 index 22579aac4d4..00000000000 --- a/apps/gperf/src/Options.h +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -/* This may look like C code, but it is really -*- C++ -*- */ - -/* Handles parsing the Options provided to the user. - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -/* This module provides a uniform interface to the various options - available to a user of the gperf hash function generator. In - addition to the run-time options, found in the Option_Type below, - there is also the hash table Size and the Keys to be used in the - hashing. The overall design of this module was an experiment in - using C++ classes as a mechanism to enhance centralization of - option and and error handling, which tend to get out of hand in a C - program. */ - -#ifndef options_h -#define options_h 1 - -#include "ace/Log_Msg.h" - -/* Enumerate the potential debugging Options. */ - -enum Option_Type -{ - DEBUG = 01, /* Enable debugging (prints diagnostics to stderr). */ - ORDER = 02, /* Apply ordering heuristic to speed-up search time. */ - ANSI = 04, /* Generate ANSI prototypes. */ - ALLCHARS = 010, /* Use all characters in hash function. */ - GNU = 020, /* Assume GNU extensions (primarily function inline). */ - TYPE = 040, /* Handle user-defined type structured keyword input. */ - RANDOM = 0100, /* Randomly initialize the associated values table. */ - DEFAULTCHARS = 0200, /* Make default char positions be 1,$ (end of keyword). */ - SWITCH = 0400, /* Generate switch output to save space. */ - POINTER = 01000, /* Have in_word_set function return pointer, not boolean. */ - NOLENGTH = 02000, /* Don't include keyword length in hash computations. */ - LENTABLE = 04000, /* Generate a length table for string comparison. */ - DUP = 010000, /* Handle duplicate hash values for keywords. */ - FAST = 020000, /* Generate the hash function ``fast.'' */ - NOTYPE = 040000, /* Don't include user-defined type definition in output -- it's already defined elsewhere. */ - COMP = 0100000, /* Generate strncmp rather than strcmp. */ - GLOBAL = 0200000, /* Make the keyword table a global variable. */ - CONST = 0400000, /* Make the generated tables readonly (const). */ - CPLUSPLUS = 01000000, /* Generate C++ code. */ - C = 02000000, /* Generate C code. */ - ENUM = 04000000, /* Use enum for constants. */ - STRCASECMP = 010000000, /* Use the case insensitive comparison. */ - OPTIMIZE = 020000000, /* Assume all input keywords are in the keyset. */ - ADA = 040000000 /* Generate Ada code. */ -}; - -/* Define some useful constants (these don't really belong here, but I'm - not sure where else to put them!). These should be consts, but g++ - doesn't seem to do the right thing with them at the moment... ;-( */ - -enum -{ - MAX_KEY_POS = 128 - 1, /* Max size of each word's key set. */ - WORD_START = 1, /* Signals the start of a word. */ - WORD_END = 0, /* Signals the end of a word. */ - EOS = MAX_KEY_POS /* Signals end of the key list. */ -}; - -/* Class manager for gperf program Options. */ - -class Options -{ -public: - Options (void); - ~Options (void); - int operator[] (Option_Type option); - void operator() (int argc, char *argv[]); - void operator= (enum Option_Type); - void operator!= (enum Option_Type); - static void print_options (void); - static void set_asso_max (int r); - static int get_asso_max (void); - static void reset (void); - static int get (void); - static int get_iterations (void); - static int get_max_keysig_size (void); - static void set_keysig_size (int); - static int get_jump (void); - static int initial_value (void); - static int get_total_switches (void); - static const char *get_function_name (void); - static const char *get_key_name (void); - static const char *get_class_name (void); - static const char *get_hash_name (void); - static const char *get_delimiter (void); - -private: - static int option_word; /* Holds the user-specified Options. */ - static int total_switches; /* Number of switch statements to generate. */ - static int total_keysig_size; /* Total number of distinct key_positions. */ - static int size; /* Range of the hash table. */ - static int key_pos; /* Tracks current key position for Iterator. */ - static int jump; /* Jump length when trying alternative values. */ - static int initial_asso_value; /* Initial value for asso_values table. */ - static int argument_count; /* Records count of command-line arguments. */ - static int iterations; /* Amount to iterate when a collision occurs. */ - static char **argument_vector; /* Stores a pointer to command-line vector. */ - static const char *function_name; /* Names used for generated lookup function. */ - static const char *key_name; /* Name used for keyword key. */ - static const char *class_name; /* Name used for generated C++ class. */ - static const char *hash_name; /* Name used for generated hash function. */ - static const char *delimiters; /* Separates keywords from other attributes. */ - static char key_positions[MAX_KEY_POS]; /* Contains user-specified key choices. */ - static int key_sort (char *base, int len); /* Sorts key positions in REVERSE order. */ - static void usage (void); /* Prints proper program usage. */ -}; - -/* Global option coordinator for the entire program. */ -extern Options option; - -/* Set to 1 if your want to stack-allocate some large arrays. */ -#ifndef LARGE_STACK_ARRAYS -#define LARGE_STACK_ARRAYS 0 -#endif - -#endif diff --git a/apps/gperf/src/Vectors.cpp b/apps/gperf/src/Vectors.cpp deleted file mode 100644 index 218ebc9aa64..00000000000 --- a/apps/gperf/src/Vectors.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* This may look like C code, but it is really -*- C++ -*- */ -// $Id$ - - -/* Static class data members that are shared between several classes via - inheritance. - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "Vectors.h" - -// Counts occurrences of each key set character. -int Vectors::occurrences[ALPHA_SIZE]; - -// Value associated with each character. -int Vectors::asso_values[ALPHA_SIZE]; diff --git a/apps/gperf/src/Vectors.h b/apps/gperf/src/Vectors.h deleted file mode 100644 index c557c7afe56..00000000000 --- a/apps/gperf/src/Vectors.h +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -#include <stdio.h> - -/* This may look like C code, but it is really -*- C++ -*- */ - -/* Static class data members that are shared between several classes via - inheritance. - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#ifndef vectors_h -#define vectors_h 1 - -static const int ALPHA_SIZE = 128; - -struct Vectors -{ - static int occurrences[ALPHA_SIZE]; - // Counts occurrences of each key set character. - - static int asso_values[ALPHA_SIZE]; - // Value associated with each character. -}; - -#endif diff --git a/apps/gperf/src/Version.cpp b/apps/gperf/src/Version.cpp deleted file mode 100644 index b26c55e4124..00000000000 --- a/apps/gperf/src/Version.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* Current program version number. -// $Id$ - - - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, -USA. */ - -char *version_string = "2.6 (GNU C++ version)"; diff --git a/apps/gperf/src/gperf.cpp b/apps/gperf/src/gperf.cpp deleted file mode 100644 index cb8577f950d..00000000000 --- a/apps/gperf/src/gperf.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/* Driver program for the Gen_Perf hash function generator Copyright -// $Id$ - - (C) 1989 Free Software Foundation, Inc. written by Douglas - C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -// Simple driver program for the Gen_Perf.hash function generator. -// All the hard work is done in class Gen_Perf and its class methods. - -#include "Options.h" -#include "Gen_Perf.h" - -int -main (int argc, char *argv[]) -{ - - struct tm *tm; - time_t clock; - - time (&clock); - tm = localtime (&clock); - printf ("/* starting time is %d:%02d:%02d */\n", tm->tm_hour, tm->tm_min, tm->tm_sec); - -#if defined(RLIMIT_STACK) && LARGE_STACK_ARRAYS - /* Get rid of any avoidable limit on stack size. */ - { - struct rlimit rlim; - - /* Set the stack limit huge so that alloca does not fail. */ - getrlimit (RLIMIT_STACK, &rlim); - rlim.rlim_cur = rlim.rlim_max; - setrlimit (RLIMIT_STACK, &rlim); - } -#endif /* RLIMIT_STACK */ - - /* Sets the Options. */ - option (argc, argv); - - // Initializes the key word list. - Gen_Perf table; - - // Generates and prints the Gen_Perf hash table. Don't use exit - // here, it skips the destructors. - int status = table.generate (); - - time (&clock); - tm = localtime (&clock); - printf ("/* ending time is %d:%02d:%02d */\n", tm->tm_hour, tm->tm_min, tm->tm_sec); - return status; -} diff --git a/apps/gperf/src/new.cpp b/apps/gperf/src/new.cpp deleted file mode 100644 index 25cb527a98a..00000000000 --- a/apps/gperf/src/new.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/* Defines a buffered memory allocation abstraction that reduces calls to -// $Id$ - - malloc. - Copyright (C) 1989 Free Software Foundation, Inc. - written by Douglas C. Schmidt (schmidt@ics.uci.edu) - -This file is part of GNU GPERF. - -GNU GPERF is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 1, or (at your option) -any later version. - -GNU GPERF is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU GPERF; see the file COPYING. If not, write to the Free -Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "Options.h" - -/* Determine default alignment. If your C++ compiler does not like - this then try something like #define DEFAULT_ALIGNMENT 8. */ -struct fooalign {char x; double d;}; -const int ALIGNMENT = ((char *)&((struct fooalign *) 0)->d - (char *)0); - -/* Provide an abstraction that cuts down on the number of calls to NEW - by buffering the memory pool from which strings are allocated. */ - -void * -operator new (size_t size) -{ - static char *buf_start = 0; /* Large array used to reduce calls to NEW. */ - static char *buf_end = 0; /* Indicates end of BUF_START. */ - static int buf_size = 4 * BUFSIZ; /* Size of buffer pointed to by BUF_START. */ - char *temp; - - /* Align this on correct boundaries, just to be safe... */ - size = ((size + ALIGNMENT - 1) / ALIGNMENT) * ALIGNMENT; - - /* If we are about to overflow our buffer we'll just grab another - chunk of memory. Since we never free the original memory it - doesn't matter that no one points to the beginning of that - chunk. Note we use a heuristic that grows the buffer either by - size of the request or by twice the previous size, whichever is - larger. */ - - if (buf_start + size >= buf_end) - { - buf_size *= 2; - if (buf_size < size) - buf_size = size; - if (buf_start = (char *)malloc (buf_size)) - buf_end = buf_start + buf_size; - else - ACE_ERROR ((LM_ERROR, "Virtual memory failed at %s, %s in function %s\n%a", __FILE__, __LINE__, "operator new", 1)); - } - - temp = buf_start; - buf_start += size; - return temp; -} - -/* We need this deletion operator in order to make the linker happy. */ - -void -operator delete (void *ptr) -{ - // We cannot call free here, as it doesn't match the mallocs. - // free ((char *) ptr); -} diff --git a/apps/gperf/tests/Makefile.in b/apps/gperf/tests/Makefile.in deleted file mode 100644 index f702fc804f2..00000000000 --- a/apps/gperf/tests/Makefile.in +++ /dev/null @@ -1,72 +0,0 @@ -# Copyright (C) 1989, 1992, 1993 Free Software Foundation, Inc. -# written by Douglas C. Schmidt (schmidt@ics.uci.edu) -# -# This file is part of GNU GPERF. -# -# GNU GPERF is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 1, or (at your option) -# any later version. -# -# GNU GPERF is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU GPERF; see the file COPYING. If not, write to the Free -# Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111, USA. - -srcdir = . - -#### package, host, target, and site dependent Makefile fragments come in here. -## - -GPERF = ../src/gperf - -check: - @echo "performing some tests of the perfect hash generator" - $(CC) -c $(CFLAGS) $(srcdir)/test.c - $(GPERF) -p -c -l -S1 -o $(srcdir)/c.gperf > cinset.c - $(CC) $(CFLAGS) -o cout cinset.c test.o - @echo "testing ANSI C reserved words, all items should be found in the set" - ./cout -v < $(srcdir)/c.gperf > c.out - -diff -b $(srcdir)/c.exp c.out - $(GPERF) -k1,4,'$$' $(srcdir)/ada.gperf > adainset.c -# double '$$' is only there since make gets confused; programn wants only 1 '$' - $(CC) $(CFLAGS) -o aout adainset.c test.o - @echo "testing Ada reserved words, all items should be found in the set" - ./aout -v < $(srcdir)/ada.gperf > ada-res.out - -diff -b $(srcdir)/ada-res.exp ada-res.out - $(GPERF) -p -D -k1,'$$' -s 2 -o $(srcdir)/adadefs.gperf > preinset.c - $(CC) $(CFLAGS) -o preout preinset.c test.o - @echo "testing Ada predefined words, all items should be found in the set" - ./preout -v < $(srcdir)/adadefs.gperf > ada-pred.out - -diff -b $(srcdir)/ada-pred.exp ada-pred.out - $(GPERF) -k1,2,'$$' -o $(srcdir)/modula3.gperf > m3inset.c - $(CC) $(CFLAGS) -o m3out m3inset.c test.o - @echo "testing Modula3 reserved words, all items should be found in the set" - ./m3out -v < $(srcdir)/modula3.gperf > modula.out - -diff -b $(srcdir)/modula.exp modula.out - $(GPERF) -o -S2 -p < $(srcdir)/pascal.gperf > pinset.c - $(CC) $(CFLAGS) -o pout pinset.c test.o - @echo "testing Pascal reserved words, all items should be found in the set" - ./pout -v < $(srcdir)/pascal.gperf > pascal.out - -diff -b $(srcdir)/pascal.exp pascal.out -# these next 5 are demos that show off the generated code - $(GPERF) -p -j1 -g -o -t -N is_reserved_word -k1,3,'$$' < $(srcdir)/c-parse.gperf > test-1.out - -diff -b $(srcdir)/test-1.exp test-1.out - $(GPERF) -n -k1-8 -l <$(srcdir)/modula2.gperf > test-2.out - -diff -b $(srcdir)/test-2.exp test-2.out - $(GPERF) -p -j 1 -o -a -C -g -t -k1,4,$$ < $(srcdir)/gplus.gperf > test-3.out - -diff -b $(srcdir)/test-3.exp test-3.out - $(GPERF) -D -p -t < $(srcdir)/c-parse.gperf > test-4.out - -diff -b $(srcdir)/test-4.exp test-4.out - $(GPERF) -g -o -j1 -t -p -N is_reserved_word < $(srcdir)/gpc.gperf > test-5.out - -diff -b $(srcdir)/test-5.exp test-5.out -# prints out the help message - -$(GPERF) -h > test-6.out 2>&1 || [ a = a ] - -diff -b $(srcdir)/test-6.exp test-6.out - @echo "only if, do, for, case, goto, else, while, and return should be found " - ./aout -v < $(srcdir)/c.gperf > test-7.out - -diff -b $(srcdir)/test-7.exp test-7.out diff --git a/apps/gperf/tests/ada-pred.exp b/apps/gperf/tests/ada-pred.exp deleted file mode 100644 index 33caaa32ea1..00000000000 --- a/apps/gperf/tests/ada-pred.exp +++ /dev/null @@ -1,54 +0,0 @@ -in word set boolean -in word set character -in word set constraint_error -in word set false -in word set float -in word set integer -in word set natural -in word set numeric_error -in word set positive -in word set program_error -in word set storage_error -in word set string -in word set tasking_error -in word set true -in word set address -in word set aft -in word set base -in word set callable -in word set constrained -in word set count -in word set delta -in word set digits -in word set emax -in word set epsilon -in word set first -in word set firstbit -in word set fore -in word set image -in word set large -in word set last -in word set lastbit -in word set length -in word set machine_emax -in word set machine_emin -in word set machine_mantissa -in word set machine_overflows -in word set machine_radix -in word set machine_rounds -in word set mantissa -in word set pos -in word set position -in word set pred -in word set range -in word set safe_emax -in word set safe_large -in word set safe_small -in word set size -in word set small -in word set storage_size -in word set succ -in word set terminated -in word set val -in word set value -in word set width diff --git a/apps/gperf/tests/ada-res.exp b/apps/gperf/tests/ada-res.exp deleted file mode 100644 index 8134fe861f5..00000000000 --- a/apps/gperf/tests/ada-res.exp +++ /dev/null @@ -1,63 +0,0 @@ -in word set else -in word set exit -in word set terminate -in word set type -in word set raise -in word set range -in word set reverse -in word set declare -in word set end -in word set record -in word set exception -in word set not -in word set then -in word set return -in word set separate -in word set select -in word set digits -in word set renames -in word set subtype -in word set elsif -in word set function -in word set for -in word set package -in word set procedure -in word set private -in word set while -in word set when -in word set new -in word set entry -in word set delay -in word set case -in word set constant -in word set at -in word set abort -in word set accept -in word set and -in word set delta -in word set access -in word set abs -in word set pragma -in word set array -in word set use -in word set out -in word set do -in word set others -in word set of -in word set or -in word set all -in word set limited -in word set loop -in word set null -in word set task -in word set in -in word set is -in word set if -in word set rem -in word set mod -in word set begin -in word set body -in word set xor -in word set goto -in word set generic -in word set with diff --git a/apps/gperf/tests/ada.gperf b/apps/gperf/tests/ada.gperf deleted file mode 100644 index 332bdc740ad..00000000000 --- a/apps/gperf/tests/ada.gperf +++ /dev/null @@ -1,63 +0,0 @@ -else -exit -terminate -type -raise -range -reverse -declare -end -record -exception -not -then -return -separate -select -digits -renames -subtype -elsif -function -for -package -procedure -private -while -when -new -entry -delay -case -constant -at -abort -accept -and -delta -access -abs -pragma -array -use -out -do -others -of -or -all -limited -loop -null -task -in -is -if -rem -mod -begin -body -xor -goto -generic -with diff --git a/apps/gperf/tests/adadefs.gperf b/apps/gperf/tests/adadefs.gperf deleted file mode 100644 index 875be69abc9..00000000000 --- a/apps/gperf/tests/adadefs.gperf +++ /dev/null @@ -1,54 +0,0 @@ -boolean -character -constraint_error -false -float -integer -natural -numeric_error -positive -program_error -storage_error -string -tasking_error -true -address -aft -base -callable -constrained -count -delta -digits -emax -epsilon -first -firstbit -fore -image -large -last -lastbit -length -machine_emax -machine_emin -machine_mantissa -machine_overflows -machine_radix -machine_rounds -mantissa -pos -position -pred -range -safe_emax -safe_large -safe_small -size -small -storage_size -succ -terminated -val -value -width diff --git a/apps/gperf/tests/c++.gperf b/apps/gperf/tests/c++.gperf deleted file mode 100644 index 650d32d0edd..00000000000 --- a/apps/gperf/tests/c++.gperf +++ /dev/null @@ -1,47 +0,0 @@ -asm -auto -break -case -catch -char -class -const -continue -default -delete -do -double -else -enum -extern -float -for -friend -goto -if -inline -int -long -new -operator -overload -private -protected -public -register -return -short -signed -sizeof -static -struct -switch -template -this -typedef -union -unsigned -virtual -void -volatile -while diff --git a/apps/gperf/tests/c-parse.gperf b/apps/gperf/tests/c-parse.gperf deleted file mode 100644 index feef59babb0..00000000000 --- a/apps/gperf/tests/c-parse.gperf +++ /dev/null @@ -1,56 +0,0 @@ -%{ -/* Command-line: gperf -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf */ -%} -struct resword { char *name; short token; enum rid rid; }; -%% -__alignof, ALIGNOF, NORID -__alignof__, ALIGNOF, NORID -__asm, ASM, NORID -__asm__, ASM, NORID -__attribute, ATTRIBUTE, NORID -__attribute__, ATTRIBUTE, NORID -__const, TYPE_QUAL, RID_CONST -__const__, TYPE_QUAL, RID_CONST -__inline, SCSPEC, RID_INLINE -__inline__, SCSPEC, RID_INLINE -__signed, TYPESPEC, RID_SIGNED -__signed__, TYPESPEC, RID_SIGNED -__typeof, TYPEOF, NORID -__typeof__, TYPEOF, NORID -__volatile, TYPE_QUAL, RID_VOLATILE -__volatile__, TYPE_QUAL, RID_VOLATILE -asm, ASM, NORID -auto, SCSPEC, RID_AUTO -break, BREAK, NORID -case, CASE, NORID -char, TYPESPEC, RID_CHAR -const, TYPE_QUAL, RID_CONST -continue, CONTINUE, NORID -default, DEFAULT, NORID -do, DO, NORID -double, TYPESPEC, RID_DOUBLE -else, ELSE, NORID -enum, ENUM, NORID -extern, SCSPEC, RID_EXTERN -float, TYPESPEC, RID_FLOAT -for, FOR, NORID -goto, GOTO, NORID -if, IF, NORID -inline, SCSPEC, RID_INLINE -int, TYPESPEC, RID_INT -long, TYPESPEC, RID_LONG -register, SCSPEC, RID_REGISTER -return, RETURN, NORID -short, TYPESPEC, RID_SHORT -signed, TYPESPEC, RID_SIGNED -sizeof, SIZEOF, NORID -static, SCSPEC, RID_STATIC -struct, STRUCT, NORID -switch, SWITCH, NORID -typedef, SCSPEC, RID_TYPEDEF -typeof, TYPEOF, NORID -union, UNION, NORID -unsigned, TYPESPEC, RID_UNSIGNED -void, TYPESPEC, RID_VOID -volatile, TYPE_QUAL, RID_VOLATILE -while, WHILE, NORID diff --git a/apps/gperf/tests/c.exp b/apps/gperf/tests/c.exp deleted file mode 100644 index 10c8b7f6116..00000000000 --- a/apps/gperf/tests/c.exp +++ /dev/null @@ -1,32 +0,0 @@ -in word set if -in word set do -in word set int -in word set for -in word set case -in word set char -in word set auto -in word set goto -in word set else -in word set long -in word set void -in word set enum -in word set float -in word set short -in word set union -in word set break -in word set while -in word set const -in word set double -in word set static -in word set extern -in word set struct -in word set return -in word set sizeof -in word set switch -in word set signed -in word set typedef -in word set default -in word set unsigned -in word set continue -in word set register -in word set volatile diff --git a/apps/gperf/tests/c.gperf b/apps/gperf/tests/c.gperf deleted file mode 100644 index 8672d6c25ed..00000000000 --- a/apps/gperf/tests/c.gperf +++ /dev/null @@ -1,32 +0,0 @@ -if -do -int -for -case -char -auto -goto -else -long -void -enum -float -short -union -break -while -const -double -static -extern -struct -return -sizeof -switch -signed -typedef -default -unsigned -continue -register -volatile diff --git a/apps/gperf/tests/configure.in b/apps/gperf/tests/configure.in deleted file mode 100644 index d93c7bb1840..00000000000 --- a/apps/gperf/tests/configure.in +++ /dev/null @@ -1,26 +0,0 @@ -# This file is a shell script fragment that supplies the information -# necessary to tailor a template configure script into the configure -# script appropriate for this directory. For more information, check -# any existing configure script. - -configdirs="" -srctrigger=c-parse.gperf -srcname="test perfect hash function generator" - -target_makefile_frag=../../target-mkfrag -package_makefile_frag=Make.pack - -# per-host: - -# per-target: - -TOLIBGXX=../../ -ALL='$(NOTHING)' -CHECK=check -MOSTLYCLEAN='*.o \#* core *inset.c output.* *.out aout cout m3out pout preout' - -(. ${srcdir}/../../config.shared) >${package_makefile_frag} - -# post-target: - -rm -f ${package_makefile_frag} diff --git a/apps/gperf/tests/gpc.gperf b/apps/gperf/tests/gpc.gperf deleted file mode 100644 index 8fb469e46bc..00000000000 --- a/apps/gperf/tests/gpc.gperf +++ /dev/null @@ -1,48 +0,0 @@ -%{ -/* ISO Pascal 7185 reserved words. - * - * For GNU Pascal compiler (GPC) by jtv@hut.fi - * - * run this through the Doug Schmidt's gperf program - * with command - * gperf -g -o -j1 -t -p -N is_reserved_word - * - */ -%} -struct resword { char *name; short token; short iclass;}; -%% -And, AND, PASCAL_ISO -Array, ARRAY, PASCAL_ISO -Begin, BEGIN_, PASCAL_ISO -Case, CASE, PASCAL_ISO -Const, CONST, PASCAL_ISO -Div, DIV, PASCAL_ISO -Do, DO, PASCAL_ISO -Downto, DOWNTO, PASCAL_ISO -Else, ELSE, PASCAL_ISO -End, END, PASCAL_ISO -File, FILE_, PASCAL_ISO -For, FOR, PASCAL_ISO -Function, FUNCTION, PASCAL_ISO -Goto, GOTO, PASCAL_ISO -If, IF, PASCAL_ISO -In, IN, PASCAL_ISO -Label, LABEL, PASCAL_ISO -Mod, MOD, PASCAL_ISO -Nil, NIL, PASCAL_ISO -Not, NOT, PASCAL_ISO -Of, OF, PASCAL_ISO -Or, OR, PASCAL_ISO -Packed, PACKED, PASCAL_ISO -Procedure, PROCEDURE, PASCAL_ISO -Program,PROGRAM,PASCAL_ISO -Record, RECORD, PASCAL_ISO -Repeat, REPEAT, PASCAL_ISO -Set, SET, PASCAL_ISO -Then, THEN, PASCAL_ISO -To, TO, PASCAL_ISO -Type, TYPE, PASCAL_ISO -Until, UNTIL, PASCAL_ISO -Var, VAR, PASCAL_ISO -While, WHILE, PASCAL_ISO -With, WITH, PASCAL_ISO diff --git a/apps/gperf/tests/gplus.gperf b/apps/gperf/tests/gplus.gperf deleted file mode 100644 index 4a93315be52..00000000000 --- a/apps/gperf/tests/gplus.gperf +++ /dev/null @@ -1,76 +0,0 @@ -%{ -/* Command-line: gperf -p -j1 -g -o -t -N is_reserved_word -k1,4,$ gplus.gperf */ -%} -struct resword { char *name; short token; enum rid rid;}; -%% -__alignof, ALIGNOF, NORID -__alignof__, ALIGNOF, NORID -__asm, ASM, NORID -__asm__, ASM, NORID -__attribute, ATTRIBUTE, NORID -__attribute__, ATTRIBUTE, NORID -__const, TYPE_QUAL, RID_CONST -__const__, TYPE_QUAL, RID_CONST -__inline, SCSPEC, RID_INLINE -__inline__, SCSPEC, RID_INLINE -__signed, TYPESPEC, RID_SIGNED -__signed__, TYPESPEC, RID_SIGNED -__typeof, TYPEOF, NORID -__typeof__, TYPEOF, NORID -__volatile, TYPE_QUAL, RID_VOLATILE -__volatile__, TYPE_QUAL, RID_VOLATILE -all, ALL, NORID /* Extension */, -except, EXCEPT, NORID /* Extension */, -exception, AGGR, RID_EXCEPTION /* Extension */, -raise, RAISE, NORID /* Extension */, -raises, RAISES, NORID /* Extension */, -reraise, RERAISE, NORID /* Extension */, -try, TRY, NORID /* Extension */, -asm, ASM, NORID, -auto, SCSPEC, RID_AUTO, -break, BREAK, NORID, -case, CASE, NORID, -catch, CATCH, NORID, -char, TYPESPEC, RID_CHAR, -class, AGGR, RID_CLASS, -const, TYPE_QUAL, RID_CONST, -continue, CONTINUE, NORID, -default, DEFAULT, NORID, -delete, DELETE, NORID, -do, DO, NORID, -double, TYPESPEC, RID_DOUBLE, -dynamic, DYNAMIC, NORID, -else, ELSE, NORID, -enum, ENUM, NORID, -extern, SCSPEC, RID_EXTERN, -float, TYPESPEC, RID_FLOAT, -for, FOR, NORID, -friend, SCSPEC, RID_FRIEND, -goto, GOTO, NORID, -if, IF, NORID, -inline, SCSPEC, RID_INLINE, -int, TYPESPEC, RID_INT, -long, TYPESPEC, RID_LONG, -new, NEW, NORID, -operator, OPERATOR, NORID, -overload, OVERLOAD, NORID, -private, PRIVATE, NORID, -protected, PROTECTED, NORID, -public, PUBLIC, NORID, -register, SCSPEC, RID_REGISTER, -return, RETURN, NORID, -short, TYPESPEC, RID_SHORT, -signed, TYPESPEC, RID_SIGNED, -sizeof, SIZEOF, NORID, -static, SCSPEC, RID_STATIC, -struct, AGGR, RID_RECORD, -switch, SWITCH, NORID, -this, THIS, NORID, -typedef, SCSPEC, RID_TYPEDEF, -typeof, TYPEOF, NORID, -union, AGGR, RID_UNION, -unsigned, TYPESPEC, RID_UNSIGNED, -virtual, SCSPEC, RID_VIRTUAL, -void, TYPESPEC, RID_VOID, -volatile, TYPE_QUAL, RID_VOLATILE, -while, WHILE, NORID, diff --git a/apps/gperf/tests/irc.gperf b/apps/gperf/tests/irc.gperf deleted file mode 100644 index afe53c59e7d..00000000000 --- a/apps/gperf/tests/irc.gperf +++ /dev/null @@ -1,63 +0,0 @@ -%{ -extern int m_text(), m_private(), m_who(), m_whois(), m_user(), m_list(); -extern int m_topic(), m_invite(), m_channel(), m_version(), m_quit(); -extern int m_server(), m_kill(), m_info(), m_links(), m_summon(), m_stats(); -extern int m_users(), m_nick(), m_error(), m_help(), m_whoreply(); -extern int m_squit(), m_restart(), m_away(), m_die(), m_connect(); -extern int m_ping(), m_pong(), m_oper(), m_pass(), m_wall(), m_trace(); -extern int m_time(), m_rehash(), m_names(), m_namreply(), m_admin(); -extern int m_linreply(), m_notice(), m_lusers(), m_voice(), m_grph(); -extern int m_xtra(), m_motd(); -%} -struct Message { - char *cmd; - int (* func)(); - int count; - int parameters; -}; -%% -NICK, m_nick, 0, 1 -MSG, m_text, 0, 1 -PRIVMSG, m_private, 0, 2 -WHO, m_who, 0, 1 -WHOIS, m_whois, 0, 4 -USER, m_user, 0, 4 -SERVER, m_server, 0, 2 -LIST, m_list, 0, 1 -TOPIC, m_topic, 0, 1 -INVITE, m_invite, 0, 2 -CHANNEL, m_channel, 0, 1 -VERSION, m_version, 0, 1 -QUIT, m_quit, 0, 2 -SQUIT, m_squit, 0, 2 -KILL, m_kill, 0, 2 -INFO, m_info, 0, 1 -LINKS, m_links, 0, 1 -SUMMON, m_summon, 0, 1 -STATS, m_stats, 0, 1 -USERS, m_users, 0, 1 -RESTART, m_restart, 0, 1 -WHOREPLY,m_whoreply, 0, 7 -HELP, m_help, 0, 2 -ERROR, m_error, 0, 1 -AWAY, m_away, 0, 1 -DIE, m_die, 0, 1 -CONNECT, m_connect, 0, 3 -PING, m_ping, 0, 2 -PONG, m_pong, 0, 3 -OPER, m_oper, 0, 3 -PASS, m_pass, 0, 2 -WALL, m_wall, 0, 1 -TIME, m_time, 0, 1 -REHASH, m_rehash, 0, 1 -NAMES, m_names, 0, 1 -NAMREPLY,m_namreply, 0, 3 -ADMIN, m_admin, 0, 1 -TRACE, m_trace, 0, 1 -LINREPLY,m_linreply, 0, 2 -NOTICE, m_notice, 0, 2 -LUSERS, m_lusers, 0, 1 -VOICE, m_voice, 0, 2 -GRPH, m_grph, 0, 2 -XTRA, m_xtra, 0, 2 -MOTD, m_motd, 0, 2 diff --git a/apps/gperf/tests/makeinfo.gperf b/apps/gperf/tests/makeinfo.gperf deleted file mode 100644 index 1488b8e38fb..00000000000 --- a/apps/gperf/tests/makeinfo.gperf +++ /dev/null @@ -1,116 +0,0 @@ -COMMAND; -%% -!, cm_force_sentence_end, false -', insert_self, false -*, cm_asterisk, false -., cm_force_sentence_end, false -:, cm_force_abbreviated_whitespace, false -?, cm_force_sentence_end, false -@, insert_self, false -TeX, cm_TeX, true -`, insert_self, false -appendix, cm_appendix, false -appendixsec, cm_appendixsec, false -appendixsubsec, cm_appendixsubsec, false -asis, cm_asis, true -b, cm_bold, true -br, cm_br, false -bullet, cm_bullet, true -bye, cm_bye, false -c, cm_comment, false -center, cm_center, false -chapter, cm_chapter, false -cindex, cm_cindex, false -cite, cm_cite, true -code, cm_code, true -comment, cm_comment, false -contents, do_nothing, false -copyright, cm_copyright, true -ctrl, cm_ctrl, true -defcodeindex, cm_defindex, false -defindex, cm_defindex, false -dfn, cm_dfn, true -display, cm_display, false -dots, cm_dots, true -emph, cm_emph, true -end, cm_end, false -enumerate, cm_enumerate, false -equiv, cm_equiv, true -error, cm_error, true -example, cm_example, false -exdent, cm_exdent, false -expansion, cm_expansion, true -file, cm_file, true -findex, cm_findex, false -format, cm_format, false -group, cm_group, false -i, cm_italic, true -iappendix, cm_appendix, false -iappendixsec, cm_appendixsec, false -iappendixsubsec, cm_appendixsubsec, false -ichapter, cm_chapter, false -ifinfo, cm_ifinfo, false -iftex, cm_iftex, false -ignore, cm_ignore, false -include, cm_include, false -inforef, cm_inforef, true -input, cm_include, false -isection, cm_section, false -isubsection, cm_subsection, false -isubsubsection, cm_subsubsection, false -item, cm_item, false -itemize, cm_itemize, false -itemx, cm_itemx, false -iunnumbered, cm_unnumbered, false -iunnumberedsec, cm_unnumberedsec, false -iunnumberedsubsec, cm_unnumberedsubsec, false -kbd, cm_kbd, true -key, cm_key, true -kindex, cm_kindex, false -lisp, cm_lisp, false -menu, cm_menu -minus, cm_minus, true -need, cm_need, false -node, cm_node, false -noindent, cm_noindent, false -page, do_nothing, false -pindex, cm_pindex, false -point, cm_point, true -print, cm_print, true -printindex, cm_printindex, false -pxref, cm_pxref, true -quotation, cm_quotation, false -r, cm_roman, true -ref, cm_xref, true -refill, cm_refill, false -result, cm_result, true -samp, cm_samp, true -sc, cm_sc, true -section, cm_section, false -setchapternewpage, cm_setchapternewpage, false -setfilename, cm_setfilename, false -settitle, cm_settitle, false -smallexample, cm_smallexample, false -sp, cm_sp, false -strong, cm_strong, true -subsection, cm_subsection, false -subsubsection, cm_subsubsection, false -summarycontents, do_nothing, false -syncodeindex, cm_synindex, false -synindex, cm_synindex, false -t, cm_title, true -table, cm_table, false -tex, cm_tex, false -tindex, cm_tindex, false -titlepage, cm_titlepage, false -unnumbered, cm_unnumbered, false -unnumberedsec, cm_unnumberedsec, false -unnumberedsubsec, cm_unnumberedsubsec, false -var, cm_var, true -vindex, cm_vindex, false -w, cm_w, true -xref, cm_xref, true -{, insert_self, false -}, insert_self, false -infoinclude, cm_infoinclude, false -footnote, cm_footnote, false diff --git a/apps/gperf/tests/modula.exp b/apps/gperf/tests/modula.exp deleted file mode 100644 index cef7d5acad8..00000000000 --- a/apps/gperf/tests/modula.exp +++ /dev/null @@ -1,106 +0,0 @@ -in word set AND -in word set ARRAY -in word set BEGIN -in word set BITS -in word set BY -in word set CASE -in word set CONST -in word set DIV -in word set DO -in word set ELSE -in word set ELSIF -in word set END -in word set EVAL -in word set EXCEPT -in word set EXCEPTION -in word set EXIT -in word set EXPORTS -in word set FINALLY -in word set FOR -in word set FROM -in word set IF -in word set IMPORT -in word set INTERFACE -in word set IN -in word set INLINE -in word set LOCK -in word set METHODS -in word set MOD -in word set MODULE -in word set NOT -in word set OBJECT -in word set OF -in word set OR -in word set PROCEDURE -in word set RAISES -in word set READONLY -in word set RECORD -in word set REF -in word set REPEAT -in word set RETURN -in word set SET -in word set THEN -in word set TO -in word set TRY -in word set TYPE -in word set TYPECASE -in word set UNSAFE -in word set UNTIL -in word set UNTRACED -in word set VALUE -in word set VAR -in word set WHILE -in word set WITH -in word set and -in word set array -in word set begin -in word set bits -in word set by -in word set case -in word set const -in word set div -in word set do -in word set else -in word set elsif -in word set end -in word set eval -in word set except -in word set exception -in word set exit -in word set exports -in word set finally -in word set for -in word set from -in word set if -in word set import -in word set interface -in word set in -in word set inline -in word set lock -in word set methods -in word set mod -in word set module -in word set not -in word set object -in word set of -in word set or -in word set procedure -in word set raises -in word set readonly -in word set record -in word set ref -in word set repeat -in word set return -in word set set -in word set then -in word set to -in word set try -in word set type -in word set typecase -in word set unsafe -in word set until -in word set untraced -in word set value -in word set var -in word set while -in word set with diff --git a/apps/gperf/tests/modula2.gperf b/apps/gperf/tests/modula2.gperf deleted file mode 100644 index 5ef9c753835..00000000000 --- a/apps/gperf/tests/modula2.gperf +++ /dev/null @@ -1,40 +0,0 @@ -AND -ARRAY -BEGIN -BY -CASE -CONST -DEFINITION -DIV -DO -ELSE -ELSIF -END -EXIT -EXPORT -FOR -FROM -IF -IMPLEMENTATION -IMPORT -IN -LOOP -MOD -MODULE -NOT -OF -OR -POINTER -PROCEDURE -QUALIFIED -RECORD -REPEAT -RETURN -SET -THEN -TO -TYPE -UNTIL -VAR -WHILE -WITH diff --git a/apps/gperf/tests/modula3.gperf b/apps/gperf/tests/modula3.gperf deleted file mode 100644 index d0243460d9b..00000000000 --- a/apps/gperf/tests/modula3.gperf +++ /dev/null @@ -1,106 +0,0 @@ -AND -ARRAY -BEGIN -BITS -BY -CASE -CONST -DIV -DO -ELSE -ELSIF -END -EVAL -EXCEPT -EXCEPTION -EXIT -EXPORTS -FINALLY -FOR -FROM -IF -IMPORT -INTERFACE -IN -INLINE -LOCK -METHODS -MOD -MODULE -NOT -OBJECT -OF -OR -PROCEDURE -RAISES -READONLY -RECORD -REF -REPEAT -RETURN -SET -THEN -TO -TRY -TYPE -TYPECASE -UNSAFE -UNTIL -UNTRACED -VALUE -VAR -WHILE -WITH -and -array -begin -bits -by -case -const -div -do -else -elsif -end -eval -except -exception -exit -exports -finally -for -from -if -import -interface -in -inline -lock -methods -mod -module -not -object -of -or -procedure -raises -readonly -record -ref -repeat -return -set -then -to -try -type -typecase -unsafe -until -untraced -value -var -while -with diff --git a/apps/gperf/tests/pascal.exp b/apps/gperf/tests/pascal.exp deleted file mode 100644 index 765e44c6a0f..00000000000 --- a/apps/gperf/tests/pascal.exp +++ /dev/null @@ -1,36 +0,0 @@ -in word set with -in word set array -in word set and -in word set function -in word set case -in word set var -in word set const -in word set until -in word set then -in word set set -in word set record -in word set program -in word set procedure -in word set or -in word set packed -in word set not -in word set nil -in word set label -in word set in -in word set repeat -in word set of -in word set goto -in word set forward -in word set for -in word set while -in word set file -in word set else -in word set downto -in word set do -in word set div -in word set to -in word set type -in word set end -in word set mod -in word set begin -in word set if diff --git a/apps/gperf/tests/pascal.gperf b/apps/gperf/tests/pascal.gperf deleted file mode 100644 index fed3fbb30ea..00000000000 --- a/apps/gperf/tests/pascal.gperf +++ /dev/null @@ -1,36 +0,0 @@ -with -array -and -function -case -var -const -until -then -set -record -program -procedure -or -packed -not -nil -label -in -repeat -of -goto -forward -for -while -file -else -downto -do -div -to -type -end -mod -begin -if diff --git a/apps/gperf/tests/test-1.exp b/apps/gperf/tests/test-1.exp deleted file mode 100644 index 5788cf7dfc3..00000000000 --- a/apps/gperf/tests/test-1.exp +++ /dev/null @@ -1,140 +0,0 @@ -/* C code produced by gperf version 2.5 (GNU C++ version) */ -/* Command-line: ../src/gperf -p -j1 -g -o -t -N is_reserved_word -k1,3,$ */ -/* Command-line: gperf -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf */ -struct resword { char *name; short token; enum rid rid; }; - -#define TOTAL_KEYWORDS 51 -#define MIN_WORD_LENGTH 2 -#define MAX_WORD_LENGTH 13 -#define MIN_HASH_VALUE 8 -#define MAX_HASH_VALUE 82 -/* maximum key range = 75, duplicates = 0 */ - -#ifdef __GNUC__ -inline -#endif -static unsigned int -hash (str, len) - register char *str; - register int unsigned len; -{ - static unsigned char asso_values[] = - { - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 0, 83, 1, 2, 34, - 19, 6, 11, 29, 0, 17, 83, 0, 23, 28, - 26, 30, 31, 83, 15, 1, 0, 28, 13, 4, - 83, 83, 5, 83, 83, 83, 83, 83, - }; - register int hval = len; - - switch (hval) - { - default: - case 3: - hval += asso_values[str[2]]; - case 2: - case 1: - hval += asso_values[str[0]]; - break; - } - return hval + asso_values[str[len - 1]]; -} - -#ifdef __GNUC__ -inline -#endif -struct resword * -is_reserved_word (str, len) - register char *str; - register unsigned int len; -{ - static struct resword wordlist[] = - { - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"__asm__", ASM, NORID}, - {"",}, - {"__typeof__", TYPEOF, NORID}, - {"__signed__", TYPESPEC, RID_SIGNED}, - {"__alignof__", ALIGNOF, NORID}, - {"break", BREAK, NORID}, - {"__attribute__", ATTRIBUTE, NORID}, - {"",}, {"",}, - {"else", ELSE, NORID}, - {"__attribute", ATTRIBUTE, NORID}, - {"__typeof", TYPEOF, NORID}, - {"int", TYPESPEC, RID_INT}, - {"__alignof", ALIGNOF, NORID}, - {"struct", STRUCT, NORID}, - {"sizeof", SIZEOF, NORID}, - {"switch", SWITCH, NORID}, - {"__volatile__", TYPE_QUAL, RID_VOLATILE}, - {"",}, - {"__inline__", SCSPEC, RID_INLINE}, - {"__signed", TYPESPEC, RID_SIGNED}, - {"__volatile", TYPE_QUAL, RID_VOLATILE}, - {"if", IF, NORID}, - {"__inline", SCSPEC, RID_INLINE}, - {"while", WHILE, NORID}, - {"",}, - {"__asm", ASM, NORID}, - {"auto", SCSPEC, RID_AUTO}, - {"short", TYPESPEC, RID_SHORT}, - {"default", DEFAULT, NORID}, - {"extern", SCSPEC, RID_EXTERN}, - {"",}, {"",}, - {"__const", TYPE_QUAL, RID_CONST}, - {"static", SCSPEC, RID_STATIC}, - {"__const__", TYPE_QUAL, RID_CONST}, - {"for", FOR, NORID}, - {"case", CASE, NORID}, - {"float", TYPESPEC, RID_FLOAT}, - {"return", RETURN, NORID}, - {"typeof", TYPEOF, NORID}, - {"typedef", SCSPEC, RID_TYPEDEF}, - {"volatile", TYPE_QUAL, RID_VOLATILE}, - {"do", DO, NORID}, - {"inline", SCSPEC, RID_INLINE}, - {"void", TYPESPEC, RID_VOID}, - {"char", TYPESPEC, RID_CHAR}, - {"signed", TYPESPEC, RID_SIGNED}, - {"unsigned", TYPESPEC, RID_UNSIGNED}, - {"",}, {"",}, - {"double", TYPESPEC, RID_DOUBLE}, - {"asm", ASM, NORID}, - {"",}, {"",}, - {"goto", GOTO, NORID}, - {"",}, - {"const", TYPE_QUAL, RID_CONST}, - {"enum", ENUM, NORID}, - {"register", SCSPEC, RID_REGISTER}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"continue", CONTINUE, NORID}, - {"",}, - {"union", UNION, NORID}, - {"",}, {"",}, {"",}, {"",}, {"",}, - {"long", TYPESPEC, RID_LONG}, - }; - - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - register int key = hash (str, len); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register char *s = wordlist[key].name; - - if (*s == *str && !strcmp (str + 1, s + 1)) - return &wordlist[key]; - } - } - return 0; -} diff --git a/apps/gperf/tests/test-2.exp b/apps/gperf/tests/test-2.exp deleted file mode 100644 index f74124155eb..00000000000 --- a/apps/gperf/tests/test-2.exp +++ /dev/null @@ -1,183 +0,0 @@ -/* C code produced by gperf version 2.5 (GNU C++ version) */ -/* Command-line: ../src/gperf -n -k1-8 -l */ - -#define TOTAL_KEYWORDS 40 -#define MIN_WORD_LENGTH 2 -#define MAX_WORD_LENGTH 14 -#define MIN_HASH_VALUE 1 -#define MAX_HASH_VALUE 256 -/* maximum key range = 256, duplicates = 0 */ - -static unsigned int -hash (str, len) - register char *str; - register int unsigned len; -{ - static unsigned short asso_values[] = - { - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 25, 30, 35, 21, 0, - 30, 15, 30, 45, 257, 257, 0, 5, 45, 0, - 10, 0, 1, 20, 25, 15, 30, 40, 15, 5, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, - }; - register int hval = 0; - - switch (len) - { - default: - case 8: - hval += asso_values[str[7]]; - case 7: - hval += asso_values[str[6]]; - case 6: - hval += asso_values[str[5]]; - case 5: - hval += asso_values[str[4]]; - case 4: - hval += asso_values[str[3]]; - case 3: - hval += asso_values[str[2]]; - case 2: - hval += asso_values[str[1]]; - case 1: - hval += asso_values[str[0]]; - break; - } - return hval; -} - -char * -in_word_set (str, len) - register char *str; - register unsigned int len; -{ - - static unsigned char lengthtable[] = - { - 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2, 3, 0, - 0, 0, 2, 3, 0, 0, 0, 2, 4, 0, 0, 0, 4, 6, - 0, 0, 0, 3, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, - 3, 5, 6, 0, 0, 6, 0, 0, 0, 0, 3, 0, 0, 0, - 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 9, - 0, 4, 6, 6, 0, 0, 2, 3, 0, 0, 0, 5, 3, 0, - 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, - 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, - 7, 0, 0, 0, 5, 0, 0, 0, 0, 5, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, - }; - static char *wordlist[] = - { - "", - "OR", - "", "", "", "", "", "", "", "", - "LOOP", - "", "", "", "", "", "", "", "", "", - "ELSE", - "DO", - "", "", "", - "TO", - "MOD", - "", "", "", - "OF", - "FOR", - "", "", "", - "BY", - "FROM", - "", "", "", - "TYPE", - "MODULE", - "", "", "", - "SET", - "", "", "", "", "", - "EXPORT", - "", "", "", "", - "VAR", - "ARRAY", - "RECORD", - "", "", - "REPEAT", - "", "", "", "", - "END", - "", "", "", - "NOT", - "", "", "", "", - "IF", - "", "", "", "", - "CASE", - "", "", - "PROCEDURE", - "", - "EXIT", - "IMPORT", - "RETURN", - "", "", - "IN", - "AND", - "", "", "", - "ELSIF", - "DIV", - "", "", "", - "THEN", - "", "", "", "", "", "", "", "", "", - "IMPLEMENTATION", - "", "", "", "", - "WHILE", - "", "", "", "", "", "", "", "", "", - "CONST", - "POINTER", - "", "", "", - "UNTIL", - "", "", "", "", - "BEGIN", - "", "", "", "", - "WITH", - "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", - "", "QUALIFIED", - "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", - "", "", "", "", "", - "DEFINITION", - }; - - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - register int key = hash (str, len); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register char *s = wordlist[key]; - - if (len == lengthtable[key] - && *s == *str && !strcmp (str + 1, s + 1)) - return s; - } - } - return 0; -} diff --git a/apps/gperf/tests/test-3.exp b/apps/gperf/tests/test-3.exp deleted file mode 100644 index 5e889020657..00000000000 --- a/apps/gperf/tests/test-3.exp +++ /dev/null @@ -1,169 +0,0 @@ -/* C code produced by gperf version 2.5 (GNU C++ version) */ -/* Command-line: ../src/gperf -p -j 1 -o -a -C -g -t -k1,4,$ */ -/* Command-line: gperf -p -j1 -g -o -t -N is_reserved_word -k1,4,$ gplus.gperf */ -struct resword { char *name; short token; enum rid rid;}; - -#define TOTAL_KEYWORDS 71 -#define MIN_WORD_LENGTH 2 -#define MAX_WORD_LENGTH 13 -#define MIN_HASH_VALUE 4 -#define MAX_HASH_VALUE 147 -/* maximum key range = 144, duplicates = 0 */ - -#ifdef __GNUC__ -inline -#endif -static unsigned int -hash (register const char *str, register int len) -{ - static const unsigned char asso_values[] = - { - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 148, 148, 0, 148, 19, 6, 27, - 37, 0, 12, 1, 15, 63, 148, 4, 0, 56, - 20, 15, 42, 148, 31, 5, 26, 39, 32, 10, - 148, 40, 148, 148, 148, 148, 148, 148, - }; - register int hval = len; - - switch (hval) - { - default: - case 4: - hval += asso_values[str[3]]; - case 3: - case 2: - case 1: - hval += asso_values[str[0]]; - break; - } - return hval + asso_values[str[len - 1]]; -} - -#ifdef __GNUC__ -inline -#endif -const struct resword * -in_word_set (register const char *str, register int len) -{ - static const struct resword wordlist[] = - { - {"",}, {"",}, {"",}, {"",}, - {"else", ELSE, NORID,}, - {"",}, - {"long", TYPESPEC, RID_LONG,}, - {"",}, {"",}, {"",}, {"",}, - {"__alignof__", ALIGNOF, NORID}, - {"__asm__", ASM, NORID}, - {"",}, {"",}, - {"while", WHILE, NORID,}, - {"",}, {"",}, {"",}, {"",}, {"",}, - {"__alignof", ALIGNOF, NORID}, - {"all", ALL, NORID /* Extension */,}, - {"sizeof", SIZEOF, NORID,}, - {"__const__", TYPE_QUAL, RID_CONST}, - {"__volatile", TYPE_QUAL, RID_VOLATILE}, - {"extern", SCSPEC, RID_EXTERN,}, - {"__volatile__", TYPE_QUAL, RID_VOLATILE}, - {"__inline", SCSPEC, RID_INLINE}, - {"exception", AGGR, RID_EXCEPTION /* Extension */,}, - {"__inline__", SCSPEC, RID_INLINE}, - {"case", CASE, NORID,}, - {"except", EXCEPT, NORID /* Extension */,}, - {"new", NEW, NORID,}, - {"break", BREAK, NORID,}, - {"goto", GOTO, NORID,}, - {"",}, - {"__attribute", ATTRIBUTE, NORID}, - {"",}, - {"__attribute__", ATTRIBUTE, NORID}, - {"this", THIS, NORID,}, - {"raise", RAISE, NORID /* Extension */,}, - {"class", AGGR, RID_CLASS,}, - {"delete", DELETE, NORID,}, - {"typeof", TYPEOF, NORID,}, - {"typedef", SCSPEC, RID_TYPEDEF,}, - {"for", FOR, NORID,}, - {"raises", RAISES, NORID /* Extension */,}, - {"__const", TYPE_QUAL, RID_CONST}, - {"double", TYPESPEC, RID_DOUBLE,}, - {"__typeof__", TYPEOF, NORID}, - {"",}, - {"switch", SWITCH, NORID,}, - {"auto", SCSPEC, RID_AUTO,}, - {"do", DO, NORID,}, - {"friend", SCSPEC, RID_FRIEND,}, - {"",}, - {"reraise", RERAISE, NORID /* Extension */,}, - {"",}, - {"volatile", TYPE_QUAL, RID_VOLATILE,}, - {"__typeof", TYPEOF, NORID}, - {"continue", CONTINUE, NORID,}, - {"float", TYPESPEC, RID_FLOAT,}, - {"const", TYPE_QUAL, RID_CONST,}, - {"static", SCSPEC, RID_STATIC,}, - {"virtual", SCSPEC, RID_VIRTUAL,}, - {"__asm", ASM, NORID}, - {"short", TYPESPEC, RID_SHORT,}, - {"signed", TYPESPEC, RID_SIGNED,}, - {"try", TRY, NORID /* Extension */,}, - {"",}, {"",}, {"",}, - {"__signed__", TYPESPEC, RID_SIGNED}, - {"catch", CATCH, NORID,}, - {"public", PUBLIC, NORID,}, - {"struct", AGGR, RID_RECORD,}, - {"if", IF, NORID,}, - {"asm", ASM, NORID,}, - {"union", AGGR, RID_UNION,}, - {"",}, - {"private", PRIVATE, NORID,}, - {"",}, {"",}, {"",}, - {"operator", OPERATOR, NORID,}, - {"",}, {"",}, {"",}, - {"default", DEFAULT, NORID,}, - {"dynamic", DYNAMIC, NORID,}, - {"overload", OVERLOAD, NORID,}, - {"int", TYPESPEC, RID_INT,}, - {"char", TYPESPEC, RID_CHAR,}, - {"",}, {"",}, - {"return", RETURN, NORID,}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"",}, - {"__signed", TYPESPEC, RID_SIGNED}, - {"",}, - {"void", TYPESPEC, RID_VOID,}, - {"",}, {"",}, {"",}, - {"protected", PROTECTED, NORID,}, - {"",}, - {"enum", ENUM, NORID,}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"inline", SCSPEC, RID_INLINE,}, - {"register", SCSPEC, RID_REGISTER,}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"",}, {"",}, {"",}, {"",}, - {"unsigned", TYPESPEC, RID_UNSIGNED,}, - }; - - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - register int key = hash (str, len); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register const char *s = wordlist[key].name; - - if (*s == *str && !strcmp (str + 1, s + 1)) - return &wordlist[key]; - } - } - return 0; -} diff --git a/apps/gperf/tests/test-4.exp b/apps/gperf/tests/test-4.exp deleted file mode 100644 index 5238bf94d98..00000000000 --- a/apps/gperf/tests/test-4.exp +++ /dev/null @@ -1,138 +0,0 @@ -/* C code produced by gperf version 2.5 (GNU C++ version) */ -/* Command-line: ../src/gperf -D -p -t */ -/* Command-line: gperf -p -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,$ c-parse.gperf */ -struct resword { char *name; short token; enum rid rid; }; - -#define TOTAL_KEYWORDS 51 -#define MIN_WORD_LENGTH 2 -#define MAX_WORD_LENGTH 13 -#define MIN_HASH_VALUE 4 -#define MAX_HASH_VALUE 82 -/* maximum key range = 79, duplicates = 2 */ - -static unsigned int -hash (str, len) - register char *str; - register int unsigned len; -{ - static unsigned char asso_values[] = - { - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 0, 83, 40, 20, 50, - 25, 10, 30, 0, 0, 50, 83, 0, 15, 0, - 35, 0, 83, 83, 20, 0, 10, 40, 5, 15, - 83, 83, 83, 83, 83, 83, 83, 83, - }; - return len + asso_values[str[len - 1]] + asso_values[str[0]]; -} - -struct resword * -in_word_set (str, len) - register char *str; - register unsigned int len; -{ - static struct resword wordlist[] = - { - {"",}, {"",}, {"",}, {"",}, - {"goto", GOTO, NORID}, - {"__asm", ASM, NORID}, - {"switch", SWITCH, NORID}, - {"__asm__", ASM, NORID}, - {"__const__", TYPE_QUAL, RID_CONST}, - {"__inline__", SCSPEC, RID_INLINE}, - {"__typeof__", TYPEOF, NORID}, - {"__signed__", TYPESPEC, RID_SIGNED}, - {"__alignof__", ALIGNOF, NORID}, - {"__volatile__", TYPE_QUAL, RID_VOLATILE}, - {"__attribute__", ATTRIBUTE, NORID}, - {"enum", ENUM, NORID}, - {"short", TYPESPEC, RID_SHORT}, - {"struct", STRUCT, NORID}, - {"__const", TYPE_QUAL, RID_CONST}, - {"__inline", SCSPEC, RID_INLINE}, - {"long", TYPESPEC, RID_LONG}, - {"__volatile", TYPE_QUAL, RID_VOLATILE}, - {"__attribute", ATTRIBUTE, NORID}, - {"volatile", TYPE_QUAL, RID_VOLATILE}, - {"else", ELSE, NORID}, - {"break", BREAK, NORID}, - {"do", DO, NORID}, - {"while", WHILE, NORID}, - {"signed", TYPESPEC, RID_SIGNED}, - {"__signed", TYPESPEC, RID_SIGNED}, - {"void", TYPESPEC, RID_VOID}, - {"sizeof", SIZEOF, NORID}, - {"__typeof", TYPEOF, NORID}, - {"__alignof", ALIGNOF, NORID}, - {"double", TYPESPEC, RID_DOUBLE}, - {"default", DEFAULT, NORID}, - {"asm", ASM, NORID}, - {"auto", SCSPEC, RID_AUTO}, - {"float", TYPESPEC, RID_FLOAT}, - {"typeof", TYPEOF, NORID}, - {"typedef", SCSPEC, RID_TYPEDEF}, - {"register", SCSPEC, RID_REGISTER}, - {"extern", SCSPEC, RID_EXTERN}, - {"for", FOR, NORID}, - {"static", SCSPEC, RID_STATIC}, - {"return", RETURN, NORID}, - {"int", TYPESPEC, RID_INT}, - {"case", CASE, NORID}, - {"const", TYPE_QUAL, RID_CONST}, - {"inline", SCSPEC, RID_INLINE}, - {"continue", CONTINUE, NORID}, - {"unsigned", TYPESPEC, RID_UNSIGNED}, - {"char", TYPESPEC, RID_CHAR}, - {"union", UNION, NORID}, - {"if", IF, NORID}, - }; - - static char lookup[] = - { - -1, -1, -1, -1, 4, 5, 6, 7, -1, 8, 100, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, -1, 23, 24, 25, -1, 26, - -9, -3, 27, 28, -1, 29, 30, -1, 31, -1, 32, 33, -1, 34, - 35, 36, 37, 38, 39, 40, 41, -1, -1, 42, -1, 43, -1, -1, - 44, -1, -1, -1, -1, 45, -1, 46, 47, 48, 49, -1, 50, -1, - -1, -1, -1, 51, 52, -1, -1, -1, -1, -1, 53, -1, 54, - }; - - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - register int key = hash (str, len); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register int index = lookup[key]; - - if (index >= 0 && index < MAX_HASH_VALUE) - { - register char *s = wordlist[index].name; - - if (*s == *str && !strcmp (str + 1, s + 1)) - return &wordlist[index]; - } - else if (index < 0 && index >= -MAX_HASH_VALUE) - return 0; - else - { - register int offset = key + index + (index > 0 ? -MAX_HASH_VALUE : MAX_HASH_VALUE); - register struct resword *base = &wordlist[-lookup[offset]]; - register struct resword *ptr = base + -lookup[offset + 1]; - - while (--ptr >= base) - if (*str == *ptr->name && !strcmp (str + 1, ptr->name + 1)) - return ptr; - } - } - } - return 0; -} diff --git a/apps/gperf/tests/test-5.exp b/apps/gperf/tests/test-5.exp deleted file mode 100644 index 101e2798d40..00000000000 --- a/apps/gperf/tests/test-5.exp +++ /dev/null @@ -1,111 +0,0 @@ -/* C code produced by gperf version 2.5 (GNU C++ version) */ -/* Command-line: ../src/gperf -g -o -j1 -t -p -N is_reserved_word */ -/* ISO Pascal 7185 reserved words. - * - * For GNU Pascal compiler (GPC) by jtv@hut.fi - * - * run this through the Doug Schmidt's gperf program - * with command - * gperf -g -o -j1 -t -p -N is_reserved_word - * - */ -struct resword { char *name; short token; short iclass;}; - -#define TOTAL_KEYWORDS 35 -#define MIN_WORD_LENGTH 2 -#define MAX_WORD_LENGTH 9 -#define MIN_HASH_VALUE 2 -#define MAX_HASH_VALUE 43 -/* maximum key range = 42, duplicates = 0 */ - -#ifdef __GNUC__ -inline -#endif -static unsigned int -hash (str, len) - register char *str; - register int unsigned len; -{ - static unsigned char asso_values[] = - { - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 18, 29, 14, 6, 7, - 10, 20, 44, 28, 44, 44, 28, 19, 22, 15, - 0, 44, 9, 23, 0, 23, 26, 2, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 0, 0, 13, 44, 30, 44, 44, 44, 0, 25, - 1, 0, 44, 44, 0, 44, 1, 44, 25, 44, - 44, 0, 44, 44, 44, 44, 44, 44, - }; - return len + asso_values[str[len - 1]] + asso_values[str[0]]; -} - -#ifdef __GNUC__ -inline -#endif -struct resword * -is_reserved_word (str, len) - register char *str; - register unsigned int len; -{ - static struct resword wordlist[] = - { - {"",}, {"",}, - {"To", TO, PASCAL_ISO}, - {"",}, - {"Type", TYPE, PASCAL_ISO}, - {"Then", THEN, PASCAL_ISO}, - {"Packed", PACKED, PASCAL_ISO}, - {"While", WHILE, PASCAL_ISO}, - {"Do", DO, PASCAL_ISO}, - {"Procedure", PROCEDURE, PASCAL_ISO}, - {"End", END, PASCAL_ISO}, - {"Else", ELSE, PASCAL_ISO}, - {"Downto", DOWNTO, PASCAL_ISO}, - {"For", FOR, PASCAL_ISO}, - {"File", FILE_, PASCAL_ISO}, - {"Record", RECORD, PASCAL_ISO}, - {"Repeat", REPEAT, PASCAL_ISO}, - {"Or", OR, PASCAL_ISO}, - {"Case", CASE, PASCAL_ISO}, - {"Function", FUNCTION, PASCAL_ISO}, - {"Const", CONST, PASCAL_ISO}, - {"And", AND, PASCAL_ISO}, - {"Mod", MOD, PASCAL_ISO}, - {"Array", ARRAY, PASCAL_ISO}, - {"Goto", GOTO, PASCAL_ISO}, - {"Nil", NIL, PASCAL_ISO}, - {"Not", NOT, PASCAL_ISO}, - {"Set", SET, PASCAL_ISO}, - {"Until", UNTIL, PASCAL_ISO}, - {"Var", VAR, PASCAL_ISO}, - {"Of", OF, PASCAL_ISO}, - {"In", IN, PASCAL_ISO}, - {"Program", PROGRAM,PASCAL_ISO}, - {"Label", LABEL, PASCAL_ISO}, - {"Div", DIV, PASCAL_ISO}, - {"Begin", BEGIN_, PASCAL_ISO}, - {"With", WITH, PASCAL_ISO}, - {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, - {"If", IF, PASCAL_ISO}, - }; - - if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) - { - register int key = hash (str, len); - - if (key <= MAX_HASH_VALUE && key >= 0) - { - register char *s = wordlist[key].name; - - if (*s == *str && !strcmp (str + 1, s + 1)) - return &wordlist[key]; - } - } - return 0; -} diff --git a/apps/gperf/tests/test-6.exp b/apps/gperf/tests/test-6.exp deleted file mode 100644 index eba6e3cac9a..00000000000 --- a/apps/gperf/tests/test-6.exp +++ /dev/null @@ -1,74 +0,0 @@ --a Generate ANSI standard C output code, i.e., function prototypes. --c Generate comparison code using strncmp rather than strcmp. --C Make the contents of generated lookup tables constant, i.e., readonly. --d Enables the debugging option (produces verbose output to the standard error). --D Handle keywords that hash to duplicate values. This is useful - for certain highly redundant keyword sets. It enables the -S option. --e Allow user to provide a string containing delimiters used to separate - keywords from their attributes. Default is ",\n" --E Define constant values using an enum local to the lookup function - rather than with defines --f Generate the gen-perf.hash function ``fast.'' This decreases GPERF's - running time at the cost of minimizing generated table-size. - The numeric argument represents the number of times to iterate when - resolving a collision. `0' means ``iterate by the number of keywords.'' --g Assume a GNU compiler, e.g., g++ or gcc. This makes all generated - routines use the ``inline'' keyword to remove cost of function calls. --G Generate the static table of keywords as a static global variable, - rather than hiding it inside of the lookup function (which is the - default behavior). --h Prints this mesage. --H Allow user to specify name of generated hash function. Default - is `hash'. --i Provide an initial value for the associate values array. Default is 0. - Setting this value larger helps inflate the size of the final table. --j Affects the ``jump value,'' i.e., how far to advance the associated - character value upon collisions. Must be an odd number, default is 5. --k Allows selection of the key positions used in the hash function. - The allowable choices range between 1-126, inclusive. The positions - are separated by commas, ranges may be used, and key positions may - occur in any order. Also, the meta-character '*' causes the generated - hash function to consider ALL key positions, and $ indicates the - ``final character'' of a key, e.g., $,1,2,4,6-10. --K Allow use to select name of the keyword component in the keyword structure. --l Compare key lengths before trying a string comparison. This helps - cut down on the number of string comparisons made during the lookup. --L Generates code in the language specified by the option's argument. Languages - handled are currently C++ and C. The default is C. --n Do not include the length of the keyword when computing the hash function --N Allow user to specify name of generated lookup function. Default - name is `in_word_set.' --o Reorders input keys by frequency of occurrence of the key sets. - This should decrease the search time dramatically. --p Changes the return value of the generated function ``in_word_set'' - from its default boolean value (i.e., 0 or 1), to type ``pointer - to wordlist array'' This is most useful when the -t option, allowing - user-defined structs, is used. --r Utilizes randomness to initialize the associated values table. --s Affects the size of the generated hash table. The numeric argument - for this option indicates ``how many times larger or smaller'' the associated - value range should be, in relationship to the number of keys, e.g. a value of 3 - means ``allow the maximum associated value to be about 3 times larger than the - number of input keys.'' Conversely, a value of -3 means ``make the maximum - associated value about 3 times smaller than the number of input keys. - A larger table should decrease the time required for an unsuccessful search, - at the expense of extra table space. Default value is 1. --S Causes the generated C code to use a switch statement scheme, rather - than an array lookup table. This can lead to a reduction in both - time and space requirements for some keyfiles. The argument to - this option determines how many switch statements are generated. - A value of 1 generates 1 switch containing all the elements, a value of 2 - generates 2 tables with 1/2 the elements in each table, etc. This - is useful since many C compilers cannot correctly generate code for - large switch statements. --t Allows the user to include a structured type declaration for - generated code. Any text before %% is consider part of the type - declaration. Key words and additional fields may follow this, one - group of fields per line. --T Prevents the transfer of the type declaration to the output file. - Use this option if the type is already defined elsewhere. --v Prints out the current version number --Z Allow user to specify name of generated C++ class. Default - name is `Perfect_Hash.' -Usage: ../src/gperf [-acCdDef[num]gGhH<hashname>i<init>jk<keys>K<keyname>lL<language>nN<function name>oprs<size>S<switches>tTvZ<class name>]. -(type ../src/gperf -h for help) diff --git a/apps/gperf/tests/test-7.exp b/apps/gperf/tests/test-7.exp deleted file mode 100644 index c5c942c10d1..00000000000 --- a/apps/gperf/tests/test-7.exp +++ /dev/null @@ -1,32 +0,0 @@ -in word set if -in word set do -NOT in word set int -in word set for -in word set case -NOT in word set char -NOT in word set auto -in word set goto -in word set else -NOT in word set long -NOT in word set void -NOT in word set enum -NOT in word set float -NOT in word set short -NOT in word set union -NOT in word set break -in word set while -NOT in word set const -NOT in word set double -NOT in word set static -NOT in word set extern -NOT in word set struct -in word set return -NOT in word set sizeof -NOT in word set switch -NOT in word set signed -NOT in word set typedef -NOT in word set default -NOT in word set unsigned -NOT in word set continue -NOT in word set register -NOT in word set volatile diff --git a/apps/gperf/tests/test.c b/apps/gperf/tests/test.c deleted file mode 100644 index 35d9015bba7..00000000000 --- a/apps/gperf/tests/test.c +++ /dev/null @@ -1,28 +0,0 @@ -/* -// @(#)test.c 1.1 10/18/96 - - Tests the generated perfect has function. - The -v option prints diagnostics as to whether a word is in - the set or not. Without -v the program is useful for timing. -*/ - -#include <stdio.h> - -#define MAX_LEN 80 - -int -main (argc, argv) - int argc; - char *argv[]; -{ - int verbose = argc > 1 ? 1 : 0; - char buf[MAX_LEN]; - - while (gets (buf)) - if (in_word_set (buf, strlen (buf)) && verbose) - printf ("in word set %s\n", buf); - else if (verbose) - printf ("NOT in word set %s\n", buf); - - return 0; -} |