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
|
Thu Mar 20 12:34:24 2003 Chris Cleeland <cleeland_c@ociweb.com>
* all: First merge back to OCI.
Thu Mar 20 12:17:23 2003 Chris Cleeland <cleeland_c@ociweb.com>
* tao/Strategies/DIOP_Transport.cpp (handle_input_i):
* orbsvcs/orbsvcs/PortableGroup/UIPMC_Transport.cpp
(handle_input_i):
Update to use new parsing and message processing methods
consistent with PMB changes.
* tao/Transport.cpp (process_queue_head): Corrected a possible memory
leak where, if process_parsed_messages returned with an error,
the TAO_Queued_Data instance wouldn't be released.
Tue Mar 18 14:57:07 2003 Chris Cleeland <cleeland_c@ociweb.com>
* VERSION:
* ChangeLog:
* tao/tao.mpc:
* tao/Version.h:
* tao/IIOP_Transport.cpp:
* tao/MCAST_Parser.cpp:
* tao/RTCORBA/Linear_Priority_Mapping.cpp:
* tao/RTCORBA/RT_ORBInitializer.cpp:
* tao/RTCORBA/RT_ORBInitializer.h:
* tao/RTCORBA/RT_ORB_Loader.cpp:
* tao/RTCORBA/RT_Protocols_Hooks.cpp:
Merged in changes from TAO 1.3.1. The actual tag for the merge
was pmb_branch_mainline_mergeout_1. The command was
$ cvs update -jpmb_branch_start -jpmb_branch_mainline_mergeout_1
after manually determining which files needed updates.
Mon Mar 17 11:09:00 2003 Chris Cleeland <cleeland_c@ociweb.com>
* tao/GIOP_Message_Base.cpp (check_for_valid_header): Optimized
implementation.
* tao/GIOP_Message_Base.* (header_length): Moved to inline for
optimization.
* tao/GIOP_Message_State.cpp (TAO_Debug_Msg_Emitter_Guard):
Improved implementation so it didn't make copies of the message
even when it was never going to output anything due to debug
level being lower than the value that would cause debug output.
* tao/GIOP_Message_State.cpp (take_values_from_message_block):
* tao/GIOP_Message_State.cpp (set_version_info_from_buffer):
* tao/GIOP_Message_State.cpp (set_byte_order_info_from_buffer):
* tao/GIOP_Message_State.cpp (set_payload_size_from_buffer):
Removed use of TAO_Debug_Msg_Emitter_Guard.
* tao/GIOP_Message_State.inl (set_payload_size_from_buffer):
Moved to inline file.
* tao/Incoming_Message_Queue.h (TAO_Incoming_Message_Queue):
Changed name of member 'queued_data_' to 'last_added_' to be
more clear about what the pointer actually points to.
Added documentation that describes the structure of the linked
list so that hopefully future maintainers don't have to go
through the same learning curve I did.
* tao/Incoming_Message_Queue.*: Updates to reflect last_added_
member name change.
* tao/Incoming_Message_Queue.cpp (dequeue_head): Add check to not
allow dequeuing when size is zero, plus we now zero-out the
last_added_ pointer after we've dequeued the last item in the
list.
* tao/Incoming_Message_Queue.cpp (clone_mb_nocopy_size): Fix
setting and copying of flags on the message and data blocks so
that the DONT_DELETE flag specifically doesn't get copied. This
cured a HUGE memory leak that was causing substantial
performance problems.
* tao/Incoming_Message_Queue.cpp (make_uncompleted_message):
* tao/Incoming_Message_Queue.cpp (make_completed_message):
Cache values used over and over again within these methods such
as header and message block lengths
* tao/Transport.cpp (handle_input_i):
Added flag noting that we enqueued a message.
Changed how re-reading is performed; see entry for
try_to_complete for information.
Used ACE_CDR::grow to grow the uncompleted_message message block
once the payload size is known. This insures that the growth
happens with proper alignment constraints.
* tao/Transport.* (try_to_complete): Added this method which
tries to complete whatever partial message is held in
uncompleted_message_. The difference between doing this and
simply revisiting the top of handle_input_i is that this will
only try to read enough to complete the message rather than also
read another partial.
* tao/Transport.cpp (process_queue_head): Added check to insure
that we don't try to do any processing when there's nothing in
the queue. Also, removed old code leftover from when the
incoming queue could have partial GIOP messages in it. Finally,
insured that the return value matched previous requirements.
Thu Mar 6 15:27:14 2003 Chris Cleeland <cleeland_c@ociweb.com>
* tao/Incoming_Message_Queue.cpp: Removed Shattering Encapsulation
hack around ace/Message_Block.h inclusion to make this link
properly on VC6.
* tao/GIOP_Message_State.cpp: Moved initialization of
TAO_Debug_Msg_Emitter_Guard::MAGIC_LENGTH outside the class
declaration.
Wed Mar 5 13:08:37 2003 Chris Cleeland <cleeland_c@ociweb.com>
* tao/GIOP_Message_Generator_Parser_Impl.inl (check_revision):
Modified to only explicitly allow versions of GIOP that TAO
supports, and no others. Note that this change means that
whenever a new version of GIOP gets added to TAO, this function
must be updated, too. Hopefully that won't happen so often that
this becomes horribly burdensome. Thanks to Chad Elliott and
Paul Calabrese for ideas in getting this right.
* tao/Incoming_Message_Queue.* (make_uncompleted_message):
This now behaves similar to make_completed_message, i.e., it
allocates the message block held in TAO_Queued_Data and advnaced
the rd_ptr past the bytes it consumes.
* tao/Incoming_Message_Queue.cpp: Eliminated hacks on
ACE_Message_Block and replaced with functions
clone_mb_nocopy_size() and copy_mb_span() that utilize ONLY the
public API. make_completed_message() and
make_uncompleted_message() now use these.
* tao/Transport.cpp (handle_input_i): Enlarged the buffer size and
replaced the magic number for the maximum number of re-read
attempts with the manifest constant
TAO_MAX_TRANSPORT_REREAD_ATTEMPTS, now defined in orbconf.h.
Changed uses of make_uncompleted_message() to be consistent with
changes outlined above.
Corrected a bug where, upon re-reading after completely emptying
the stack-allocated message block, I forgot to reset the
rd_ptr/wr_ptr in the message block.
* tao/orbconf.h: Added new manifest constant
TAO_MAX_TRANSPORT_REREAD_ATTEMPTS. Documentation is in the file.
Wed Feb 26 21:44:34 2003 Chris Cleeland <cleeland_c@ociweb.com>
* TAO/tao/GIOP_Message_Base.cpp:
Eliminate parse_incoming_messages(), missing_data(),
extract_next_message(), consolidate_node(),
consolidate_fragments(), get_message_data(), make_queued_data().
Add new methods set_queued_data_from_message_header() and
check_for_valid_header().
* TAO/tao/GIOP_Message_Base.h:
Eliminate #if0 parse_incoming_messages(), missing_data(),
extract_next_message(), consolidate_node(),
consolidate_fragments(), get_message_data(), and
make_queued_data() declarations.
Add declarations for set_queued_data_from_message_header() and
check_for_valid_header().
Make message_type() static.
* TAO/tao/GIOP_Message_Generator_Parser_Impl.inl:
Reimplement check_revision() to be exact about which GIOP
revisions are okay. This is different from before where it
loosely assumed that everything was valid unless it want higher
than a particular range.
* TAO/tao/GIOP_Message_Lite.cpp:
Remove parse_incoming_messages() thru consolidate_fragments();
remove make_queued_data().
Add set_queued_data_from_message_header() and
check_for_valid_header().
* TAO/tao/GIOP_Message_Lite.h:
Remove declarations for parse_incoming_messages() thru
consolidate_fragments(); remove make_queued_data().
Add declarations for set_queued_data_from_message_header() and
check_for_valid_header().
* TAO/tao/GIOP_Message_State.cpp:
Add TAO_Debug_Message_Emitter_Guard class within the compilation
unit.
Change CTOR not to use the 2nd argument.
Change CTOR not to initialize this->base_with the 2nd arg.
Add take_values_from_message_block().
Remove parse_magic_bytes(), parse_message_header_i(),
parse_message_header().
Rename get_version_info() to set_version_info_from_buffer();
change argument type to 'const char*'.
Rename get_byte_order_info() to set_byte_order_info_from_buffer();
change argument type to 'const char*'.
Rename get_payload_size() to set_payload_size_from_buffer();
change argument type to 'const char*'.
Change argument type for read_ulong() to 'const char*'.
* TAO/tao/GIOP_Message_State.h:
Add default value for CTOR arguments so we don't have to pass
them.
Add declaration for take_values_from_message_block().
#if0 parse_message_header() declaration.
Add documentation for byte_order().
Add new GIOP information accessors: giop_version(),
more_fragments(), and message_type().
#if0 declaration for parse_message_header_i() and
parse_magic_bytes().
Rename delcarations for get_version_info(), get_byte_order_info(),
and get_payload_size().
#if0 base_ member variable.
* TAO/tao/GIOP_Message_State.inl:
Add definitions for giop_version(), more_fragments(), and
message_type().
* TAO/tao/Incoming_Message_Queue.cpp:
Add #include for ace/Message_Block.h, but shatter encapsulation
and effectively extend its interface so that we can clone spans of
message blocks.
Modify copy_tail() to use new TAO_Queued_Data member names.
* TAO/tao/Incoming_Message_Queue.cpp (class TAO_Queued_Data):
Update CTORs to initialize new this->current_state_ data member.
Add new make_uncompleted_message(), ACE_Message_Block hack
"extensions", make_completed_message().
Rename get_queued_data() to make_queued_data().
* TAO/tao/Incoming_Message_Queue.h:
Changed #include <Pluggable_Messaging_Utils.h> to #include
<Pluggable_Messaging.h>
Documentation for is_tail_complete() and is_head_complete() and
is_tail_fragmented().
#if0 get_node().
* TAO/tao/Incoming_Message_Queue.h (class TAO_Queued_Data):
Make CTORs protected so creation can only go through new factory
methods, i.e., make_completed_message() and
make_uncompleted_message().
Add new factory methods make_completed_message() and
make_uncompleted_message().
Add release() method [in addition to static of same name].
Add explicit definition of various states and a member to hold the
current state (this->current_state_).
Rename this->missing_data_ flag/value with
this->missing_data_bytes_ count.
Documentation for this->byte_order_.
* TAO/tao/Incoming_Message_Queue.inl:
Replace uses of this->missing_data_ with
this->missing_data_bytes_.
#if0 get_node().
Add release() method.
* TAO/tao/Pluggable_Messaging.h:
#if0 parse_incoming_messages() through consolidate_fragments().
Add declarations for check_for_valid_header() and
set_queued_data_from_message_header().
* TAO/tao/Transport.cpp:
Add #include <ace/Min_Max.h>
Add uncompleted_message_ to initialization list.
Modify what happens when reading in handle_input_i():
- number_of_read_attempts is how many times we'll try to read
again to complete a message before we give up.
- read_from_the_connection label added
- correct 1st argument to this->recv() to be wr_ptr() rather than
rd_ptr().
- lots of changes that are substantially documented in the code.
#if0 parse_consolidate_messages(), parse_incoming_messages(),
missing_data(), consolidate_message(), consolidate_fragments(),
consolidate_message_queue(), consolidate_extra_messages(), and
make_queued_data().
* TAO/tao/Transport.h:
#if0 declarations for parse_consolidate_messages(), parse_incoming_messages(),
missing_data(), consolidate_message(), consolidate_fragments(),
consolidate_message_queue(), consolidate_extra_messages(), and
make_queued_data().
Add this->uncompleted_message_ data member.
* TAO/tao/Strategies/DIOP_Transport.cpp:
Change 1st arg of this->recv() in handle_input_i() to wr_ptr()
from rd_ptr().
* TAO/tao/Strategies/SHMIOP_Transport.cpp:
#if0 consolidate_message().
* TAO/tao/Strategies/SHMIOP_Transport.h:
#if0 declaration for consolidate_message().
* TAO/tests/AMI/run_test.pl:
Increase default number of iterations from 1 to 10000. Earlier
versions of the PMB changes succeeded just fine with low numbers
of iterations, but began to fail miserably when the number of
iterations climbed.
* TAO/tests/BiDirectional/run_test.pl:
Added level 10 debug.
* TAO/tests/InterOp-Naming/INS_test_client.cpp:
Changes that don't appear to be related in any way to PMB...
|