File: ChangeLog

package info (click to toggle)
libape 1.0.0-3
  • links: PTS
  • area: main
  • in suites: potato
  • size: 1,572 kB
  • ctags: 1,343
  • sloc: sh: 7,342; cpp: 3,418; makefile: 117
file content (328 lines) | stat: -rw-r--r-- 14,668 bytes parent folder | download
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
Changes from 0.0.0 to 0.0.1

- re did tsw_cxx.m4 macro with ac_try_compile().  tsw_cxx.m4 now requires
  AC_CC_PROG to assure C compiler is set before C++ since other tests
  will typically depend on C alone.
- added tsw_timesys.m4 for time.h and sys/time.h mapping.
- added tsw_posix.m4 for posix test and unistd.h header.
- added tsw_pthread.m4 to detect libpthread, special headers, and to 
  determine means for portable setting of recursive mutex's.
- mutex.cpp now uses tsw_pthread.m4 analysis for setting mutex attributes.
- support for library searching based on different pthread implementations
  such as the FSU, DCE, and CMA versions of Posix thread support.
- thread.cpp uses alternate thread sleeping methods such as nanosleep and
  pthread_delay_np, and pthread_yield if available.
- thread.h and event.cpp fixed for pthread_cond_init() and
  pthread_cond_destroy().
- all copyright notices added.
- configure.in added TSW_LIB_PTHREAD 

Changes from 0.0.1 to 0.0.2

- Strange problem when calling 'Exit()'.  Since a 'Final()' method is
  still on the stack, and since pthread_exit() does not continue,
  having 'Exit()' delete itself before calling pthread_exit() causes
  a problem in that the 'Final()' method is invoked after the object
  is out of scope.  To solve this, the Exit methodology has been changed
  to a 'longjmp' which returns control to a modified _exec_thread handler
  that can correctly complete Final() and self delete the object before
  exiting through pthread_exit().  This also means that threads that
  implement Run() will, if Run() has a final return, also self delete.
- Much has changed in tsw_pthread.m4 to support scanning of the header
  files for identification of the method used for recursive mutexes.
  The overall structure of tsw_pthread.m4 has been cleaned up a lot both
  to reduce the number of tests needed and to make better use of caching.
- thread.cpp and mutex.cpp updated to reflect changes in tsw_pthread.m4
- All m4 tsw_... macros now use tsw_cv_... configuration variables.
- thread.h cleaned up.  Some members of class thread now public.
- New tsw_win32.m4 added for GNU Win32 cross-compile checks.
- Socket support has been begun.

Changes from 0.0.2 to 0.0.3

- Support for signal handler based pthread_cancel() support when feature
  is missing.
- Minor typo fixes in mutex.cpp.

Changes from 0.0.3 to 0.0.4

- new THREAD_FLAGS and THREAD_LIBS substitutions to provide selective
  thread support for use in Makefiles.
- -D_REENTRANT and -D_THREAD_SAFE part of THREAD_FLAGS.
- more old pthread support, including older pthread_setcancel and
  pthread_setasynchronous support when older libpthread.
- addition of tsw_socket.m4 tests.
- general cleanup of SIGCANCEL support when cancellation is not provided.
- new tsw_signal.m4 tests for sighandler_t return type, posix, etc. 
- setCancel now supports enable and disable of cancel states as logically
  associated with cancel mode setting.
- Initial and Final routines operate in cancel disabled state.
- new getCancel() member returns current cancel setting.
- Begining of 'descriptor' classes for base of Socket and Serial.
- Ability to overide/initialize thread cancel state in Initial().

Changes from 0.0.4 to 0.0.5

- socket address classes defined.
- MutexCounter class added.
- descriptor code removed.
- freebsd compile confirmed.

Changes from 0.0.5 to 0.0.6

- The 'main' thread that represents the first thread of the application
  can now be declared as a Thread(argc, argv).  This allows the main
  application thread to be derived as a thread classed object similar
  to any other thread.  
- There can only be 'one' instance of the 'main' thread.
- One can still create threads without using a 'main' thread object, but
  if a 'main' thread object is used, it must be created before any other
  threads.
- Common signal handling is now part of the thread class.  SIGINT,
  SIGTERM, and SIGHUP are initially declared to operate in only the
  main thread, since all are typically associated with 'daemon' processes
  (SIGHUP to re-read a config, SIGTERM and SIGINT to exit).  These and
  other signals are deliberately masked during sub-thread creation.
- setSignal() used to install common and interruptible handlers.
- OnSignal() holds handler for main thread signals.
- Sleep() now uses new ape_sleep() which provides signal safe sleeping for
  threaded apps.
- yield() and wait(signo_t) introduced as global functions.
- pdetach() added to enable entry into 'daemon' mode.

Changes from 0.0.6 to 0.0.7

