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