1 Sun Jun 30 15:28:43 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3 * ace/OS.i (cond_timedwait): Fixed the implementation of the
4 ACE_OS::cond_timedwait() wrapper such that if the
5 caller-specified timeout elapses without the condition variable
6 being signaled that errno is always set to ETIME. This fixes
7 some inconsistencies that occurred with POSIX pthreads and Win32
8 threads. Thanks to Ross Dargahi <rossd@acm.org> for pointing
11 * ace/SOCK.cpp: Changed SOCK::close() to use the new
12 ACE_OS::closesocket() call. This should fix some weird bugs
13 that have been lurking in the code for some time now!
15 * ace/OS: Added a new method to ACE_OS called closesocket(). This
16 handles the differences between Win32 and UNIX in their
17 treatment of sockets (e.g., NT requires the use of
18 closesocket(), whereas UNIX requires the use of close(). Thanks
19 to Irfan, Prashant, and Tim for figuring this one out!
21 Sat Jun 29 21:23:04 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
23 * ace/SPIPE_Acceptor.cpp (create_new_instance): Added the flag
24 (FILE_FLAG_OVERLAPPED) in call to CreateNamedPipe.
26 Fri Jun 28 01:31:24 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
28 * ace/Svc_Handler.cpp (open): Fixed a small typo that caused a
29 compile error if the DEBUGGING macro was enabled. Thanks to
30 Irfan for finding this.
32 Wed Jun 26 03:19:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
34 * ace/Synch_T.cpp (ts_get): The tss object allocated off the heap
35 should be released if setspecific fails. Thanks to John Lu
36 <johnlu@f1.telekurs.ch> for reporting this.
38 * ace/CORBA_Handler.cpp (handle_input): changed ACE_OS::send and
39 ACE_OS::recv to ACE::send and ACE::recv respectively in
40 CORBA_Handler.cpp. Thanks to Irfan for pointing this out.
42 * ace/Service_Config: slightly modified the Service_Config.[h,cpp]
43 in order to make it possible to create an ACE_Service_Config
44 with an external ACE_Reactor as a parameter. On creation I was
45 handling this partly correct (i.e., not creating a new reactor).
46 However, there was no flag for remembering this for a later
47 deletion. Thus, on deletion I was doing a delete on the Reactor
48 regardless of who created it. This is now fixed. Thanks to
49 Karlheinz for pointing this out.
51 * examples/ASX/CCM_App/CCM_App.cpp: Changed all uses of init (int,
52 char **) to init (int, char *[]) to work around a "feature" with
53 MSVC++ 4.x... Thanks to Karlheinz for pointing this out.
55 * ace/OS.h: Added a new typedef of TCHAR to be compatible with
56 Win32 UNICODE type names...
58 * ace/{Mem_Map,DEV_Addr,SPIPE_Addr,FILE_Addr}: Added UNICODE
59 support for Win32 to all interfaces that require filenames.
61 * ace/{SPIPE_Stream,SOCK_IO,FILE_IO,DEV_IO}: Added a new pair of
62 send()/recv() methods that take ACE_OVERLAPPED pointers in order
63 to make it possible to integrate seamlessly with Win32
64 overlapped I/O. Naturally, these methods are simply
65 "callthroughs" to the ACE_OS versions...
67 * ace/OS: Added a new pair of send()/recv() methods that take
68 ACE_OVERLAPPED pointers in order to make it possible to
69 integrate seamlessly with Win32 overlapped I/O.
71 * ace/SPIPE_Acceptor: Factored out common code in the Win32
72 implementation of ACE SPIPES (which uses Win32 Named Pipes, of
75 * ace/SPIPE_Acceptor.h: Removed a vestige of the past --
76 ACE_SPIPE_LISTENER_H should be ACE_SPIPE_ACCEPTOR_H...
78 Wed Jun 19 19:35:12 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
80 * ace/SPIPE_{Acceptor,Connector}: Modified SPIPE_Acceptor and
81 SPIPE_Connector to implement Named Pipes on NT. The public
82 interface remains the same.
84 Sun Jun 16 00:45:41 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
86 * ace/Service_Config: Provided public accessor methods for the
87 following data memebers of the ACE_Service_Config:
92 Thanks to Steve Warwick <sjw@aesthetic.com> for suggesting this.
94 * ace/Synch*: Added UNICODE support for the ACE synchronization
95 classes (e.g., ACE_Mutex, ACE_RW_Mutex, ACE_Semaphore, etc.).
97 * ace/OS: Added UNICODE support for the ACE_OS::dl_open()
98 function, as well as the ACE_OS synchronization functions.
100 * ace/CORBA_Handler: Added Seth's changes for Orbix 2.0.
102 Sat Jun 1 13:30:55 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
104 * ace/Memory_Pool.cpp (remap): Fixed a bug in
105 ACE_MMAP_Memory_Pool::remap (). The test for whether or not the
106 addr falls within the range had a '!' (not) missing, that is, it
107 was failing when it should be succeeding and vice versa.
109 Sun Jun 9 00:01:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
111 * Released version 4.0.24 for testing.
113 * ace: Changed all uses of ACE_Guard<LOCK> m (lock_) to ACE_GUARD
114 (LOCK, lock_), which is a macro that is defined as follows:
116 ACE_Guard<MUTEX> ace_mon (LOCK); \
117 if (m.locked () == 0) return;
119 The reason we need this is (1) detect locking failures, rather
120 than have things fail silently and (2) to automatically detect
121 deadlock in the Reactor. In addition, I also added
122 ACE_GUARD_RETURN, which is similar to ACE_GUARD, except that it
123 returns a "failure" status when the lock is not acquired.
124 Thanks to Karlheinz for suggesting this.
126 * ace/Log_Msg: Added the new thr_state() accessors to Log_Msg.
128 * ace/Thread_Manager.cpp: factored out some common code by having
129 the public interfaces (like resume() and suspend()) utilize the
130 protected interfaces (like resume_thr() and suspend_thr()).
132 * ace/Thread_Manager.cpp: Added sanity checks for suspend(),
133 resume(), cancel(), etc. so that we don't blow up if someone
134 tries to perform an operation on an invalid thread id.
136 * ace/Thread_Manager: Added a suite of new methods for
137 (1) cooperatively "canceling" threads and (2) testing if threads
138 are cancelled (also added similar checks to test if threads are
139 suspended or resumed). The cooperative cancellation mechanism
140 is based on a design fleshed out with Detlef and Karlheinz.
141 It's essentially a compromise between the powerful mechanisms
142 available via POSIX pthreads vs. the totally lame mechanisms
145 Here's how it all works:
147 1. Added several new methods to ACE_Thread_Manager:
149 cancel(thr_id); -- cancels thr_id
150 cancel_all(); -- cancels all the threads in a Thread_Manager
151 cancel_grp(grp_id); -- cancels a group of threads in a Thread_Manager
152 testcancel(thr_id); -- returns "true" if thr_id has been cancelled
154 2. Updated ACE_Log_Msg to maintain the current state of a thread
155 in thread-specific-storage (TSS). Actually, it's more clever
156 than that since I really keep a *pointer* to the state of a
157 thread in TSS. This pointer actually points *back* to the
158 ACE_Thread_State field in the ACE_Thread_Manager! I use it
159 as a cache as follows:
161 ACE_Thread_Manager::testcancel (thread_t t_id)
163 ACE_MT (ACE_Thread_Mutex_Guard m (this->lock_));
165 // Try to get the cached value out of TSS to avoid lookup.
166 ACE_Thread_State *thr_state = ACE_LOG_MSG->thr_state ();
169 { // We need to init the cache.
170 int i = this->find (t_id);
171 if (i == -1) return -1;
172 // Update the TSS cache.
173 ACE_LOG_MSG->thr_state (thr_state = &this->thr_table_[i].thr_state_);
175 return *thr_state == ACE_THR_CANCELLED;
178 Note that this allows me to avoid searching the
179 Thread_Manager on every Thread_Manager::cancel() access
180 except the first one!
182 3. I've updated the examples/Threads/test_thread_manager.cpp
183 test file to exercise the new cooperative thread cancellation
184 scheme. It basically spawns a bunch of threads that go into
185 their own event loops doing
187 if (thr_mgr ()->testcancel (ACE_Thread::self ()) != 0)
190 every so often. Naturally, the main thread cancels them by saying
192 thr_mgr ()->cancel_grp (grp_id);
194 when it wants to inform them to shut down.
196 * ace/Thread_Manager: Moved the Thread_State enum from the
197 ACE_Thread_Descriptor class to OS.h and renamed it to be
198 ACE_Thread_State. This will make it easier to integrate the
199 state of a thread in thread-specific storage...
201 Sat Jun 8 13:35:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
203 * ace/OS.i (sema_post): revised the implementation of the POSIX
204 Pthreads semaphore implementation just a bit in order to make it
205 slightly more efficient (it now releases the mutex before
206 signaling the condition variable).
208 * ace/OS.i and config-aix.4.1.h: added a fix that separates the
209 decision about whether optlen is a pointer from the decision of
210 the type of optlen. This fixes a problem on AIX. Thanks to Bob
211 Olson <olson@mcs.anl.gov> for this fix.
213 * ace/Proactor.h: Fixed a small glitch that was causing some
214 compilers to break due to the fact that they can't grok fully
215 qualified destructor syntax in the class definition. Thanks to
216 Alfred Keller <kellera@pop.eunet.ch> for reporting this.
218 * ace/OS.h: Added some Win32 macros (e.g., GENERIC_READ) to the
219 UNIX side of the house in order to compile the Proactor on Win32
222 Fri Jun 7 19:36:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
224 * Added a new Bourne shell script called ACE-install.sh that will
225 automatically download and install on UNIX machines. Thanks to
226 Ajit Sagar <asagar@spdmail.spd.dsccc.com> for contributing this.
228 Thu Jun 6 00:37:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
230 * Released version 4.0.23 for testing.
232 * ace/Local_Tokens: Updated the *.cpp and *.i files to remove
233 warnings and generally improve the conformance to the ACE coding
236 * examples: Moved the Proactor directory into the Reactor
237 directory since the Proactor and Reactor are really two
238 implementations of the same basic pattern.
240 * ace/Memory_Pool.cpp: Fixed an inconsistency caused by not
241 updating __INLINE__ to __ACE_INLINE__. Thanks to Neil Cohen for
244 * ace: Added support for the Florida State PTHREADS package.
245 Thanks to Gary Salsbery <gsalsber@simsun.atsc.allied.com> and
246 Eric Beser <beser@simsun.atsc.allied.com> for helping with this.
248 * ace: Added support for the m88k OS. Thanks to Gary Salsbery
249 <gsalsber@simsun.atsc.allied.com> and Eric Beser
250 <beser@simsun.atsc.allied.com> for helping with this.
252 * ace/OS.h: Added a default value of NULL to the sigwait() OS
253 wrapper method to simplify the usecase in certain cases.
255 * ace/Memory_Pool.cpp (commit_backing_store): Fixed what is
256 hopefully the last typo related to the ACE_DEFAULT_BASE_ADDR
257 macro. Thanks to Neil B. Cohen <nbc@metsci.com> for reporting
260 Thu Jun 6 15:31:40 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
262 * ace/CORBA_Handler.h: This version of the CORBA_Handler works
263 with Orbix 2.0. Most of the changes involve the use of C++
264 Exception Handling (the removal of IT_X), and the location of
265 some CORBA system exception classes.
267 * ace/Event_Handler.h: Added handle_*_complete methods for the
268 Proactor. The Proactor now takes Event_Handlers and calls back
269 the **_complete methods when overlapped I/O operations have
272 * ace/Service_Config.h: Added static accessors for the Proactor to
273 the Service_Config object. Similar to the Reactor accessors,
274 applications can now use the Service_Config object as the global
275 access point to the Proactor event demultiplexor.
277 Wed Jun 5 22:40:28 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
279 * ace/OS.i (t_free): Added a check to avoid deleting a NULL ptr.
280 This was causing problems for the TLI_Acceptor. Thanks to Ajit
281 Sagar <asagar@spdmail.spd.dsccc.com> for reporting this.
283 * ace/Makefile: Changed things back so that both static and
284 dynamic libs are built by default... Thanks to Brad Brown
285 <bbrown@rdxsunhost.aud.alcatel.com> for pointing this out...
287 Sat Jun 1 13:49:51 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
289 * Released version 4.0.22 for testing.
291 * Added Tim Harrison's latest tests for Proactor.
293 Sat Jun 1 13:30:55 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
295 * ace/Memory_Pool.cpp (remap): Fixed a bug in
296 ACE_MMAP_Memory_Pool::remap (). The test for whether or not the
297 addr falls within the range had a '!' (not) missing, that is, it
298 was failing when it should be succeeding and vice versa.
300 Fri May 31 16:31:13 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
302 * Rereleased version 4.0.21 for testing.
304 * Copied over new versions of the Proactor -- there was a small
305 problem with the UNIX version that caused it not to compile...
307 Fri May 31 00:03:41 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
309 * examples/Proactor/test_proactor.cpp: Added a test program for
310 the Proactor. Check examples/Proactor/README for more details
311 on this test example.
313 * ace/Proactor.cpp: Added first pass at the Proactor for win32.
314 The Proactor is a Reactor-like abstraction that uses
315 asynchronous I/O, rather than synchronous I/O. On Windows NT we
316 implement the Proactor using overlapped I/O. We'll soon be
317 porting the Proactor to Solaris using POSIX 4.x aio_* API for
318 real-time programming.
320 Unfortunately, the Proactor has not yet been integrated with
321 Windows NT WaitForMultipleObjects since it appears that I/O
322 Completion ports are not "waitable" objects on Windows NT. Does
323 anyone know if this has been fixed in release 4.0?
325 Thu May 30 05:51:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
327 * ace/Synch.i: Reordered the definitions of several methods in
328 Synch.i to avoid warnings from G++. Thanks to Marco Sommerau
329 <sommerau@matisse.informatik.uni-stuttgart.de> for noticing
332 * ace/Log_Msg.cpp: There was a problem having to do with the order
333 in which static objects by G++. In particular, G++ was calling
334 the constructor of the lock_ mutex in Log_Msg.cpp *after* it was
335 being used for the first time. The right solution is to make
336 lock_ be a pointer and allocate it once in the instance()
337 method. Thanks to Marco Sommerau
338 <sommerau@matisse.informatik.uni-stuttgart.de> for finding this
341 * ace/TLI_Acceptor.cpp (close): Make sure to only close down the
342 TLI_Request_Queue if queue_ is non-NULL! Thanks to Ajit Sagar
343 <asagar@spdmail.spd.dsccc.com> for spotting this.
345 * ace: Changed all the enums in the various SysV wrappers from
346 things like CREATE and OPEN to ACE_CREATE and ACE_OPEN to avoid
347 name clashes with other systems. In addition, also changed
348 NONBLOCK to ACE_NOWAIT to avoid clashes with the existing
349 ACE_NONBLOCK macro! Thanks to Steve Warwick <sjw@aesthetic.com>
352 * ChangeLog: Changed all usages of the INLINE macro to ACE_INLINE.
353 This avoids name clashes with other systems. Thanks to
354 Chris Eich <Chris_Eich@optilink.optilink.dsccc.com> for
357 Mon May 27 13:03:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
359 * ace/Map_Manager.cpp (trybind): The function trybind() doesn't
360 return a value as it should. A return was missing from the last
361 line of the function. Thanks to Stuart Powell
362 <stuartp@in.ot.com.au> for finding this problem.
364 * ace/Acceptor.cpp (dump): The debug print referred to
365 "scheduling_strategy_" which doesn't exist in the relevant
366 class. Replacing it with "concurrency_strategy_" fixes the
367 problem. Thanks to Stuart Powell <stuartp@in.ot.com.au> for
368 finding this problem.
370 * ace/Mem_Map.i: Make sure to close down the file mapping
371 correctly when we upmap the view!
373 * ace/OS.h: Changed the default shared memory address from 16 M to
374 64 M in order to work around problems with AIX.
376 * ace/Memory_Pool: Moved and renamed the enums in
377 ACE_Shared_Memory_Pool so that they'd be in OS.h. This makes it
378 easier to remember to change them if they are incorrect. Thanks
379 to Lionel Mommeja <mommeja@vnet.ibm.com> for suggesting this.
381 * ace/Stream.cpp: Removed #if defined (ACE_HAS_THREADS)
383 * ace/OS.cpp (svc_run): Added a Win32 try/except block to
384 Spawn_Args::svc_run so that we catch all Win32 structured
385 exceptions in order to make sure that we clean up correctly when
388 Sun May 26 11:37:08 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
390 * ace/Local_Name_Space.cpp: Used the new Win32 exception
391 integration in order to ensure that the Name Server will
392 transparently work correctly when the backing store is extended
393 by other processes on the same machine.
395 * ace/Memory_Pool.cpp: Revised the ACE_MMAP_Memory_Pool to export
396 the mechanism for extending the virtual memory mapping. This
397 can now be called by other programs (e.g., in order to integrate
398 with Win32 Structure Exception Handling).
400 * ace/Memory_Pool.cpp: Changed the use of ACE_OS::lseek() to
401 ACE_OS::filesize() in order to determine the current offset when
402 we're remapping the address space.
404 Wed May 22 13:08:44 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
406 * ace/OS.h (ACE_DEFAULT_TIME_SERVER_STR): Added a new entry for
407 ACE_DEFAULT_TIME_SERVER_STR.
409 * ace/Malloc_T.cpp (advance): Fixed two small bugs. In
410 ACE_Malloc::try_bind(), if we have a match we need to set
411 pointer to node->pointer_ and not node->name_.
412 Ina ACE_Malloc_Iterator::advance(), the continue in the for loop
413 should be for strcmp != 0 instead of == 0.
415 Sun May 19 12:03:11 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
417 * Released version 4.0.20 for testing.
419 * ace/Service_Record.cpp (remove): Fixed a very mysterious bug
420 that was caused by deleteing an object and then trying to access
421 it's next_ pointer. This worked on UNIX, but fortunately the
422 MSVC++ compiler does special things to deleted memory and the
423 bug was revealed! At long last, MSVC++ does something right
426 * ace/Module.cpp: Revised the code a bit to use the ACE_SET_BITS
427 and ACE_CLR_BITS macros to improve readability.
429 * ace/SV_Semaphore_Complex.cpp (open): Fixed a race condition
430 where we weren't correctly checking for EIDRM. Thanks to
431 Michael Fortinsky <mike@vocaltec.com> for reporting this.
433 Sat May 18 10:49:04 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
435 * ace: Added a new ace.mak and ace.mdp file for Win32.
437 * ace/Service_Record.cpp: Rewrote some code to work around a bug
438 with MSVC++. This bug was causing problems since the
439 ACE_Shared_Object methods were getting called, rather than the
440 Test_Task methods used in the examples/ASX/CCM_App.cpp file.
441 Thanks to Tom Leith for pointing out this problem!
443 * ace/OS.h: Added a new #define for ACE_DEFAULT_SVC_CONF to deal
444 with differences between NT and UNIX pathnames.
446 * ace/Time_Value.h: Moved the definition of the INLINE macro from
447 OS.h to Time_Value.h so that it will be in scope for
448 Time_Value.i. Thanks to Neil Cohen for reporting this.
450 * examples/Reactor/Misc/signal_tester.cpp: There was a typo in
451 signal_test.cpp. It had mean to use handle_input() rather than
452 handle_output() to exercise the asynchronous signal handling
453 capabilities. This is fixed now.
455 * apps/Synch-Benchmarks/Benchmark.cpp (thr_id): Added a new #if
456 define (ACE_HAS_DCETHREADS) to make this work on AIX. Thanks to
457 Greg Wilson <gvw@cs.toronto.edu> for reporting this.
459 * ace/Local_Name_Space: Moved ACE_NS_String and ACE_NS_Internal
460 from the *.cpp file to the *.h file to work around a "feature"
461 of the AIX C++ compiler. Thanks to Greg Wilson
462 <gvw@cs.toronto.edu> for reporting this.
464 * ace/Reactor.h (ACE_Handler_Repository): Changed the type of
465 cur_size_ from size_t to ssize_t to avoid type mismatches.
467 * ace/Name_Request_Reply.cpp (decode): Fixed some inconsistencies
468 between signed and unsigned loop counters...
470 * ace/OS.h: Changed the typedef of pid_t on Win32 from
471 DWORD to long to be consistent with UNIX.
473 Thu May 16 18:49:14 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
475 * Released version 4.0.19 for testing.
477 * build/SunOS5.4/ace/ACE.cpp (ldfind): Fixed a bug in ldfind()
478 that caused a segfault if we didn't resolve the filename in the
481 * ace/Reactor and Timer_Queue: Changed the interface of cancel()
482 to include a const void **arg. If arg is non-NULL then it will
483 be set to point to the ``magic cookie'' argument passed in when
484 the Event_Handler was registered. This makes it possible to
485 free up the memory and avoid memory leaks.
487 * ace/Service_Record: Removed the #ifdefs that checked if
488 ACE_HAS_THREADS because we ought to be able to build all of this
489 stuff now that we've got the ACE_OS wrappers.
491 * ace/Svc_Conf.y: Removed the #ifdefs that checked if
492 ACE_HAS_THREADS because we ought to be able to build all of this
493 stuff now that we've got the ACE_OS wrappers.
495 * ace/OS.h (ACE_DEFAULT_BACKING_STORE): Made a different
496 ACE_DEFAULT_BACKING_STORE for NT and for UNIX to handle the
497 differences in directory separator characters...
499 Wed May 15 18:45:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
501 * examples/ASX/CCM_App/CCM_App.cpp: Fixed up the test application
502 so that it should support dynamic linking on Win32. Thanks to
503 Tom Leith for reporting this.
505 * ace: Added the ACE_Export macro to class ACE and the various
506 "helper" classes related to ACE_Malloc in order to have this
507 work properly when use with ACE_Malloc outside of the ACE DLL.
509 * ace/Svc_Conf.l: Added support for '\' and ':' in the regular
510 expression for an ACE pathname in order to support Win32
511 filenames (e.g., "C:\foobar\"). Thanks to Tom Leith
512 <trl@icon-stl.net> for reporting this.
514 * ace/Malloc_T.cpp (ACE_Allocator_Adapter): Moved the constructor
515 from the *.i file to the *.cpp file and added a new constructor
516 that takes both a pool_name *and* a lock_name. This is
517 necessary because the ACE Malloc now has this API, as well.
519 * examples/Threads/test_barrier.cpp (main): Fixed a bug that was
520 caused by the main() thread exiting before all the other worker
521 threads had finished "waiting" on their Barrier. The fix is to
522 use ACE_Thread_Manager to control the thread exits...
524 Mon May 13 00:03:09 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
526 * examples/Connection/non_blocking/CPP-acceptor.cpp: Modified the
527 implementation of the Svc_Handler::open() method so that it will
528 truly behave as an iterative server (as advertised...).
529 Currently, it behaves as a half-iterative server (i.e., the
530 Oneshot_Acceptor is iterative, but the Svc_Handler is
531 "concurrently"), which is causing problems because we're wiping
532 out the values of Svc_Handler each time through the main event
533 loop. Thanks to Gerolf Wendland for noticing this problem.
535 * ace/Log_Msg: Added an alternative logging mechanism that makes
536 it possible to integrate variable argument lists from other
537 logging mechanisms into the ACE mechanism. Thanks to Chris
538 Lahey for proposing this.
540 * ace/Synch.h: Moved ACE_Process_Mutex so that it appears *after*
541 ACE_Mutex (since it depends on ACE_Mutex). Thanks to Dieter
542 Quehl for finding this.
544 * Released version 4.0.18 for testing.
546 * ace/Name_Space.cpp: Added the ACE_BUILD_DLL macro at the
547 beginning of this file so that it will build as a DLL on NT
550 * ace/Name_Space.cpp: Added a default constructor for
551 ACE_Name_Binding so that it will compile when used as a template
552 argument for ACE_Unbounded_Set.
554 Sun May 12 14:23:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
556 * ace/Map_Manager: Totally reworked the Map Manager so that it can
557 be more flexible with respect to where the allocator comes from.
558 This is necessary for certain parts of ACE (e.g.,
559 Local_Name_Space) that must be very careful about which
560 allocator is used to manage memory.
562 * ace/Synch: Moved ACE_Process_Mutex and ACE_RW_Process_Mutex
563 *outside* of the ACE_HAS_THREADS #ifdef since these are now
564 always defined on all platforms (because the Process_Mutex stuff
565 uses SV Semaphores, which are portable even if we don't have
568 * ace/Naming_Context.cpp (parse_args): Removed an unnecessary call
569 to strdup(). This was detected by Purify!
571 Sun May 12 14:26:20 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
573 * ace/Local_Name_Space.cpp (shared_bind): Fixed a small bug. In
574 computing type_len in shared_bind(), we needed to add 1 to
575 account for the NUL character.
577 * ace/Local_Name_Space.cpp: (list_types): Fixed some potential
578 memory leaks. In list_types() as well as list_type_entries()
579 calling pattern.char_rep() was allocating memory which was never
580 getting deleted. Similarly, in list_names() and list_values,
581 call to char_rep was also allocating memory that was not getting
584 Sat May 11 16:19:51 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
586 * ace/Log_Msg.cpp (local_host): added a static member to
587 ACE_Log_Msg that maintains the local host name. Now, instead of
588 always displaying "<local host>", we can insert the actual local
589 name into the object and then it will be automatically printed
590 when VERBOSE mode is enabled. Thanks to Chris Lahey for
593 * ace/Local_Name_Space.cpp: Used the new ACE_Name_Binding class to
594 simplify the implementation of all the list_* methods in
595 ACE_Local_Name_Space.
597 * ace/Name_Space.cpp: Made a number of changes to the
598 ACE_Name_Binding class in order to make it work more efficiently
599 and concisely (e.g., reduce the amount of copying and eliminate
600 the need for converting the type field back and forth to/from
603 * examples/Service_Configurator/IPC-tests/server/Handle_L_Dgram.cpp:
604 Fixed a typo where #if !defined (ACE_LACKS_UNIX_DOMAIN_SOCKETS)
605 was *before* the #include of the header file that defines this
606 macro! Thanks to Nigel for pointing this out, as well.
608 * ace: Added a number of fixes to make ACE compile on SCO UNIX
609 3.2.4 using gcc 2.7.2. Thanks to Nigel Lowe <nigel@nt.com> for
612 * netsvcs/lib/Name_Handler.cpp: operation_ needs to be declared as
613 just LIST_OP and not ACE_Name_Handler::LIST_OP. For some strange
614 reason NT complains otherwise. Thanks to Prashant for finding
617 Fri May 10 01:09:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
619 * ace: Added new versions of ace.mak and ace.mdp to fix a couple
622 * ace/Malloc_T.cpp (ACE_Malloc): Added a new constructor that
623 takes both the pool_name and the lock_name explicitly. This is
624 more flexible. Thanks to Ramesh Nagabushnam <rcn@nynexst.com>
627 * ace/Malloc_T: Modified the constructor of ACE_Malloc so that by
628 default the name of the memory pool (which is also used as the
629 name of the lock...) is ACE_DEFAULT_MUTEX.
631 * Released version 4.0.17 for testing.
633 * ace/Connector.cpp (create_AST): Must reset errno = EWOULDBLOCK
634 to avoid making caller's think that something else has gone
635 awry... Thanks to Steve Warwick <sjw@aesthetic.com> for chasing
638 * ace/ACE.cpp (handle_timed_complete): If you issue a non-blocking
639 connect on a socket, you will have back a failure with errno =
640 EINPROGRESS. Then, if for some reason, the connection could not
641 be established, the select (which you have to issue to know
642 about the completion of connection) will return you the fd set
643 both in the read mask and in the write mask (infact select
644 returns 2 in this case). The behaviour above affects the method
645 ACE::handle_time_complete, so I changed the last part of the
646 above method, this way:
653 else if (rd_handles.is_set(h))
656 // The following recv() won't block provided that the
657 // ACE_NONBLOCK flag has not been turned off .
659 if (ACE::recv (h, &dummy, 1, MSG_PEEK) <= 0)
660 return ACE_INVALID_HANDLE;
663 // 1. The HANDLE is ready for writing or 2. recv() returned that
664 // there are data to be read thus the connection was successfully
668 That is, I reversed the sense of the tests so that the
669 rd_handles() is checked first for failure along with the recv().
670 Thanks to Antonio Tortorici <antonio@rh0011.roma.tlsoft.it> for
673 * examples/Threads/test_thread_manager.cpp (main): Changed argv[1]
674 to argv[2]. Thanks to Andres Kruse <kruse@cern.ch> for finding
677 * examples/Connection/non-blocking: Fixed some nasty bugs that
678 caused the non-blocking connector and acceptor test programs to
679 crash and burn. Thanks to Steve Warwick and Gerolf Wendland for
680 finding this problem.
682 * ace/SV_Semaphore_Simple.cpp (open): Check for
683 ACE_INVALID_SEM_KEY and return -1 in this case.
685 * ace/Synch.h: Removed the default value of 0 for the name of the
686 ACE_Process_Mutex and the ACE_RW_Process_Mutex and replaced it
687 with a new macro called ACE_DEFAULT_MUTEX. Using 0 didn't make
688 any sense on either NT or UNIX because process-wide Mutexes
691 * ace/SV_Semaphore_Simple.cpp (name_2_key): Added a check for name
692 == 0 and bail out of that's the case rather than crash!
694 * ace/Reactor.cpp (wait_for_multiple_events): In the Reactor's
695 wait_for_multiple_events method, the do {} while () around the
696 select/poll system call is trying to wait until some "good"
697 event occurs, with handle_error() taking care of unexpected
698 problems. In the case of a bad file descriptor, however,
699 handle_error() returns 0. This was exiting the loop because the
700 loop exit condition was:
702 do { /* ... */ } while (nfound == -1 && this->handle_error () > 0);
704 which eventually causes ACE_Service_Config::run_event_loop() to
705 exit. Since the offending file descriptor is handled by
706 handle_error(), the loop should continue. Therefore, I've
707 changed the while to read:
709 while (nfound == -1 && this->handle_error () >= 0);
711 Thanks to Eric C. Newton <ecn@clark.net> for providing this fix.
713 * ace/INET_Addr.cpp (string_to_addr): Changed the order of the
714 parameters so that the form is now "ip-address:port". This
715 should (finally) be consistent for both string_to_addr() and
718 * ace/Log_Msg: Changed the char * parameter of the log() method to
719 const char *. Thanks to Chris for suggesting this!
721 * ace/Synch_T.cpp: Moved the #if defined (ACE_HAS_THREADS) down to
722 the right part of the file... Thanks to Alex Karev
723 <akg@na47sun05.cern.ch> for finding this.
725 * ace/Malloc.h: Added a very important #else... Thanks to Alex
726 Karev <akg@na47sun05.cern.ch> for finding this.
728 * ace/Signal.i (ACE_Sig_Guard): Changed the sense of the #ifdef
729 tests in the ACE_Sig_Guard constructor and destructor from #if
730 !defined (ACE_MT_SAFE) to #if 0 // !defined (ACE_MT_SAFE) in
731 order to get the right semantics for signals (which should be
732 blocked "process wide").
734 * ace/Synch_T.h: put the frigging copy constructor in the public
735 section of ACE_Atomic_Op because it was causing trouble for
738 Mon May 6 00:11:37 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
740 * Released version 4.0.16 for testing.
742 * ace/Log_Msg.cpp: Was defining ACE_Recursive_Thread_Mutex in the
743 wrong place (i.e., outside of the #if defined (ACE_MT_SAFE).
744 This was screwing up HP/UX. Thanks to Neil Cohen for pointing
747 * Incorported new versions of ace.mdp and ace.mak for Win32.
749 Sun May 5 16:18:43 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
751 * netsvcs/lib/Server_Logging_Handler.cpp (handle_input): Fixed a
752 bug whereby handle_input() was returning the number of bytes
753 read by handle_logging_record() rather than 0 or -1. This was
754 causing problems for the logger since it was hanging in read()!
756 * ace/Synch_T.cpp: Fixed some minor problems with the use of const
757 in ACE_Atomic_Op that was causing warnings.
759 Sat May 4 16:31:46 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
761 * ace/SOCK_Dgram_Bcast: Reimplemented most of the ACE socket
762 broadcast mechanism to (1) clean up the code and have it use
763 other parts of ACE and (2) make it work for Windows NT. Thanks
764 to Steve Weismuller <spweismu@rsoc.rockwell.com> for the basic
767 * ace/INET_Addr: Added a new method to set the port number without
768 changing the host address. This is useful in the broadcast
771 * ace/Log_Record.cpp (print): Changed the hack of replacing the
772 newline with a call to flush() instead. This seems like a
773 better fix. Thanks to Alex for suggesting it.
775 * ace/Log_Msg.cpp (log): Moved the order of the print operations
776 so that the ostream one goes last. This avoids a nasty problem
777 due to the fact that it replaces the newline (if any). Thanks
778 to Alex for pointing this out too!
780 * ace/Log_Msg.cpp (log): Don't auto-increment bp at the end of
781 the log() method, instead just terminate it:
783 *bp = '\0'; // Terminate bp.
785 This makes the length computation correct... Thanks to the
786 ever-vigilent Alexandre Karev <akg@na47sun05.cern.ch> for
789 * examples/Shared_Malloc/test_malloc.cpp: Fixed a bug where a void
790 * that was really an int was being cast incorrectly. Thanks to
791 Raj for pointing this out.
793 Sat May 4 12:51:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
795 * ace/Reactor.cpp (find): Modified the ACE_Handler_Repository so
796 that it doesn't crash when it isn't initialized properly.
797 Thanks to Darrin for pointing this out.
799 * ace/Synch_T.cpp (wait): Changed the call wait(ACE_Time_Value *)
800 to wait(const ACE_Time_Value *) since wait() will not change the
803 * ace/Thread_Manager.cpp (wait): Changed the call
804 wait(ACE_Time_Value *) to wait(const ACE_Time_Value *) since
805 wait() will not change the time value object. Thanks to Chris
806 Lahey for suggesting this.
808 * ace/Synch.h: Added a (const char * = 0) argument to
809 ACE_Null_Mutex so that it would work correctly with
810 ACE_Thread_Mutex and ACE_Process_Mutex...
812 Fri May 3 17:26:07 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
814 * netsvcs/lib/Name_Handler.cpp (lists_entries): Used '_' with
815 name/value/type in ACE_Name_Binding to be consistent with the
818 Fri May 3 02:24:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
820 * ace/Synch: Updated ACE_Process_Mutex to use SV_Semaphore_Complex
821 as the UNIX implementation. This seems like the only portable
822 and robust way to get the same semantics on UNIX and on NT!
824 * ace/Malloc_T: It turned out there was a subtle bug with
825 ACE_Malloc on NT when used with the ACE_Process_Mutex
826 concurrency policy. On NT, we were storing the *HANDLE* of a
827 mutex in shared memory. Naturally, this didn't make any sense
828 since each HANDLE is relative to only one process!!! (duh ;-)).
829 This worked fine on UNIX because mutex_t's created with
830 USYNC_PROC mode can be stored in shared memory and accessed
833 We fixed this by changing ACE_Malloc so that the
834 LOCK is allocated in non-shared memory. We then
835 fixed ACE_Process_Mutex so that on UNIX it is
836 implemented with SV_Semaphore_Complex. This is
837 (a) portable and (b) it gives the right semantics.
839 As a result, we were able to totally eliminate the storage of
840 the lock in shared memory. Therefore, it doesn't matter of the
841 host crashes anymore! In addition, we were able to totally
842 remove the ugly "init_finished" lock that was previously stored
843 in shared memory by ACE_MMAP_Memory_Pool. This is *much*
846 Thanks to Karlheinz et al for pointing this problem out in the
849 * ace: Removed a stray file called Svc_Conf_tokens.h. This was
850 causing problems on Win32 due to name clashes... Thanks to Adam
851 Miller <adam@royalblueny.com> for pointing this out.
853 * ace/SString.cpp (strstr): there were some for (size_t j; ...) {}
854 if (j == x) constructs in the code that have as of recently
855 become non-standard. Thanks to Darrin <darrin@jeeves.net>
858 Tue Apr 30 00:18:46 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
860 * ace/Thread.i (self): Commented out the ACE_Trace call in the
861 ACE_Thread::self() methods to avoid infinite recursion problems
864 * ace/Token.cpp (ACE_Token): Commented out the ACE_Trace call in
865 the constructor of ACE_Token to avoid infinite recursion
868 * ace/Log_Msg.cpp (instance): Moved the definition of the static
869 variable keylock_ into the static instance() method in order to
870 avoid "order of initialization" problems on Win32. Thanks
871 to Tim for figuring this out!
873 Sun Apr 28 17:07:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
875 * netsvcs: Rearranged and renamed the subdirectories so that they
876 are now called ./netsvcs/{lib,clients,servers}. In addition,
877 moved the Logger, Naming, and Tokens examples from ./examples
878 into the ./netsvcs/clients directory in order to make the
879 relationships more clear.
881 Sat Apr 27 14:23:43 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
883 * ace/Name_Space.cpp (operator ==): Created a new file
884 Name_Space.cpp and moved the definitions for
885 ACE_Name_Binding::operator== and ~ACE_Name_Space in it. Also
886 modified code to use '_' at the end of name/value/type in
889 Sat Apr 27 16:00:03 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
891 * ace/INET_Addr.i (get_host_addr): There was an error where
892 sprintf(s,"%d:%s" ...) should have been %s:%d. Thanks to
893 Raj <raj@itd.ssb.com> for pointing this out.
895 Mon Apr 22 01:24:45 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
897 * ace/Dump_T.h: #included "ace/Dump.h" so that this file will
898 compile on HP/UX. Thanks to Neil Cohen for reporting this
901 * Released version 4.0.15 for testing.
903 * ace/Synch_T: Added the appropriate "const" qualifiers to certain
904 operators in ACE_Atomic_Op.
906 Sun Apr 21 12:54:18 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
908 * ace: Fixed a problem that Dieter was having with the Name Server
909 when toggling between Naming_Contexts. Basically, what I've
912 1. Moved the unmap() call into the ACE_Mem_Map::close() method
913 (this ensures that the region is correctly unmapped when the
916 2. I've removed the call to this->allocator_->remove () within
917 ~ACE_Local_Name_Space. This ensures that we don't remove the
920 * ace/Mem_Map.cpp: Modified the ACE_Mem_Map::remove method to call
921 ACE_Mem_Map::close() in order to share code.
923 * ace/Mem_Map.cpp: Modified the ACE_Mem_Map::close() method so
924 that it unmaps the mapped region before closing down the backing
925 store. This prevents "dangling mapping."
927 * ace/Local_Name_Space.cpp (ACE_Local_Name_Space): Initialized all
928 the pointers to NULL.
930 * ace/Synch_T.cpp (ACE_Atomic_Op): Enhanced the Atomic_Op
931 implementation by adding an assignment operator and disallowing
932 the copy constructor (forcing objects of ACE_Atomic_Op to be
933 passed by reference).
935 * examples/Naming/Client/Client_Test: Reorganized the code for
936 Client_Test so that it will run correctly as a Win32 netsvc
937 (e.g., added the ACE_Svc_Export macro).
939 Sun Apr 21 20:23:40 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
941 * ace/Naming_Context.cpp (close): Added a new method to
942 Naming_Context called close() that deletes the instance of
945 * ace/Local_Name_Space.cpp (ACE_Local_Name_Space): Added stuff to
946 the destructor of Local_Name_Space so that it calls remove on
947 the allocator_ to ensure we unmap the file. Also, we delete the
950 * examples/Naming/Client/Client_Test.cpp (set_proc_local): Changed
951 set_proc_local (), set_node_local() and set_host() so that
952 before we change name space, we do a close() on
953 Naming_Context. The close ensures that we unmap the file as well
954 as delete the instance of the name space.
956 Sat Apr 20 12:39:20 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
958 * ace: Removed the Name_Options.* files and merged the
959 ACE_Name_Options class into Naming_Context.*. This simplifies
960 some order of include problems...
962 * ace/Naming_Context.cpp (init): Switched the code so that rather
963 than always opening with ACE_Naming_Context::PROC_LOCAL, we use
964 ACE_Name_Options::context(), which can be overridden by using
965 the new -c command-line option (e.g., -c NODE_LOCAL). Thanks to
966 Dieter for suggesting this.
968 * ace/OS.i: Modified the Win32 implementation of all the
969 ACE_OS::flock_*lock() methods so that they'd have the same
970 behavior as the UNIX ones with respect to a length of 0 meaning
971 "lock the entire length of the file." This works, of course, by
972 having each method check if len == 0, and if so, calling
973 GetFileSize() to set the size of the file.
975 * ace/Synch.h: Changed the default len value for all the
976 File_Lock::*acquire* methods to 1 rather than 0 to work around a
977 problem with Win32. Thanks to Detlef for reporting this.
979 * ace/ACE.cpp (ldfind): Added a strdup() of the LD_SEARCH_PATH
980 returned by getenv() so that we don't overwrite the environment
981 variable by using strtok(). Thanks very much to Prashant for
984 Thu Apr 18 22:13:43 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
986 * examples/Naming/Client/Client_Test.cpp (list_value_entries):
987 Added check in list_name_entries and list_value_entries to see
988 if type actually exists before trying to print it out.
990 Wed Apr 17 16:40:42 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
992 * Released version 4.0.14 for testing.
994 * Added Tim Harrison's new instructions for building and using ACE
995 as a DLL and SLL on Win32.
997 * ace/Svc_Conf.h: Due to the new changes to the yacc code, I had
998 to move the definition of YYSTYPE into the Svc_Conf.h file
999 rather than have it in the Svc_Conf.y file. This solves a
1000 variety of multiple-inclusion problems...
1002 * ace: Modified all the yacc token symbols so that they will be
1003 prefixed with ACE_. This avoids namespace pollution problems.
1005 * Added the ACE_STATIC_SVC* macro support to a number of files so
1006 that the static versions of all the ACE services will be
1007 registered with the ACE Service Repository correctly. Thanks to
1008 Jesper for pointing this out!
1010 * ace/OS.h: the first occurence of
1012 typedef thread_t tid_t;
1014 in the OS.h file should read
1016 typedef pthread_t tid_t;
1018 Thanks to Jan Rychter <jwr@icm.edu.pl> for reporting this.
1020 * ace/Read_Buffer.cpp: Fixed rec_read() so that it will fail
1021 correctly when new fails!
1023 Wed Apr 17 19:05:42 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
1025 * netsvcs/lib/Name_Handler.cpp (type_request): Here is a brief
1026 description of the changes made to ACE_Name_Handler to simplify
1027 the dispatch method and make it more elegant:
1029 1) I created a table called op_table_. It contains pointers to
1030 member functions of ACE_Name_Handler. This table can be
1031 indexed using the msg_type. However, I went one step further
1032 to have all the list methods be grouped under two
1033 methods. That is, requests for list_names, list_values, and
1034 list_types are handled by one method called lists() and
1035 similarly, requests for list_name_entries,
1036 list_value_entries, and list_type_entries are handled by
1037 another method called lists_entries(). A MASK is used to have
1038 the op_table_ index to the same method for these requests.
1040 2) I also created another table called list_table_. This is
1041 primarily used by lists() to keep track of a couple of things:
1042 + pointers to member functions of Name_Handler that
1043 handle the actual request.
1044 + pointers to member functions of Name_Handler that act
1045 as factories to create the appropriate request to
1047 + description of the message type.
1049 A different MASK is used to index into the list_table_ to
1050 invoke the appropriate method or get the appropriate description.
1052 3) Within the method lists_entries(), I once again make use of
1053 the pointers to member functions technique. This time,
1054 however, I use pointers to member functions of Naming_Context
1055 which I assign in the switch statement.
1057 Tue Apr 16 13:03:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1059 * Released version 4.0.13 for testing.
1061 * ace/INET_Addr.i: moved the get_port_number routine up to the top
1062 of the file so it gets defined before it is used. Linux did not
1063 like it where it was... Thanks to Neil Cohen for reporting
1066 * ace: Split the Dump.* files into Dump_T.* files. This is
1067 necessary to support the template policies of various C++
1070 * ace/Malloc_T.cpp (dump): Fixed an erroneous use of -> since
1071 guard_ is a non-pointer... Thanks to Neil Cohen for reporting
1074 * ace/Log_Record.cpp (print): Finally figured out how to do
1075 extensible ostream logging so that it will seamlessly work with
1076 ACE_Log_Msg. This required one change to ACE_Log_Record,
1077 however. In Log_Record.cpp:
1079 In ACE_Log_Record::print(char *, int, ostream, size_t len), added
1081 char *t = this->msg_data_[len - 1];
1086 s << this->msg_data_ << endl;
1088 This is required because the virtual function overflow() in
1089 streambuf does not get called until endl is called to flush the
1090 buffer. Note that (at least on AIX), '\n' is treated separately
1091 from endl and will not cause the overflow() function to be
1092 called. Thanks to Chris Lahey for this idea.
1094 * ace/OS: Added a new wrapper for strrchr().
1096 * ace/Token_Collection.cpp (renew): Added a cast of
1097 (const char *) to token_name so that the conversion operator
1098 will get called correctly. Thanks to Gonzalo Diethelm
1099 <gonzo@ing.puc.cl> for reporting this.
1101 Tue Apr 16 13:29:32 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
1103 * ace/Name_Request_Reply.cpp (decode): Fixed a small bug in encode()
1104 and decode() of ACE_Name_Request. When doing ntohs and htons, we
1105 only ought to do it for the name and value part of data. type
1106 needed to be left alone since it is not a short.
1108 Mon Apr 15 02:31:00 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1110 * include/makeinclude/platform_hpux_orbix.GNU: Added
1111 David.L.Sames.1@gsfc.nasa.gov (David Sames) config*.h file and
1112 platform_*.GNU file for HP/UX 9.x using Orbix.
1114 * ace/OS.i: Fixed all uses of pthread_cleanup_{pop,push} so that
1115 they will work correctly if (1) the OS implements the as macros
1116 and (2) if these macros must obey strict nesting rules...
1117 Thanks to Reginald S. Perry <perry@zso.dec.com> for pointing out
1118 how to do this effectively.
1120 * ace/Thread_Manager.h: Fixed a typo where the typedef
1122 typedef (ACE_Thread_Manager::*THR_FUNC)(int, int);
1124 was lacking a return value. Thanks to Reginald S. Perry
1125 <perry@zso.dec.com> for reporting this.
1127 * netsvcs/bin/main.cpp (main): Fixed the main program so that it
1128 passes the options correctly for the statically linked service
1129 invocations. Thanks to Jesper for reporting this.
1131 * examples/Naming/Client/Client_Test: Updated the client test
1132 program so that it will work on Window NT, where it's not valid
1133 to select() on non-socket HANDLEs (ugh). Thanks to Jesper for
1134 pointing this out...
1136 * Released version 4.0.11 for testing.
1138 Mon Apr 15 00:20:02 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
1140 * ace/Local_Name_Space.cpp (strstr): Fixed ACE_NS_String::strstr
1141 to function properly. It was assuming that length of the pattern
1142 as well as the string was in units of ACE_USHORT16 when in
1143 reality the length is number of bytes.
1145 * ace/Local_Name_Space.cpp (value_): Modified ACE_NS_Internal so
1146 that instead of taking an ACE_NS_String for type, it now take a
1147 char*. It therefore keeps type around as a char*. This should
1148 help solve some problems we were encountering with byte ordering
1149 when sending data between NT machines and Sun.
1151 * netsvcs/lib/Name_Handler.cpp: Cleaned up lists_entries by making
1152 use of pointer to member functions. A single call to the
1153 appropriate list method takes care of everything.
1155 Sun Apr 14 16:21:32 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1157 * ace/INET_Addr.i (addr_to_string): Swapped the order that the
1158 hostname and port number are printed to make this consistent
1159 with the way that ACE_INET_Addr::string_to_addr works. Thanks
1160 to Ashish Singhai <singhai@delirius.cs.uiuc.edu> for pointing
1163 * ace/TLI_Acceptor: Changed the methods to take an ACE_Addr rather
1164 than an ACE_INET_Addr. This allows other address families (such
1165 as DECnet) to be used with the TLI wrappers. Thanks to Ajit
1166 Sagar <asagar@spdmail.spd.dsccc.com> for suggesting this.
1168 * ace/Local_Name_Space.cpp (list_types): Removed the use of
1169 regular expression matching for the name and value types of the
1170 name server and replaced these with substring matching instead.
1171 This is necessary since we're working with wide characters here,
1172 and it doesn't make any sense to perform regular expressions on
1175 * ace/Local_Name_Space.cpp: Added a new strstr() method on all the
1176 ACE_NS_String class so that we can compare substrings for wide
1179 * ace/SString: Added a new strstr() method on all the
1180 ACE_[WSC]String classes so that we can compare substrings,
1181 even for wide character types!
1183 * apps/gperf: Incorporated the GNU gperf program from the FSF.
1184 We're going to make some improvements to this for a subsequent
1187 Sun Apr 14 15:30:05 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
1189 * ace/Name_Request_Reply.h: Changed the enum values for the
1190 Constants such as BIND, REBIND, etc. The new values allow us to
1191 do bitwise operations using MASK to be able to dispatch the same
1192 method for all the list operations. For use case of this, please
1193 see Name_Handler::dispatch().
1195 * netsvcs/lib/Name_Handler.cpp (dispatch): Completely changed
1196 dispatch() so that now it uses a table of pointer to member
1197 functions to call the appropriate method when a request
1198 arrives. In addition, requests for LIST_NAMES, LIST_VALUES, and
1199 LIST_ENTRIES are now handled by one method called lists() in which
1200 I factored out a lot of common code. Similarly, requests for
1201 LIST_NAME_ENTRIES, LIST_VALUE_ENTRIES, and LIST_TYPE_ENTRIES are
1202 handled by lists_entries(). This has really cleaned up the code.
1204 Sat Apr 13 15:26:51 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
1206 * ace/Name_Request_Reply.cpp: Made changes so that all
1207 byte-ordering computations take place in encode and decode
1208 methods of ACE_Name_Request_Reply and ACE_Name_Reply
1209 only. Previously some of these computations were taking place in
1210 Get/Set methods such as name_len() which was highly error prone.
1211 (init): Added new methods called init() to both ACE_Name_Request
1212 and ACE_Name_Reply that initialize length to size of transfer_. This
1213 is needed since the length gets set only once in the constructor
1214 and after that each call to encode() switches the byte ordering
1217 Sat Apr 13 11:44:16 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1219 * Released version 4.0.10 for testing.
1221 * ace: Removed the ACE_HAS_THREAD_T macro from various places.
1222 This was unnecessary given the new scheme for dealing with
1225 * ace/config-linux-pthread.h: Fixed a typo that was preventing
1226 compilation from working. Thanks to Jan Rychter
1227 <jwr@icm.edu.pl> for finding this.
1229 Fri Apr 12 13:17:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1231 * apps/Gateway/Gateway: The gateway application appears to
1234 * ace/OS.cpp (thr_create): Based on conversations with Chris
1235 Lahey, modified the pthreads ACE_OS::thr_create implementation
1236 so that it doesn't try to assign the hthread_t thr_handle since
1237 this is meaningless in pthreads...
1239 * apps/Gateway/Gateway/Gateway.cpp: Fixed a typo that was causing
1240 the system to go into an infinite loop when the config file was
1243 * apps/Gateway/Gateway/Gateway.cpp: I was forgetting to set the
1244 line_number to 0 before calling read_entry()...
1246 * ace/Parse_Node.cpp: Fixed a dumb error that arose because I
1247 forgot that you can't call dlerror() twice and get the same
1248 result (it returns NULL the second time). As usual, RTFM.
1250 * ace: Removed ACE_HAS_TLI from all the SunOS 4.x config*.h files
1251 and platform_*.GNU files. There are just too many bugs with TLI
1252 on SunOS 4.x to support it by default...
1254 * examples: Made some minor fixes to make the examples all compile
1257 * apps/Gateway/Gateway/Gateway: Reimplemented the Gateway
1258 application as to be an ACE network service. This should make
1259 life much easier on platforms with broken C++ templates...
1261 * apps/Gateway/Gateway: Revised the Config_Parser.* files so that
1262 templates would be split from the non-templates. This avoids
1263 bugs with some C++ compilers...
1265 * ChangeLog: added the ACE_TEMPLATES_REQUIRE_SPECIALIZATION flag
1266 to the config-linux-pthreads.h file. Thanks to
1267 Jean-Francois.Ripouteau@netsurf.org for reporting this, and also
1268 for archiving the ACE mailing list.
1270 Thu Apr 11 01:37:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1272 * Released version 4.0.9 for testing.
1274 * ace: regenerated all the manual pages and html pages.
1276 * Built ACE successfully on SGI IRIX 5.3 using GNU G++ 2.7.2.
1278 * ace/Thread_Manager: renamed the descriptor() accessor methods to
1279 hthread_descriptor() and thread_descriptor() to avoid
1280 ambiguities due to the fact that hthread_t and thread_t can now
1283 * ace/Thread_Manager: revised the hthread_t so that it is always
1284 large enough to hold valid thread ids.
1286 * ace: Moved the config-osf1.h file to be named config-osf1-3.2.h
1287 in anticipation of OSF/1 4.0...
1289 * ace: Changed all occurrences of wchar_t to ACE_USHORT16, which
1290 is a more portable way of representing wchar_t's so that we can
1291 pass them across the network... Unfortunately, wchar_t tends to
1292 be different sizes on different machines, so we can't use the
1295 * ace: Added many, many small changes to get ACE to compile on
1296 OSF/1 3.2D using DEC C++ 5.3. Thanks to Tom Marrs
1297 <0002104588@mcimail.com> for slogging through all of this stuff!
1299 * ace/Thread_Manager.h: Fixed a stupid oversight where I forgot to
1300 add a -1 to the trailing argument of spawn*. Thanks to Neil
1301 Cohen for spotting this.
1303 * ace: Added a new ACE config file for AIX 3.2.5 courtesy of Bob
1304 Olson <olson@mcs.anl.gov>. In addition, I changed the name of the
1305 config-aix.h file to be config-aix-4.1.x.h and called the new
1306 file config-aix-3.2.5.h.
1308 * apps/Synch-Benchmarks/Benchmark.cpp: Added template
1309 specializations for ACE_TSS and ACE_Atomic_Op. Thanks to Matt
1310 Stevens for pointing out the need for this.
1312 * ace/CORBA_Handler: Added a number of fixes to get the ACE
1313 CORBA_Handler to compile on Win32 with Orbix 2.0. Thanks to
1314 Rich Ryan <rryan@mseng.kla.com> for these fixes.
1316 * ace/OS.cpp (thr_create): Fixed a small bug in the pthreads
1317 thr_create() code by dereferencing p_thr before casting it
1318 to hthread_t and assigning it to *thr_handle.
1320 * ace/OS.i: Backed out the previous changes of pthread_cleanup*.
1321 It turns out that on SunOS 5.5 these macros force a certain
1322 style of programming this is hard to integrate with the existing
1323 implementations of other ACE wrapper methods. Fortunately, none
1324 of this affects existing ACE code since we just use the default
1325 solaris threads API in this case...
1327 * ace/OS.i: Modified the order of #ifdefs in various ACE_OS::thr_*
1328 methods to take advantage of the pthreads features on Solaris
1331 * ace: Removed the last few typos that prevented ACE from building
1332 on SunOS 4.x with G++...
1334 * ace/Thread_Manager: Changed spawn() and spawn_n() so that
1335 they optionally take a group parameter and automatically add
1336 this to an existing thread group. That way we don't need to
1337 spawn the thread(s) and then reassign them after the fact.
1338 The new API automatically assigns the thread(s) to the group
1339 you specify. Thanks to Chris Lahey for this idea.
1341 * ace: Fully integrated POSIX pthreads into the ACE build for
1344 * netsvcs/lib/Server_Logging_Handler.cpp: Rearranged the Server
1345 Logging files so that things will compile and link correctly
1346 using stock GNU G++.
1348 * ace/Log_Msg.cpp (ACE_Log_Msg): Forgot to initialize the ostream
1349 * to 0. This was causing problems for Win32...
1351 * ace: *Finally* got the static and dynamic ACE libraries to
1352 compile on SunOS 4.x using stock G++!
1354 * ace/Synch_T.h: Added a new macro called ACE_SYNCH that will
1355 be ACE_NULL_SYNCH if !ACE_HAS_THREADS and ACE_MT_SYNCH if
1358 * ace/Service_Record.cpp: Changed this to use ACE_SYNCH. This
1359 will fix template problems with G++ on SunOS 4.x.
1361 * build/SunOS5.5/ace/OS.i (sema_wait): Changed all uses of
1362 ::pthread_cleanup_{push,pop} to pthread_cleanup_{push,pop} since
1363 these are implemented as macros on Solaris....
1365 Thu Apr 11 19:43:33 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
1367 * examples/Naming/Dump_Restore/Dump_Restore.cpp (init): Modified
1368 Dump_Restore in order to work correctly without having
1369 Name_Options around as a Singleton.
1371 * examples/Naming/Client/Client_Test.cpp (set_host): Modified
1372 Client_Test in order to work correctly without having
1373 Name_Options around as a Singleton. It simply uses the accessor
1374 provided by Naming_Context to get to Name_Options.
1376 * ace/Name_Options.cpp: Changed Name_Options so that it is no
1377 longer a Singleton. As a result, now there is an instance of
1378 Name_Options per Naming_Context. Note that for an application to
1379 change Name_Options, it can use the accessor function provided
1380 in Naming_Context. As a consequence of all these changes, we can
1381 now have multiple Naming_Contexts per application.
1383 Wed Apr 10 20:19:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1385 * ace/OS.h: Incorporated a mapping for Solaris 2.5 pthreads so
1386 that it fits in nicely with the earlier ACE pthreads support.
1387 From now on, the pthreads API will be the default threading
1388 scheme for ACE on Solaris 2.5...
1390 * ace: Added the file name to every *.cpp and *.i file in ACE.
1391 This makes it easier to figure out what's what when looking at
1392 the source code. Thanks to Chris Lahey for suggesting this.
1394 * ace/CORBA_Handler.cpp (ACE_CORBA_Handler): Added bodies for
1395 the copy constructor and assignment operator of ACE_CORBA_Handler
1396 (which are private) since some compilers generate link errors
1397 for these! Thanks to Rich Ryan <rryan@mseng.kla.com> for
1400 * ace/Synch_T.cpp (ts_get): at line 270 (within
1401 ACE_TSS<TYPE>::ts_get (void) const) there was a keycreate() call
1402 that did not have an instance pointer pass in with it. The
1403 symptom has been that if the last active task has been finished
1404 all active tasks being created afterwards won't get the close()
1405 hook invoked. I've fixed this in order to solve a mysterious
1406 bug with ACE_TSS. Thanks to the ever-vigilant Detlef for
1407 reporting this bug and fix.
1409 Wed Apr 10 01:56:52 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
1411 * ace: Added the ACE_TEMPLATES_REQUIRE_SPECIALIZATION to
1412 config-sunos5.5-g++.h file. This should allow ACE to build
1413 correctly. Thanks to Adam Miller <adam@royalblueny.com> for
1416 * ace: Installed SunOS 5.5, so now we can finally test pthreads!
1418 * ace/OS: Modified the implementation of mutex_t for Win32 so that
1419 it automatically selects the CRITICAL_SECTION or the HANDLE form
1420 of Mutex depending on whether the type argument is USYNC_THREAD
1421 or USYNC_PROCESS, respectively. This now means that all the
1422 existing ACE code that used ACE_Condition<ACE_Mutex> will
1423 continue to work correctly on Win32 and UNIX!
1425 Tue Apr 9 23:04:30 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
1427 * ace/Synch: Somehow, the definitions for ACE_Thread_Semaphore and
1428 ACE_Process_Semaphore were MIA. I've added the implementations.
1429 Thanks to Bruce Worden <bruce@betsy.gps.caltech.edu> for
1432 Tue Apr 9 02:16:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1434 * ace/Service_Config.cpp: reordered the #includes in this file so
1435 that it works correctly on Win32. Thanks to Rich Ryan
1436 <rryan@mseng.kla.com> for help with this.
1438 * ace/Auto_Ptr.cpp (remove): added the implementations of the
1439 auto_ptr::remove() and auto_array_ptr::remove() static methods.
1440 Thanks to Chris Lahey for noticing their absence...
1442 * ace/Auto_Ptr: Added the #pragma implementation ("Auto_Ptr.cpp")
1443 statement if defined ACE_TEMPLATES_REQUIRE_PRAGMA to work on
1444 AIX. Thanks to Chris Lahey for this.
1446 * ace/Makefile: Moved Auto_Ptr from FILES to TEMPLATE_FILES to
1447 work on AIX. Thanks to Chris Lahey for pointing this out.
1449 * Modified a bunch of the apps and example Makefiles so that
1450 things will build better using G++.
1452 * ace/Name_Options.cpp (parse_args): Made the "database" name the
1453 same as the process name by default...
1455 * ace/Reactor.h: Changed the type of current_ in
1456 ACE_Handler_Repository_Iterator from size_t to ssize_t so that
1457 this can handle negative numbers. Thanks to Mark Zusman
1458 <marklz@rotem.technion.ac.il> for reporting this.
1460 Mon Apr 8 23:33:15 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
1462 * netsvcs/lib/Name_Handler.cpp (recv_request): Fixed a small
1463 bug. In recv_request() ntohl was being called again on length
1464 which was causing problems since the length was already in host
1465 byte order. The ACE Name Server should now be working on NT.
1467 Mon Apr 8 02:14:30 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1469 * ace: Fixed a number of minor problems that caused duplicate
1470 symbols when linking ACE with G++ (no-repo) on SunOS 5.x and
1471 SunOS 4.x. Thanks to Andy Gokhale for help with this.
1473 * ace: Added Jan Rychter <jwr@icm.edu.pl> very nice contribution
1474 of pthreads and DCE threads to ACE. This should make life
1475 easier for Linux users and users of other pthreads packages.
1477 * ace/Service_Config.cpp (process_directives): Changed the code to
1478 use an auto_ptr to make sure that we always release the
1479 ace_obstack memory, regardless of how we exit.
1481 * ace/OS.i (strerror): Changed sys_errlist to _sys_errlist to work
1482 around bugs with SunOS 4.x. This will undoubted break some
1483 other twisted UNIX system.
1485 * ace/Local_Tokens.cpp (acquire): Added a return 0 at the very
1486 end... Thanks to Chris Lahey for reporting this (yet
1489 * ace/Parse_Node: Made a bunch of small changes to deal with the
1490 fact that there's no dlerror() equivalent on NT...
1492 * ace/Task.h: The static function instance() should return
1493 ACE_Task_Exit<ACE_SYNCH_1>* (or <ACE_SYNCH_2>), not
1494 ACE_Task_Exit *. Thanks to Chris Lahey for spotting this.
1496 * ace/Thread_Manager.cpp: added an argument to the exit() method
1497 that allows applications to exit without calling thr_exit. This
1498 would allow the method to be called from within a pthread
1499 cancellation cleanup routine, without calling thr_exit a 2nd
1500 time. Thanks to Chris Lahey for suggesting this.
1502 * ace/Log_Record.cpp (operator <<): Changed the verbose option so
1503 that it is an attribute, this will allow the ostream to print
1504 verbose information if necessary. Thanks to Chris Lahey for
1505 suggesting this change.
1507 * ace/config-win32-msvc*.h: Added the
1508 ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES flag since it appears
1509 that this causes problem with some versions of MSVC++ 4.0...
1511 * Released version 4.0.6 for testing.
1513 * netsvcs/lib/Server_Logging_Handler.h: #included the
1514 Svc_Handler.h file, that absence of which was causing problems
1515 for HP/UX. Thanks to Richard Orr
1516 <rorr@costello.den.csci.csc.com> for reporting this.
1518 * Made a few minor changes to the source to make sure that it
1519 compiles correctly on SunOS 5.x with G++.
1521 * ace/Thread_Manager.h: Added the insert() method for the non-MT
1522 version of Thread_Manager. Thanks to Alexandre Karev
1523 <akg@na47sun05.cern.ch> for reporting this.
1525 * ace/Task: Renamed the static double-check lock_ to
1526 ace_task_lock_ to avoid a name conflict with the existing
1527 this->lock_ instance in each class. Thanks to Prashant for
1528 tracking this down...
1530 Sun Apr 7 14:40:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1532 * examples/Service_Configurator/IPC-tests/server/Handle_Thr_Stream.cpp:
1533 Rolled back a change that replaced #defines with typedefs. It
1534 turned out the #defines were there for a reason... Thanks Neil
1535 B. Cohen <nbc@metsci.com> for pointing this out...
1537 * ace/OS.h: Added a new check to deal with the fact that many
1538 versions of Pthreads don't support tid_t (which seems to be an
1541 Thu Apr 4 01:19:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1543 * Officially released version 4.0.5...
1545 * ace/OS.h (ACE_TSS_TYPE): Somehow the ACE_TSS_TYPE macros ended
1546 up *before* the inclusion of Time_Value.h, which meant that
1547 these macros weren't being expanded properly. This may help
1548 explain odd behavior with ACE TSS.
1550 * ace/Thread_Manager.cpp (insert): Added a new method that allows
1551 us to insert a thread into an ACE_Thread_Control after it's been
1554 * ace/Message_Block: Fixed a typo in the init() method. Thanks to
1555 Ross Dargahi <rossd@krinfo.com> for noticing this.
1557 * ChangeLog: Finally got all of ACE built on SunOS 5.x and SunOS
1558 4.x using only the stock GNU GCC compiler (i.e., no template
1559 repository...). This should make it easier to port to other
1562 * ace/Task: Modified the ACE_Task and ACE_Task_Exit implemenation
1563 so that it only uses 1 TSS key per ACE_Task template
1564 instantation, rather than 1 TSS key per ACE_Task instance. This
1565 works around horrible limitations with Win32...
1567 * ace/Thread_Manager: Added new methods to set and get the
1568 Thread_Manager used in a Thread_Control.
1570 * ace/Pipe.cpp (open): Fixed a bug in where ACE_Pipe::open did not
1571 set this->handles_, thus a garbage handle gets registered.
1572 Inserted the following two lines at line 53 of Pipe.cpp:
1574 this->handles_[0] = reader.get_handle ();
1575 this->handles_[1] = writer.get_handle ();
1577 Thanks to Kirk Sinnard <kirk.sinnard@lawson.com> for this fix.
1579 * ace/OS.h: Added a couple of fixes for the SCO port. Thanks
1580 again to Matt Newhook <matthew@neweast.ca>
1582 * ace/OS.cpp: Integrated Detlef's clever scheme for freeing up
1583 thread-specific storage correctly on Win32...
1585 * ace/Task.cpp (ACE_Task): Made sure to initialize the
1586 next_-pointer of ACE_TASK and Message_Queue point to NULL.
1587 This fixes a problem on NT. Thanks to Karlheinz for
1590 * include/makeinclude/rules.lib.GNU (VLIB): Fixed up the ACE
1591 makefiles so that we can now build on SunOS 4.x correctly
1592 without using the template repositories...
1594 * ace/Service_Config.cpp: Added a bunch of template
1595 specializations so that GNU G++ can be used to compile ACE on
1596 SunOS 4.x *without* requiring the template repository hacks...
1597 Thanks to Mark Zusman for helping with this.
1599 Wed Apr 3 00:55:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1601 * examples/Reactor/Misc/test_reactors.cpp: Added a new torture
1602 test of the ACE_Reactor and ACE_Task. Thanks to Detlef for
1603 contributing this...
1605 * netsvcs/bin/Makefile: Removed a stray -lACE_svcs from the
1606 Makefile. Thanks to Matt Stevens for reporting this.
1608 * ace/Synch.cpp: Fixed two mistakes related to keeping INLINE on
1609 the get_thread_id() and get_nesting_level() when I moved them
1610 into the *.cpp file... Thanks to Matt Stevens for finding this.
1612 * ace/Reactor.cpp (owner): modified owner() so that it returns
1613 the original owner when setting a new owner. This makes it
1614 possible to write code like this:
1618 reactor->owner (ACE_Thread::self (), &t);
1619 reactor->handle_events ();
1622 * ace/SOCK_Connector.cpp (connect): Added an additional check for
1623 errno == EWOULDBLOCK for non-blocking connects due to screwy
1624 semantics of Win32 non-blocking sockets...
1626 * netsvcs/lib/Client_Logging_Handler: Fixed a very obscure bug
1627 that arose due to the way that UNIX select() interacts with
1628 SVR4 MSG_BAND data. It turns out that you must use the
1629 ACE_Event_Handler::EXCEPT_MASK to get this to work properly
1630 (gag). This stuff is much easier with SVR4 poll().
1632 Tue Apr 2 13:57:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1634 * ace/OS.i: Fixed an error compiling the new Log_Msg.cpp because
1635 when it inlined OS.i, there were references to
1636 ACE_OS::thread_mutex_*() before the functions were declared
1637 inline. The references were assumed to be external, and then
1638 when the linkage was actually declared as inline, the compiler
1639 choked. To fix this, in OS.i, all the thread_mutex_* calls
1640 where moved above the first reference, which was in
1641 ACE_OS::cond_broadcast(). Also moved the mutex*() calls since
1642 they are referenced by the thread_mutex calls. So the order is
1643 mutex*(), then thread_mutex*(), and then cond*(). Thanks to
1644 Chris Lahey for reporting this.
1646 * netsvcs/lib/Client_Logging_Handler.cpp: Added missing return
1647 values in some of the methods. Thanks to Tim Harrison for
1650 * ace/Map_Manager.cpp (shared_unbind): It was possible that INT_ID
1651 could be assigned a value from a previously unbound map entry.
1652 The shared_unbind matches the ext_id, but does not see if the
1653 entry had previously been unbound. This causes a problem if the
1654 INT_ID type is a pointer type, and the user of the map deletes
1655 objects as a result of the unbind returning a 0. The correct
1656 solution is to include a test for is_free in the shared_unbind
1657 before checking the equality of the ext_id. Thanks to Phil
1658 Mesnier <phil@envision.com> for reporting this.
1660 * ace/Reactor.cpp (next): Fixed a bug that prevented the
1661 iterator's next() method from detecting the end of the
1662 iteration. Thanks to Mark Zusman <marklz@rotem.technion.ac.il>
1665 * ace/Reactor.cpp (advance): Fixed a bug that prevented the
1666 iterator from advancing. Thanks to Mark Zusman
1667 <marklz@rotem.technion.ac.il> for reporting this.
1669 * ace/Log_Msg.cpp (open): Added a check for logger_key being NULL,
1670 in which case we log to STDERR rather than segfault...
1672 * netsvcs/lib/Server_Logging_Handler.h: Fixed a typo in
1675 ACE_SVC_FACTORY_DECLARE (ACE_Server_Logging_Acceptor)
1677 Thanks to Neil Cohen for finding this.
1679 Mon Apr 1 00:17:21 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
1681 * ace/Time_Value.i: Fixed two stupid bugs in the Time_Value
1682 relational operators. Thanks to Mathew Newhook
1683 <matthew@thor.udc.neweast.ca> for pointing this out.
1685 * ace/OS.h: Added an extern "C" block around the netdb, net/if.h,
1686 netinet/in.h, arpa/inet.h to work around problems with SCO.
1687 Thanks to Mathew Newhook <matthew@thor.udc.neweast.ca> for this.
1689 * ace/Reactor: Merged the ACE_Pipe into the Reactor
1690 implementation. This cleans up some nasty OS-specific code in a
1693 * ace/CORBA_Handler.cpp (ACE_MT_CORBA_Handler): Fixed some typos
1694 that arose during the transition to the ACE_Pipe.
1696 * ace/Pipe: Added a new open() method that doesn't return the
1697 handles, it just stashes them away for safe keeping. This is
1698 useful for places like the Reactor.
1700 * ace/Local_Name_Space.h: Added ACE_Export to the front of
1701 ACE_NS_String. Thanks to Detlef for suggesting this.
1703 * From now on, I'll be numbering each new release of ACE with a
1704 different minor number. However, the latest version of ACE will
1705 also always be available at
1707 http://www.cs.wustl.edu/~schmidt/ACE.tar.gz
1709 This is useful if you just want to get the latest one without
1710 having to bother with keeping track of minor numbers. For
1711 instance, that way you can still keep that reference in my
1712 bookmark list and you don't have to remodify it with every
1713 release. Thanks to the ever-vigilant Chris Lahey for suggesting
1716 * ace: added new a ACE project file (ace.mdp) and Makefile
1717 (ace.mak) to create ACE as a DLL on Win32. This should greatly
1718 simplify the Win32 build process...
1720 * INSTALL: Added new INSTALL file explaining how to build for
1723 * ace/Thread_Manager.cpp: Fixed a horrible bug with Win32. On
1724 reasonable systems ACE_Thread::exit() should not return.
1725 However, due to horrible semantics with Win32 thread-specific
1726 storage this call can return (don't ask...). Therefore, we need
1727 to reacquire the mutex so that we don't get burned when the
1728 Guard automatically releases it when this method returns. Thanks
1729 to Tim for helping me figure this out.
1731 * ace: Fixed some problems with errno in Remote_Tokens and
1734 * ace/Reactor.cpp: Fixed an annoying preponderance of useless
1735 ACE_MT_SAFE #ifdefs in the Reactor implementation. Thanks to
1736 Gerolf Wendland <wendland@hpp015.mch2.scn.de> for pointing this
1739 Sun Mar 31 13:09:27 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
1741 * ace/OS: Changed the implementation of cond_t and rwlock_t for
1742 Win32 to use thread_mutex_t (i.e., CRITICAL_SECTIONS) rather
1743 than mutex_t (i.e., Win32 Mutexes). This should improve
1744 performance without sacrificing generality (of which there is
1745 none at the moment since we don't have process-wide condition
1746 variables or readers/writer locks on Win32 anyway..
1748 * ace/Thread_Manager.cpp (remove_thr): Fixed bugs in the
1749 ACE_Thread_Manager class. The wait() member grabbed the
1750 Thread_Mutex lock_, then (if the current_count is not zero)
1751 grabs the Condition lock zero_cond_. Doing so, however
1752 implicitly released lock_, which meant that another thread could
1753 get into wait(), and wait on zero_cond_. zero_cond_ was only
1754 signaled from ACE_Thread_Manager::remove_thr() when the
1755 current_count_ is zero, but it signaled with
1756 ACE_Condition_Thread_Mutex::signal(), which only releases one
1757 thread that is waiting on the Mutex. Thus, any other threads
1758 waiting on zero_cond_ would never be resumed. The fix was to
1759 use ACE_Condition_Thread_Mutex::broadcast() rather than
1760 ACE_Condition_Thread_Mutex::signal() in
1761 ACE_Thread_Manager::remove_thr(). This fix is only reliable
1762 since remove_thr() is called only when ACE_Thread_Manager::lock_
1763 is held by the calling thread. Thank to Bruce Worden
1764 <bruce@seismo.gps.caltech.edu> for reporting problem and
1765 suggesting this fix.
1767 * ace/Token: Modified this class so that it only works with
1768 ACE_Thread_Mutex (which is more precise than what was going on
1771 * ace/Synch.h: Modified ACE_RW_Process_Mutex so that on Win32 it
1772 uses ACE_Process_Mutex until we've got a working
1773 RW_Process_Mutex for Win32...
1775 * ace/Synch: Removed the ACE_Process_Barrier until we get a
1776 working implementation...
1778 * ace/Synch: Changed the ACE_Barrier so that it only tries to work
1779 within a single process.
1781 * ace: Changed all uses of ACE_Condition_Mutex to
1782 ACE_Condition_Thread_Mutex to reflect what's really going on
1785 * Changed all uses of ACE_Mutex to ACE_Thread_Mutex throughout
1786 ACE. This is *much* more meaningful and makes it possible to do
1787 some great optimizations on Win32!
1789 * ace: Changed all uses of ACE_Mutex_Guard to
1790 ACE_Thread_Mutex_Guard. This is a more accurate name for how
1791 this is used in ACE.
1793 * netsvcs/lib/Client_Logging_Server: Reengineered the ACE
1794 Client_Logging service so that fits into the ACE network service
1795 format. This version is particularly interesting since it
1796 illustrates a "Connector-driven" service. In contrast, all the
1797 other ACE network services are "Acceptor-driven" services.
1799 * netsvcs: Merged the implementation of all the ACE network
1800 services into a single ./netsvcs/lib directory. Each of these
1801 is now a fully dynamically linkable service. Created a single
1802 main.cpp program in the ./netsvcs/bin directory. This main
1803 illustrates how to dynamically link an or all of the ACE network
1804 services to form complete applications. Thanks to Prashant for
1807 * ace/OS.cpp: Changed readv() and writev() so that they will once
1808 again compile for Win32. Note, however, that if you try to
1809 readv() and writev() on the same descriptor you will lose since
1810 they are not atomic! However, this stuff is stuff useful if
1811 you're *not* reading/writing to a common descriptor...
1813 * ace/Synch_T.cpp: Removed the ACE_Null_Condition<> template.
1814 This didn't really make any sense...
1816 * ace/OS: Changed the test of lock_.get_nesting_level() in
1817 ACE_TSS_Cleanup::exit () to account for the fact that a
1818 ACE_Recursive_Thread_Mutex now starts out with a nesting level
1819 of 1 when it is first acquired.
1821 * ace/Synch_T: Removed the implementation of ACE_Recursive_Lock.
1822 It just doesn't generalize correctly to other types of
1823 synchronization mechanisms...
1825 * ace/Synch: Reimplemented ACE_Recursive_Thread_Mutex using Dave
1826 Butenhof's <butenhof@zko.dec.com> strategy. This fixes some
1827 latent race conditions in the original implementation.
1829 * ace: Changed the name of ACE_Recursive_Mutex to
1830 ACE_Recursive_Thread_Mutex since the current implementation
1831 really only works for Thread_Mutexes or Thread_RW_Mutexes...
1833 * ace: Removed the "Assert.h" file and moved its functionality
1834 into Log_Msg.h. This is more consistent with the rest of the
1835 error reporting and logging in ACE and also avoids some nasty
1836 circular include problems.
1838 * ace/Local_Tokens.cpp: Changed the use of ACE_RETURN so that it
1841 * ace/Log_Msg: Changed the arguments to the ACE_RETURN macro so
1842 that errno can be returned explicitly.
1844 Sun Mar 31 15:52:58 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
1846 * ace/Local_Name_Space.cpp (create_manager): Added three new
1847 methods -- list_name_entries, list_name_values, and
1848 list_name_types. They work similar to list_names, list_values,
1849 and list_types (respectively) except they return the entire
1850 tuple associated with a name binding.
1852 Sat Mar 30 16:46:32 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1854 * ace/SPIPE_Stream.i (send_handle): There was a typo -- the
1855 parameter shouldn't be "const ACE_HANDLE handle", it should
1856 just be ACE_HANDLE handle.
1858 Sat Mar 30 16:09:25 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
1860 * INSTALL: Added new Win32 installation instructions to build
1863 Sat Mar 30 14:42:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1865 * Carefully tested ACE on SGI and SunOS 5.x using G++ and CC.
1866 Everything seems to work now... Released version 4.0.2.
1868 * ace/Acceptor.cpp (ACE_Strategy_Acceptor): Added default
1869 initializations of NULL for service_name_ and
1870 service_description_ in the ACE_Strategy_Acceptor's default
1873 * ace: Fixed a slew of warnings for HP/UX. Thanks to John Morey
1874 for reporting these.
1876 * ace/FILE.h (ACE_FILE_Info): Changed the type of field size_ from
1877 size_t to off_t to avoid warnings from C++ compilers...
1879 * ace/OS.cpp (ftruncate): Added a new function for platforms like
1880 SCO that lack ftruncate(). Thanks to Matthew Newhook
1881 <matthew@neweast.ca> for contributing this.
1883 Sat Mar 30 12:41:16 1996 Douglas C. Schmidt <schmidt@pride.cs.wustl.edu>
1885 * ace: Removed the ACE_svcs library for the time being and merged
1886 everything back into libACE. There were two reasons for this
1889 1. There is a subtle dependency between the ACE_Reactor and the
1890 ACE_Local_Tokens* stuff when deadlock detection is enabled.
1891 This was causing problems.
1893 2. This was driving GNU G++ nuts because of the need to
1896 Sooo, for the time being, there's just one ACE library. If
1897 anyone wants to take the time to split everything up so that it
1898 works for all different platforms and send me the fixes I'll be
1899 glad to include this in ACE.
1901 * ace/Thread.i: Made the ACE_Thread::thr_self() methods call
1902 down to the ACE_OS::thr_self() methods for the case where
1903 the platform doesn't support threads. This means that we
1904 only have to set the default thread id in one place...
1906 Sat Mar 30 11:53:31 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1908 * bin/class2info.awk: Modified the handleClass() AWK function so
1909 that it can correctly deal with the new ACE_Export and
1910 ACE_Svc_Export tags needed to build ACE DLLs... Here's the
1913 sub( "^[\t ]*class[\t ]+(ACE_[.]*Export[\t ]+)?", "", $0 )
1915 completely intuitive, eh? ;-)
1917 * apps/Gateway: Reimplemented the Gateway prototype so that it
1918 uses the new Reactor cancel_wakeup() and schedule_wakeup()
1919 methods instead of mask_ops().
1921 * ace/Reactor: Added new high-level <Event_Handler> "scheduling"
1922 operations called schedule_wakeup() and cancel_wakeup(). These
1923 methods utilize the lower-level Reactor mask_ops() methods to
1924 schedule and cancel Event_Handlers for subsequent dispatching by
1925 the Reactor. I added these new interfaces because they are more
1926 intuitive than calling mask_ops(), which is a non-descriptive
1927 name unless you understand the Reactor implementation...
1929 * ace/config-irix5.*.h: It turns out that on IRIX 5.x the
1930 bi-directional SVR4 pipe semantics are *disabled* by default.
1931 Therefore, I've changed the config-irix4.*.h files to comment
1932 out ACE_HAS_STREAM_PIPES.
1934 Fri Mar 29 08:25:33 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1936 * ace/ACE.cpp (ldfind): Changed the character given to strtok() to
1937 account for the differences in UNIX and Win32 described in the
1940 * ace/OS.h: UNIX and Win32 use different characters to separate
1941 pathnames in their runtime LD search path (':' and ';'
1942 respectively). Therefore, I've added new macros to ACE OS to
1943 account for this stuff portably.
1945 * ace/OS.i: Changed the behavior of the ACE_OS::thr_self() methods
1946 so that they always return 1 if ACE_HAS_THREADS is *not*
1947 enabled. This makes application code work correctly across
1948 threaded and non-threaded platforms.
1950 * ace/OS.i: Changed the return value of the Win32 arm of the
1951 ACE_OS::dlopen() and ACE_OS::dlsym() functions so that they are
1952 now identical to the way that UNIX behaves.
1954 * ace/Svc_Conf.y: added a #define for ACE_BUILD_DLL to make Win32
1957 * ace/Synch.i: Fixed a number of bugs in the ACE_Mutex and
1958 ACE_Thread_Mutex tryacquire_read() and tryacquire_write()
1959 methods. I was calling mutex_lock() rather than
1960 mutex_trylock()! Thanks to Prashant for finding this.
1962 * ace/OS.cpp (exit): Fixed a bug caused by the fact that the test
1963 for the nesting level of the recursive mutex should have been
1964 for > 0 rather than > 1. Thanks to Kirk Sinnard
1965 <1764@mn.lawson.lawson.com> for tracking this down!
1967 * ace/Log_Msg: Enhanced ACE_Log_Msg so that it automatically
1968 caches the process id. This makes it more robust even if users
1971 * examples/Connection/non_blocking/CPP-connector.cpp Fixed a bunch
1972 of typos that caused templates to fail on HP/UX. Thanks to Neil
1973 Cohen for spotting this.
1975 * ace/Shared_Memory_SV: Change all uses of "int id" to "key_t id"
1976 to reflect the new use of key_t in the Memory_Pool.
1978 * ace/Memory_Pool.cpp (ACE_MMAP_Memory_Pool): Fixed a potential
1979 but in the construction of an MMAP memory pool. Because NT uses
1980 strings rather than integers to name its semaphores we were
1981 passing in junk to the NT Process_Mutex initializer. Arrgh! I
1982 fixed this problem by typedef'ing key_t to be char * on Win32
1983 and then updating the ACE_DEFAULT_SEM_KEY to be
1984 "C:\\temp\ace.sem" rather than 1234.... Also added a new macro
1985 called ACE_INVALID_SEM_KEY, which is NULL on NT and -1 on UNIX.
1987 * ace/Log_Msg.cpp (instance): Fixed a typo for HP/UX and
1988 other non-threaded platforms!
1990 * ace/Synch_T.cpp (ACE_TSS_Guard): Added another small fix
1991 to ACE_TSS_Guard to make sure we free up the key when we
1994 Thu Mar 28 15:28:44 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
1996 * ace/OS.h: changed the names of macros ACE_DYNAMIC_SVC* to new
1997 names that reflect their new, more general nature now that we've
1998 got the ACE_Static_Svcs stuff...
2000 * ace/Service_Config.cpp (load_defaults): Added a very nice
2001 mechanism that generalizes the configuration of statically
2002 linked services. This makes it possible to insert statically
2003 linked services into a program without changing any of the
2004 existing ACE_Service_Config code. These static services can
2005 then be enabled via the svc.conf file using the "static"
2006 directive. Thanks to Matthew Newhook <matthew@neweast.ca> for
2007 suggesting this and for doing the bulk of the implementation.
2009 * ace: Commented out the ACE_TRACE calls in ACE_Unbounded_Set,
2010 ACE_OS, and all the ACE synchronization wrappers to work around
2011 some horrible dependencies with Win32 and thread-specific
2012 storage... The moral here is that you have to be careful what
2013 you trace because circualar dependencies abound... My new
2014 policy is that low-level routines are not automatically traced
2015 because they can cause infinite recursion.
2017 * ace/Synch_T.cpp: Fixed a nasty bug with ACE_TSS_Guard. This was
2018 causing programs that uses ACE_TSS_Guard to segfault... Thanks
2019 to Kirk Sinnard <kirk.sinnard@lawson.com> for reporting this.
2021 * ace/Synch: Added "lock()" methods to all the ACE synchronization
2022 wrappers to return the underlying C level object... This is
2023 necessary at some points in ACE.
2025 * ace/Synch: Fixed a horrible bug in ACE_Recursive_Mutex and
2026 ACE_Recursive_Lock that was causing instant deadlock because the
2027 non-recursive Solaris/Pthread mutex was being acquired too
2030 Thu Mar 28 12:14:57 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
2032 * ace/Map_Manager.cpp (rebind): Added a new method called resize()
2033 which increases the size of the map. Both open() and
2034 shared_bind() make use of this method to dynamically increase
2035 the size of the map.
2037 * ace/Local_Name_Space.cpp (shared_bind): Modified shared_bind()
2038 in accordance to the changes to Map_Manager. shared_bind() no
2039 longer has to check if the map runs out of room since
2040 Map_Manager dynamically grows the map.
2042 * ace/Map_Manager.cpp (shared_bind): Changed shared_bind() so that
2043 when the map reaches max_size_, we grow the map by DEFAULT_SIZE
2044 by making a call to open().
2046 Wed Mar 27 20:00:47 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
2048 * ace/Local_Name_Space.cpp (shared_bind): Fixed a bug which was
2049 allocating memory for a name binding which would fail on a bind
2050 since there already existed a binding. This was causing the
2051 mapped-file to grow even when binds would fail.
2053 Tue Mar 26 13:49:24 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2055 * ace/INET_Addr.i (addr_to_string): Moved the order of
2056 get_host_addr() so that it comes before addr_to_string().
2057 Thanks to Neil Cohen for finding this.
2059 * ace/Synch: Added a new implementation of ACE_Thread_Mutex that
2060 takes advantage of the new ACE_OS::thread_mutex_* mechanisms.
2062 * ace/OS: Added a new set of ACE_OS::thread_mutex_* mechanisms
2063 that map efficiently to either Win32 CRITICAL_SECTIONs or UNIX
2064 mutex_t's with type set to USYNC_THREAD. This allows ACE to
2065 take advantage of the lightweight Win32 synchronization
2066 mechanisms. When Windows NT 4.0 comes out, we'll at last have a
2067 perfect mapping since WinNT 4.0 supports
2068 TryEnterCriticalSection!
2070 Tue Mar 26 17:35:31 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
2072 * ace/Map_Manager.cpp: Added two new methods -- total_size() and
2073 current_size() which return the max_size and current_size of the
2076 Mon Mar 25 20:22:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2078 * ace/Service_Config.cpp (initialize): Updated the use of ACE_ARGV
2079 to use the new method names.
2081 * ace/ARGV.cpp (ACE_ARGV): Changed the name of the two main
2082 methods of ACE_ARGC from count() and operator&() to argc() and
2083 argv(). This seems much more consistent with UNIX and C/C++
2086 * ace/ARGV.cpp (ACE_ARGV): Added environment variable substitution
2087 to the ACE_ARGV class using the new ACE::strenvdup() method.
2088 This is transparently available to the ACE Service Configurator
2089 now, which enables the svc.conf file to include things like
2092 dynamic Name_Service Service_Object *
2093 name_svc.so:make_Name_Service() "-p $PORT -h $HOST"
2095 * ace/ACE: Added a new function called strenvdup() that returns a
2096 dynamically allocated duplicate of its <str> argument,
2097 substituting the environment variable if str[0] == '$'.
2099 * ace/Naming_Context: Modified this class so that it now inherits
2100 from ACE_Service_Config. This enables application programmers
2101 to dynamically link instances of ACE_Naming_Context into their
2102 applications via the svc.conf file.
2104 * ace/OS.i (access): Added a new wrapper for the access() method.
2106 * ace/Local_Name_Space.cpp: Fixed an error in each list_xxx
2107 methods. If there's an error in the for-loop we must still call
2108 ACE_OS::free() to release resources. Thanks to the
2109 ever-vigilant Karlheinz Dorn for spotting this.
2111 * ace/Strategies: added virtual methods with name dump() to
2112 ACE_Scheduling_Strategy, ACE_Schedule_All_Reactive_Strategy, and
2113 ACE_Schedule_All_Threaded_Strategy. These methods are
2114 referenced in ACE_Strategy_Acceptor::dump() method
2115 (Acceptor.cpp). Thanks to Alexandre Karev for reporting this.
2117 * include/makeinclude: Added a number of changes to allow ACE to
2118 build shared libraries correctly on AIX. Thanks to Chris Lahey
2121 * ace/Makefile: added tempinc to the list of directories to delete
2122 for "clean". Also, between the call to the two sub make files,
2123 added a $(RM) -rf tempinc. Since we make both libs from the
2124 same directory, we need to delete the tempinc directory to be
2125 sure we don't get the templates generated for libACE included in
2128 * ace/OS.i: Improved the mapping between ACE Win32 GetLastError()
2129 values and POSIX-like errnos. This is now centralized in the
2130 ACE_FAIL_RETURN macro.
2132 * examples/Threads/test_thread_specific.cpp: Added many new tests
2133 to exercise the ACE thread-specific storage mechanisms on Win32
2136 Mon Mar 25 4:00:01 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
2138 * ace/Name_Options.cpp (parse_args): Added a new data variable
2139 called database_ that keeps the name of the name server
2140 database. Also added accessor methods for this.
2142 * ace/Local_Name_Space.cpp (create_manager): Changed
2143 create_manager() to use ACE_Name_Options::instance ()->database
2144 () instead of ACE_Name_Options::instance ()->process_name().
2146 * ace/ACE.cpp (ldopen): Added a new method called ldopen that
2147 finds a file either using absolute path or using
2148 LD_LIBRARY_PATH. If the file is found, it opens the file and
2149 returns a pointer to the file.
2151 * ace/Parse_Node.cpp: used the new ACE::ldfind() method to locate
2152 the shared object file. This makes it possible to put
2153 "relative" names into svc.conf files and then allow ACE to
2154 locate the appropriate shared object DLL.
2156 * ace/ACE: added new methods called ldopen() and ldfind() that
2157 find the file <filename> either using absolute path or using
2158 LD_LIBRARY_PATH. If found, ldopen() opens the file and returns
2159 a pointer to the file.
2161 Sun Mar 24 10:41:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2163 * Compiled ACE successfully on Windows '95.
2165 * ace/OS: Totally redid the ACE thread-specific storage cleanup
2166 mechanism in OS.cpp to avoid bugs with the previous
2169 * ace/Synch_T: Modified ACE_TSS_Guard so that it will call
2170 ACE_OS::thr_keyfree () when it's finished. This should help to
2171 eliminate the unbounded use of thread-specific storage slots
2174 * ace/Thread: added a new method keyfree() that calls down to the
2175 ACE_OS::thr_keyfree ().
2177 * ace/Thread_Manager.cpp: Modified the semantics of
2178 ACE_Thread_Manager::exit () so that it "always" calls
2179 ACE_Thread::exit () even if the user hasn't registered this
2180 thread with the thread manager. This avoids some subtle
2181 problems that arise typically when I forget to put an
2182 ACE_Thread_Control around the main() function.
2184 * examples/Threads/test_thread_specific.cpp: Added new tests to
2185 ensure that the Win32 TSS cleanup logic is working correctly!
2187 * ace/Log_Msg: Moved the definition of the ACE_FIFO_Send_Msg queue
2188 from the Log_Msg.h file to the Log_Msg.cpp file. The MSVC++
2189 compiler was having problems with this when building a DLL.
2190 Besides, this needs to be replaced with Sockets for Win32
2193 * ace/OS.cpp: Put a safe guard in the readv() and writev()
2194 emulations so that they return ACE_NOTSUP_RETURN if
2195 ACE_HAS_THREADS is enabled. This is necessary because the
2196 readv() and writev() emulations are *not* atomic if multiple
2197 threads are used. If someone can provide an atomic
2198 implementation I'll enhance the code to remove the existing
2201 * ace/OS: Created a new macro called ACE_SYSCALL_FAILED, which is
2202 mapped to 0xFFFFFFFF on Win32 and -1 on UNIX.
2204 * ace/Synch and Synch_T: cleaned up the implementation of the
2205 Recursive_Lock and Recursive_Mutex to use the ACE_Guard classes.
2206 This simplifies the code.
2208 Sat Mar 23 16:53:14 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
2210 * ace: Updated all ACE classes to use the new ACE_Export macro.
2211 This will enable them to transparently be used to create a Win32
2212 DLL. Also added ACE_BUILD_DLL to all the *.cpp files.
2214 * tests/CPP-inserver.cpp (main): Modified CPP-inclient.cpp and
2215 CPP-inserver.cpp to use non-blocking I/O. In particular,
2216 CPP-inserver times out on select and then checks to see if any
2217 connections have arrived. Both applications are also working on
2220 Sat Mar 23 15:02:47 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2222 * ace/Local_Tokens.cpp (proxy_): Modified the print statement for
2223 local tokens to account for the fact that thread ids can be
2224 unsigned on some platforms.
2226 * ace/Log_Msg.cpp (log): Modified the output format of the %t
2227 directive to ACE_Log_Msg::log() so that it prints values in
2228 unsigned form rather than signed form. This fixes a bug with
2229 Win32 on Windows '95.
2231 * ace/ACE: Added two new methods ACE::read_n() and ACE::write_n().
2232 These are now necessary since Win32 distinguishes between
2233 operations on SOCKETs and operations on other forms of HANDLEs.
2235 * ace/ACE: Changed all uses of ACE::set_fl() and ACE::clr_fl() to
2236 ACE::set_flags() and ACE::clr_flags().
2238 * ace/ACE: Changed the name of ACE function handle_timed_connect()
2239 to handle_timed_open() since this is reall what it does...
2241 Fri Mar 22 00:11:19 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2243 * ace/Stack: Added a "Node of last resort" to the
2244 ACE_Unbounded_Stack. This ensures we are graceful in the face
2247 * ace/OS.i (sleep): Fixed a bug with the Win32 ACE_OS::sleep
2248 mapping. This should have had an "ACE_OSCALL_RETURN" in it...
2250 * ace/ACE.h: Had forgotten to put "static" in front of "basename".
2251 Thanks to Neil Cohen for reporting this...
2253 * ace/Name_Options.cpp (process_name): Changed char * to const
2254 char * to avoid compile error. Thanks to Neil Cohen for this...
2256 * ace/IPC_SAP: Implemented the enable()/disable() methods to work
2257 with non-blocking I/O for SOCKETs on Windows NT.
2259 * ace/OS.i: Modified ioctl() to support the ioctlsocket() call on
2262 * ace/Log_Msg.cpp (log): Fixed a bug that was caused by not
2263 NUL-terminating the logging string properly when a %a is given.
2264 Thanks to Tim Harrison for finding this.
2266 * ace/OS: Added a new overloaded "ACE_OS::sleep" method that takes
2267 an ACE_Time_Value rather than a u_int. This is much more useful
2268 for fine-grained timers than the horrible UNIX sleep() call.
2270 * ace/OS.h: #included "sys\timeb.h" in the Win32 version of ACE.
2272 Thu Mar 21 22:18:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2274 * apps: Fixed all incorrect usages of ACE_HANDLE = -1 to use
2275 ACE_HANDLE = ACE_INVALID_HANDLE in order to work with Win32...
2277 * ace/OS.i (gettimeofday): Replaced the existing implementation of
2278 gettimeofday with a new version that is shorter, more efficient,
2279 and most importantly, correct... Thanks to Todd Montgomery. and
2280 Mike Flinn for this stuff.
2282 * ace/ACE: added a new method called basename() that returns the
2283 filename portion of a pathname.
2285 Thu Mar 21 21:51:48 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
2287 * ace/OS.h (ACE_DEFAULT_GLOBALNAME): Added some new #defines for
2288 NT: ACE_DEFAULT_NAMESPACE_DIR, ACE_DEFAULT_LOCALNAME, and
2289 ACE_DEFAULT_GLOBALNAME.
2291 * ace/Local_Name_Space.cpp (ACE_Local_Name_Space): Fixed a subtle
2292 bug. Instead of doing a new char [xxx], I was doing a new char
2293 (xxx). Also, added some #if defined (ACE_WIN32) to support
2294 special cases for NT (for example determining the context file
2297 Wed Mar 20 02:03:39 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2299 * ace/Log_Msg.cpp (log): If we're writing to stdout or to an
2300 iostream make sure the lock is help to avoid race conditions and
2303 Tue Mar 19 00:12:25 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2305 * ace/Thread_Manager.h: Added new default values to spawn() and
2308 * ace/OS.i (sigaction): Added support for signals to the ACE NT
2311 * ace/ACE: Added 4 new methods to class ACE: send(), send(),
2312 recv(), recv(). These calls mask some differences between UNIX
2313 and Win32 IPC mechanisms. Then, reimplemented the Reactor's
2314 notification mechanism to use this.
2316 * ace/OS.i (ACE_OSCALL_RETURN): fixed zillions of warnings on
2317 HP/UX by making a small change to line 151 of the OS.i file.
2318 Thanks to Neil Cohen for reporting this.
2320 * ace/Reactor.cpp: Rewrote the Reactor::notify() mechanism to
2321 avoid using readv() and writev(). These work fine on UNIX, but
2322 don't work correctly on Windows NT due to race conditions.
2323 Basically, we need to reimplement this stuff on Win32 to avoid
2326 * ace/OS.h: Added SIGQUIT, SIG_BLOCK, SIG_UNBLOCK, and SIG_SETMASK
2329 * ace/Time_Value: added a new set() method to be consistent with
2330 the ACE_Time_Value (long, long) constructor.
2332 * ace/Service_Config.cpp (open): Fixed a bug where the
2333 ACE_Service_Repository and ACE_Reactor weren't being initialized
2334 correctly if the ACE_Service_Config::ACE_Service_Config (const
2335 char *) method was called.
2337 * ace/Service_Config.cpp: Changed the constructor for
2338 Service_Config so that it doesn't barf if the svc.conf file
2341 Mon Mar 18 00:34:45 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2343 * ace/Reactor.h: Hid the inclusion of the Local_Tokens.h file in
2344 the Reactor so that by default there will be no dependency
2345 between libACE and libACE_svcs. This should prevent compilation
2346 problems on some platforms.
2348 * bin: Included the html-windex shell script from Vincent Pommier
2349 <pommier@volnay.stortek.com>.
2351 * man: Included a shell script to automatically generate an
2352 acewindex.html file. This file is useful just after running
2353 man2html. Thanks to Vincent Pommier
2354 <pommier@volnay.stortek.com> for contributing this.
2356 * man/html: I've just used the man2html programs to generate the
2357 html documentation from the man3 directory. It seems to work
2360 * ace/Assert.h: Added a forward declaration for class ACE_Log_Msg
2361 to fix problems NuMega preprocessing. Thanks to Mike Flinn
2362 <mike.flinn@smtpgate.aws.waii.com> for finding this.
2364 * ace: Implemented about 1/3rd of the "dump" methods for the
2365 various ACE classes.
2367 * ace/Acceptor.cpp (info): Fixed a bug -- should use PR_AD rather
2368 than ACE_INET_Addr since this is used for SPIPEs as well...
2370 * ace/Synch_T.cpp (ACE_TSS): If ACE_Thread::keycreate () fails
2371 then we do an fprintf() and return at the moment. It doesn't do
2372 any good to do an ACE_Log_Msg operation since those all require
2373 thread-specific storage and this will just cause a recursive
2376 * ace/OS.cpp: Removed a memory leak in ACE_OS::thr_destory_tss()
2377 that was caused by forgetting to delete each ACE_TSS_Key_Info
2378 object when we no longer needed it. Thanks to Mike Flinn
2379 <mike.flinn@smtpgate.aws.waii.com> for finding this.
2381 * ace/OS.cpp: Added a new method to class ACE_OS called
2382 thr_keyfree(). This enables us to free up a thread-specific
2383 storage key on Win32 (it isn't implemented on the UNIX
2386 * ace/ACE.cpp (timestamp): In order to get ACE_OS::timestamp to
2387 work on Win32, the wMonth, wDay, wYear structure members were
2388 added to the sprintf statement. Thanks to Mike Flinn
2389 <mike.flinn@smtpgate.aws.waii.com> for this fix.
2391 * examples: Changed all uses of ACE::send_n (1, ...) to
2392 ACE_OS::write (ACE_STDOUT, ...) to avoid problems with NT's
2393 hacked support for sockets and HANDLEs. Thanks to Bernd Hofner
2394 <hofner@pd.et-inf.uni-siegen.de> for noticing this.
2396 Sun Mar 17 00:43:14 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2398 * ace/CORBA_Handler.cpp (handle_input): Fixed the CORBA_Handler to
2399 use send()/recv() rather than read()/write().
2401 * ace/Process_Manager: put the hooks in for the forthcoming ACE
2402 Process Manager, which will provide a service similar to the
2403 ACE_Thread_Manager, except that it will work for processes, not
2406 * netsvcs: all the ACE network services appear to be working
2409 * man: Completely regenerated all the manual pages to reflect all
2410 the most recent changes.
2412 * ace/OS.h: Created a new macro called ACE_DEFAULT_REACTOR_SIZE.
2413 This is useful for two reasons (1) it centralizes this value in
2414 one place in ACE and (2) removes a horrible circular dependency
2415 between the Service_Config.h and Reactor.h...
2417 * ace/Strategies: Added new strategies to handle "scheduling" of
2418 Svc_Handlers launched by a Strategy_Acceptor. In this context,
2419 scheduling refers to "suspending" and "resuming" Svc_Handlers.
2420 There are several alternative strategies ranging from (1)
2421 suspending/resuming a single handler, (2) suspending/resuming
2422 all the handlers in a Reactor, and (3) suspending/resuming all
2423 handlers controlled by a Thread_Manager. This very powerful
2424 feature makes it simple to write ACE_Network_Services that can
2425 control all their handlers in one fell swoop...
2427 * ace/Task: Added new accessors/mutators to get/set the
2428 Thread_Manager and the Message_Queue associated with a Task.
2429 This makes life easier and more abstract in subclasses and
2432 * ace/Reactor: added an iterator to the ACE_Handler_Repository.
2433 This makes it possible to implement the suspend_handlers() and
2434 resume_handlers() very efficiently on both UNIX and Windows NT.
2436 * ace/Reactor: Added two new methods called suspend_handlers() and
2437 resume_handlers(). These methods suspend and resume all the
2438 active Event_Handlers in the Reactor in one fell swoop.
2440 * ace/Reactor.i (suspend_handler): Fixed a bug in the Reactor
2441 where we were not factoring out the code for suspend_handler()
2442 appropriately with respect to locking.
2444 * netsvcs/Logging/Server_Daemon/Thr_Logging_Handler: Enhanced the
2445 threaded logging service so that all active threads can be
2446 automatically suspended and resumed via the ACE_Service_Config
2449 * netsvcs/Logging/Server_Daemon/Logging_Handler.cpp: Rewrote the
2450 ACE Logging service to use the new ACE_Strategy_Acceptor
2451 implementation. This greatly reduced duplicate code. There's
2452 almost nothing left in this directory save the actual service
2455 * netsvcs/Tokens: Rewrote the ACE Token service to use the new
2456 ACE_Strategy_Acceptor implementation. This greatly reduced
2457 duplicate code. There's almost nothing left in this directory
2458 save the actual service itself!
2460 * netsvcs/Naming: Rewrote the ACE Naming service to use the new
2461 ACE_Strategy_Acceptor implementation. This greatly reduced
2462 duplicate code. There's almost nothing left in this directory
2463 save the actual service itself!
2465 Sat Mar 16 20:02:08 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2467 * netsvcs: Created a new subdirectory off of $WRAPPER_ROOT and put
2468 all the ACE network services (e.g., Time, Logging, Naming, and
2469 Tokens) into that directory. These services all instantiate the
2470 new ACE_Strategy_Acceptor implementation, which greatly
2471 simplifies their behavior and code.
2473 * ace/Acceptor: Made some enhancements to the
2474 ACE_Strategy_Acceptor in order to make it more suitable for use
2475 as a generic "Service" launcher. This class now defines common
2476 behavior for all the ACE network services (e.g., Time, Logging,
2477 Naming, and Tokens).
2479 * apps/Token_Server: Made the main Token_Server application be
2480 dynamically linked if there's a valid svc.conf file.
2482 * apps/Name_Server/Name_Server: Made the Server_Test a
2483 "well-behaved" service. Previously, it block in a private event
2484 loop within Name_Server::run(), which was called by
2485 Server_Test::init() when the service was linked dynamically.
2486 This obviously doesn't work correctly since it means that we
2487 can't dynamically link any other services after this one! The
2488 new version is "event-loop" friendly since it uses the main
2489 Service_Config::run_event_loop() method.
2491 * ACE-categories: Added a new emacs "outline" file that
2492 illustrates how the filenames in $WRAPPER_ROOT/ace cluster into
2493 class categories. Thanks to Chris Eich
2494 <Chris_Eich@optilink.optilink.dsccc.com> and Alex V. Maclinovsky
2495 <alexm@teltrunk1.tait.co.nz> for helping create this.
2497 * ace: Split ACE into two libraries: libACE and libACE_svcs.
2498 libACE contains the "core" ACE components. libACE_svcs contains
2499 the client-side layered services (e.g., naming service, token
2500 service, etc.). There are two reasons for doing this:
2502 1. It reduces the size of ACE for many common usecases (i.e.,
2503 most people aren't using the naming service or the token
2504 service). Any future layered services in ACE will be placed
2505 into the libACE_svcs library rather than libACE.
2507 2. It works around annoying compiler bugs with lame compilers
2508 like HP/UX C++. Now, if those compiles can't compile the
2509 token service (which is very template intensive) it won't
2510 affect the core ACE library components. This improves the
2513 * Added -lACE_svcs to the ./apps/{Token_Server,Name_Server} and
2514 ./examples/{Tokens,Naming} Makefiles to account for the new
2515 libraries. Note that no source code changes are required...
2517 Fri Mar 15 00:03:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2519 * apps/Name_Server/server/Name_Handler.cpp (recv_request): Fixed
2520 the same problem as occurred in Token_Handler (these both come
2521 from the same source...).
2523 * apps/Token_Server/Token_Handler.cpp (recv_request): There was a
2524 subtle bug in the Token_Handler that stems from my old code.
2527 n = this->peer_.recv ((void *) (((char *) &this->token_request_)
2528 + sizeof (ACE_UINT32)),
2531 This should actually be:
2533 n = this->peer_.recv ((void *) (((char *) &this->token_request_)
2534 + sizeof (ACE_UINT32)),
2535 length - sizeof (ACE_UINT32));
2537 since length was read already. The old way tried to read 4
2538 bytes too much. Thanks to Jesper for noticing this.
2540 * ace/Connector.cpp (connect_svc_handler): Modified the connector
2541 so that it automatically calls the close () method of the
2542 Svc_Handler when the connection fails abortively. This makes
2543 the semantics the same for synchronous and asynchronous
2544 connection invocation modes. Thanks to Irfan for insisting on
2547 * apps/Token_Server/Token_Acceptor.cpp (handle_input): Changed
2548 return type from int to ACE_HANDLE for NT compatibility. Thanks
2549 to Jesper for this insight.
2551 * ace/OS.h: The defines for ACE_LACKS_MODE_MASKS (OS.h) were only defined
2552 when !ACE_WIN32. This has been fixed. Thanks to Irfan for
2555 * ace/OS.i (mmap): made a small change to ACE_OS::mmap to fix NT
2556 portability problem (new variable added:nt_flags). Thanks to
2557 Irfan for spotting this.
2559 * ace/Local_Tokens.h: Added #include "ace/Map_Manager.h" after
2560 line 41 in Local_Tokens.h to allow ACE to compile correctly with
2561 the horrid HP/UX compiler. Thanks to Neil Cohen for figuring
2562 this out (what a trooper!).
2564 * ace/Local_Tokens.cpp (ACE_TPQ_Entry *): Replace
2566 return ACE_TSS<ACE_TPQ_Entry>::operator ACE_TPQ_Entry *();
2570 return (ACE_TPQ_Entry *) (*((ACE_TSS<ACE_TPQ_Entry> *) this));
2572 to work around problems with MSVC++ 4.0 when the browse option
2573 is enabled. Thanks to Kirk Sinnard <1764@mn.lawson.lawson.com>
2576 * ace/config-sunx86-sunc++-4.x.h: Swapped the lines
2578 // Compiler/platform supports SVR4 signal typedef.
2579 //#define ACE_HAS_SVR4_SIGNAL_T
2580 #define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES
2584 // Compiler/platform supports SVR4 signal typedef.
2585 #define ACE_HAS_SVR4_SIGNAL_T
2586 //#define ACE_HAS_CONSISTENT_SIGNAL_PROTOTYPES
2588 to avoid an error using ProWorks C++ 4.0.1 (w/ patches) which
2589 blow up in the Signal.x stuff with a prototyping error. Thanks
2590 to John P. Hearn <hearn_j@sat.mot.com> for this recommendation.
2592 * ace/Shared_Memory.h: The conditional compilation wrapper was out
2593 of date, so I renamed it. Thanks to Alex V Maclinovsky
2594 <alexm@teltrunk1.tait.co.nz> for reporting this.
2596 Thu Mar 14 23:18:59 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2598 * ace/Thread.h: There was a bug in the ACE_Thread class. I
2599 attempted to make the class uninstantiable by making the
2600 constructor private. However, the statement was:
2605 which is not the definition of the ctor! The code compiled
2606 since it thinks Thread is a member function. As a result, you
2607 could instantiate a object of ACE_Thread class, but no longer...
2608 Also added this to the !defined (ACE_HAS_THREADS) arm of the
2609 conditional compilation. Thank to Sandeep Joshi
2610 <sandeepj@emailbox.att.com> for noticing this.
2612 * ace/Log_Record.i (decode): Fixed a stupid typo where htonl
2613 (this->length_) should have been htohl (this->length_)...
2614 Thanks to Audun Tornquist <Audun.Tornquist@iu.hioslo.no> for
2617 Tue Mar 12 14:51:39 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
2619 * ace/Name_Request_Reply.cpp (decode): Added ntohl and htonl calls
2620 wherever data was being exchanged.
2622 Sat Mar 9 17:49:51 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
2624 * ace/OS.i (cond_wait): Updated the Win32 implementation to
2625 correspond precisely with the UNIX semantics where the mutex is
2626 always reacquired even when errors occur.
2628 Mon Mar 4 23:03:37 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
2630 * INSTALL: updated the win32 to describe building test
2633 Mon Mar 4 16:17:05 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
2635 * ace/Local_Name_Space.cpp (resolve): Fixed a small bug. The type
2636 field in resolve was copying extraneous stuff (because of being
2637 kept around as a wchar_t). So I added a new method to the class
2638 ACE_NS_String called len() which simply returns len_. Using this
2639 I can now do a strncpy of len bytes for type (instead of a
2640 simple strcpy) and then null-terminate the string to remove the
2643 Thu Feb 29 23:41:04 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
2645 * ace/Token_Request_Reply.cpp: Fixed a byte-order bug which was
2646 showing up on intel platforms.
2648 * ace/Remote_Tokens.cpp: Fixed a race condition in
2649 ACE_TSS_Connection which was munging mt token server clients.
2651 * examples/Tokens/mutex/*: The Token Server example applications
2652 now use ACE_Thread_Manager, which should make them portable to
2655 * apps/Token_Server/Token_Server.cpp: The Token Server is now a
2656 Service_Object which can be dynamically linked.
2658 * ace/OS.i: Win32 ACE_OS:: signal methods now return 0 instead of
2659 -1. So, calls to signal code succeed, but do nothing useful.
2661 Thu Feb 29 20:38:32 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2663 * apps/Logger/Server_Daemon/Server_Logger.cpp
2664 (handle_logging_record): There was a typo where
2665 ACE_LACKS_STATIC_DATA_MEMBER_TEMPLATES was incorrectly spelled.
2666 This caused problems on HP/UX. Thanks to Neil Cohen for
2669 Wed Feb 28 11:41:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2671 * ace/Mem_Map.cpp: Fixed a nasty bug with Win32 memory mapping...
2672 It turns out we need to be very careful when remapping a
2673 previously mapped region if the MapViewOfFile we're trying to
2674 establish *grows* beyond what was originally mapped with
2675 CreateFileMapping(). The new scheme seems to work correctly
2676 with both UNIX and Win32.
2678 * ace/OS.h: apparently when using MFC library functions it
2679 is not possible to include windows.h. Instead, users
2680 must include AFX.h. Therefore, I've modified OS.h to
2681 include the following:
2683 #if !defined (__AFX_H__)
2684 #include <windows.h>
2685 #endif /* __AFX_H__ */
2687 Thanks to Patty Genualdi (genualdp@agcs.com) for pointing this
2690 * ace/Memory_Pool.cpp: Modified init_acquire() so that it calls
2691 ACE_Mem_Map::open() rather than ACE_Mem_Map::map() the first
2692 time. This ensures that the file is mapped correctly.
2694 * ace/Mem_Map: Added a new method called open() that creates/opens
2695 a file without actually mapping it.
2697 * ace/SOCK_Dgram_Mcast.cpp (make_multicast_address): Added
2698 new support for Windows NT.
2700 * ace/Memory_Pool: reimplemented ACE_MMAP_Memory_Pool so that uses
2701 ACE_Mem_Map. This ensures that we can leverage all the work
2702 that went into making ACE_Mem_Map work on Win32.
2704 * ace/Memory_Pool.cpp (map_file): Modified the code so that we
2705 always unmap the file before trying to remap it. This avoids
2706 problems with Win32...
2708 * ace/Mem_Map: Modified the implementation of ACE_Mem_Map so that
2709 it takes advantage of the improved features in ACE_OS::mmap.
2710 Also added new a method that returns the memory-mapped addr more
2713 * ace/OS: Modified the ACE_OS::mmap() method so that it is more
2714 efficient for remapping files on Win32.
2716 * ace/OS.h: renamed the type QWORD to ACE_QWORD to avoid namespace
2717 pollution. Thanks to Patty Genualdi (genualdp@agcs.com) for
2720 * ace/OS.h: Changed the value of the SIGPIPE emulation for Win32
2721 to match the UNIX value in order to avoid problems. Thanks to
2722 Jesper for noticing this.
2724 * apps/Token_Server: Fixed misuse of int for ACE_HANDLE in various
2725 places. Thanks to Jesper for noticing this.
2727 * Renamed the ./tests directory to ./examples to make way for the
2728 new ACE regression tests. These tests will go into the new
2731 * ace/Mem_Map.cpp: Added a destructor and a close() method that
2732 closes down the file HANDLE if we allocated it. This is useful
2733 to prevent descriptor leaks. Thanks to Irfan for suggesting
2736 * ace: Made a number of changes to remove unreferenced parameters
2737 from ACE methods. This eliminates zillions of warning from the
2738 HP/UX compiler. Thanks to Neil Cohen for reporting this.
2740 * ace/Local_Name_Space.cpp (resolve): revised some code to work
2741 around bugs with the HP/UX compiler... Thanks to Neil Cohen for
2744 Tue Feb 27 21:06:09 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2746 * ace/OS.i: The Win32 CreateFile does not handle the return you
2747 would expect when the file exists. You would expect EEXISTS (17
2748 in UNIX) but the GetLastError is set to 80
2749 (ERROR_FILE_EXISTS). Therefore, I changed ACE_OS::open to map
2750 ERROR_FILE_EXISTS onto EEXIST. This is only a partial solution,
2751 however. There must be a better way to handle this!
2753 * ace/Mem_Map.cpp (ACE_Mem_Map): Fixed a bug with one of the
2754 ACE_Mem_Map destructors that was causing problems due to the
2755 fact that base_addr_ wasn't being initialized to 0. Thanks to
2756 Karlheinz for noticing this.
2758 * ace/Signal.i: signals on AIX cannot use sigprocmask() in any
2759 multithreaded programs. Instead, the call
2760 ACE_OS::thr_sigsetmask() should be used since it is used to
2761 update the thread signal mask. This comes up only in the
2762 Sig_Guard constructor and destructor. Therefore, I #ifdef the
2763 call under the ACE_MT_SAFE macro, using sigprocmask() in the
2764 #else case. Thanks to Chris Lahey for reporting this.
2766 * tests: removed all uses of ACE_OS::join (0, ....) in ACE and
2767 replaced them with ACE_Thread_Manager::wait() calls. This
2768 ensures that the ACE code is portable to Win32 and POSIX
2771 * ace/Dynamic_Service.cpp: Added a #include of
2772 "ace/Service_Config.h" to work around problems with HP/UX.
2773 Thanks to John Morey for reporting this.
2775 Sun Feb 25 12:10:38 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2777 * apps/Token_Server: changed the name token_server.cpp to main.cpp
2778 to avoid a name clash on Win32...
2780 * man/man3: updated all the ACE manual pages to reflect the
2781 most recent changes.
2783 * ace/OS.i: Implemented the cond_timedwait() method correctly in
2784 ACE_OS. This method should now do the right thing with respect
2785 to blocking, polling, and timewaits for Win32.
2787 * ace/OS.i: Modified the Win32 implementation of all the
2788 socket-related wrappers in ACE_OS. The new implementation very
2789 cleverly sets errno to the result of WSAGetLastError() if a
2790 socket-related call fails. Since all of the WinSock errors are
2791 mapped into their equivalent UNIX errno values this enables
2792 socket applications to work portably for UNIX and Win32.
2794 * ace/Malloc_T.cpp (ACE_Malloc): Improved error reporting for
2795 cases where the Memory_Pool::init_acquire() fails (e.g., if the
2796 backing store was already created by another user and we don't
2797 have permission to access it...).
2799 * ace/Task: modified Task.h so that it is no longer necessary to
2800 write #include "ace/Synch_T.h" in order to use ACE_MT_SYNCH,
2803 * ace/SOCK.cpp (DllMain): Added a clever "Schwartz counter" to
2804 make sure that the WinSock library is correctly initialized,
2805 even if we're not using ACE as a DLL!!!
2807 * tests/Mem_Map/file-reverse: got the file reverse test program
2808 working. The ACE_Mem_Map class should now be ported to Win32...
2810 * ace/OS.i (open): Changed how the O_CREAT flag was handled
2811 to give it UNIX semantics...
2813 Sat Feb 24 12:55:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2815 * ace/UPIPE_Stream.cpp (recv): Fixed a signed/unsigned mismatch.
2816 There should be no more mismatches in ACE...
2818 * ace/Name_Proxy.cpp (recv_reply): Fixed a signed/unsigned
2821 * ace/Message_Block.cpp (copy): Fixed a signed/unsigned mismatch.
2823 * ace/INET_Addr.cpp (get_host_name): Changed the type of the
2824 hostnamelen parameter from int to size_t to be more "abstract."
2825 This will also prevent a warning from the MSVC++ compiler.
2827 * apps/Logger/Client_Daemon/Client_Logger.i: Fixed a braino with
2828 network byteoder that was causing Client_Logger::send() to fail
2829 on INTEL boxes. Thanks to Bryon G. Rigg
2830 <bgrigg@opus.bcbnet.com> for finding this.
2832 Fri Feb 23 01:59:34 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2834 * ace/OS.i: Enhanced mmap() to give the same semantics as UNIX
2835 mmap() by using MapViewOfFileEx(). Also greatly improved the
2836 UNIX emulation capabilities so that mmap() now has the same API
2839 * ace/Time_Value: Added functions to constructor and conversion
2840 from/to Win32 FILETIME. This enables us to reuse those 100ns
2841 conversions in ACE_Profile_Timer.
2843 * ace/Time_Value: Fixed a problem with these:
2845 // True if tv1 < tv2.
2848 operator < (const ACE_Time_Value &tv1,
2849 const ACE_Time_Value &tv2)
2851 ACE_TRACE ("operator <");
2855 This should be "tv2 >= tv1". Same problem was fixed with
2858 * ace/Profile_Timer.i, fixed the following:
2860 this->end_time_ = ACE_OS::gettimeofday ();
2861 this->last_time_ = this->end_time_;
2862 this->last_usage_ = this->end_usage_;
2863 ACE_OS::getrusage (RUSAGE_SELF, &this->end_usage_);
2865 This will overwrite end_time before it is saved to
2868 * tests/Threads: Added Jesper's test for readers/writers locks.
2869 The test adds a number of reader and writer threads. When
2870 active, writers modify a shared variable and verify that only
2871 one writer and no readers are active. When active, readers
2872 check that no writers are active and that the shared data is
2873 never changed. The test passes for different ratios of
2874 readers/writers, and debug output shows that several readers are
2875 allowed simultaneously. Or, in other words, we have an
2876 indication that it should work.
2878 * ace/OS.i: Added Win32 implementations of getpid(), fork(),
2879 lseek(), dup(), cond_timedwait (), getrusage ()
2881 * ace/OS.i: Modified all the ACE_OS::str* routines so that they no
2882 longer do an ACE_OSCALL_RETURN. This can lead to weird bugs...
2883 Thanks to Jesper for noticing this.
2885 * ace/config-sunos4-sun4.1.4.h: Added a new config file that
2886 should work with SunOS 4.x... Also added support for SunOS
2887 4.1.4. Thanks to Mick Adams (eeimas@eei.ericsson.se) for help
2890 Thu Feb 22 18:58:36 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
2892 * tests/Naming/Client/Name_Service.h (ACE_Service_Object):
2893 Modified test application to make use of ACE_Dynamic_Service.
2895 * ace/Dynamic_Service.h: Added a new class called Dynamic_Service
2896 which provides a general interface to add and retrieve arbitrary
2897 things into the ACE service repository.
2899 * apps/Name_Server/README: Rearranged files so that Name_Server
2900 and Name_Handler are now contained in the server directory under
2901 apps and are no longer under /ace. Also, the Dump_Restore
2902 directory has been moved under /tests/Naming.
2904 Thu Feb 22 01:56:46 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2906 * ace/INET_Addr.cpp (set): Fixed a byteorder bug in ACE_INET_Addr
2907 that was causing problems when ACE was used on Win32 running on
2910 * ace/Mem_Map.cpp (map_it): Fixed ACE_Mem_Map so that it will work
2913 * ace/SOCK_Stream.i: Changed the implementation of the Win32
2914 versions of send() and recv() so that they will never use the
2915 read() and write() calls. This works around limitations with
2916 Win32, which can't do a ReadFile() or WriteFile()
2917 *synchronously* with a SOCKET.
2919 * Changed all occurrences of read (0, ...) to read (ACE_STDIN,
2920 ...) and all occurrences of write (1, ...) to write
2921 (ACE_STDOUT, ...) in order to be compatible across UNIX and
2924 * tests/ASX/Event_Server: Fixed up all the socket I/O calls so
2925 that they use the WinSock send()/recv() methods rather than
2926 ReadFile and WriteFile...
2928 * ace/OS.i: Updated open() to correctly emulated UNIX open()
2931 * ace/OS.cpp (thr_exit): Added support to the NT port so that
2932 thr_exit() doesn't endup doing multiple deletions of the same
2933 object. Thanks to Karlheinz for this fix.
2935 * ace/OS.h: Moved the location of ACE_MAXCLIENTIDLEN so that
2936 MAXHOSTNAMELEN would be correctly visible for NT.
2938 * ace/Reactor.cpp: Added a temporary fix for the fact that
2939 writev() and readv() don't work correctly yet on NT. The
2940 solution is to replace write() with two writes() and readv()
2941 with two reads() for the Reactor's notification scheme. A
2942 better solution should be forthcoming.
2944 * ace/Reactor.cpp: Made sure to initialize the timer_queue_ to 0
2945 in the constructors so that the Reactor's destructor can avoid
2946 crashing horribly if the constructor fails. Thanks to Karlheinz
2947 for pointing out the need for this.
2949 * ace/SOCK.cpp: Added support for WSAStartup for using WinSock
2950 within the ACE_SOCK class.
2952 Wed Feb 21 21:05:55 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2954 * ace/ACE.cpp (bind_port): Made a quick fix to work around the
2955 fact that NT doesn't set errno...
2957 * ace/OS.i (mmap): Fixed a bug in mmap for the NT port. It should
2958 return MAP_FAILED on error rather than 0 to be equivalent to the
2959 UNIX version. Thanks to Irfan for spotting this.
2961 Mon Feb 19 00:31:42 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
2963 * ace/Typed_SV_Message.i (ACE_Typed_SV_Message): Modified the
2964 constructor calls so that length_ and max_size_ are correctly
2965 set when created. Thanks to Alexandre Karev
2966 <akg@na47sun05.cern.ch> for reporting this.
2968 * ace/SV_Message_Queue.i (remove): fixed bug in
2969 ACE_SV_Message_Queue::remove method where `internal_id_' member
2970 was modified *BEFORE* it was used the last time in
2971 ACE_SV_Message_Queue::control. Thanks to Alexandre Karev
2972 <akg@na47sun05.cern.ch> for reporting this.
2974 * ace/Typed_SV_Message.i (length): Fixed a minor typo that caused
2975 a bigger bug ;-). Thanks to Alexandre Karev
2976 <akg@na47sun05.cern.ch> for reporting this.
2978 * ace/OS.h: Added new macros that allow programs to portably
2979 access stdin, stdout, and stderr HANDLEs on Win32 and UNIX as
2982 #if defined (ACE_WIN32)
2983 #define ACE_STDIN GetStdHandle (STD_INPUT_HANDLE)
2984 #define ACE_STDOUT GetStdHandle (STD_OUTPUT_HANDLE)
2985 #define ACE_STDERR GetStdHandle (STD_ERROR_HANDLE)
2988 #define ACE_STDOUT 1
2989 #define ACE_STDERR 2
2990 #endif /* ACE_WIN32 */
2992 * ace/INET_Addr.i: modified the return value of get_port_number so
2993 that it returns the value in host byte order. This has actually
2994 been a latent bug in ACE for years, but it only surfaced
2995 recently after porting to NT on the Intel instruction set (which
2996 is "little-endian").
2998 * tests/ASX/Event_Server: Merged in the latest changes to the
2999 Event_Server tests, which enable it to compile on Windows NT.
3000 Now, I just need to get it working on NT...
3002 * Updated all of ACE to use the new ACE_ASSERT rather than assert.
3004 * ace/Assert.h: Added a new file and a new macro called
3005 ACE_ASSERT. This uses the ACE_Log_Msg Singleton to provide a
3006 more consistent means to do assertions. Thanks to Alexandre
3007 Karev <akg@na47sun05.cern.ch> for suggesting this.
3009 * ace/Log_Msg.cpp (log): added for method ACE_Log_Msg::log lines
3010 to skip the `sprintf' part for %N - file name and %l - line
3011 number format specifiers. Thanks to Alexandre Karev
3012 <akg@na47sun05.cern.ch> for reporting this.
3014 * Remote_Name_Space: Removed an initalizer to ACE_WString that was
3015 driving the HP/UX compiler nuts.
3017 Sun Feb 18 18:11:22 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3019 * ace/Synch.h (ACE_Null_Condition_Mutex): Added a missing body to
3020 the wait() method. Thanks to Byron Riggs for noticing this.
3022 Sat Feb 17 19:10:06 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
3024 * tests/Naming/README (client): Added description for new
3025 features, including support for list_values and list_types. Also
3026 added a small description about test programs using DLL.
3028 * ace/Name_Request_Reply.cpp (decode): Fixed a small bug in
3029 ACE_Name_Request::decode. type_ was not null terminated causing
3030 some garbage to be returned.
3032 Thu Feb 15 14:57:06 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
3034 * ace/Remote_Name_Space.cpp: Changed names of some parameters to
3035 comply with ACE syntax.
3037 Wed Feb 14 13:36:31 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
3039 * ace/Local_Name_Space.cpp (resolve): Type support has been added
3040 to Name_Server. A new class called ACE_NS_Internal was created to
3041 keep value and type information.
3043 Fri Feb 9 17:12:00 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3045 * "Officially" released ACE 4.0
3047 * ace/OS.i (sema_post): Fixed a bug in the NT port.
3049 #elif defined (ACE_HAS_WTHREADS)
3050 return ::ReleaseSemaphore (*s, 1, 0);
3051 #endif /* ACE_HAS_STHREADS */
3053 This returns 1 for success, and disturbs cond_broadcast...
3054 This was replaced by:
3056 #elif defined (ACE_HAS_WTHREADS)
3057 return ::ReleaseSemaphore (*s, 1, 0) ? 0 : -1;
3058 #endif /* ACE_HAS_STHREADS */
3060 Thanks to Jesper S. M|ller (stophph@diku.dk) for this.
3062 * ace/OS.i (cond_init): Fixed a bug in the NT condition synch
3063 code, as the initial count of the semaphore was 1. This gives an
3064 inconsistent condition: The first waiter went straight through...
3065 Change in ACE_OS::cond_init:
3067 if (ACE_OS::sema_init (&cv->sema_, 0, type, name, arg) != 0)
3070 Thanks to Jesper S. M|ller (stophph@diku.dk) for this.
3072 * ace/Singleton.cpp: Fixed a stupid bug that was caused by failure
3073 to #include "ace/Synch_T.h"... Thanks to Neil Cohen and Byron
3074 Riggs for giving me insights on what the problem was. ACE now
3077 Fri Feb 9 11:07:04 1996 Prashant Jain (pjain@merengue.cs.wustl.edu)
3079 * tests/Naming/server/Server_Test.cpp (init): Modified server
3080 tests to dynamically link Naming Services. Both client and
3081 server tests now make use of the ACE dynamic linking mechanisms.
3083 * ace/Local_Name_Space.cpp: Added list_values() to Name
3084 Server. The functionality is very similar to list_names (returns
3085 list of values that match a pattern).
3087 * tests/Naming/client/Client_Test.cpp (bind): Replaced all uses of
3088 cerr and cout with ACE_ERROR, ACE_ERROR_RETURN, and ACE_DEBUG.
3089 Split the file Client_Test.cpp into two files -- Client_Test.cpp
3090 and Name_Service.cpp (similarly .h file) each containing the
3091 corresponding class. Modified svc.conf to work with the changes.
3093 Thu Feb 8 02:05:26 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3095 * ace/Log_Msg.cpp (log): Enhanced the Log_Msg class so that it
3096 supports "nested" calls via %r. If SILENT mode enabled, nested
3097 outputs will enclosed in {..} brackets in thread-specific
3098 storage. Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for
3101 * ace/Synch: Added a new class called ACE_Null_Condition_Mutex.
3102 This is necessary to fix bugs with stupid compilers... Thanks
3103 to Zusman Mark <marklz@rotem.technion.ac.il> for reporting this.
3105 * tests/Naming/client: made a first pass implementation of a
3106 client application that dynamically links in a Naming_Context
3107 based on information provided by the svc.conf file.
3109 * ace/Name_Options: Fixed yet more problems with dynamic memory
3110 management. The old version didn't make a copy of the strings
3111 it was passed and this caused major problems.
3113 * ace: Fixed a whole slew of problems with the ACE Name Server
3114 stuff that arose from inconsistent use of const char * vs. char
3117 Wed Feb 7 00:58:45 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3119 * ace/CORBA_Handler.cpp (ACE_MT_CORBA_Handler): Added new
3120 enhancements to ACE_MT_CORBA_Handler to make it work correctly
3121 with Windows NT. Thanks to Irfan for making these changes.
3123 * ace/Connector.cpp (fini): Make another workaround for bugs with
3126 * ace/SPIPE_Connector.cpp (connect): Added a call to ACE_CLR_BITS
3127 (flags, O_CREAT) to make darn sure that the O_CREAT flag is not
3128 set. Thanks to Chris Cleeland for suggesting this.
3130 Tue Feb 6 01:40:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3132 * ace/OS.h: added a new prototype to OS.h that should help with
3133 portability to nasty platforms with broken rand_r() definitions.
3134 Thanks to Aurelio Nocerino
3135 <aurelio@irsipcs2-27-le0.irsip.na.cnr.it> for suggesting this.
3137 * Local_Tokens: Changed all uses of enumerals MAXTOKENNAMELEN and
3138 MAXCLIENTIDLEN to symbol #defines ACE_MAXTOKENNAMELEN and
3139 ACE_MAXCLIENTIDLEN. This works around bugs with HP/UX.
3140 Thanks to Neil Cohen for reporting this problem.
3142 * ChangeLog: split the ChangeLog files into 4 separate files --
3143 one for '96, '95, '94', and '93. Hard to believe I've been
3144 working on this stuff for so long!
3146 * ace/OS: Fixed the use of ::memset to replace sizeof buffer with
3147 sizeof (ACE_SERVENT_DATA) and sizeof (ACE_HOSTENT_DATA). This
3148 fixes bugs that surfaced on AIX. Thanks to Chris Lahey for
3151 * ace/SPIPE_Addr.cpp (ACE_SPIPE_Addr): Fixed a bug in
3152 SPIPE_Addr::SPIPE_Addr(const SPIPE_Addr&). What happens is that
3153 when the size is calculated it does not take into account the
3154 required zero byte at the end of the rendezvous_ member. Thanks
3155 to Chris Cleeland <chris@envision.com> for reporting this.
3157 * ace/Local_Tokens: Had to move all ACE_Token_Proxy methods from
3158 Local_Tokens.i to Local_Tokens.cpp and remove INLINE - otherwise
3159 gcc reported them as undefined methods during linkage stage.
3160 Thanks to Zusman Mark <marklz@rotem.technion.ac.il> for
3163 * ace: Changed ACE_Name_Request_Reply::LAST to
3164 ACE_Name_Request_Reply::MAX_ENUM to avoid problems with name
3165 conflicts on OSF/1. Thanks to Eshel Liran
3166 <liran@bimacs.cs.biu.ac.il> for suggesting this.
3168 * ace/Synch_T: Fix all definitions of ACE_Atomic_Ops so that they
3169 compile correctly on platforms that lack threads! Thanks to
3170 Alexandre Karev <akg@na47sun05.cern.ch> for noticing this.
3172 * include/makeinclude: Added a new config file from Bryon G. Rigg
3173 <bgrigg@opus.bcbnet.com>, which should allow ACE to build on
3176 * ace/Remote_Tokens.cpp: Moved ACE_TSS_Connection to
3177 Remote_Tokens.h to avoid problems with AIX. Thanks to the
3178 ever-vigilant Chris Lahey for reporting this.
3180 Mon Feb 5 23:34:42 1996 Tim H. Harrison (harrison@lambada.cs.wustl.edu)
3182 * Added CORBA_Ref.h which contains the new class ACE_CORBA_Ref.
3183 This class provides a nice wrapper for making the use of Orbix
3184 object references more transparent. This is done by automating
3185 the release and duplicate calls.
3187 Mon Feb 5 15:43:17 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3189 * ace: added Prashant's latest changes to the Name_Handler*,
3190 Naming_Context*, and Remote_Name_Space*. These changes make it
3191 possible to retrieve lists of values based on a pattern, which
3192 can be a regular expression.
3194 * Moved the apps/Name_Server/Client-Server tests into tests/Naming
3195 and most of the apps/Token_Server/* tests into tests/Tokens to
3196 conform to Karlheinz's testing style.
3198 * ace: Modified a number of files in ACE to make it compile
3199 correctly with MSVC++ 2.0.
3201 Sun Feb 4 23:58:43 1996 Douglas C. Schmidt (schmidt@mambo.cs.wustl.edu)
3203 * ace/Reactor: Generalized ACE_Null_Callback to work correctly
3204 with Windows NT (which lacks pipes). The new design uses the
3205 ACE socket wrappers for NT. It requires very few changes to the
3206 code to handle NT now! Also changed the name to
3207 ACE_Notification_Handler, which is more descriptive.
3209 Sun Feb 4 14:47:50 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3211 * ace/Remote_Tokens.cpp: Reworked ACE_Singleton to avoid
3212 portability problems on compilers like GCC.
3214 Thu Feb 1 12:47:46 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3216 * ace/Remote_Tokens.cpp: Generalized the parameters passed into
3217 ACE_Singleton so they would compile on HP/UX and other platforms
3218 that lack threads. Thanks to Neil Cohen for noticing the
3221 Wed Jan 31 22:49:13 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3223 * ace: Modified a number of minor things in ACE to get it to
3224 compile successfully with Windows NT MSVC++ 4.0. Updated the
3225 INSTALL file to explain this process better...
3227 Tue Jan 30 01:12:07 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3229 * ace/CORBA_Handler.cpp: changed things so that no diagonistic
3230 messages are printed.
3232 * Regenerated all the ACE manual pages to bring them up to date
3233 with the recent changes.
3235 * ace/Malloc.h: Modified the ACE_Malloc header file so that it
3236 works correctly when ACE_MALLOC_STATS is enabled. Thanks to
3237 Alexandre Karev <akg@na47sun05.cern.ch> for reporting this.
3239 * ace/OS.cpp (mutex_lock_cleanup): removed the leading & before
3240 p_lock. Thanks to Chris Lahey for noticing this.
3242 * ace: Added the new ACE_Singleton class. This class uses the
3243 Adapter pattern to turn ordinary classes into Singletons
3244 optimized with the Double-Check pattern.
3246 * Added Tim's latest Token Server changes (which include support
3247 for local and remote mutexes and readers/writer locks) and
3248 Prashant's latest Name Server changes (which allows the contents
3249 of a Name Server to be dumped and restored to/from an ASCII
3252 Mon Jan 29 02:22:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3254 * ace/Handle_Set: Changed MAX_SIZE and WORD_SIZE to MAXSIZE and
3255 WORDSIZE to avoid name collisions with HP/UX. Thanks to Byron
3256 Rigg <bryon_rigg@mail.telecorpsys.com> for suggesting this.
3258 * ace/Time_Value.h: Added a new config symbol ACE_HAS_SVR4_TIME to
3259 differentiate between UNIX platforms that support "POSIX_TIME"
3260 (i.e., timespec_t) and those that support "SVR4_TIME" (i.e.,
3261 timestruc_t). This is necessary to work around HP/UX... Thanks
3262 to Byron Rigg <bryon_rigg@mail.telecorpsys.com> for suggesting
3265 * ace/config-hpux-10.x.h: config-hpux.h has now been renamed to
3266 config-hpux-10.x.h and config-hpux-9.x.h. Thanks to Byron Rigg
3267 <bryon_rigg@mail.telecorpsys.com> for suggesting this.
3269 * ace/Synch_T: Added a new method called ts_get() and made both
3270 the operator-> and operator TYPE * call this. I hope this will
3271 fix a bug with HP/UX reported by Neil Cohen...
3273 * ace/OS.i (dlclose): Added Win32 support for dlclose(). Thanks
3274 to Todd L. Montgomery <tmont@cerc.wvu.edu> for pointing the way
3277 * ace: Split off the old class ACE_Dynamically_Allocated, renamed
3278 it ACE_Dynamic, put it in a separate file called Dynamic.*.
3279 This is necessary to solve nasty multiple definition problems
3280 with compilers that require the source of template.
3282 * ace/Synch_T: moved
3284 template <class TYPE> TYPE *
3285 ACE_TSS<TYPE>::make_TSS_TYPE (void) const
3290 out from condition compilation block
3292 #if (defined (ACE_HAS_THREADS) && defined(ACE_HAS_THREAD_SPECIFIC_STORAGE))
3294 in file Synch_T.cpp. This class member called in many other
3295 places regardless ACE_HAS_THREADS and
3296 ACE_HAS_THREAD_SPECIFIC_STORAGE defined or not...
3298 * ace/Name_Handler.cpp: Changed the use of the "inherited" typedef
3299 to fully expand to ACE_Svc_Handler<ACE_SOCK_STREAM,
3300 ACE_NULL_SYNCH>. This is necessary to workaround bugs with AIX.
3301 Thanks to Chris Lahey for reporting this.
3303 * tests and apps: Fixed an odd problem that only surfaced recently
3304 with GNU G++. Apparently, it doesn't like function-style casts
3305 of the form ACE_SignalHandler (foo), but will accept
3306 (ACE_SignalHandler) foo. Since both approaches are equally good
3307 for what I'm doing, I've updated all the code in ACE to be more
3310 Sun Jan 28 12:24:58 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3312 * tests/Shared_Malloc/test_malloc.cpp (spawn): when forming
3313 argv[] for execv, moved
3315 argv[ ... ] = Options::instance ()->debug () ? "-d" : "";
3317 to the end of the vector just before terminator. This will
3318 allow to pass rest of arguments to exec if -d switch not
3319 specified. Thanks to Alexandre Karev <akg@na47sun05.cern.ch>
3322 * tests/Shared_Malloc/Malloc.cpp: To avoid conflict with
3323 ACE_DEFAULT_SEM_KEY in OS.h changed SEMA_KEY value in
3324 tests/Shared_Malloc/Malloc.cpp to ACE_DEFAULT_SEM_KEY + 1.
3325 Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for reporting
3328 * ace/SV_Semaphore_Complex.i: Changed all arguments in calls like
3330 this->acquire( n+2 )
3332 this->tryacquire( n+2 )
3336 this->tryacquire( n )
3338 Since the semaphore number is incremented by 2 in
3339 SV_Semaphore_Complex::acquire
3341 SV_Semaphore_Complex::tryacquire
3343 when SV_Semaphore_Simple::(acquire/tryacquire) is called.
3344 Thanks to Alexandre Karev <akg@na47sun05.cern.ch> for pointing
3347 Sat Jan 27 16:14:27 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3349 * ace/Read_Buffer: Added a new component that efficiently reads in
3350 an artibrarily large buffer from a file up to an including a
3351 termination character. Also performs search/replace on single
3352 occurrences a character in the buffer using the priniciples of
3353 Integrated Layer Processing.
3355 Fri Jan 26 12:01:06 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3357 * ace/Thread_Manager: Made a small change to workaround the use of
3358 a struct type for thread_t and hthread_t in HP/UX. Thanks to
3359 Bryon Rigg <bryon_rigg@mail.telecorpsys.com> for noticing this.
3361 Thu Jan 25 19:54:01 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3363 * ace/Svc_Handler: Added some minor changes to account for
3364 limitations with GNU G++. I think the new implementation will
3365 be portable across all C++ platforms.
3367 * ace/SV_Semaphore_*: Widened the interface of SV_Semaphore*
3368 classes to include a flags parameter. This can be used to pass
3369 in SEM_UNDO, which is important in many applications. Thanks to
3370 Andrew Gilbert <agilbert@csci.csc.com> for suggesting this.
3372 * ace/Synch_T.cpp: We are forced to "cast away const" inside of of
3373 the ACE_TSS const methods in order to make the ACE_Guard work.
3374 The right thing to do would be to make the lock "mutable" but
3375 that's hopelessly non-portable.
3377 Thu Jan 25 14:34:12 1996 Douglas C. Schmidt (schmidt@merengue.cs.wustl.edu)
3379 * ace/Log_Msg: Fixed a minor bug in ACE_Log_Msg that kept
3380 resetting the restart and iostream value no matter what we'd set
3381 it to before. Thanks to Prashant for finding this.
3383 * bin: Fixed up the Makefile process for the clone program. Now
3384 it builds without having to depend on ACE. Thanks to Brad Brown
3385 (bbrown@rdxsunhost.aud.alcatel.com) for suggesting this.
3387 * ace/Synch: Modified ACE_Condition*.remove so that cond_destroy()
3388 is called in a loop if the condition variable is BUSY. This
3389 avoids a condition where a condition is signaled and because of
3390 some timing problem, the thread that is to be signaled has
3391 called the cond_wait routine after the signal call. Since the
3392 condition signal is not queued in any way, deadlock occurs
3393 unless this loop is used. Thanks to Chris Lahey for pointing
3396 * ace/CORBA_Handler: Made all the methods in ACE_CORBA_Handler
3397 private to make sure that users don't inherit from this class!
3398 Instead, the ACE_MT_CORBA_HAndler and ACE_ST_CORBA_Handler
3399 should be used as Singletons.
3401 * ace/CORBA_Handler: Added new support for Orbix on Windows
3402 NT. This requires clever use of macros in order to handle
3403 inherent differences between generated code.
3405 * ace/Svc_Handler: Added a clever idiom that transparently checks
3406 if we were allocated dynamically. This information is used by
3407 the <destroy> method to decide if we need to delete <this>...
3408 The idiom is based on a paper by Michael van Rooyen
3409 (mrooyen@cellnet.co.uk) that appeared in the April '96 issue of
3410 the C++ Report. We've spruced it up to work correctly in
3411 multi-threaded programs by using our ACE_TSS class.
3413 * ace/config-win32-msvc4.0.h (ACE_LACKS_RECVMSG): Fixed a typo
3414 in the MSVC++ config files.
3416 Thu Jan 25 02:59:22 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3418 * Finally got the frigging library built on SGI. This was a chore
3419 due to compiler bugs, but at least it's another datapoint for
3420 successful cross-platform building...
3422 Wed Jan 24 00:10:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3424 * ace/Time_Value.cpp (operator-=): Changed operator += and
3425 operator -= to use const ACE_Time_Value & rather than
3426 ACE_Time_Value &. Thanks to Alex V Maclinvosky for noticing
3427 this. In addition, also changed *all* ACE_Time_Value parameters
3428 to be const ACE_Time_Value &. This should reduce the number of
3429 excess constructors called...
3431 * ace/OS: Added Chris Lahey's latest changes that introduce POSIX
3432 pthread cancellation cleanup handlers. Also added an herror()
3433 function that is comparable to perror().
3435 * ace/OS: (thr_join): Added a new version of thr_join() which
3436 works for Windows NT. Windows NT requires a HANDLE, which is
3437 fundamentally incompatible with other things...
3439 * ace/Thread_Manager: added two new methods that return the
3440 ACE_Thread_Descriptor corresponding to either a thr_id or a
3443 * ace/Thread_Manager: Made the spawn() interface compatible with
3444 the other spawn() interfaces in ACE_OS and ACE_Thread by adding
3447 * ace/Log_Msg.cpp (log): Fixed things up so that we can now print
3448 out the thread id for all versions of threads!
3450 * ace/OS: Added a new overloaded version of ACE_OS::thr_self()
3451 that returns the "kernel" thread id. This is necessary on
3452 systems like NT and AIX, which separate kernel thread ids from
3453 user thread ids. Thanks to Chris Lahey for suggesting this.
3455 Tue Jan 23 01:17:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3457 * ace/OS.i (sigwait): Changed the parameter of sigwait() from
3458 const sigset * to sigset *. Thanks to Neil Cohen for chasing
3459 this down on SunOS 5.5....
3461 * ace/Malloc_T.cpp: Fixed a typo in bind() whereby
3462 the test if (duplicates == 0 || this->shared_find (name) != 0)
3463 should be if (duplicates == 0 && this->shared_find (name) != 0).
3464 Thanks to the ever vigilant Alexandre Karev
3465 <akg@na47sun05.cern.ch> for reporting this.
3467 * tests: Fixed all test programs that previously used the "execl"
3468 family of system calls to use the "execv" family instead.
3470 * ace/OS: Added support for the "execv" family of exec() system
3471 calls. Unlike the "execl" family, these calls are easy to
3472 support since they don't require variadic arguments. I've added
3473 the hooks for the "execl" family, as well, but haven't actually
3474 implemented them yet.
3476 * ace/Memory_Pool.cpp (ACE_Shared_Memory_Pool): Fixed a bug that
3477 was tickled when pool_name == 0. Thanks to Alexandre Karev
3478 <akg@na47sun05.cern.ch> for reporting this.
3480 * ace/OS.h: removed FD_SETSIZE from the ACE_WIN32 stuff since this
3481 is defined in winsock.h.
3483 * ace/OS.cpp (ACE_Spawn_Args): Added "f" to the parameter list.
3485 * ace/CORBA_Handler: Added a new macro called CORBA_T that masks
3486 the incompatibilities between the version of Orbix on NT and on
3489 * ace/OS.h: Added support for compilers (like NT) that don't
3490 support "mode masks" (these are used to give symbolic names for
3491 file creation modes passed to open() and creat().
3493 * ace/SString.cpp: Added Tim's new copy constructor code for
3494 SString.cpp. This doesn't appear to be strictly necessary , but
3495 it is more explicit and therefore it useful.
3497 * ace/Map_Manager.cpp: Fixed a bug in Map_Manager that was failing
3498 to call the placement new operator for every element in the map
3499 that was dynamically created by the allocator().
3501 * ace/Synch_T: Added Tim's new ACE_TSS implementation. This
3502 version is more flexible than the old one.
3504 Mon Jan 22 00:03:24 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3506 * ace/Time_Value.h: changed a few minor things to get this
3507 compiling again on NT. Thanks to Irfan for helping with this.
3509 * ace/Synch_Options: Changed all the "accessor" methods to be
3510 const member functions at the request of Irfan. I just know
3511 this is going to cause const cancer... ;-)
3513 * ace/Acceptor and Connector: Changed all parameters that take
3514 ACE_Synch_Options & to take const ACE_Synch_Options & at the
3517 * ace/OS.i (uname): Added rudimentary support for the uname()
3518 function for Windows NT. If anyone has suggestions on how to
3519 fill in all these fields portably please let me know!
3521 * ace/Connector.h: Changed a stray -1 to ACE_INVALID_HANDLE.
3522 Thanks to Irfan for noticing this.
3524 * ace/Profile_Timer.h: Added the keyword "public" to handle one
3525 arm of the conditional compilation that is only exercised on
3526 NT... Thanks to Irfan for noticing this.
3528 * ace/OS.i (mutex_init): Removed the call to
3529 pthread_mutexattr_setkind_np() it isn't in the final POSIX
3532 * ace/Reactor.cpp (unbind): Removed the ACE_MAX3 template function
3533 from OS.h and inlined its only use in the Reactor. This was
3534 causing problems with some C++ compilers. Thanks to Mark Zusman
3535 <marklz@topaz.technion.ac.il> for reporting this.
3537 * ace/OS.i: Fixed a number of omitted return results in
3538 gettimeofday() and ctime_r() that were masked by the
3539 ACE_OSCALL_RETURN macros. Thanks to Mark Zusman
3540 <marklz@topaz.technion.ac.il> for reporting these.
3542 * ace/config-linux.h: Added new symbolic constants to handle the
3543 fact that Linux seems to lack recvmsg(), sendmsg(), msync(), and
3544 madvise(). Thanks to Neil Cohen for noticing this.
3546 * include/makeinclude: Fixed all the *-orbix.GNU files to use
3547 $(ORBIX_ROOT)/lib rather than $(ORBIX_ROOT)/ace. Thanks to
3548 Pramod Kumar Singh <pramod@saturn.miel.mot.com> for reporting
3551 * ace/config*.h: Changed all typos of the form ACE_HAS_SVSV_IPC to
3552 ACE_HAS_SYSV_IPC. Thanks to Alexandre Karev
3553 <akg@na47sun05.cern.ch> for reporting this!
3555 * ace/OS: Changed the order of parameters passed to thr_create()
3556 to be consistent with all the spawn() and spawn_n() usages in
3557 ACE. Thanks to Chris Lahey for pointing this out.
3559 Sun Jan 21 15:06:15 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3561 * ace: Added a new "priority" parameter to the spawn() and
3562 spawn_n() methods in ACE_Thread and ACE_Thread_Manager. This
3563 allows us to pass the priority on down to thr_create(). Thanks
3564 to Chris Lahey for pointing this out. Note that this change
3565 required reordering the parameters so that the stack and
3566 stack_size parameters now come last for these methods. Since
3567 those are not likely to change much this is a good place to put
3568 them (i.e., at the end).
3570 * ace/Thread.i (spawn_n): Added a new overloaded spawn_n() method
3571 that accepts an array of thread_t's to be filled in. This is
3572 useful if you want to know the thread IDs of any threads
3575 * Changed ACE_OS::signal() to ACE_Sig_Action across all of ACE to
3576 be portable to pthreads implementations. Thanks to Chris Lahey
3577 for pointing this out.
3579 * ace/OS: Added a new set of OS C++ wrappers for POSIX pthread
3580 cancellation routines. Thanks to Chris Lahey for these.
3582 * ace/Thread: Added a new set of ACE C++ wrappers for POSIX
3583 pthread cancellation routines. Thanks to Chris Lahey for
3586 * ace/Map_Manager: Revised the Map_Manager::bind method. This has
3587 now been split into bind() and rebind() methods. The bind()
3588 method is very simple -- if you try to bind() to something that
3589 already exists you fail. The rebind() method allows you to
3590 atomically update existing values in a map. It also gives you
3591 back the existing values so that you can delete them if
3592 necessary. The Local_Name_Space::bind() and rebind() methods
3593 have been updated to use this new interface.
3595 * ace/Malloc_T.cpp (find): Fixed a typo -- find() should have set
3596 its pointer parameter to node->pointer_, rather than
3597 node->name_! This bug was revealed during testing of the ACE
3600 * ace/Local_Name_Space.cpp: Fixed bugs with computation of the
3601 size of ACE_NS_Strings -- they needed to count the wchar_t's
3602 correctly, along with several other minor fixes. These were
3603 revealed during testing of the ACE Name Server.
3605 * ace/SString.cpp: Fixed several bugs that prevented the
3606 assignment operators from working correctly. These were
3607 revealed during testing of the ACE Name Server.
3609 Sat Jan 20 08:33:54 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3611 * ace/Local_Name_Space.cpp (shared_bind): The args to to the
3612 NS_String constructors were not in the correct order:
3614 wchar_t *value_rep = (wchar_t *) (ptr);
3615 wchar_t *name_rep = (wchar_t *) (ptr + name_len);
3616 ACE_NS_String ext_id (name.fast_rep (), name_rep, name_len);
3617 ACE_NS_String int_id (value.fast_rep (), value_rep, value_len);
3621 ACE_NS_String ext_id (name_rep, name.fast_rep (), name_len);
3622 ACE_NS_String int_id (value_rep, value.fast_rep (), value_len);
3624 Thanks to Irfan for noticing this.
3626 * ace/OS.h: defined the following in ACE_OS:
3630 #define MS_INVALIDATE 0
3632 under NT so that calls to mmap will port transparently. Thanks
3633 to Irfan for suggesting this.
3635 Thu Jan 18 16:25:16 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3637 * ace: Added a new symbol that indicates if the platform supports
3638 the new BSD sin_len field of inet_addr.
3640 * ace/OS: added new support for AIX gethostbyaddr_r(),
3641 gethostbyname_r(), and getservbyname_r(). This fixes some
3642 problems caused by improper choice of buffer size. Also changed
3643 the INET_Addr.cpp file to use these new changes. Thanks to
3644 Chris Lahey for recommending these changes.
3646 Wed Jan 17 01:10:48 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3648 * ace/OS.i (printf): the ACE_OS::printf() function did not work.
3649 Needed to call vprintf() internally, not printf. Thanks to
3650 Chris Lahey for pointing this out.
3652 * Released version 4.0.
3654 * include/makeinclude: added the -lgen library to all the
3655 platform_sunos5.*.GNU files.
3657 * ace/Memory_Pool.cpp: removed the INLINE macros in Memory_Pool.cpp.
3658 Thanks to Alexandre Karev (karev@vxcern.cern.ch) for noticing
3661 * ace/Malloc_T.cpp: moved the comment "Ce n'est pas une catst"
3662 outside of the macro ACE_NEW_RETURN. The prepocessor truncates
3663 the macro expansion when it encounters the comment. Thanks to
3664 Greg Baker <GBaker@p01.az15m.iac.honeywell.com> for pointing
3667 * ace/Reactor.cpp (close): added "return 0" at the end of the
3668 close member function. The function is prototyped to return an
3669 int and the compiler expects a return outside of the if clause.
3670 Thanks to Greg Baker <GBaker@p01.az15m.iac.honeywell.com> for
3673 * ace/Stack.cpp (free_all_nodes): Removed a spurious ACE_OS that
3674 was stuck on the front of ::delete. Thanks to Greg Baker
3675 <GBaker@p01.az15m.iac.honeywell.com> for pointing this out.
3677 * ace/OS.i: Added extern "C" to the prototype for syscall in OS.i.
3678 Without it, you get unresolved symbols at link time. Thanks to
3679 Greg Baker <GBaker@p01.az15m.iac.honeywell.com> for pointing
3682 * ace/Message_Queue.cpp: Changed the return values for
3683 enqueue_head(), enqueue_tail(), dequeue_head(), and
3684 peek_dequeue_head() to return the number of messages that are
3685 still on the queue. This helps some algorithms perform better
3686 and avoid blocking unnecessarily. Thanks to Alex V Maclinvosky
3687 <alexm@teltrunk1.tait.co.nz> for suggesting this...
3689 * ace/Synch_T.cpp (ACE_Condition): Fixed a bug in
3690 ~ACE_Recursive_Lock and ~ACE_Recursive_Mutex that was causing
3691 the destructor to be called twice (once implicitly and once
3692 explicitly). Thanks to Chris Lahey for pointing this out.
3694 Mon Jan 15 12:44:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3696 * ace: Created a new config symbol called ACE_HAS_ALLOCA_H. This
3697 is required to differentiate between AIX and other versions of
3698 UNIX. Thanks to Chris Lahey for pointing this out.
3700 * ace: moved config-hpux.h to config-hpux-9.x.h in anticipation of
3701 the changes required to handle HP/UX 10.0!
3703 Sun Jan 14 23:38:23 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3705 * ace/OS.h (ACE_MAX3): Fixed the definition of ACE_MAX3 (it needed
3706 a return value of template type T). Thanks to Mark Zusman
3707 <marklz@topaz.technion.ac.il> for noticing this.
3709 * ace: Added a new section to all the template files called
3710 ACE_TEMPLATES_REQUIRE_SPECIALIZATION to deal with the screwy GNU
3711 G++ semantics that are required if you *don't* have the template
3712 repository patches. Thanks to Mark Zusman
3713 <marklz@topaz.technion.ac.il> for this.
3715 Fri Jan 12 00:47:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3717 * ace/Time_Value.h: #included <pthreads.h> to the Time_Value.h
3718 class so that it would be the first file included. This fixes a
3719 problem with AIX. Thanks to Chris Lahey for reporting this and
3722 * ace: Fixed a braino with the #ifdefs in SPIPE_Stream and
3723 SPIPE_Acceptor. These were checking for ACE_WIN32 rather than
3724 ACE_HAS_STREAM_PIPES. Naturally, that failed on versions of
3725 UNIX (e.g., Linux) that lack STREAM pipes! Thanks to Neil Cohen
3726 for taking time out of fighting blizzards to report this!
3728 * ace/Svc_Handler: Added a new method for handle_timeout, which
3729 shuts things down by default. Thanks to Irfan for suggesting
3732 * Fixed a minor problem caused when Tim added the Double-Check
3733 pattern to ACE_ODB...
3735 Thu Jan 11 01:48:02 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3737 * Integrated AIX fixes from Chris Lahey <clahey@ix.netcom.com>.
3738 These should allow ACE to build correctly using the AIX compiler
3739 and it's screwy template mechanisms!
3741 * ace: Fixed some minor bugs that caused problems when compiling
3744 Wed Jan 10 00:17:05 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3746 * ace/Trace.cpp: Fixed a typo that was causing problems when using
3747 ACE_TRACE (we were ending up with recursive tracing in the
3748 ACE_Trace class!). Thanks to Detlef for noticing this.
3750 * ace/ACE.cpp: Moved methods from ACE.i to ACE.cpp and removed the
3751 INLINE macro to deal with order of include problems with GNU
3754 Tue Jan 9 19:00:41 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3756 * ace/Task.i (flush): Added a check to make sure that msg_queue_
3757 != 0 before trying to close() the queue. This solves a problem
3758 if the queue has already been closed. Thanks to Alex V
3759 Maclinvosky <alexm@teltrunk1.tait.co.nz> for reporting this...
3761 * tests/ASX/Event_Server/Event_Server: Fixed minor bugs in
3762 Supplier_Router.cpp and Consumer_Router.cpp -- I was checking
3763 for this->getq (mb) > 0 rather than this->getq (mb) >= 0.
3764 Thanks to Alex V Maclinvosky <alexm@teltrunk1.tait.co.nz> for
3767 * ace/Synch_T.h: Commented out the ACE_ALLOC_HOOK stuff. This is
3768 causing order-of-include problems on HP/UX. Also moved the
3769 ACE_Null_Condition::wait() method to Synch_T.i to avoid the same
3770 problem. Thanks to Greg Baker
3771 <GBaker@p01.az15m.iac.honeywell.com> for pointing this out.
3773 Sun Jan 7 18:57:49 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3775 * ace/Makefile: Added the Dump file to ACE. Thanks to Tim for
3776 fixing this up to make it ready for prime time.
3778 * Thanks to Craig Rodrigues <rodrigc@ecf.toronto.edu> for sending
3779 me a new version of psnup that *finally* fixes the nasty
3780 problems with "4-up" printing of postscript! This makes it much
3781 easier to distribute ACE documentation...
3783 Sun Jan 7 18:31:07 1996 Tim H. Harrison (harrison@merengue.cs.wustl.edu)
3785 * ace: Used the "Double-Check" pattern to eliminate potential race
3786 conditions when using Singletons in multi-threaded programs.
3787 Classes affected included ACE_[MS]T_CORBA_Handler, Name_Options,
3790 Fri Jan 5 00:03:29 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3792 * ace/OS.i: Added the following to OS.i:
3794 #if defined (ACE_LACKS_SYSCALL)
3795 int syscall (int, ACE_HANDLE, struct rusage *);
3796 #endif /* ACE_LACKS_SYSCALL */
3798 This should fix some problems with HP/UX. Thanks to Walt Akers
3799 (akers@cebaf.gov) for pointing out the problem.
3801 * ace/Handle_Set: Fixed the Handle_Set conversion operator so that
3802 it returns fd_set * rather than ACE_FD_SET_TYPE *. Thanks to
3803 Walt Akers (akers@cebaf.gov) for pointing out the problem.
3805 * ace/Time_Value.h: I think I've fixed the problem with the order
3806 of #includes with respect to POSIX and SVR4 time. The trick was
3807 to put this test in ace/Time_Value.h and then to make sure that
3808 the ace/config.h file was included at this point! Also changed
3809 the symbol from ACE_HAS_POSIX_TIMERS to ACE_HAS_POSIX_TIME to be
3812 Thu Jan 4 23:16:59 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3814 * ace/OS.i (gettimeofday): Changed the implementation of
3815 gettimeofday() to use the ::_ftime call rather than the more
3816 complex ::GetSystemTime(), ::SystemTimeToFileTime() duo.
3818 Thu Jan 4 9:32:38 1996 Chris Lahey (clahey@ix.netcom.com)
3820 * ace/config-aix.h: added #define ACE_TEMPLATES_REQUIRE_SOURCE
3821 to make ACE work with AIX C++ compiler.
3823 * include/makeinclude/platform_aix.GNU:
3825 Added -qtempinc to the CPPFLAGS
3826 Removed the PIC= definition completely
3828 * ace/Task.h: ACE_Task::svc() should not be declared as a pure
3829 virtual, removed = 0.
3831 * ace/Map_Manager.cpp: in trybind() member function, the line
3832 int_id = ss.int_id_;
3834 int_id = search_structure[index].int_id_;
3836 Thu Jan 4 01:23:38 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3838 * ace/Map_Manager.cpp: Fixed a braino in Map_Manager -- didn't
3839 need the <index> parameter to shared_bind(). Thanks to Tim for
3842 * ace/Log_Msg.cpp (instance): Tim Harrison did a noble service to
3843 humanity by fixing a potential race condition in the instance()
3844 Singleton of ACE_Log_Msg.
3846 Wed Jan 3 00:49:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3848 * ace: Made some minor changes to fix portability problems with
3849 SGI. Fortunately, this should also fix some other problems with
3850 HP/UX another other non-thread platforms.
3852 * ace/ACE.cpp (format_hexdump): Added Todd Montgomery's amazing
3853 "format_hexdump" method to class ACE.
3855 Tue Jan 2 20:47:57 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3857 * ace/SV_Semaphore*: updated the interface of the _Simple and
3858 _Complex System V semaphore wrappers to include the _read() and
3859 _write() forms of acquire() and tryacquire(). Note that I've
3860 implemented these as calls to acquire() and tryacquire(), so
3861 they don't add any extra behavior. This is needed for interface
3862 conformance with other forms of ACE synchronization mechanisms.
3864 * ace/Time_Value.h: Changed the header to #include <sys/time.h>
3865 in order to work around nasty "order of include" problems.
3867 * tests: Created a new directory called Win32. This contains test
3868 programs that This directory contains test programs that have
3869 been compiled and tested successfully under Windows NT. As we
3870 get further along, we'll move this stuff into the general ACE
3871 $WRAPPER_ROOT/tests directory (since of course all ACE programs
3872 will run without any problems under Win32, right? ;-)). See
3873 the ./tests/Win32/README file for instructions on how to build
3876 * ace/Reactor.h: Moved the ACE_Handler_Repository out of the
3877 ACE_MT_SAFE section of the code. This was a "typo." Thanks to
3878 Walt Akers <akers@cebaf.gov> for reporting this.
3880 Mon Jan 1 01:18:12 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu)
3882 * ace/ACE.i: Moved the recv_n() and send_n() methods from ACE.cpp
3883 into ACE.i and set things so that if __INLINE__ is set then
3884 we'll inline those too!
3886 * ace: Irfan and I got the first major part of the Win32 to work
3887 finally! We made two socket programs (client and server) that
3888 talked to each other and to UNIX. Things are really starting to