- InetAddress cleaned up.  InetAddress used for binding, InetHostAddress
  used for connected sockets, BroadcastAddress used for broadcasting.
- InetAddress reduced to struct in_addr.
- Socket class created, and derived for UDPSocket and TCPSocket.
- Thread now supports a copy constructor which creates a new running
  thread.  If a "main" thread is used, it may never be copied.

Changes from 0.0.7 to 0.0.8

- Socket operator= now added to allow cloning (via dup()) of sockets.  
  This and the default Socket copy constructor will probably not be
  possible under winsock, though the TCPSocket copy constructor for
  'accepting' a new client should still work.
- member naming of event and semaphore classes simplified.
- mutex and event support for win32 completed.
- thread support began under win32 (this probably brings win32 up to posix
  at 0.0.3...)
- win32 socket code in sync with current posix socket code.
- added abstract "Buffer" class for model producer/consumer buffering.

Changes from 0.0.8 to 0.0.9

- Cleanup of m4 tests so non-threaded apps can be built alongside
  threaded ones.
- Abstract Buffer class re-designed.
- GNU getopt added to libAPE if not part of native system.
- getHost and getPeer now support initial "buffer" object.
- OnAccept() added to validate remote connection requests.
- "accept" through the copy constructor now supports OnAccept() request to
  enable the server TCPSocket to reject host specific connections.

Changes from 0.0.9 to 0.0.10

- logical operators for comparing and manipulating InetAddress and
  address masks.
- OnAccept, getHost and getPeer changed.
- SubnetAddress used as address range object.

Changes from 0.0.10 to 0.0.11

- forgot read/write calls...

Changes from 0.0.11 to 0.0.12

- added peek methods for MSG_PEEK.
- all failed socket constructors now also close the socket in derived
  classes.
 
Changes from 0.0.12 to 0.0,13

- fixed win32 build tree.

Changes from 0.0.13 to 0.0.14

- found that static member functions can be starting functions for new
  threads.  _thread_exec now gone.
- more "ITC" services including Pipe and FixedBuffer classes.

Changes from 0.0.14 to 0.0.15

- fixed Signal()'s use of RETSIGTYPE in thread.h.
- win32 I/O services in pipe externalized into fileio.h to prepare for
  Serial and File classes which also require "handle" based r/w calls
  under win32.
- "posix" tree low level file access classes added.

Changes from 0.0.15 to 0.0.16

- "posix" MappedFile class added for memory mapped file support.
- Serial class added.  This brings the "posix" source tree feature
  complete.
- Write operations for direct "string" parameters added.
- A single thread at a time can now use SIGALRM for timer support

Changes from 0.0.16 to 0.1.0

- Thread now includes suspend/resume functionality.
- Socket/Serial read/write now virtualized.
- Single signals are not portable out of Posix, a lot of the 'main'
  signal support has been removed.  There is now a SignalMain() as
  well as SignalParent(), and _main is gone along with the odd
  constructors and 'OnSignal()' stuff.
- Final() removed from the Thread class; we found the Final() could never
  be called correctly from egcs virtual tables because the virtual table
  resolves purely to the base class during the destructor.  Instead,
  ~Thread() is now virtualized, and one must call Terminate() at the
  front of the 'derived' destructor.  This also means the termination
  routine now runs in the remaining threads tid rather than the
  exiting thread.

  Hence, one would now commonly use in place of Final():

  Newclass:~Newclass()
  {
	Terminate();
	cleanup code...
  }

Changes from 0.1.0 to 0.1.1

- Lock code parsing cleaned up in Serial class.
- New "isThread" member to see if current thread is this object.
- Ability to pass a "starting" semaphore for initial thread creation.
  This resolves a strange problem, at least in egcs, that, like with
  the destructor, the virtual table of the object is not usable within
  the context of the object until the constructor (starting thread)
  completes.  Also, it enables a bunch of threads to be created without
  having to be started immediately.

Change from 0.1.1 to 0.2.0

- macros.h used to hold macro functions and common definitions.
- sleep(x) translation to ape_sleep(x) now makes sleep() operate
  in seconds rather than milliseconds.  The new delay(x) can be used
  to sleep milliseconds.
- as per suggestions by Carlos, all "APE" object names are hidden with
  a "ape_" name prefix.  The APE/namespace.h file may be added as the
  last APE include item to remove prefix translation.  This substitutes
  for "namespace" support, which is not implimented in universally in
  C++ compilers, and allows libape to be linked with other class
  libraries that may already have a "Serial", "Socket", etc.
- with the addition of the ape_ prefix internally, a new library set
  is now built that is named libape rather than libAPE, and all the
  version information has been reset.
