Cleanup ACE_HAS_PTHREAD_SIGMASK_PROTOTYPE, all platforms support it so far as I can...
[ACE_TAO.git] / ACE / ChangeLogs / ChangeLog-1994
blob09465ce823f27d6cac20cf07056eb1a52512be99
1 Fri Dec 23 01:50:50 1994  Douglas C. Schmidt  (schmidt@tango)
3         * libsrc/ASX: Changed the behavior of Map_Manager::Map_Manager()
4           to allocate a default-sized buffer.
6         * libsrc/Reactor/Reactor.C (dispatch): Made the poll-based Reactor
7           smarter about detecting POLLERR error conditions.  When POLLERR
8           is detected, the Reactor now shutdown down that fd...
10 Wed Dec 21 18:29:15 1994  Douglas C. Schmidt  (schmidt@tango)
12         * libsrc/IPC_SAP/SPIPE_SAP: Changed the name of class SPIPE_Msg to
13           SPIPE_IO to reflect the fact that I/O over named pipes need not
14           be message-oriented...
16         * Changed all occurrences of {SOCK,TLI,SPIPE}_Listener to
17           {SOCK,TLI,SPIPE}_Acceptor.  This is a more accurate name for the
18           function these classes perform.  In addition, it is easier to
19           explain in the context of the Acceptor and Connector patterns.
20           Note that the *.h files are also changed, as well.
22         * Changed the implementation of {SOCK,TLI,SPIPE}_SAP so that there
23           is now a *_Connector class to go along with the *_Acceptor
24           class.  The *_Connector is a factory that produces *_Stream
25           objects *actively*, in a similar way to how the *_Acceptor is a
26           factory that produces *_Stream objects *passively*.  This makes
27           everything much more orthogonal, though it will break existing
28           code...  The easiest way to fix existing code is to do the
29           following:
30           
31           1. Find places in the code that define objects of 
32              type SOCK_Stream, LSOCK_Stream, TLI_Stream,
33              or SPIPE_Msg (now called SPIPE_IO).
34           
35           2. Replace #include "SOCK_Stream.h" with
36              #include "SOCK_Connector.h" (or whatever
37              C++ wrapper you have).
39           3. Replace definitions of the form:
41           INET_Addr addr (port, host);
42           SOCK_Stream foo (addr);
43           
44           with
45           
46           INET_Addr addr (port, host);
47           SOCK_Stream foo;
48           SOCK_Connector con (foo, addr);
50           If you don't want to have an extra variable named "con",
51           you can replace this with:
53           INET_Addr addr (port, host);
54           SOCK_Stream foo;
55           SOCK_Connector (foo, addr); // Calls the constructor.
56           
57 Tue Dec 20 21:34:10 1994  Douglas C. Schmidt  (schmidt@tango)
59         * Renamed the ./{libsrc,tests}/{Semaphores,Message_Queues}
60           directories to SV_Semaphores and SV_Message_Queues to better
61           reflect their true behavior and in order to prevent clashes with
62           the new ASX names.
64         * libsrc/ASX: Renamed Queue to Task to better reflect its true
65           functionality.  In addition, renamed Message_List to
66           Message_Queue.
68 Mon Dec 19 23:04:52 1994  Douglas C. Schmidt  (schmidt@tango)
70         * Changed "private" to "protected" in ASX/Message_List.h at the
71           request of Troy Warner (tnw1@core01.osi.com).
73 Mon Dec 12 23:47:01 1994  Douglas C. Schmidt  (schmidt@tango)
75         * libsrc/IPC_SAP/SOCK_SAP: changed the name of the global utility
76           function "bind_port()" to ace_bind_port() to avoid polluting the
77           global symbol namespace.
79         * Fixed a descriptor leak in SOCK_Dgram::shared_open() and
80           SOCK_CODgram::shared_open().  The original version didn't
81           automatically close down the socket descriptor if bind failed.
82           The new version does close the descriptor down.
84 Sat Dec 10 00:53:20 1994  Douglas C. Schmidt  (schmidt@tango)
86         * libsrc/Reactor/Reactor.C (mask_ops): Fixed a stupid bug...  The
87           test should have been
89             if (this->invalid_handle (handle) || 
90                 this->poll_handles_[handle].fd == -1)
92           rather than:
94             if (this->invalid_handle (handle) || 
95                 this->poll_handles_[handle].fd != -1)
97         * libsrc/Reactor/Reactor: Modified the semantics of
98           Reactor::remove_handler() such that calling it with a value of
99           Event_Handler::DONT_CALL or'd into the Reactor_Mask instructs
100           the Reactor to remove the handler *without* calling the object's
101           handle_close() method!
103 Fri Dec  9 12:53:31 1994  Douglas C. Schmidt  (schmidt@tango)
105         * include/Synch: some C++ compilers (e.g., Centerline) barf when
106           the see the following in an inline function:
107           
108           if (foo == bar)
109             {
110                errno = result;
111                return -1;
112             }
113           result result;
115           I fixed this by doing the following:
117           if (foo == bar)
118             {
119                errno = result;
120                result = -1;
121             }
122           result result;
124 Wed Dec  7 22:23:47 1994  Douglas C. Schmidt  (schmidt@tango)
126         * include/Synch.h: Added additional methods in the Null_Mutex
127           class in order to be consistent with the RW_Mutex interfaces...
129         * libsrc/ASX/Message_List: Added new a set of methods called
130           "try_enqueue_head" and "try_enqueue_tail" that will only insert
131           a message into the queue if it is not already full.  If it is
132           full, return EWOULDBLOCK.
134 Tue Dec  6 13:58:28 1994  Douglas C. Schmidt  (schmidt@tango)
136         * libsrc/Reactor/Event_Handler: added default values of -1 to the
137           handle_input(), handle_output(), and handle_exception() methods.
139 Mon Dec  5 23:30:28 1994  Douglas C. Schmidt  (schmidt@tango)
141         * libsrc/ASX/Message_List: Added a new method called set_length to
142           Message_Block.  This method sets the length of the "active"
143           portion of the message.  This is defined as the offset from
144           RD_PTR to WR_PTR.
146 Sat Dec  3 20:40:53 1994  Douglas C. Schmidt  (schmidt@tango)
148         * libsrc/Threads/Synch: Added two new class called Write_Guard and
149           Read_Guard, which provide functionality a la the Guard class,
150           only that they acquire and release readers/writer locks.
152         * libsrc/Threads/Synch: For interface uniformity with other
153           synchronization wrappers I added an acquire() method.  This is
154           implemented as a write-lock to be on the safe-side...
156 Fri Dec  2 13:33:39 1994  Douglas C. Schmidt  (schmidt@tango)
158         * include/Synch.i (Mutex::tryacquire): Modified the behavior of
159           Mutex::tryacquire so that it will return -1 and set errno to the
160           appropriate return value of tryacquire(3T) if various types of
161           "problems" occur (such as the Mutex already being held).
163         * include/Message_List.i: Rearranged the order of the
164           Message_Block::get_rd_ptr and Message_Block::set_wr_ptr methods
165           to deal with inlining problems that some cfront-based C++
166           compilers have...
168         * libsrc/Reactor/Signal.[hi]: Changed set_handler/get_handler to
169           "handler" to avoid a collision with Rogue Wave libraries.  This
170           new version is more consistent with other usage in ACE anyhow...
172         * Modified the behavior of Service_Config::Service_Config() so
173           that it makes the initialize size of the Reactor be the same
174           size as the Service_Repository.  This was done at the suggestion
175           of Bob Sayle and Steve Warwick at ARINC Research.
177 Sun Nov 20 00:59:06 1994  Douglas C. Schmidt  (schmidt@tango)
179         * libsrc/ASX/Message_List: Added two new methods
180           (is_full() and is_empty()) to the public interface
181           of Message_List.  These methods check whether the queue is full
182           or empty *while holding the lock*.
184         * libsrc/ASX/Queue.h: Made the svc() method a pure virtual
185           function.  This is much cleaner than not doing it, particularly
186           when we've already got to define open(), close(), and put()...
188         * Added a new method to the IPC_SAP/Addr inheritance hierarchy.
189           The method is called addr_to_string() and it converts the
190           address of a subclass (e.g., either UNIX domain or Internet
191           domain) into a string.  This functionality is particularly
192           useful in parameterized types (such as Acceptor), which should
193           be oblivious of the type of communication domain they are
194           using...
196         * Reorganized the ./apps/Logger/Service_Configurator_Logger
197           directory in order to reuse more code.  Now, all the Acceptor
198           pattern classes have been moved to a new subdirectory called
199           ./libsrc/Acceptor.  In addition, this code has been generalized
200           to work with the ASX framework!
202 Sat Nov 19 15:19:19 1994  Douglas C. Schmidt  (schmidt@tango)
204         * Released version 2.15.5 (added a couple of minor fixes and some
205           additional software to the release.  In particular, I've added
206           the RPC++ C++ wrappers for Sun RPC.  See the README file for
207           more info on this.
209         * apps/Synch-Benchmarks: Reorganized all the synchronization tests
210           so that they would be easier to understand and extend.
212         * include/sysincludes.h (ACE_NONBLOCK): Fixed a stupid typo in the
213           ./include/makeinclude/wrapper_macros.GNU file that accidentally
214           used ACE_NONBLOCKING instead of ACE_NONBLOCK...  Jaysus
216         * Fixed up the Service_Config.[Chi] source so that it no longer
217           allocates statically linked services via static variables.
218           Stacy Mahlon (mcs@contour.mayo.edu) recommended this change to
219           workaround bugs in compilers that fail to initialize static
220           objects appropriately.
222 Tue Nov 15 11:55:03 1994  Douglas C. Schmidt  (schmidt@tango)
224         * Fixed a portability problem in the ./libsrc/Service_Configurator
225           that was caused by certain compilers failing to initialize
226           global variables correctly.  In particular, the Obstack object
227           ace_obstack is now a pointer that is allocated dynamically by
228           Service_Config.process_directive().  Thanks to Stacy Mahlon
229           (mcs@contour.mayo.edu) for noticing this!
231 Mon Nov 14 12:16:14 1994  Douglas C. Schmidt  (schmidt@tango)
233         * libsrc/Threads/Thread.h: added C++ wrappers for
234           thr_getconcurrency() and thr_setconcurrency().
236         * Fixed a dumb typo in ./tests/IPC_SAP/SOCK_SAP/CPP-nbclient.C
237           that failed to conditionally compile for different variants of
238           siginfo...
240         * Added some test programs that benchmark the performance of
241           Solaris synchronization mechanisms.  See ./apps/Synch-Benchmarks
242           for details...
244         * Extended the methods of the Queue class to take advantage of the
245           new Message_List methods that perform timed waits!  This
246           involves changing many of the existing methods in this class to
247           add an extra parameter of type timestruc_t *, which defaults to
248           0.
250         * Added some new comments in the
251           ./include/makeinclude/wrapper_macros.GNU file that indicate what
252           the various macros defined by the Makefile scheme actually mean.
253           This should help people who are porting to a new system...
255         * Fixed a dumb bug in ./tests/Shared_Memory that directly included
256           system header files.  Everything in ACE should include
257           "sysincludes.h" instead...  Thanks to Stacy Mahlon
258           (mcs@contour.mayo.edu) for noticing this!
260         * include/Memory_Pool.i (round_up): Fixed a typo where PAGESIZE
261           should have been ACE_PAGE_SIZE.
263 Sat Nov 12 01:32:52 1994  Douglas C. Schmidt  (schmidt@tango)
265         * Generalized the Shared_Memory_Pool class for Malloc so that it
266           doesn't require the base addresses for multiple processes to all
267           start at the same location.
269         * libsrc/Service_Configurator/Thread_Spawn.i (Thread_Spawn):
271           Fixed a stupid bug in the constructor.  Note that we should
272           be checking if this->tm_ == 0, rather than != 0...
274 Fri Nov 11 00:11:41 1994  Douglas C. Schmidt  (schmidt@tango)
276         * Released version 2.15.4 (added a couple of minor fixes).
278         * Added a new test program in the ./tests/ASX/Message_List
279           directory.  This program illustrates how thread-safe
280           Message_Lists work using ASX.
282         * libsrc/Threads/Thr_Manager.i: Added a new method called
283           insert_thr() to Thr_Manager that is used in conjunction with
284           Thr_Cntl::Thr_Cntl to make sure that a thread is added to the
285           Thr_Manager's table correctly.
287 Thu Nov 10 20:14:11 1994  Douglas C. Schmidt  (schmidt@tango)
289         * libsrc/Log_Msg/Log_Record.C (print): Fixed the following very
290           subtle (and very stupid) bug:
292               return ::fprintf (fp, this->msg_data_);
294           if this->msg_data_ contains '%', then this call will
295           fail since fprintf tries to treat the percent sign as
296           a format code.  The obvious fix is:
298               return ::fprintf (fp, "%s", this->msg_data_);
300         * libsrc/ASX/Message_List.i (is_empty): Fixed a braino that failed
301           to check if there was a 0-sized buffer in the list.  It is now
302           possible to enqueue a 0-sized buffer, which is helpful for
303           things like signaling end of transmission by a producer.
305         * libsrc/ASX/Message_List.C: Improved the robustness of the
306           Message_List abstraction by detecting the case where the newly
307           inserted Message_Block is a NULL pointer.  Before, this would
308           crash the program, where now it returns -1 from the
309           enqueue_head() or enqueue_tail() methods.
311         * libsrc/Threads/Synch.h: added timedwait_signal() and timedwait()
312           methods to class Condition.  These are wrappers around the
313           cond_t cond_timedwait() function.
315         * Improved the documentation of the class interfaces in the
316           Synch.h C++ wrapper for Solaris 2.x threads mechanisms.
318         * Changed the name of class Condition methods wait_signal() and
319           timedwait_signal() to wait_alert() and timedwait_alert() to
320           remove confusion with UNIX signals and the regular condition
321           variable signal.
323 Wed Nov  9 23:49:24 1994  Douglas C. Schmidt  (schmidt@tango)
325         * libsrc/IPC_SAP/Addr/UNIX_Addr.i (UNIX_Addr): Fixed another
326           couple brainos in UNIX_Addr.i (thanks for Irfan
327           (ip1@cs.wustl.edu) for noticing this).
329         * libsrc/IPC_SAP/SOCK_SAP/SOCK.i (get_local_addr): Fixed a braino
330           that didn't reset the Addr size after a call to getsockname().
332 Tue Nov  8 00:25:02 1994  Douglas C. Schmidt  (schmidt@tango)
334         * libsrc/Service_Configurator/Svc_Conf.y (create_service_type):
335           Fixed a bug on lines 323 and 324, and 330 and 331.  The "#if
336           defined" needs to be INSIDE the "case" statements.  Thanks to
337           mcs@contour.mayo.edu for finding this!
339         * Improved the interfaces for all the synchronization wrappers so
340           that they can be given all the parameters for the underlying
341           SunOS 5.x *_init calls.  Default values are given to keep the
342           normal usage concise...
344 Mon Nov  7 21:41:13 1994  Douglas C. Schmidt  (schmidt@tango)
346         * Changed all occurrences of Mutex_Rec to Recursive_Lock.  This is
347           much more descriptive since by using templates, the recursive
348           logic applies to a number of synchronization mechanisms (e.g.,
349           Semaphores, RW_Mutex, Mutex, Null_Mutex, etc.)  rather than just
350           the Mutex class.
352         * Changed all occurrences of Mutex_Block to Guard.  This is more
353           standard terminology and reflects Booch's terms more closely, as
354           well.
356 Sun Nov  6 14:31:44 1994  Douglas C. Schmidt  (schmidt@tango)
358         * Majorly improved the modularity and structure of the Reactor
359           class.  Much duplicate code has been coalesced and several new
360           features have been added.
362         * Changed the name of the Reactor method set_ready() to
363           ready_ops().  Added a new method called mask_ops().  These
364           methods make it possible to manipulate the "dispatch masks" and
365           the "ready masks" (e.g., READ_MASK, WRITE_MASK, etc.) at a much
366           finer level of granularity without loss of efficiency or
367           correctness.
369 Sat Nov  5 16:48:55 1994  Douglas C. Schmidt  (schmidt@tango)
371         * Changed the name of three methods in the Semaphore class to
372           mirror the terms used for Mutex and RW_Mutex.  This will help
373           support the use of semaphores along with templates (e.g.,
374           Rec_Lock) much better...  The old names were "wait", "trywait",
375           and "signal".  The new names are "acquire", "tryacquire", and
376           "release."
378         * Added a new class called Signal_Block in Signal.[hiC] This class
379           operates similar to Mutex_Block, in that it holds a set of
380           signals over the duration of a C++ statement block.  The
381           constructor masks out the signals and the destructor restores
382           the signals.
384         * Changed the name of files Signal_Handler.[hiC] to Signal.[hiC]
385           to reflect a broadening of the functionality of the ACE wrappers
386           for Signals.  For example, the new C++ classes wrap the sigset_t
387           API, as well as the struct sigaction structure.
389 Fri Nov  4 00:41:48 1994  Douglas C. Schmidt  (schmidt@tango)
391         * Yow, got the new Shared_Malloc/Malloc class to work correctly on
392           SunOS 4.x, as well as SunOS 5.x.  It's a bit more clunky on
393           SunOS 4.x since we have to use System V semaphores rather than
394           Solaris synchronization mechanisms.  However, it now seems to
395           function correctly!
397         * Added a new method called "tryacquire" to Semaphore_Complex and
398           Semaphore_Simple.  This method provides the same "non-blocking"
399           semantics as it does in the Mutex, Semaphore, and RW_Mutex
400           classes.
402         * Added a new method called "remove()" to all the C++ wrappers in
403           the Synch.[hi] file.  This improves the symmetry with the System
404           V semaphore wrappers, and also gets around a nasty bug with
405           cfront 3.x and its handling of templates and explicitly called
406           destructors...
408         * Added a new C++ wrapper class for Threads (Thread.h).  The
409           eventual purpose of this class is to hide the differences
410           between POSIX pthreads and Solaris threads.
412         * Added new parameters to Thr_Manager::spawn to enable the stack
413           and stack_size to be passed in.
415         * Modified the Synch.h file so that the Null_Mutex and Mutex_Block
416           classes will both be compiled, even if we are building ACE on a
417           platform that doesn't support threads!
419         * Added a timed event-loop method to the public interface of the
420           Service_Config class.  This basically forwards the request to
421           the underlying Reactor->handle_events method.  Thanks to Brad
422           Needham (bneedham@arinc.com) of ARINC research for the
423           suggestion!
425 Wed Nov  2 14:47:25 1994  Douglas C. Schmidt  (schmidt@tango)
427         * Changed the interface for one of the Reactor's
428           {register,remove}_handler methods.  These methods
429           had previously taken a sigset_t &, but for some reason the Sun
430           C++ 3.0 compiler can't seem to recognize that this is different
431           from an int!  Therefore, I changed the interface to take a
432           sigset_t *.
434         * Fixed some portability bugs that crept into the SunOS 4 version
435           of ACE, particularly with the siginfo_t extended signal handler
436           stuff.
438 Tue Nov  1 21:46:07 1994  Douglas C. Schmidt  (schmidt@tango)
440         * libsrc/Log_Msg/Log_Msg.C (log): Fixed a braino on line 175.
441           "int sig" was undefined outside the conditional (duhhh ;-)).
443 Thu Oct 27 17:23:37 1994  Douglas C. Schmidt  (schmidt@tango)
445         * Fixed up some problems with Semaphore_Complex and
446           Semaphore_Simple.  The new design should be more functional,
447           particularly for Semaphore_Complex, which now generalizes to
448           arrays of semaphores.
450 Wed Oct 26 16:38:42 1994  Douglas C. Schmidt  (schmidt@tango)
452         * libsrc/Shared_Malloc/: Created a .i file for Malloc and
453           Memory_Pool to handle inlines.
455         * Fixed a fence-post error in Mem_Map::map_it().  The new version
456           should correctly set the length of the file *and* also do the
457           appropriate memory mapping.
459         * bin/clone.C: Fixed the clone program so that it now compiles
460           with the C++ compiler rather than the C compiler.
462 Tue Oct 11 20:01:16 1994  Douglas C. Schmidt  (schmidt@tango)
464         * libsrc/Reactor/Reactor.h (Reactor): Changed the order of the
465           arguments to the Reactor's register_handler() method used to
466           register signal handler objects.  The new order puts both "new"
467           components first, and any
468           (optional) old components following this.  This is
469           a more natural set of default values...
471         * libsrc/Shared_Malloc: split out the Local and Shared memory
472           pools for class Malloc into the Memory_Pool.[hC] files.
474 Mon Oct 10 22:54:53 1994  Douglas C. Schmidt  (schmidt@tango)
476         * libsrc/Threads/Synch.i: Reworked the Thread_Mutex and
477           Process_Mutex classes to inherit their interface and
478           implementation code from Mutex...  Thanks to Irfan Payrali for
479           the suggestion!
481 Wed Sep 28 11:26:34 1994  Douglas C. Schmidt  (schmidt@tango)
483         * Moved some of the tests directories around to better reflect
484           precisely which ACE components are being tested.  In particular,
485           the {client,server} directories that were originally under the
486           ./tests/Reactor subtree are now located in the
487           ./tests/Service_Configurator subtree.
489 Tue Sep 27 23:05:32 1994  Douglas C. Schmidt  (schmidt@tango)
491         * Added a bunch of constructors/destructors for
492           ./tests/Reactor/server to make g++ happy.
494         * libsrc/Service_Configurator/Service_Object.[ih]
495           (Service_Object): Added a constructor and destructor to
496           Service_Object to make g++ happy.  Also, removed the #if for
497           broken versions of g++ 2.5.8.
499         * include/Reactor: Added a constructor and destructor for
500           Null_Callback to make G++ happy...
502         * libsrc/Message_Queues/: Added support for G++ templates.
504         * Changed the handling of _sys_siglist in the sysincludes.h file
505           to try and handle the weird SunOS 4 header file problems...
507         * libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram_Brdcast.C (mk_broadcast):
508           Removed the "struct" from new struct ifnode in order to
509           compile...
511 Tue Sep 20 11:17:23 1994  Douglas C. Schmidt  (schmidt@tango)
513         * Fixed a couple of minor typos in the Windows NT C++ wrappers for
514           sockets.
516         * Released version 2.15.2 so that Mark Frutig could have access to
517           the latest source in order to write man pages!
519 Thu Sep 15 20:47:36 1994  Douglas C. Schmidt  (schmidt@tango)
521         * Extended the Event_Handler interface to support the additional
522           siginfo_t-style parameters for extended SVR4 signal handling.
523           Note that for backwards compatibility, this new interface only
524           enabled if the -DACE_HAS_SIGINFO flag is set in the
525           wrapper_macros.GNU config file.  Making this change affected
526           several of the existing ACE classes such as Service_Config and
527           Signal_Handler.
528           
529 Mon Sep 12 17:07:10 1994  Douglas C. Schmidt  (schmidt@tango)
531         * Improved the modularity of the Reactor by creating a new class
532           called Signal_Handler.  This new class basically encapsulates
533           the signal handling mechanism provided by UNIX within a nice OO
534           abstraction.  The new arrangement is particularly useful since
535           the Signal_Handler class may be used in applications
536           (e.g., the Malloc class abstraction) that do not require the
537           other features of the Reactor.
539 Sun Sep 11 14:40:06 1994  Douglas C. Schmidt  (schmidt@tango)
541         * Changed the default value for Semaphore_Simple and
542           Semaphore_Complex from OPEN to CREATE.  This is more closely
543           related to how SunOS thread synchronization variables work.
545         * Changed the methods of the Semaphore_Simple class to be
546           syntactically equivalent to the Process_Mutex and Thread_Mutex
547           classes.  This makes it easier to write code that uses
548           parameterized types to instantiate the appropriate type of
549           synchronization primitive.
551         * include/makeinclude/rules.local.GNU (OBJDIRS): Fixed the
552           "depend" target so that it generates the correct dependencies
553           for remaking .so files after they are changed.
555         * Added a new pair of methods to the Reactor so that it is now
556           possible to register/remove a sigset_t of signals in one
557           operation.
559 Sat Sep 10 03:11:34 1994  Douglas C. Schmidt  (schmidt@tango)
561         * libsrc/Mem_Map/Mem_Map.i (map_it): Fixed a few minor bugs with
562           how the Mem_Map::map() method handles lseek()'s.
564         * Changed the name of the Mem_Map::open() methods to
565           Mem_Map::map().  This seems like a more reasonable name!  Also,
566           removed the close() method.  This is trivial to implement via
567           ::close (mmap.get_fd ());
569 Fri Sep  9 22:04:25 1994  Douglas C. Schmidt  (schmidt@tango)
571         * Provided a new implementation of a flexible memory allocation
572           scheme (Shared_Malloc/Malloc.[HiC]).  This memory allocation can
573           be parameterized by the following:
574           
575           1. The pool from which memory is allocated (e.g.,
576              local memory vs. shared memory).
578           2. The type of synchronization used when allocating
579              the memory (e.g., no synchronization, thread-based
580              synchronization, process-based synchronization).
582         * libsrc/Threads/Synch.i (Proc_Mutex): Added new classes to the
583           Synchronization library.  These classes are wrappers around the
584           USYNC_PROCESS and USYNC_THREAD flags to mutex_init().
586 Wed Sep  7 20:29:00 1994  Douglas C. Schmidt  (schmidt@tango)
588         * include/sysincludes.h (MT): Added check to see if _REENTRANT was
589           already defined, and if so, avoid redefining it!
591 Sun Sep  4 16:23:17 1994  Douglas C. Schmidt  (schmidt@tango)
593         * Released version 2.15.1 to the world...
595         * Added support for the Windows NT version of SOCK_SAP.
597         * Fixed a few minor bugs involved with the order of linking
598           libraries.
600         * Fixed an oversight in ./testsReactor/server/server_test.C where
601           I was still including the "Server_Test.h" file (ugh).
603 Wed Aug 31 13:27:10 1994  Douglas C. Schmidt  (schmidt@tango)
605         * libsrc/IPC_SAP/SOCK_SAP/SOCK_Stream.C (open): Fixed a bug
606           whereby the I/O descriptor wasn't being closed if connect()
607           failed.  Thanks to Charles Eads
608           (eads@synoptics.com) for reporting this.
611         * Recompiled everything on SunOS 4.x using SunC++ 3.x and SunOS
612           5.x using SunC++ 3.x and 4.x.  Everything seems to compile fine
613           now.
614           
615         * Released version 2.15
617 Mon Aug 29 00:14:04 1994  Douglas C. Schmidt  (schmidt@tango)
619         * Finished up a preliminary set of tests for ASX.  See the
620           $WRAPPER_ROOT/tests/ASX/Event_Server directory for more details.
622         * wrapper_macros.GNU (CC): Removed the ARCHFLAG from the CCFLAGS
623           macro in the Makefile system.  Henceforth, all conditional
624           compilation should be performed on a "per-feature" basis, rather
625           than a "per-platform" basis...
627         * libsrc/IPC_SAP/SOCK_SAP/SOCK_Dgram_Brdcast.C (send):
628           Automatically convert the port number to htons format before
629           using it to initialize the sin_port field of the addressing
630           structure.  This is consistent with the behavior of other parts
631           of IPC_SAP (particularly INET_Addr::set()).
633 Sun Aug 28 00:02:53 1994  Douglas C. Schmidt  (schmidt@tango)
635         * Changed version number of 2.15 to reflect all the major
636           modifications to the structure of ACE.
638         * include/sysincludes.h: Started to fix up the conditional
639           compilation scheme to be much smarter about the features that
640           are available from both the compiler and the OS environment.
642         * Added a fix suggested by Leslee Xu (lxu@ics.uci.edu) to better
643           handle the normalization of Timer_Values.
645         * Continued to make ACE coding conventions more consistent by
646           removing get_/set_ prefix from all the accessor/manipulator
647           methods.  Also, added an underbar at the end of all class and
648           object instance variables.
650 Sat Aug 27 20:28:13 1994  Douglas C. Schmidt  (schmidt@tango)
652         * Continued to improve error handling by replacing all uses of
653           perror with the Log_Msg macros.
655         * include/sysincludes.h: Continued to improve the namespace
656           utilization in ACE by prefixing stand-along Misc functions with
657           ace_.
659         * include/FD_Set.h: Changed the name FD_Set_Iter to
660           FD_Set_Iterator.
662         * typedef'd int to HANDLE in Event_Handler.h in preparation for
663           merging in the Windows NT support along with the regular ACE
664           package.  I need to update all the other code in the entire
665           release to be consist with this!
667 Thu Aug 25 19:49:57 1994  Douglas C. Schmidt  (schmidt@tango)
669         * Fixed a bug with Thr_Manager.i that occurred if a thread created
670           by ::thr_create() exits prior to the acquisition of the lock and
671           the subsequent bookkeeping.
673 Wed Aug 24 17:34:49 1994  Douglas C. Schmidt  (schmidt@tango)
675         * Updated SOCK_Dgram_Brdcast to return the average number of bytes
676           sent.  This isn't necessarily the most useful info, but it
677           doesn't hurt either.  Thanks to Mark Frutig (mfrutig@fnbc.com)
678           for the suggestion.
680 Mon Aug 22 01:18:14 1994  Douglas C. Schmidt  (schmidt@tango)
682         * Added a new test for the Service Configurator framework.  This
683           test illustrates the dynamic configuration of an entire stream
684           of Modules.
686 Sun Aug 21 03:16:00 1994  Douglas C. Schmidt  (schmidt@tango)
688         * Cleaned up the ./tests/Reactor/server example to be more robust.
689           In particular, it doesn't really make sense to have the same
690           object be configured both statically and dynamically *at the
691           same time*!  This was causing problems since each constructor
692           was getting called twice for the same object -- once when it was
693           created statically, and again when it was linked in
694           dynamically...  Things work much better now.
696 Sat Aug 20 01:07:24 1994  Douglas C. Schmidt  (schmidt@tango)
698         * Heavily revised the structure of the ./apps/Logger
699           subdirectories to test out the new Makefile scheme.  Everything
700           is working fine on Solaris!
702         * Updated all the ./apps/Logger subdirectories to use the Acceptor
703           name rather than the Client_Listener name.  This is consistent
704           with recent papers...
706         * Fixed all the Makefiles to utilize the new simplified build
707           strategy.  The Makefiles are *far* more automated now!
709         * Added support to all the libsrc Makefiles to produce both shared
710           libraries (*.so) and traditional archives
711           (*.a).
713 Fri Aug 19 16:13:42 1994  Douglas C. Schmidt  (schmidt@tango)
715         * Majorly improved the Makefile support for building shared
716           objects that will be dynamically linked explicitly.  No longer
717           will we have to do the horrible hack of compiling all the source
718           code using -pic.  Instead, only that code that will be linked
719           dynamically must be compiled with -pic!  Note that this only
720           works if the shared object is entirely self contained (i.e., it
721           does *not* reference any statically linked symbols that are not
722           defined in itself)!
724         * Started to add changes to the source code to make its
725           configation driven by features rather than by OS.  This should
726           make everything much more portable soon!
727           
728         * Fixed IPC_SAP.h so that the constructor is protected (prevents
729           accidental definition of an instance of this class).
731 Thu Aug 11 08:31:33 1994  Douglas C. Schmidt  (schmidt at valentine.ics.uci.edu)
733         * Fixed Reactor::schedule_timer() so that it will unblock the
734           Reactor if it is currently blocked.  This is necessary so that
735           the Reactor will recompute the amount of time that it needs to
736           wait before dispatching timer-based events.  Thanks to Todd Hoff
737           for noticing this...
739         * Fixed a stupid bug in the handle_input() method of
740           Client_Listener in both the Reactor and Service_Configurator
741           version of the Server Logging Daemon.  This routine was not
742           explicitly returning 0 when it worked..., which might cause the
743           Reactor to deregister the listener handler!
745         * Added casts to the ::select() call in the Reactor to ensure that
746           the FD_Set * -> fd_set * conversion operators are properly
747           involved.  Thanks to Todd Hoff for this fix (thm@ictv.com).
748           Todd noticed that the DCE pthreads implementation on AIX was
749           confusing the compiler...
751 Mon Aug  8 18:11:03 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
753         * Added a new constructor for the FD_Set class that will convert
754           an fd_set into an FD_Set.
755           
756         * Removed the default value for the Service_Repository constructor
757           since this was ambiguous with the default constructor.
759 Tue Aug  2 18:25:28 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
761         * Fixed a bunch of minor "warning-causing" nits that were caused
762           by #endif __INLINE__ in certain header files...
764         * Added a new set of interfaces to the Reactor to retrieve a
765           registered handler.  These interfaces are also useful for
766           checking whether a handler is registered at a particular fd.
768 Sun Jul 10 17:43:19 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
770         * Improved the implementation of the Profile_Timer and
771           High_Res_Timer classes.  In particular, the High_Res_Timer class
772           now works quite nicely using SunC++ 4.0.
774 Mon Jul  4 12:49:14 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
776         * Changed the order of the base class inheritance list for the
777           Service_Object class as a workaround for a bug in SunC++ 4.0's
778           handling of pointers to member functions (ugh).
780 Sun Jul  3 18:07:16 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
782         * Added a bunch of changes (courtesy of
783           george@truffula.fp.trw.com).  These changes fix minor
784           portability problems with the new SunC++ 4.0 compiler.
786 Fri Jun 24 08:59:02 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
788         * Removed operator() from all the IPC_SAP listener classes.
789           Defining this operator was causing more trouble than it is worth
790           since C++ doesn't allow operator() to have default arguments
791           (ugh).  The "right" thing to do is to simply use the accept()
792           method in those classes instead of operator().
794 Wed Jun 22 16:54:05 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
796         * Fixed some problems with TLI_Listener that involved lax scoping
797           of nested classes with cfront 3.x-based C++ compilers.
799 Tue Jun 14 11:56:56 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
801         * Added a bunch of changes to get portions of ACE up and running
802           on SCO UNIX, on HP-UX, and on OSF/1.
804 Tue Jun  7 14:32:50 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
806         * Added support for FLEX's <<EOF>> symbol to properly cleanup when
807           a configuration file has been parsed by the Service
808           Configurator's lexer/parser.
809           
810 Sun May 22 10:37:14 1994  Douglas C. Schmidt  (schmidt at valentine.ics.uci.edu)
812         * Modified the semantics of explicit dynamic linking on SunOS 4.x.
813           Now, if there is no _init or _fini function defined in a shared
814           library, it isn't an error (we simply don't call the function!).
816 Mon May  9 07:58:35 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
818         * Included more fixes for GNU G++ courtesy of Aniruddha Gokhale
819           <gokhale@cs.wustl.edu>.
821 Thu May  5 16:47:25 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
823         * Reimplemented the ./apps/Logger/Reactor_Logger to provide an
824           illustration of how the Reactor works.
826         * Added finishing touches to the new version of the Service
827           Configurator framework.  This framework now permits completely
828           automated configuration and reconfiguration of Service_Objects
829           and Streams.  The next step is to add some more complete
830           examples that illustrate how these features are used...
832 Tue May  3 10:17:12 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
834         * Fixed a bug in the Service Repository that would cause an
835           extraneous dlclose on a shared library handle under some
836           circumstances...
838 Mon May  2 11:07:52 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
840         * Modified the semantics of Service_Object_Type in the Service
841           Configurator framework so that it does not automagically
842           register the service object with the instance of the Reactor.
843           The original behavior involved too much "over-specification" of
844           the behavior of Service Objects.  Moreover, I can finally omit
845           the crazy semantics of DONT_REGISTER_SVC and REGISTER_SVC!
847         * Fixed some subtle bugs involved with pop'ing a remove'ing a
848           Module from a Stream.  Note that we need to use Module::link
849           rather than Module::set_next in order to ensure that all the
850           necessary pointers get rearranged....
852         * Fixed a couple of minor problems with deleting const objects in
853           the Service_Repository.i file.  These were caught by G++, but
854           not caught by SunC++!
856 Sun May  1 11:43:52 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
858         * Fixed subtle bug in Server_Config::run_event_loop().  This bug
859           prevented reconfiguration from occurring under certain
860           circumstances.
862         * Added a new feature to the Service_Manager class in the Service
863           Configurator framework.  This new feature enables the Service
864           Configurator to be reconfigured remotely by clients.
865         
866         * Fixed a bug in Service_Manager that caused the Service
867           Configurator to crash if SIGPIPE occurred if a client closed
868           down ungracefully while retrieving information on active
869           services.
871         * Added a new argument to the Reactor::register_handler() method
872           that is used to register signal handling Event_Handlers.  This
873           new argument returns the current Event_Handler (if any) that is
874           registered for this signal.
876         * Fixed a potential bug in Service_Config::process_directives that
877           behaved improperly when there was no svc.conf file present in a
878           directory.
880 Wed Apr 27 12:55:46 1994  Douglas C. Schmidt  (schmidt at mabillon.ics.uci.edu)
882         * Changed the name of Service_Directory to Service_Manager to
883           reflect its intended functionality
885 Mon Apr 25 10:53:01 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
887         * Updated the Service Configurator framework to use the new signal
888           handling facilities provided by the Reactor.  This cleans up a
889           lot of the code in Service_Config.i and removes the need for
890           ugly non-reentrant static class variables.
892         * Released version 2.14
894 Sat Apr 23 14:29:11 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
896         * Changed the representation of the select()-based Reactor to be
897           more similar with the poll()-based Reactor.  In particular,
898           there is only one array of Event_Handlers rather than three...
900 Sun Mar 13 16:49:59 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
902         * Fixed a bug with the select-based version of the Reactor.  This
903           bug caused problems when dispatching the handle_output() member
904           function.
906         * Fixed a bug with the select-based version of the Reactor.  This
907           bug resulted in a failure to call the handle_close() member
908           function on the write_fds and except_fds.
910         * Changed the interface for Event_Handler::handle_close() so that
911           the second parameter is a Reactor_Mask.  This allows the
912           call-back routine to determine which side of a connection (i.e.,
913           read-side vs. write-side or both) to close down.  Be careful
914           since this change may break existing code that used the original
915           1 argument handle_close() member function.
916           
917         * Changed the location of the Reactor_Mask.  It was originally an
918           enum in Reactor.h.  It is now a typedef in Event_Handler.  This
919           change will break existing code but it easily spotted since the
920           compiler will give an error!
922 Sat Mar 12 15:16:59 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
924         * Continued to modify the grammar of the svc.conf file language.
925           The latest version (illustrated in configuration files in the
926           ./tests/Reactor/server and
927           ./apps/Logger/Service_Configurator_Logger file) is both easier
928           to read and to parse automatically.
930 Tue Mar  8 10:19:40 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
932         * Changed the behavior of the Get_Opt class so that it will
933           perform option processing starting from argv[0] rather than
934           argv[1] if the SKIP argument to the constructor is set to 0.
935           Note that the default value is 1, so the behavior is the same
936           for backwards compatibility.  Incidentally, this new change is
937           necessary to support the Service Configurator stuff...
939         * Changed the names of some of the Service_Record member functions
940           to conform to the new idiom for naming get/set-style of member
941           function accessors...
943 Sun Mar  6 12:47:03 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
945         * Removed libGet_Opt.a and merged it in with libMisc.a
947 Sat Mar  5 18:37:43 1994  Douglas C. Schmidt  (schmidt at tango.ics.uci.edu)
949         * Updated the Service_Config class to use a flex/yacc based parser
950           rather than an ad hoc parser and lexer.  This is useful since
951           the new syntax for configuring a complete Stream into a Service
952           Configurator-based application is more complicated...
954         * Made a small change to the syntax of a svc.conf file.  Now any
955           parameters that are passed to the Service_Object::init() member
956           function of a dynamically linked service must be enclosed inside
957           of double quotes.  In other words, service config entries such
958           as
960           dynamic ./dev_adapter.so:_alloc () Device_Adapter -p 3000
962           now become
964           dynamic ./dev_adapter.so:_alloc () Device_Adapter "-p 3000"
966           This change makes it easier to parse the input using flex/yacc.
968 Sat Feb 12 18:53:14 1994  Douglas C. Schmidt  (schmidt@net4.ics.uci.edu)
970         * Modified the Reactor so that it now also demultiplexes signals,
971           as well as timer events and I/O events.  This required making a
972           few sections of the Reactor code signal-safe, as well as
973           thread-safe.
975         * Changing the Reactor to handle signals also required a slight
976           change to its interface.  For example, it is now mandatory to
977           give the Event_Handler::{READ_MASK,WRITE_MASK,EXCEPT_MASK} when
978           registering a handler...
980 Sat Feb  5 12:10:53 1994  Douglas C. Schmidt  (schmidt@net4.ics.uci.edu)
982         * Changed the Condition and Monitor classes to use templates that
983           parameterize them with the appropriate type of Mutex (i.e.,
984           either Mutex or Mutex_Rec).  This greatly cleans up the code...
985           Made a number of changes in other files
986           (such as the Reactor) to account for the changes.
988         * Added a new class called Mutex_Rec which implements a recursive
989           Mutex abstraction on SunOS 5.x.  Recursive Mutexes may be
990           acquired multiple times from a single thread.  Basically, this
991           supports an efficient and clean way of handling nested locking
992           conditions.
994 Thu Feb  3 12:37:34 1994  Douglas C. Schmidt  (schmidt@net4.ics.uci.edu)
996         * Fixed a bug in Service_Config.i that was causing SIGHUP-driven
997           reconfiguration not to work correctly.
999         * Added a set of new member functions to the Reactor class to
1000           suspend() and resume() an event handler.  Also added suspend()
1001           and resume() member functions to the Server_Object class to take
1002           advantage of these new facilities automagically...
1004 Mon Jan 31 09:47:06 1994  Douglas C. Schmidt  (schmidt@net4.ics.uci.edu)
1006         * Modified the no-args constructor for the Reactor to initialize
1007           it to the DEFAULT_SIZE.  The prior behavior was *not* to
1008           initialize it at all, which seems rather dumb in retrospect...
1010         * Improved the Reactor's support for multi-threading by adding a
1011           pipe() call that is used to force the Reactor to reconfigure
1012           itself everytime a new handler is registered or removed.
1013           Previously, any new changes wouldn't take place until the
1014           Reactor was triggered by some external event.  This old behavior
1015           was too non-deterministic...
1017 Sun Jan  2 12:35:39 1994  Douglas C. Schmidt  (schmidt@net4.ics.uci.edu)
1019         * Modified the inheritance hierarchy for Service_Object so that it
1020           derives from both Shared_Object and Event_Handler.
1021           Shared_Object is a new abstract base class the provides an
1022           interface for dynamic linking of objects.  When RTTI is widely
1023           available for C++ the Service Configurator will be much more
1024           functional since we can automatically figure out whether an
1025           object is a Service_Object or just a Shared_Object and do the
1026           right thing with it!