summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschmidt <douglascraigschmidt@users.noreply.github.com>1997-05-16 19:36:28 +0000
committerschmidt <douglascraigschmidt@users.noreply.github.com>1997-05-16 19:36:28 +0000
commit153fb14861eeb155795b4f91e2406252365acdeb (patch)
tree1db359b14a51292301bfa503063aa7a0f3c6502f
parent5a68650e75213b679475151671dd4eae13b5aabb (diff)
downloadATCD-153fb14861eeb155795b4f91e2406252365acdeb.tar.gz
*** empty log message ***
-rw-r--r--ChangeLog-97a24
-rw-r--r--README1
-rw-r--r--ace/OS.h1
-rw-r--r--ace/OS.i11
-rw-r--r--ace/config-irix5.3-sgic++.h8
-rw-r--r--include/makeinclude/platform_chorus.GNU10
-rw-r--r--include/makeinclude/platform_osf1_3.2.GNU6
-rw-r--r--include/makeinclude/platform_osf1_4.0.GNU31
-rw-r--r--netsvcs/lib/Base_Optimizer.h8
-rw-r--r--netsvcs/lib/Server_Logging_Handler.cpp407
-rw-r--r--netsvcs/lib/Server_Logging_Handler.h218
11 files changed, 208 insertions, 517 deletions
diff --git a/ChangeLog-97a b/ChangeLog-97a
index fb8c05eeea6..f180a276d12 100644
--- a/ChangeLog-97a
+++ b/ChangeLog-97a
@@ -1,3 +1,27 @@
+Fri May 16 12:25:32 1997 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu>
+
+ * ace/config-irix5.3-sgic++.h: Made a few changes to get ACE to
+ work on IRIX 5.3. Thanks to Eugene R. Somdahl <gene@endo.com>
+ for these fixes.
+
+ * ace/OS: Added calloc() implementation. I don't know how
+ this managed to fall through the cracks!
+
+ * include/makeinclude/platform_osf1_4.0.GNU: Added a few more
+ tweaks courtesy of James Johnson.
+
+ * include/makeinclude/platform_osf1_3.2.GNU: Added a few more
+ tweaks courtesy of Tom Dobridge.
+
+ * include/makeinclude/platform_osf1_4.0.GNU (DLD): Added -shared
+ -expect_unresolved '*' so that calls to the linker via cxx will
+ work correctly. Thanks to Thilo for this.
+
+ * include/makeinclude/platform_chorus.GNU: Removed CLASSIXDIR =
+ /usr/home/chiang/chorus/merge/extended-i386at, added the
+ nostdinc flag, and removed extra whitespace. Thanks to Wei
+ Chiang for reporting this.
+
Fri May 16 11:39:51 1997 Nanbor Wang <nw1@cs.wustl.edu>
* ace/OS.i (sigaddset, sigdelset, sigemptyset, sigfillset,
diff --git a/README b/README
index 1b136d32d89..710b0fde836 100644
--- a/README
+++ b/README
@@ -512,6 +512,7 @@ Michael Hartman <c62nt57@ibx.com>
Tom Dobridge <dobridge@persimmon.com>
Rich Christy <rchristy@cccis.com>
Satoshi Ueno <satoshi.ueno@gs.com>
+Eugene R. Somdahl <gene@endo.com>
I would particularly like to thank Paul Stephenson, who worked with me
at Ericsson and is now at ObjectSpace. Paul devised the recursive
diff --git a/ace/OS.h b/ace/OS.h
index d028d1db03c..294f25ad40c 100644
--- a/ace/OS.h
+++ b/ace/OS.h
@@ -2739,6 +2739,7 @@ public:
// = A set of wrappers for memory managment.
static void *sbrk (int brk);
+ static void *calloc (size_t elements, size_t sizeof_elements);
static void *malloc (size_t);
static void *realloc (void *, size_t);
static void free (void *);
diff --git a/ace/OS.i b/ace/OS.i
index 2f5ac27ce83..d4e942677ec 100644
--- a/ace/OS.i
+++ b/ace/OS.i
@@ -3043,6 +3043,13 @@ ACE_OS::malloc (size_t nbytes)
}
ACE_INLINE void *
+ACE_OS::calloc (size_t elements, size_t sizeof_elements)
+{
+ // ACE_TRACE ("ACE_OS::calloc");
+ return ::calloc (elements, sizeof_elements);
+}
+
+ACE_INLINE void *
ACE_OS::realloc (void *ptr, size_t nbytes)
{
// ACE_TRACE ("ACE_OS::realloc");
@@ -6790,7 +6797,7 @@ ACE_OS::sigaddset (sigset_t *s, int signum)
#if !defined (ACE_LACKS_SIGSET)
ACE_OSCALL_RETURN (::sigaddset (s, signum), int, -1);
#else
- *s |= (1 << (signum-1)) ;
+ *s |= (1 << (signum - 1)) ;
return 0 ;
#endif /* !ACE_LACKS_SIGSET */
}
@@ -6801,7 +6808,7 @@ ACE_OS::sigdelset (sigset_t *s, int signum)
#if !defined (ACE_LACKS_SIGSET)
ACE_OSCALL_RETURN (::sigdelset (s, signum), int, -1);
#else
- *s &= ~(1 << (signum-1)) ;
+ *s &= ~(1 << (signum - 1)) ;
return 0 ;
#endif /* !ACE_LACKS_SIGSET */
}
diff --git a/ace/config-irix5.3-sgic++.h b/ace/config-irix5.3-sgic++.h
index e11b7393490..86e81008c72 100644
--- a/ace/config-irix5.3-sgic++.h
+++ b/ace/config-irix5.3-sgic++.h
@@ -10,6 +10,9 @@
#define IRIX5
+#include <sys/bsd_types.h>
+#define _BSD_TYPES
+
// Platform supports getpagesize() call.
#define ACE_HAS_GETPAGESIZE
@@ -62,14 +65,15 @@
// #define ACE_USE_POLL
// Platform supports the /proc file system.
-#define ACE_HAS_PROC_FS
+// #define ACE_HAS_PROC_FS
// Compiler/platform defines the sig_atomic_t typedef.
#define ACE_HAS_SIG_ATOMIC_T
// Platform supports SVR4 extended signals.
#define ACE_HAS_SIGINFO_T
-#define ACE_HAS_UCONTEXT_T
+// #define ACE_HAS_UCONTEXT_T
+#define ACE_LACKS_UCONTEXT_H
// Compiler supports the ssize_t typedef.
#define ACE_HAS_SSIZE_T
diff --git a/include/makeinclude/platform_chorus.GNU b/include/makeinclude/platform_chorus.GNU
index 074b292c05c..92ad506784f 100644
--- a/include/makeinclude/platform_chorus.GNU
+++ b/include/makeinclude/platform_chorus.GNU
@@ -1,35 +1,28 @@
# Chorus 3.1b with GNU g++ 2.7.2
# *not* using Orbix
-#
-# Note: Change CLASSIXDIR to an appropriate directory
-CLASSIXDIR = /usr/home/chiang/chorus/merge/extended-i386at
INC_DIR = $(CLASSIXDIR)/include
BIN_DIR =
LIB_DIR = $(CLASSIXDIR)/lib
-
CC = gcc
CXX = g++
-
CFLAGS += $(DCFLAGS) -w -O2
CCFLAGS += $(CFLAGS) -fno-implicit-templates \
-fno-strict-prototypes \
+ -nostdinc \
-D_POSIX_THREADS \
-D_POSIX_THREAD_SAFE_FUNCTIONS
DCFLAGS += -g
-
INCLDIRS += -I$(INC_DIR)/posix \
-I$(INC_DIR)/stdc \
-I$(INC_DIR)/chorus/ \
-I$(INC_DIR)/chorus/iom \
-I$(INC_DIR)/CC
-
DLD =
LD = $(CXX)
LDFLAGS += -r -Ur -nostdlib \
-L$(LIB_DIR)/CC \
-L$(LIB_DIR)/classix
-
LIBS += -lC -lcx.u
PIC = -fPIC
AR = ar
@@ -39,6 +32,5 @@ PRELIB = (echo "main() { }" > gcctemp.c && \
$(COMPILE.cc) -o gcctemp.o gcctemp.c && \
$(LD) $^ $(LDFLAGS) $(LIBS); \
status=$$?; rm -f gcctemp.* a.out; exit $$status)
-
#### don't build shared objects:
BUILD = $(VOBJS) $(VLIB) $(VBIN)
diff --git a/include/makeinclude/platform_osf1_3.2.GNU b/include/makeinclude/platform_osf1_3.2.GNU
index b89c977c962..147fb2b0857 100644
--- a/include/makeinclude/platform_osf1_3.2.GNU
+++ b/include/makeinclude/platform_osf1_3.2.GNU
@@ -2,16 +2,16 @@
CC = cxx
CXX = $(CC)
-CFLAGS += $(DCFLAGS) -non_shared
+CFLAGS += $(DCFLAGS) -ptr ptrepository
CCFLAGS += $(CFLAGS) -x cxx -w0
DCFLAGS += -g -threads
-#DLD = ld -non_shared
DLD = ld -shared -expect_unresolved '*'
LD = $(CXX)
LIBS += -lpthreads -lmach -lsys5 -lxti -ltli -lcxx -lexc -lc
PIC = -pic
ARFLAGS = ruv
RANLIB = ranlib
-SOFLAGS = -shared -assert
+SOFLAGS = -shared
SOBUILD = $(COMPILE.cc) $(PIC) -o $(VSHDIR)$*.o $<; \
$(SOLINK.cc) -o $@ $(LDFLAGS) $(VSHDIR)$*.o -lcxx -ltask -lexc -lc
+
diff --git a/include/makeinclude/platform_osf1_4.0.GNU b/include/makeinclude/platform_osf1_4.0.GNU
index 168850d052a..a9d707c2bb4 100644
--- a/include/makeinclude/platform_osf1_4.0.GNU
+++ b/include/makeinclude/platform_osf1_4.0.GNU
@@ -1,18 +1,19 @@
-# This platform macros file is intended to work with Digital UNIX 4.0 (OSF/1 4.0).
+# This platform macros file is intended to work with Digital UNIX 4.0
+(OSF/1 4.0).
-CC = cxx
-CXX = $(CC)
+CC = cxx
+CXX = $(CC)
CFLAGS += $(DCFLAGS) -pthread -ptr ptrepository
CCFLAGS += $(CFLAGS) -w0
-DCFLAGS += -g
-DLD = $(CXX)
-LDFLAGS += -shared -expect_unresolved '*'
-LIBS += -pthread -ltli -lrt -ptr ptrepository
-PIC =
-ARFLAGS = ruvZ
-# When libraries are archived, a hash index is automatically created so there
-# is no need for ranlib
-RANLIB = /usr/bin/true
-SOFLAGS = -shared
-SOBUILD = $(COMPILE.cc) $(PIC) -o $(VSHDIR)$*.o $<; \
- $(SOLINK.cc) -o $@ $(LDFLAGS) $(VSHDIR)$*.o $(LIBS)
+DCFLAGS += -g
+DLD = $(CXX) -expect_unresolved '*'
+LD = $(CXX)
+LIBS += -pthread -ltli -lrt -ptr ptrepository
+PIC =
+ARFLAGS = ruvZ
+# When libraries are archived, a hash index is automatically created
+# so there is no need for ranlib
+RANLIB = /usr/bin/true
+SOFLAGS = -shared
+SOBUILD = $(COMPILE.cc) $(PIC) -o $(VSHDIR)$*.o $<; \
+ $(SOLINK.cc) -o $@ $(LDFLAGS) $(VSHDIR)$*.o $(LIBS)
diff --git a/netsvcs/lib/Base_Optimizer.h b/netsvcs/lib/Base_Optimizer.h
index bb4e084f4ec..9a6736bb48c 100644
--- a/netsvcs/lib/Base_Optimizer.h
+++ b/netsvcs/lib/Base_Optimizer.h
@@ -14,13 +14,15 @@
//
// ============================================================================
-// Thanks to Nathan Myers and Fergus Henderson for this little beauty
-
-#if !defined (BASE_OPTIMIZER_H
+#if !defined (BASE_OPTIMIZER_H)
#define BASE_OPTIMIZER_H
template<class Base, class Member>
struct Base_Optimizer : Base
+// = TITLE
+//
+// = DESCRIPTION
+// Thanks to Nathan Myers and Fergus Henderson for this little beauty
{
Base_Optimizer (void);
Base_Optimizer (const Base &base);
diff --git a/netsvcs/lib/Server_Logging_Handler.cpp b/netsvcs/lib/Server_Logging_Handler.cpp
index 4f09a63d409..4ae8a3e57fa 100644
--- a/netsvcs/lib/Server_Logging_Handler.cpp
+++ b/netsvcs/lib/Server_Logging_Handler.cpp
@@ -5,270 +5,8 @@
#define ACE_SERVER_LOGGING_HANDLER_C
#define ACE_BUILD_SVC_DLL
-#include "ace/Get_Opt.h"
#include "Server_Logging_Handler.h"
-#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
-// Track number of requests.
-template <ACE_PEER_STREAM_1, class COUNTER, ACE_SYNCH_1>
-COUNTER ACE_Server_Logging_Handler<ACE_PEER_STREAM_2, COUNTER, ACE_SYNCH_2>::request_count_ = (COUNTER) 0;
-#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
-
-int
-ACE_Server_Logging_Acceptor::parse_args (int argc, char *argv[])
-{
- ACE_TRACE ("ACE_Server_Logging_Acceptor::parse_args");
-
- this->service_port_ = ACE_DEFAULT_SERVER_PORT;
-
- ACE_LOG_MSG->open ("Logging Service");
-
- ACE_Get_Opt get_opt (argc, argv, "p:", 0);
-
- for (int c; (c = get_opt ()) != -1; )
- {
- switch (c)
- {
- case 'p':
- this->service_port_ = ACE_OS::atoi (get_opt.optarg);
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "%n:\n[-p server-port]\n%a", 1),
- -1);
- }
- }
-
- this->service_addr_.set (this->service_port_);
- return 0;
-}
-
-int
-ACE_Server_Logging_Acceptor::init (int argc,
- char *argv[])
-{
- ACE_TRACE ("ACE_Server_Logging_Acceptor::init");
-
- // Use the options hook to parse the command line arguments and set
- // options.
- this->parse_args (argc, argv);
-
- // Set the acceptor endpoint into listen mode (use the Singleton
- // global Reactor...).
- if (this->open (this->service_addr_,
- ACE_Service_Config::reactor (),
- 0, 0, 0,
- &this->scheduling_strategy_,
- "Logging Server", "ACE single-threaded logging service") == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%n: %p on port %d\n",
- "acceptor::open failed",
- this->service_addr_.get_port_number ()), -1);
-
- // Ignore SIGPIPE so that each <SVC_HANDLER> can handle this on its
- // own.
- ACE_Sig_Action sig (ACE_SignalHandler (SIG_IGN), SIGPIPE);
- ACE_UNUSED_ARG (sig);
-
- ACE_INET_Addr server_addr;
-
- // Figure out what port we're really bound to.
- if (this->acceptor ().get_local_addr (server_addr) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "get_local_addr"), -1);
-
- ACE_DEBUG ((LM_DEBUG,
- "starting up Logging Server at port %d on handle %d\n",
- server_addr.get_port_number (),
- this->acceptor ().get_handle ()));
- return 0;
-}
-
-template <ACE_PEER_STREAM_1, class COUNTER, ACE_SYNCH_1>
-ACE_Server_Logging_Handler<ACE_PEER_STREAM_2, COUNTER, ACE_SYNCH_2>::ACE_Server_Logging_Handler
- (ACE_Thread_Manager *)
-{
- this->host_name_[0] = '\0'; // Initialize to a known state.
-}
-
-template <ACE_PEER_STREAM_1, class COUNTER, ACE_SYNCH_1> int
-ACE_Server_Logging_Handler<ACE_PEER_STREAM_2, COUNTER, ACE_SYNCH_2>::handle_logging_record (void)
-{
- ssize_t len;
-
- // Perform two recv's to emulate record-oriented semantics. Note
- // that this code is not entirely portable since it relies on the
- // fact that sizeof (ssize_t) is the same on both the sender and
- // receiver side. To correctly handle this is painful, and we leave
- // it as an exercise for the reader ;-).
-
- ssize_t n = this->peer ().recv (&len, sizeof len);
-
- switch (n)
- {
- case -1:
- ACE_ERROR_RETURN ((LM_ERROR, "%p at host %s\n",
- "server logger", this->host_name_), -1);
- /* NOTREACHED */
- case 0:
- ACE_ERROR_RETURN ((LM_ERROR, "closing log daemon at host %s\n",
- this->host_name_), -1);
- /* NOTREACHED */
- case sizeof (ssize_t):
- {
- ACE_Log_Record lp;
-
-#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
- u_long count = ++this->request_count_;
- ACE_DEBUG ((LM_DEBUG, "request count = %d\n", count));
-#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
-
- len = ntohl (len);
- n = this->peer ().recv_n ((void *) &lp, len);
- if (n != len)
- ACE_ERROR_RETURN ((LM_ERROR, "len = %d, %p at host %s\n",
- n, "server logger", this->host_name_), -1);
- /* NOTREACHED */
-
- lp.decode ();
-
- if (lp.length () == n)
- {
- // Serialize output, if necessary (i.e., if we are running
- // in separate threads).
- ACE_MT (ACE_GUARD_RETURN (ACE_SYNCH_MUTEX_T, ace_mon, *this->lock_, -1));
-
- lp.print (this->host_name_, 0, stderr);
- }
- else
- ACE_ERROR ((LM_ERROR, "error, lp.length = %d, n = %d\n",
- lp.length (), n));
- break;
- }
- default:
- ACE_ERROR_RETURN ((LM_ERROR, "%p at host %s\n",
- "server logger", this->host_name_), -1);
- /* NOTREACHED */
- }
-
- return n;
-}
-
-// Hook called by Server_Logging_Acceptor when connection is
-// established.
-
-template <ACE_PEER_STREAM_1, class COUNTER, ACE_SYNCH_1> int
-ACE_Server_Logging_Handler<ACE_PEER_STREAM_2, COUNTER, ACE_SYNCH_2>::open (void *)
-{
- // Register ourselves with the Reactor to enable subsequent
- // dispatching.
- if (ACE_Service_Config::reactor ()->register_handler
- (this, ACE_Event_Handler::READ_MASK) == -1)
- return -1;
-
- ACE_PEER_STREAM_ADDR client_addr;
-
- // Determine the address of the client and display it.
- if (this->peer ().get_remote_addr (client_addr) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "get_remote_addr"), -1);
-
- ACE_OS::strncpy (this->host_name_, client_addr.get_host_name (), MAXHOSTNAMELEN + 1);
-
- ACE_DEBUG ((LM_DEBUG, "(%t) accepted connection from host %s on fd %d\n",
- client_addr.get_host_name (), this->peer ().get_handle ()));
-
- // Shut off non-blocking IO if it was enabled...
- if (this->peer ().disable (ACE_NONBLOCK) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "disable"), -1);
-
- return 0;
-}
-
-// Callback routine for handling the reception of remote logging
-// transmissions.
-
-template <ACE_PEER_STREAM_1, class COUNTER, ACE_SYNCH_1> int
-ACE_Server_Logging_Handler<ACE_PEER_STREAM_2, COUNTER, ACE_SYNCH_2>::handle_input (ACE_HANDLE)
-{
- int result = this->handle_logging_record ();
- return result > 0 ? result : -1;
-}
-
-int
-ACE_Thr_Server_Logging_Acceptor::make_svc_handler (ACE_Thr_Server_Logging_Handler *&handler)
-{
- ACE_NEW_RETURN (handler,
- ACE_Thr_Server_Logging_Handler (ACE_Service_Config::thr_mgr (),
- &this->lock_),
- -1);
- return 0;
-}
-
-int
-ACE_Thr_Server_Logging_Acceptor::parse_args (int argc, char *argv[])
-{
- ACE_TRACE ("ACE_Thr_Server_Logging_Acceptor::parse_args");
-
- this->service_port_ = ACE_DEFAULT_SERVER_PORT;
-
- ACE_LOG_MSG->open ("Logging Service");
-
- ACE_Get_Opt get_opt (argc, argv, "p:", 0);
-
- for (int c; (c = get_opt ()) != -1; )
- {
- switch (c)
- {
- case 'p':
- this->service_port_ = ACE_OS::atoi (get_opt.optarg);
- break;
- default:
- ACE_ERROR_RETURN ((LM_ERROR,
- "%n:\n[-p server-port]\n%a", 1),
- -1);
- }
- }
-
- this->service_addr_.set (this->service_port_);
- return 0;
-}
-
-int
-ACE_Thr_Server_Logging_Acceptor::init (int argc,
- char *argv[])
-{
- ACE_TRACE ("ACE_Thr_Server_Logging_Acceptor::init");
-
- // Use the options hook to parse the command line arguments and set
- // options.
- this->parse_args (argc, argv);
-
- // Set the acceptor endpoint into listen mode (use the Singleton
- // global Reactor...).
- if (this->open (this->service_addr_, ACE_Service_Config::reactor (),
- 0, 0, 0,
- &this->scheduling_strategy_,
- "Thr Logging Server", "ACE multi-threaded logging service") == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%n: %p on port %d\n",
- "acceptor::open failed",
- this->service_addr_.get_port_number ()), -1);
-
- // Ignore SIGPIPE so that each <SVC_HANDLER> can handle this on its
- // own.
- ACE_Sig_Action sig (ACE_SignalHandler (SIG_IGN), SIGPIPE);
- ACE_UNUSED_ARG (sig);
-
- ACE_INET_Addr server_addr;
-
- // Figure out what port we're really bound to.
- if (this->acceptor ().get_local_addr (server_addr) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "get_local_addr"), -1);
-
- ACE_DEBUG ((LM_DEBUG,
- "starting up Threaded Logging Server at port %d on handle %d\n",
- server_addr.get_port_number (),
- this->acceptor ().get_handle ()));
- return 0;
-}
-
// The following are "Factories" used by the ACE_Service_Config and
// svc.conf file to dynamically initialize the state of the
// single-threaded and multi-threaded logging server.
@@ -276,77 +14,85 @@ ACE_Thr_Server_Logging_Acceptor::init (int argc,
ACE_SVC_FACTORY_DEFINE (ACE_Server_Logging_Acceptor)
ACE_SVC_FACTORY_DEFINE (ACE_Thr_Server_Logging_Acceptor)
-// Override definition in the ACE_Svc_Handler class (spawn a new
-// thread if we're configured with ACE_HAS_THREADS!).
-
-int
-ACE_Thr_Server_Logging_Handler::open (void *)
-{
- // Shut off non-blocking IO since now we can block in our own
- // thread!
- if (this->peer ().disable (ACE_NONBLOCK) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "disable"), -1);
-
- ACE_INET_Addr client_addr;
-
- // Determine the address of the client and display it.
- if (this->peer ().get_remote_addr (client_addr) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "get_remote_addr"), -1);
-
- ACE_OS::strncpy (this->host_name_, client_addr.get_host_name (), MAXHOSTNAMELEN + 1);
-
- ACE_DEBUG ((LM_DEBUG, "(%t) accepted connection from host %s on fd %d\n",
- client_addr.get_host_name (), this->peer ().get_handle ()));
-
- // Spawn a new thread of control to handle logging records with the
- // client. Note that this implicitly uses the
- // ACE_Service_Config::thr_mgr () to control all the threads.
- if (this->activate (THR_BOUND | THR_DETACHED) == -1)
- ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "spawn"), -1);
- return 0;
-}
-
-ACE_Thr_Server_Logging_Handler::ACE_Thr_Server_Logging_Handler
- (ACE_Thread_Manager *,
- ACE_SYNCH_MUTEX *lock)
-{
- this->lock_ = lock;
-}
-
-// Process remote logging records.
-
-int
-ACE_Thr_Server_Logging_Handler::svc (void)
-{
- int result = 0;
-
- // Loop until the client terminates the connection or an error occurs.
-
- while ((result = this->handle_input ()) > 0)
- continue;
-
- return result;
-}
-
#if defined (ACE_TEMPLATES_REQUIRE_SPECIALIZATION)
-template class ACE_Acceptor<ACE_Server_Logging_Handler<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH>, LOGGING_PEER_ACCEPTOR>;
-template class ACE_Acceptor<ACE_Thr_Server_Logging_Handler, LOGGING_PEER_ACCEPTOR>;
-template class ACE_Accept_Strategy<ACE_Server_Logging_Handler<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH>, LOGGING_PEER_ACCEPTOR>;
-template class ACE_Accept_Strategy<ACE_Thr_Server_Logging_Handler, LOGGING_PEER_ACCEPTOR>;
-template class ACE_Concurrency_Strategy<ACE_Server_Logging_Handler<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH> >;
-template class ACE_Concurrency_Strategy<ACE_Thr_Server_Logging_Handler>;
-template class ACE_Creation_Strategy<ACE_Server_Logging_Handler<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH> >;
-template class ACE_Creation_Strategy<ACE_Thr_Server_Logging_Handler>;
-template class ACE_Schedule_All_Reactive_Strategy<ACE_Server_Logging_Handler<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH> >;
-template class ACE_Schedule_All_Threaded_Strategy<ACE_Thr_Server_Logging_Handler>;
-template class ACE_Scheduling_Strategy<ACE_Server_Logging_Handler<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH> >;
-template class ACE_Scheduling_Strategy<ACE_Thr_Server_Logging_Handler>;
-template class ACE_Server_Logging_Handler<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH>;
-template class ACE_Strategy_Acceptor<ACE_Server_Logging_Handler<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH>, LOGGING_PEER_ACCEPTOR>;
-template class ACE_Strategy_Acceptor<ACE_Thr_Server_Logging_Handler, LOGGING_PEER_ACCEPTOR>;
+
+template class Static_Log_Message_Receiver<ACE_NULL_SYNCH>;
+template class ACE_Acceptor<Null_Synch_Logg_Handler_Static_Receiver, LOGGING_PEER_ACCEPTOR>;
+template class ACE_Accept_Strategy<Null_Synch_Logg_Handler_Static_Receiver, LOGGING_PEER_ACCEPTOR>;
+template class ACE_Concurrency_Strategy<Null_Synch_Logg_Handler_Static_Receiver>;
+template class ACE_Creation_Strategy<Null_Synch_Logg_Handler_Static_Receiver>;
+template class ACE_Schedule_All_Reactive_Strategy<Null_Synch_Logg_Handler_Static_Receiver>;
+template class ACE_Scheduling_Strategy<Null_Synch_Logg_Handler_Static_Receiver>;
+template class ACE_Strategy_Acceptor<Null_Synch_Logg_Handler_Static_Receiver, LOGGING_PEER_ACCEPTOR>;
+template class ACE_Server_Logging_AcceptorT<Null_Synch_Logg_Handler_Static_Receiver,
+ Null_Synch_Static_Receiver,
+ ACE_Schedule_All_Reactive_Strategy<Null_Synch_Logg_Handler_Static_Receiver> >;
+template class ACE_Server_Logging_HandlerT<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH, Null_Synch_Static_Receiver>;
+template class ACE_Server_Logging_Handler<Null_Synch_Static_Receiver>;
#if defined (ACE_HAS_THREADS)
- template class ACE_Server_Logging_Handler<LOGGING_PEER_STREAM, ACE_Atomic_Op<ACE_Thread_Mutex, u_long>, ACE_MT_SYNCH>;
+ template class Static_Log_Message_Receiver<ACE_LOGGER_SYNCH>;
+ template class Log_Message_Receiver<ACE_LOGGER_SYNCH>;
+
+ template class ACE_Acceptor<Synch_Logg_Handler_Static_Receiver, LOGGING_PEER_ACCEPTOR>;
+ template class ACE_Acceptor<Synch_Thr_Logg_Handler_Static_Receiver, LOGGING_PEER_ACCEPTOR>;
+ template class ACE_Acceptor<Synch_Logg_Handler_Receiver, LOGGING_PEER_ACCEPTOR>;
+ template class ACE_Acceptor<Synch_Thr_Logg_Handler_Receiver, LOGGING_PEER_ACCEPTOR>;
+
+ template class ACE_Accept_Strategy<Synch_Logg_Handler_Static_Receiver, LOGGING_PEER_ACCEPTOR>;
+ template class ACE_Accept_Strategy<Synch_Thr_Logg_Handler_Static_Receiver, LOGGING_PEER_ACCEPTOR>;
+ template class ACE_Accept_Strategy<Synch_Logg_Handler_Receiver, LOGGING_PEER_ACCEPTOR>;
+ template class ACE_Accept_Strategy<Synch_Thr_Logg_Handler_Receiver, LOGGING_PEER_ACCEPTOR>;
+
+ template class ACE_Concurrency_Strategy<Synch_Logg_Handler_Static_Receiver>;
+ template class ACE_Concurrency_Strategy<Synch_Thr_Logg_Handler_Static_Receiver>;
+ template class ACE_Concurrency_Strategy<Synch_Logg_Handler_Receiver>;
+ template class ACE_Concurrency_Strategy<Synch_Thr_Logg_Handler_Receiver>;
+
+ template class ACE_Creation_Strategy<Synch_Logg_Handler_Static_Receiver>;
+ template class ACE_Creation_Strategy<Synch_Thr_Logg_Handler_Static_Receiver>;
+ template class ACE_Creation_Strategy<Synch_Logg_Handler_Receiver>;
+ template class ACE_Creation_Strategy<Synch_Thr_Logg_Handler_Receiver>;
+
+ template class ACE_Schedule_All_Reactive_Strategy<Synch_Logg_Handler_Static_Receiver>;
+ template class ACE_Schedule_All_Reactive_Strategy<Synch_Logg_Handler_Receiver>;
+
+ template class ACE_Schedule_All_Threaded_Strategy<Synch_Thr_Logg_Handler_Static_Receiver>;
+ template class ACE_Schedule_All_Threaded_Strategy<Synch_Thr_Logg_Handler_Receiver>;
+
+ template class ACE_Scheduling_Strategy<Synch_Logg_Handler_Static_Receiver>;
+ template class ACE_Scheduling_Strategy<Synch_Logg_Handler_Receiver>;
+ template class ACE_Scheduling_Strategy<Synch_Thr_Logg_Handler_Static_Receiver>;
+ template class ACE_Scheduling_Strategy<Synch_Thr_Logg_Handler_Receiver>;
+
+ template class ACE_Strategy_Acceptor<Synch_Logg_Handler_Static_Receiver, LOGGING_PEER_ACCEPTOR>;
+ template class ACE_Strategy_Acceptor<Synch_Thr_Logg_Handler_Static_Receiver, LOGGING_PEER_ACCEPTOR>;
+ template class ACE_Strategy_Acceptor<Synch_Logg_Handler_Receiver, LOGGING_PEER_ACCEPTOR>;
+ template class ACE_Strategy_Acceptor<Synch_Thr_Logg_Handler_Receiver, LOGGING_PEER_ACCEPTOR>;
+
+ template class ACE_Server_Logging_AcceptorT<Synch_Logg_Handler_Static_Receiver,
+ Synch_Static_Receiver,
+ ACE_Schedule_All_Reactive_Strategy<Synch_Logg_Handler_Static_Receiver> >;
+ template class ACE_Server_Logging_AcceptorT<Synch_Thr_Logg_Handler_Static_Receiver,
+ Synch_Static_Receiver,
+ ACE_Schedule_All_Threaded_Strategy<Synch_Thr_Logg_Handler_Static_Receiver> >;
+ template class ACE_Server_Logging_AcceptorT<Synch_Logg_Handler_Receiver,
+ Synch_Receiver,
+ ACE_Schedule_All_Reactive_Strategy<Synch_Logg_Handler_Receiver> >;
+ template class ACE_Server_Logging_AcceptorT<Synch_Thr_Logg_Handler_Receiver,
+ Synch_Receiver,
+ ACE_Schedule_All_Threaded_Strategy<Synch_Thr_Logg_Handler_Receiver> >;
+
+ template class ACE_Server_Logging_HandlerT<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH, Synch_Static_Receiver>;
+ template class ACE_Server_Logging_HandlerT<LOGGING_PEER_STREAM, ACE_LOGGER_COUNTER, ACE_MT_SYNCH, Synch_Static_Receiver>;
+ template class ACE_Server_Logging_HandlerT<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH, Synch_Receiver>;
+ template class ACE_Server_Logging_HandlerT<LOGGING_PEER_STREAM, ACE_LOGGER_COUNTER, ACE_MT_SYNCH, Synch_Receiver>;
+
+ template class ACE_Server_Logging_Handler<Synch_Static_Receiver>;
+ template class ACE_Thr_Server_Logging_Handler<Synch_Static_Receiver>;
+ template class ACE_Server_Logging_Handler<Synch_Receiver>;
+ template class ACE_Thr_Server_Logging_Handler<Synch_Receiver>;
+
template class ACE_Svc_Handler<LOGGING_PEER_STREAM, ACE_SYNCH>;
#if defined (ACE_HAS_TLI)
template class ACE_Svc_Handler<LOGGING_PEER_STREAM, ACE_NULL_SYNCH>;
@@ -365,3 +111,4 @@ template class ACE_Strategy_Acceptor<ACE_Thr_Server_Logging_Handler, LOGGING_PEE
#endif /* ACE_TEMPLATES_REQUIRE_SPECIALIZATION */
#endif /* ACE_SERVER_LOGGING_HANDLER_C */
+
diff --git a/netsvcs/lib/Server_Logging_Handler.h b/netsvcs/lib/Server_Logging_Handler.h
index 4f61190cdf8..fa232af82fc 100644
--- a/netsvcs/lib/Server_Logging_Handler.h
+++ b/netsvcs/lib/Server_Logging_Handler.h
@@ -1,156 +1,68 @@
-/* -*- C++ -*- */
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// ace
-//
-// = FILENAME
-// Server_Logging_Handler.h
-//
-// = AUTHOR
-// Doug Schmidt
-//
-// ============================================================================
-
#if !defined (ACE_SERVER_LOGGING_HANDLER_H)
#define ACE_SERVER_LOGGING_HANDLER_H
-#include "ace/Synch.h"
-#include "ace/TLI_Acceptor.h"
-#include "ace/SOCK_Acceptor.h"
-#include "ace/Acceptor.h"
-
-template <ACE_PEER_STREAM_1, class COUNTER, ACE_SYNCH_1>
-class ACE_Server_Logging_Handler : public ACE_Svc_Handler<ACE_PEER_STREAM_2, ACE_SYNCH_2>
-{
- // = TITLE
- // Product object created by an <ACE_Server_Logging_Acceptor>. An
- // <ACE_Server_Logging_Handler> receives, frames, and processes logging
- // records.
- //
- // = DESCRIPTION
- // Defines the classes that perform server logging daemon
- // functionality.
-public:
- ACE_Server_Logging_Handler (ACE_Thread_Manager * = 0);
- // Constructor.
-
- virtual int open (void * = 0);
- // Hook called by <Server_Logging_Acceptor> when connection is
- // established.
-
- virtual int handle_input (ACE_HANDLE = ACE_INVALID_HANDLE);
- // Process remote logging records.
-
-protected:
- int handle_logging_record (void);
- // Receive the logging record from a client.
-
-#if !defined (ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES)
- static COUNTER request_count_;
- // Count the number of logging records that arrive.
-#endif /* ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES */
-
- char host_name_[MAXHOSTNAMELEN + 1];
- // Name of the host we are connected to.
-
- ACE_SYNCH_MUTEX_T *lock_;
- // Reference to the lock used to serialize output.
-};
-
-#if !defined (ACE_HAS_TLI)
-#define LOGGING_PEER_ACCEPTOR ACE_SOCK_ACCEPTOR
-#define LOGGING_PEER_STREAM ACE_SOCK_STREAM
-#else /* use sockets */
-#define LOGGING_PEER_ACCEPTOR ACE_TLI_ACCEPTOR
-#define LOGGING_PEER_STREAM ACE_TLI_STREAM
-#endif /* ACE_HAS_TLI */
-
-typedef ACE_Server_Logging_Handler<LOGGING_PEER_STREAM, u_long, ACE_NULL_SYNCH>
- SERVER_LOGGING_HANDLER;
-
-class ACE_Server_Logging_Acceptor : public ACE_Strategy_Acceptor<SERVER_LOGGING_HANDLER, LOGGING_PEER_ACCEPTOR>
- // = TITLE
- // This class implements the ACE single-threaded logging service.
- //
- // = DESCRIPTION
- // This class contains the service-specific methods that can't
- // easily be factored into the <ACE_Strategy_Acceptor>.
-{
-public:
- virtual int init (int argc, char *argv[]);
- // Dynamic linking hook.
-
-protected:
- int parse_args (int argc, char *argv[]);
- // Parse svc.conf arguments.
-
-private:
- ACE_Schedule_All_Reactive_Strategy<SERVER_LOGGING_HANDLER> scheduling_strategy_;
- // The scheduling strategy is designed for Reactive services.
-};
-
-#if !defined (ACE_HAS_THREADS)
-typedef u_long COUNTER;
-#define ACE_LOGGER_SYNCH ACE_NULL_SYNCH
-#else
-typedef ACE_Atomic_Op <ACE_Thread_Mutex, u_long> COUNTER;
-#define ACE_LOGGER_SYNCH ACE_MT_SYNCH
-#endif /* ACE_HAS_THREADS */
-
-class ACE_Svc_Export ACE_Thr_Server_Logging_Handler : public ACE_Server_Logging_Handler<LOGGING_PEER_STREAM, COUNTER, ACE_LOGGER_SYNCH>
- // = TITLE
- // Product object created by a <ACE_Thr_Server_Logging_Acceptor>. An
- // <ACE_Thr_Server_Logging_Handler> receives, frames, and processes
- // logging records.
- //
- // = DESCRIPTION
- // Each client is handled in its own separate thread.
-{
-public:
- ACE_Thr_Server_Logging_Handler (ACE_Thread_Manager * = 0,
- ACE_SYNCH_MUTEX * = 0);
-
- virtual int open (void * = 0);
- // Override activation definition in the ACE_Svc_Handler class (will
- // spawn a new thread if we've got threads).
-
- virtual int svc (void);
- // Process remote logging records.
-};
-
-class ACE_Thr_Server_Logging_Acceptor : public ACE_Strategy_Acceptor<ACE_Thr_Server_Logging_Handler, LOGGING_PEER_ACCEPTOR>
- // = TITLE
- // This class implements the ACE multi-threaded logging service.
- //
- // = DESCRIPTION
- // This class contains the service-specific methods that can't
- // easily be factored into the <ACE_Strategy_Acceptor>.
-{
-public:
- virtual int init (int argc, char *argv[]);
- // Dynamic linking hook.
-
- int parse_args (int argc, char *argv[]);
- // Parse svc.conf arguments.
-
- virtual int make_svc_handler (ACE_Thr_Server_Logging_Handler *&);
- // Factory that creates a new <SERVER_LOGGING_HANDLER>. We need to
- // specialize this since the <lock_> held by this Acceptor must be
- // passed into the <SERVER_LOGGING_HANDLER>.
-
-private:
- ACE_SYNCH_MUTEX lock_;
- // Lock used to serialize output by the various
- // <ACE_Server_Logging_Handler>'s.
-
- ACE_Schedule_All_Threaded_Strategy<ACE_Thr_Server_Logging_Handler> scheduling_strategy_;
- // The scheduling strategy is designed for multi-threaded services.
-};
-
-ACE_SVC_FACTORY_DECLARE (ACE_Server_Logging_Acceptor)
-ACE_SVC_FACTORY_DECLARE (ACE_Thr_Server_Logging_Acceptor)
-
-#endif /* ACE_SERVER_LOGGING_HANDLER_H */
+#include "Server_Logging_Handler_T.h"
+#include "Log_Message_Receiver.h"
+
+// Type based log message receivers.
+typedef Static_Log_Message_Receiver<ACE_NULL_SYNCH>
+ Null_Synch_Static_Receiver;
+typedef Static_Log_Message_Receiver<ACE_LOGGER_SYNCH>
+ Synch_Static_Receiver;
+
+typedef ACE_Server_Logging_Handler<Null_Synch_Static_Receiver>
+ Null_Synch_Logging_Handler_Static_Receiver;
+
+typedef ACE_Server_Logging_Handler<Synch_Static_Receiver>
+ Synch_Logging_Handler_Static_Receiver;
+typedef ACE_Thr_Server_Logging_Handler<Synch_Static_Receiver>
+ Synch_Thr_Logging_Handler_Static_Receiver;
+
+typedef ACE_Server_Logging_Acceptor_T<Null_Synch_Logging_Handler_Static_Receiver,
+ Null_Synch_Static_Receiver,
+ ACE_Schedule_All_Reactive_Strategy<Null_Synch_Logging_Handler_Static_Receiver> >
+ Null_Synch_Logging_Handler_Static_Receiver_Acceptor_T;
+
+typedef ACE_Server_Logging_Acceptor_T<Synch_Logging_Handler_Static_Receiver,
+ Synch_Static_Receiver,
+ ACE_Schedule_All_Reactive_Strategy<Synch_Logging_Handler_Static_Receiver> >
+ Synch_Logging_Handler_Static_Receiver_Acceptor_T;
+
+typedef ACE_Server_Logging_Acceptor_T<Synch_Thr_Logging_Handler_Static_Receiver,
+ Synch_Static_Receiver,
+ ACE_Schedule_All_Threaded_Strategy<Synch_Thr_Logging_Handler_Static_Receiver> >
+ Synch_Thr_Logging_Handler_Static_Receiver_Acceptor_T;
+
+
+// Instance based log message receivers
+typedef Log_Message_Receiver<ACE_LOGGER_SYNCH>
+ Synch_Receiver;
+
+typedef ACE_Server_Logging_Handler<Synch_Receiver>
+ Synch_Logging_Handler_Receiver;
+typedef ACE_Thr_Server_Logging_Handler<Synch_Receiver>
+ Synch_Thr_Logging_Handler_Receiver;
+
+typedef ACE_Server_Logging_Acceptor_T<Synch_Logging_Handler_Receiver,
+ Synch_Receiver,
+ ACE_Schedule_All_Reactive_Strategy<Synch_Logging_Handler_Receiver> >
+ Synch_Logging_Handler_Receiver_Acceptor_T;
+
+typedef ACE_Server_Logging_Acceptor_T<Synch_Thr_Logging_Handler_Receiver,
+ Synch_Receiver,
+ ACE_Schedule_All_Threaded_Strategy<Synch_Thr_Logging_Handler_Receiver> >
+ Synch_Thr_Logging_Handler_Receiver_Acceptor_T;
+
+// Define external Acceptor_Ts
+typedef Null_Synch_Logging_Handler_Static_Receiver_Acceptor_T
+ ACE_Server_Logging_Acceptor_T;
+typedef Synch_Thr_Logging_Handler_Static_Receiver_Acceptor_T
+ ACE_Thr_Server_Logging_Acceptor_T;
+
+//typedef Synch_Logging_Handler_Receiver_Acceptor_T ACE_Server_Logging_Acceptor_T;
+//typedef Synch_Thr_Logging_Handler_Receiver_Acceptor_T ACE_Thr_Server_Logging_Acceptor_T;
+
+ACE_SVC_FACTORY_DECLARE (ACE_Server_Logging_Acceptor_T)
+ACE_SVC_FACTORY_DECLARE (ACE_Thr_Server_Logging_Acceptor_T)
+
+#endif /* SERVER_LOGGING_HANDLER_H */