diff options
Diffstat (limited to 'apps/Gateway/Peer')
-rw-r--r-- | apps/Gateway/Peer/Makefile | 303 | ||||
-rw-r--r-- | apps/Gateway/Peer/Makefile.bor | 8 | ||||
-rw-r--r-- | apps/Gateway/Peer/Options.cpp | 195 | ||||
-rw-r--r-- | apps/Gateway/Peer/Options.h | 133 | ||||
-rw-r--r-- | apps/Gateway/Peer/Peer.cpp | 906 | ||||
-rw-r--r-- | apps/Gateway/Peer/Peer.dsp | 66 | ||||
-rw-r--r-- | apps/Gateway/Peer/Peer.dsw | 44 | ||||
-rw-r--r-- | apps/Gateway/Peer/Peer.h | 242 | ||||
-rw-r--r-- | apps/Gateway/Peer/peerd.cpp | 62 | ||||
-rw-r--r-- | apps/Gateway/Peer/peerd.dsp | 59 | ||||
-rw-r--r-- | apps/Gateway/Peer/svc.conf | 2 |
11 files changed, 0 insertions, 2020 deletions
diff --git a/apps/Gateway/Peer/Makefile b/apps/Gateway/Peer/Makefile deleted file mode 100644 index 75c92afd1c8..00000000000 --- a/apps/Gateway/Peer/Makefile +++ /dev/null @@ -1,303 +0,0 @@ -#---------------------------------------------------------------------------- -# $Id$ -# -# 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 = - -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 - -ifeq ($(static_libs_only),1) -$(VBIN): $(VLIB) -else -$(VBIN): $(VSHLIB) -endif - -#---------------------------------------------------------------------------- -# 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 .obj/Options.so .shobj/Options.o .shobj/Options.so: Options.cpp \ - $(ACE_ROOT)/ace/Get_Opt.h \ - $(ACE_ROOT)/ace/pre.h \ - $(ACE_ROOT)/ace/ACE.h \ - $(ACE_ROOT)/ace/OS.h \ - $(ACE_ROOT)/ace/post.h \ - $(ACE_ROOT)/ace/ACE_export.h \ - $(ACE_ROOT)/ace/svc_export.h \ - $(ACE_ROOT)/ace/ace_wchar.h \ - $(ACE_ROOT)/ace/ace_wchar.inl \ - $(ACE_ROOT)/ace/OS_Errno.h \ - $(ACE_ROOT)/ace/OS_Export.h \ - $(ACE_ROOT)/ace/OS_Errno.inl \ - $(ACE_ROOT)/ace/OS_Dirent.h \ - $(ACE_ROOT)/ace/OS_Dirent.inl \ - $(ACE_ROOT)/ace/OS_String.h \ - $(ACE_ROOT)/ace/OS_String.inl \ - $(ACE_ROOT)/ace/OS_Memory.h \ - $(ACE_ROOT)/ace/OS_Memory.inl \ - $(ACE_ROOT)/ace/OS_TLI.h \ - $(ACE_ROOT)/ace/OS_TLI.inl \ - $(ACE_ROOT)/ace/Min_Max.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Flag_Manip.h \ - $(ACE_ROOT)/ace/Flag_Manip.i \ - $(ACE_ROOT)/ace/Handle_Ops.h \ - $(ACE_ROOT)/ace/Handle_Ops.i \ - $(ACE_ROOT)/ace/Lib_Find.h \ - $(ACE_ROOT)/ace/Lib_Find.i \ - $(ACE_ROOT)/ace/Init_ACE.h \ - $(ACE_ROOT)/ace/Init_ACE.i \ - $(ACE_ROOT)/ace/Sock_Connect.h \ - $(ACE_ROOT)/ace/Sock_Connect.i \ - $(ACE_ROOT)/ace/ACE.i \ - $(ACE_ROOT)/ace/Get_Opt.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/OS_Log_Msg_Attributes.h \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ - Options.h ../Gateway/Event.h - -.obj/Peer.o .obj/Peer.so .shobj/Peer.o .shobj/Peer.so: Peer.cpp Peer.h \ - $(ACE_ROOT)/ace/Service_Config.h \ - $(ACE_ROOT)/ace/pre.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/post.h \ - $(ACE_ROOT)/ace/ACE_export.h \ - $(ACE_ROOT)/ace/svc_export.h \ - $(ACE_ROOT)/ace/ace_wchar.h \ - $(ACE_ROOT)/ace/ace_wchar.inl \ - $(ACE_ROOT)/ace/OS_Errno.h \ - $(ACE_ROOT)/ace/OS_Export.h \ - $(ACE_ROOT)/ace/OS_Errno.inl \ - $(ACE_ROOT)/ace/OS_Dirent.h \ - $(ACE_ROOT)/ace/OS_Dirent.inl \ - $(ACE_ROOT)/ace/OS_String.h \ - $(ACE_ROOT)/ace/OS_String.inl \ - $(ACE_ROOT)/ace/OS_Memory.h \ - $(ACE_ROOT)/ace/OS_Memory.inl \ - $(ACE_ROOT)/ace/OS_TLI.h \ - $(ACE_ROOT)/ace/OS_TLI.inl \ - $(ACE_ROOT)/ace/Min_Max.h \ - $(ACE_ROOT)/ace/streams.h \ - $(ACE_ROOT)/ace/Basic_Types.h \ - $(ACE_ROOT)/ace/Basic_Types.i \ - $(ACE_ROOT)/ace/Trace.h \ - $(ACE_ROOT)/ace/OS.i \ - $(ACE_ROOT)/ace/Flag_Manip.h \ - $(ACE_ROOT)/ace/Flag_Manip.i \ - $(ACE_ROOT)/ace/Handle_Ops.h \ - $(ACE_ROOT)/ace/Handle_Ops.i \ - $(ACE_ROOT)/ace/Lib_Find.h \ - $(ACE_ROOT)/ace/Lib_Find.i \ - $(ACE_ROOT)/ace/Init_ACE.h \ - $(ACE_ROOT)/ace/Init_ACE.i \ - $(ACE_ROOT)/ace/Sock_Connect.h \ - $(ACE_ROOT)/ace/Sock_Connect.i \ - $(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/Synch.i \ - $(ACE_ROOT)/ace/Synch_T.h \ - $(ACE_ROOT)/ace/Synch_T.i \ - $(ACE_ROOT)/ace/Thread.h \ - $(ACE_ROOT)/ace/Thread_Adapter.h \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.h \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.h \ - $(ACE_ROOT)/ace/OS_Log_Msg_Attributes.inl \ - $(ACE_ROOT)/ace/Base_Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread_Adapter.inl \ - $(ACE_ROOT)/ace/Thread.i \ - $(ACE_ROOT)/ace/Atomic_Op.i \ - $(ACE_ROOT)/ace/Synch_T.cpp \ - $(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/Signal.i \ - $(ACE_ROOT)/ace/Unbounded_Queue.h \ - $(ACE_ROOT)/ace/Node.h \ - $(ACE_ROOT)/ace/Node.cpp \ - $(ACE_ROOT)/ace/Unbounded_Queue.inl \ - $(ACE_ROOT)/ace/Unbounded_Queue.cpp \ - $(ACE_ROOT)/ace/Malloc_Base.h \ - $(ACE_ROOT)/ace/Unbounded_Set.h \ - $(ACE_ROOT)/ace/Unbounded_Set.inl \ - $(ACE_ROOT)/ace/Unbounded_Set.cpp \ - $(ACE_ROOT)/ace/SString.h \ - $(ACE_ROOT)/ace/SString.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/Free_List.cpp \ - $(ACE_ROOT)/ace/Test_and_Set.h \ - $(ACE_ROOT)/ace/Test_and_Set.i \ - $(ACE_ROOT)/ace/Test_and_Set.cpp \ - $(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/Acceptor.h \ - $(ACE_ROOT)/ace/Svc_Handler.h \ - $(ACE_ROOT)/ace/Synch_Options.h \ - $(ACE_ROOT)/ace/Synch_Options.i \ - $(ACE_ROOT)/ace/Task.h \ - $(ACE_ROOT)/ace/Thread_Manager.h \ - $(ACE_ROOT)/ace/Containers.h \ - $(ACE_ROOT)/ace/Containers.i \ - $(ACE_ROOT)/ace/Containers_T.h \ - $(ACE_ROOT)/ace/Array_Base.h \ - $(ACE_ROOT)/ace/Array_Base.inl \ - $(ACE_ROOT)/ace/Array_Base.cpp \ - $(ACE_ROOT)/ace/Containers_T.i \ - $(ACE_ROOT)/ace/Containers_T.cpp \ - $(ACE_ROOT)/ace/Singleton.h \ - $(ACE_ROOT)/ace/Singleton.i \ - $(ACE_ROOT)/ace/Singleton.cpp \ - $(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/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_Allocator.h \ - $(ACE_ROOT)/ace/Malloc_Allocator.i \ - $(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/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/Memory_Pool.i \ - $(ACE_ROOT)/ace/Message_Block.i \ - $(ACE_ROOT)/ace/Message_Block_T.h \ - $(ACE_ROOT)/ace/Message_Block_T.i \ - $(ACE_ROOT)/ace/Message_Block_T.cpp \ - $(ACE_ROOT)/ace/IO_Cntl_Msg.h \ - $(ACE_ROOT)/ace/Message_Queue_T.h \ - $(ACE_ROOT)/ace/Message_Queue_T.i \ - $(ACE_ROOT)/ace/Message_Queue_T.cpp \ - $(ACE_ROOT)/ace/Strategies.h \ - $(ACE_ROOT)/ace/Strategies_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager.h \ - $(ACE_ROOT)/ace/Functor.h \ - $(ACE_ROOT)/ace/Functor.i \ - $(ACE_ROOT)/ace/Functor_T.h \ - $(ACE_ROOT)/ace/Functor_T.i \ - $(ACE_ROOT)/ace/Functor_T.cpp \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.h \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.i \ - $(ACE_ROOT)/ace/Hash_Map_Manager_T.cpp \ - $(ACE_ROOT)/ace/Strategies_T.i \ - $(ACE_ROOT)/ace/Strategies_T.cpp \ - $(ACE_ROOT)/ace/Service_Repository.h \ - $(ACE_ROOT)/ace/Service_Types.h \ - $(ACE_ROOT)/ace/Service_Types.i \ - $(ACE_ROOT)/ace/Service_Repository.i \ - $(ACE_ROOT)/ace/WFMO_Reactor.h \ - $(ACE_ROOT)/ace/Process_Mutex.h \ - $(ACE_ROOT)/ace/Process_Mutex.inl \ - $(ACE_ROOT)/ace/WFMO_Reactor.i \ - $(ACE_ROOT)/ace/Strategies.i \ - $(ACE_ROOT)/ace/Message_Queue.i \ - $(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.cpp \ - $(ACE_ROOT)/ace/Svc_Handler.cpp \ - $(ACE_ROOT)/ace/Dynamic.h \ - $(ACE_ROOT)/ace/Dynamic.i \ - $(ACE_ROOT)/ace/Acceptor.cpp \ - $(ACE_ROOT)/ace/Connector.h \ - $(ACE_ROOT)/ace/Map_Manager.h \ - $(ACE_ROOT)/ace/Map_Manager.i \ - $(ACE_ROOT)/ace/Map_Manager.cpp \ - $(ACE_ROOT)/ace/Connector.cpp \ - $(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/Makefile.bor b/apps/Gateway/Peer/Makefile.bor deleted file mode 100644 index 7d01fd58d4a..00000000000 --- a/apps/Gateway/Peer/Makefile.bor +++ /dev/null @@ -1,8 +0,0 @@ - -NAME = peerd -OBJFILES = \ - $(OBJDIR)\Options.obj \ - $(OBJDIR)\Peer.obj \ - $(OBJDIR)\peerd.obj -!include <$(ACE_ROOT)\apps\build.bor> - diff --git a/apps/Gateway/Peer/Options.cpp b/apps/Gateway/Peer/Options.cpp deleted file mode 100644 index 80c0256b619..00000000000 --- a/apps/Gateway/Peer/Options.cpp +++ /dev/null @@ -1,195 +0,0 @@ -// $Id$ - -#define ACE_BUILD_SVC_DLL - -#include "ace/Get_Opt.h" -#include "ace/Log_Msg.h" -#include "Options.h" - -ACE_RCSID(Peer, Options, "$Id$") - -// 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] [-C connection-id] [-h gateway-host] [-q max-queue-size] [-t timeout] [-v]\n")); - ACE_OS::exit (1); -} - -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), - connection_id_ (0) -{ - 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_; -} - -CONNECTION_ID & -Options::connection_id (void) -{ - return this->connection_id_; -} - -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: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 'C': - this->connection_id_ = ACE_OS::atoi (get_opt.optarg); - 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 c0136ce78ae..00000000000 --- a/apps/Gateway/Peer/Options.h +++ /dev/null @@ -1,133 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// gateway -// -// = FILENAME -// Options.h -// -// = AUTHOR -// Douglas C. Schmidt -// -// ============================================================================ - -#ifndef OPTIONS_H -#define OPTIONS_H - -#include "../Gateway/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. - - CONNECTION_ID &connection_id (void); - // Returns a reference to the connection id. - -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. - - const 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. - - CONNECTION_ID connection_id_; - // The connection id. -}; - -#endif /* OPTIONS_H */ diff --git a/apps/Gateway/Peer/Peer.cpp b/apps/Gateway/Peer/Peer.cpp deleted file mode 100644 index 7596a7a0a97..00000000000 --- a/apps/Gateway/Peer/Peer.cpp +++ /dev/null @@ -1,906 +0,0 @@ -// $Id$ - -#define ACE_BUILD_SVC_DLL - -#include "Peer.h" - -ACE_RCSID(Peer, Peer, "$Id$") - -Peer_Handler::Peer_Handler (void) - : connection_id_ (-1), // Maybe it's better than 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 ()); - first_time_ = 1; // It will be first time to open Peer_Handler. -} - -// 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; -} - -int -Peer_Handler::transmit (ACE_Message_Block *mb, - size_t n, - int event_type) -{ - Event *event = (Event *) mb->rd_ptr (); - - // Initialize the header. - new (&event->header_) Event_Header (n, - this->connection_id_, - event_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 transmit()")); // Function name fixed. - // Caller is responsible for freeing a ACE_Message_Block - // if failures occur. - mb->release (); - return -1; - } - return 0; -} - -// Read events from stdin and send them to the gatewayd. - -int -Peer_Handler::transmit_stdin (void) -{ - // If return value is -1, then first_time_ must be reset to 1. - int result = 0; - 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 (); - result = 0; // - break; - /* NOTREACHED */ - case -1: - mb->release (); - ACE_ERROR ((LM_ERROR, - "%p\n", - "read")); - result = 0; // - break; - /* NOTREACHED */ - default: - // Do not return directly, save the return value. - result = this->transmit (mb, n, ROUTING_EVENT); - break; - /* NOTREACHED */ - } - - // Do not return at here, but at exit of function. - /*return 0;*/ - } - else - { - ACE_DEBUG ((LM_DEBUG, - "Must transmit over an opened channel.\n")); - result = -1; // Save return value at here, return at exit of function. - } - // If transmit error, the stdin-thread will be cancelled, so should - // reset first_time_ to 1, which will register_stdin_handler again. - if (result == -1) - first_time_ = 1; - - return result; -} - -// 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 connection 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 connection 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 size_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_ > ACE_INT32 (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_)); - - // peer().recv() should not be called when data_bytes_left_to_read is 0. - ssize_t data_received = !data_bytes_left_to_read ? 0 : - 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. - if (data_bytes_left_to_read) - { - this->msg_frag_ = this->msg_frag_->release (); - return 0; - } - /* FALLTHROUGH */; - - 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) 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_)); - 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->transmit_stdin (); - else - // Perform the appropriate action depending on the state we are - // in. - return (this->*do_action_) (); -} - -// Action that receives our connection 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_)); - } - - // Subscribe for events if we're a Consumer. - if (Options::instance ()->enabled (Options::CONSUMER_CONNECTOR)) - this->subscribe (); - - // No need to disconnect by timeout. - ACE_Reactor::instance ()->cancel_timer(this); - // Transition to the action that waits for Peer events. - this->do_action_ = &Peer_Handler::await_events; - - // Reset standard input. - ACE_OS::rewind (stdin); - - // Call register_stdin_handler only once, until the stdin-thread - // closed which caused by transmit_stdin error. - if (first_time_) - { - // Register this handler to receive test events on stdin. - if (ACE_Event_Handler::register_stdin_handler - (this, - ACE_Reactor::instance (), - ACE_Thread_Manager::instance ()) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "(%t) %p\n", - "register_stdin_handler"), - -1); - - // Next time in await_connection_id(), I'll don't call - // register_stdin_handler(). - first_time_ = 0; - } - return 0; -} - -int -Peer_Handler::subscribe (void) -{ - ACE_Message_Block *mb; - - ACE_NEW_RETURN (mb, - ACE_Message_Block (sizeof (Event)), - -1); - - Subscription *subscription = - (Subscription *) ((Event *) mb->rd_ptr ())->data_; - subscription->connection_id_ = - Options::instance ()->connection_id (); - - return this->transmit (mb, sizeof *subscription, SUBSCRIPTION_EVENT); -} - -// Action that receives events from the Gateway. - -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->header_.len_ - 2, - 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 (ACE_Reactor *, int) -{ - 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 *) -{ - if (signum != SIGPIPE) - { - // Shut down the main event loop. - ACE_DEBUG((LM_NOTICE, "Exit case signal\n")); // Why do I exit? - 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->supplier_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->consumer_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 057a8414568..00000000000 --- a/apps/Gateway/Peer/Peer.dsp +++ /dev/null @@ -1,66 +0,0 @@ -# Microsoft Developer Studio Project File - Name="Peer" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.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 AllowPerConfigDependencies 0
-# 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" /FD /c
-# SUBTRACT CPP /YX
-# 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 d1dd3f1d06a..00000000000 --- a/apps/Gateway/Peer/Peer.dsw +++ /dev/null @@ -1,44 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.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 f34b14d8aea..00000000000 --- a/apps/Gateway/Peer/Peer.h +++ /dev/null @@ -1,242 +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 -// -// ============================================================================ - -#ifndef PEER_H -#define PEER_H - -#include "ace/Service_Config.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -#include "ace/Acceptor.h" -#include "ace/SOCK_Acceptor.h" -#include "ace/SOCK_Connector.h" -#include "ace/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; - - int transmit (ACE_Message_Block *mb, - size_t n, - int event_type); - // Transmit <mb> to the gatewayd. - - virtual int recv (ACE_Message_Block *&mb); - // Receive an Peer event from gatewayd. - - virtual int send (ACE_Message_Block *mb); - // 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. - - int subscribe (void); - // Register Consumer subscriptions with the gateway. - - // = Event/state/action handlers. - int transmit_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. - - int first_time_; - // Used to call register_stdin_handle only once. Otherwise, thread - // leak will occur on Win32. -}; - -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 (ACE_Reactor * = 0, int = 0); - // Initialize the <Peer_Connector>. NOTE: the arguments are - // ignored. They are only provided to avoid a compiler warning - // about hiding the virtual function ACE_Connector<Peer_Handler, - // ACE_SOCK_CONNECTOR>::open(ACE_Reactor*, int). - -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/peerd.cpp b/apps/Gateway/Peer/peerd.cpp deleted file mode 100644 index 94df916851e..00000000000 --- a/apps/Gateway/Peer/peerd.cpp +++ /dev/null @@ -1,62 +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" - -ACE_RCSID(Peer, peerd, "$Id$") - -int -main (int argc, char *argv[]) -{ - if (ACE_OS::access (ACE_DEFAULT_SVC_CONF, F_OK) != 0) - { - // 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 - { - if (ACE_Service_Config::open (argc, argv) == -1) - ACE_ERROR_RETURN ((LM_ERROR, - "%p\n", - "open"), - 1); - 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 ceb9529fbf8..00000000000 --- a/apps/Gateway/Peer/peerd.dsp +++ /dev/null @@ -1,59 +0,0 @@ -# Microsoft Developer Studio Project File - Name="peerd" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.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 AllowPerConfigDependencies 0
-# 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" /FD /c
-# SUBTRACT CPP /YX
-# 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" |