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
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).
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);
46 INET_Addr addr (port, host);
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);
55 SOCK_Connector (foo, addr); // Calls the constructor.
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
64 * libsrc/ASX: Renamed Queue to Task to better reflect its true
65 functionality. In addition, renamed Message_List to
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
89 if (this->invalid_handle (handle) ||
90 this->poll_handles_[handle].fd == -1)
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:
115 I fixed this by doing the following:
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
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++
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
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
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
240 * Added some test programs that benchmark the performance of
241 Solaris synchronization mechanisms. See ./apps/Synch-Benchmarks
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
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
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
352 * Changed all occurrences of Mutex_Block to Guard. This is more
353 standard terminology and reflects Booch's terms more closely, as
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
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
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
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
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
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
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
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
434 * Fixed some portability bugs that crept into the SunOS 4 version
435 of ACE, particularly with the siginfo_t extended signal handler
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
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
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
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
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
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:
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
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
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
659 * include/FD_Set.h: Changed the name FD_Set_Iter to
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)
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
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
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
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!
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
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.
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.
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
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
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.
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
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
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
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.
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
960 dynamic ./dev_adapter.so:_alloc () Device_Adapter -p 3000
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
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
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!