Errata for C++ Network Programming, Volume 2

Last updated January 30, 2006

xvi
Added Ma Weida to the reviewers list.
xvii
"Helen Gill" has an extraneous ", Inc.)" after "(NSF)".
44

code line 9: there should be quotes around "e:i:".

Example line 12 should be "case 'e':" instead of "'e':"
Example line 14 should be "case 'i':" instead of "'i':"

45
Sidebar 6 says that ACE_Thread_Manager::wait() uses relative timeout, but actually it uses absolute timeout.
63
The last sentence refers to removing an event handler before it expires. It should be "...remove a particular timer event before it expires."
95
Sidebar 23, 2nd bullet: "blocked awaiting" should be "blocked waiting".
108
Adjusted code alignment in Quit_Handler constructor.
128
Figure 5.4: ACE_Service_Type::suspend() and resume() return int.
147
code line 6: should be
6 ACE_STATIC_SVC_REGISTER (Reporter_Descriptor);
167
"-uscore" in Sidebar 41 title should be an underscore.
171
The method
virtual int send (ACE_Message_Block *chunk[], size_t count);
should be
virtual int send (ACE_Message_Block *chunk[], size_t &count);
198
Lines 4-7 description: member variable referred to should be "queued_count_" instead of "queue_count_".
199
Lines 8-12 description: member variable referred to should be "queued_count_" instead of "queue_count_".
223
Figure 7.6: "TCP logging acceptor" and "TCP logging handler" should be read as "TPC logging acceptor" and "TPC logging handler".
238
Reference to Figure 6.4 should be Figure 7.9 (page 237).
262
Sidebar 54: "degress" should be "degrees".
280
"-uscore" in Sidebar 56 title should be an underscore.
284
Needs to be an iter.advance () or ++iter on each loop iteration.
288
event loops:
290
Sidebar 58: Describes use of I/O completion port handle to tie Proactor and Reactor event loops together; it actually uses an event handle associated with the I/O operation, not the completion port handle.
303
308
Logrec_Module should not use base-class initialization to pass &task_ to ACE_Module. task_ hasn't been constructed yet and when it is, the ACE_Task::module_ pointer will be overwritten. Instead, call ACE_Module::open from within Logrec_Module's constructor.