- the win32 tree uses the "APE" namespace.
- The APE Thread class usually requires a starting semaphore.  If no
  starting semaphore is passed (NULL used) then thread activation
  requires a call to the "Start()" method.  This generally assures that
  the thread is never actually started before the constructor completes.
  Start can also be given a 'starting' semaphore to use.  Start will
  fail if the thread is already started.
- The starting 'semaphore' is now the first paramater of the Thread
  class.
- For self-terminating threads, a Final() method has been re-introduced.
  The "Final" is called after the thread has been detached and is safe
  to 'terminate'.  By default, the Final method simply invokes a
  'delete this' before pthread_exit() is called by Execute().  Some
  may use Final() to bump a termination semaphore to signal the parent
  which would then delete the object after it stops, rather than have it
  self delete.  One would have to add a marker if a terminating semaphore
  is used that is shared by multiple threads to determine who actually
  has exited.
- "Readline" added to Socket and Serial classes to simplify processing
  of line oriented input.

Changes from 0.2.0 to 0.2.1
- Added "TCPSession"; a non-blocking threaded tcp socket session.
- Changes for RedHat 6.0 and improved portability.
- Changes for FreeBSD 3.1.

Changes from 0.2.1 to 0.2.2
- "Initial" can now Exit(), as needed for TCPSession
- Extended timeout in Serial class.
- Improvements in win32 code including better support for deferred
  thread cancellation and a new interface, WaitHandle, to support
  waiting either on a deferred cancellation or another object handle.
- addition of ThreadKey class and self id master key for getAPE() and
  storage of thread specific data pointers.

Changes from 0.2.2 to 0.9.0
- Kdoc support and full documentation for APE.
- Event::Wait now returns whether timeout or signal trigged resume.
- MutexCounter() may now be initialized.
- Thread parent now done through APE pointer.
- Default application "thread" now an APE object.
- New "notification" for thread child death.
- hidden "MainThread" used to define the initial thread of the process.
- pointer referenced _parent.
- redone NamedPipe and NewFile to remove dependency on constructor
  calling a virtual "Initial" member.
- Signal handling has been redone.
- timers may now be specified for individual threads on some target
  platforms (such as Linux).

Changes from 0.9.0 to 0.9.1
- Install config.h from APE distribution.
- use APE/config.h when no "HAVE_CONFIG_H" found (assumes no APE
  config.h file is being locally genorated).  This makes APE easier
  to use on a target platform outside of automake generated
  packages.

Changes from 0.9.1 to 0.9.2
- stricmp macros tested for when mixing APE with other software.
- SIGSTOP and SIGCONT used for pausing and resuming threads on
  systems that define threads as processes (Linux).
- Other "internally" used macros have been cleaned up to limit name
  space collisions.  Hence, we now have _SIG_xxx and _APE_xxx macros
  where we used to have SIGCANCEL, THREAD_ALARM, etc.
- Simulate recursive mutex operation when recursive mutex support cannot
  be determined.  This was found nessisary for Solaris.
- More Solaris support, including the use of thr_suspend and thr_resume.

Changes from 0.9.2 to 0.9.3
- lots of win32 fixes.
- gethostname() misused.
- patches to file.h header for return type.

Changes from 0.9.3 to 0.9.4
- fix for cpp processing in configure to assure correct "cc -E" is used.
- misc. little things found with Sun compiler.
- fixed alternate inet_aton macro
- fixed _THR_SUNOS5 detection logic

Changes from 0.9.4 to 0.9.5
- replaced __SUNPRO_CC__ with _THR_SUNOS5 throughout
- fixed 64 bit compile and socket code by using socklen_t

Changes from 0.9.5 to 0.9.6
- support UDP peer streaming through UDPSimplex and UDPDuplex for
  foundation of realtime streaming services.

Changes from 0.9.6 to 0.9.7
- added broadcast support to UDP peer sessions (UDPSimplex, UDPDuplex).
- rewrite of getPeer() and getHost() socket methods to return a stack
  InetHostAddress() rather than a local variable.
- fixed accept method through construction.
- added accept by pointer as well as by reference.
- added missing InetHostAddress(struct in_addr) constructor.
- added support for by pointer as well as by reference when constructing
  an "accepted" client.

Changes from 0.9.7 to 1.0.0
- added "pkg" build support for generic UNIX binary packages.
- added "Start()" support for thread with start semaphore rather than
  acting as a dead function.
- fixed "timer" support using SIGALRM.
- added TCPSocket * constructor for TCPSession.
- TCPSession supports "self delete".
- removed serial.cpp/serial.h from posix tree.
- limited version of TCPSession now in win32 tree for use in servers.  Full
  TCPSession support is not possible in win32 winsock since there is no
  support for a non-blocking connect() that can be completed later.
- many updates in the win32 tree to bring it up to date.
- added UDPSimplex and UDPDuplex to name space macros.