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
|
Mon Aug 9 15:25:49 1999 Nagarajan Surendran <naga@cs.wustl.edu>
* orbsvcs/orbsvcs/AV/:
Split the Transport files for different protocols like UDP and
TCP seperate files. Also added a new Protocol_Factory.{h,cpp}
which contains the factory information. Added new flow protocol
classes and remodelled the architecture with true layering
between the Protocol_Object and the Transport class.
Tue Aug 3 14:24:21 1999 Nagarajan Surendran <naga@cs.wustl.edu>
* orbsvcs/orbsvcs/AV/AVStreams_i.{h,cpp} : Defined the
TAO_String_Hash_Key from Trader.{h,cpp} with TAO_Has_Trader
flags so it gets defined if Trader is not defined. Added code to
set the source ids for flow producers. Fixed a bug in
add_producer code which wont add a second producer.
* orbsvcs/orbsvcs/AV/Flows_T.{h,cpp}: Templatized the FDev by the
concrete producer and consumer and also moved them to the
separate files.
* orbsvcs/orbsvcs/AV/AV_Core.{h,cpp}: Moved the AV_Core class
to this file.
* orbsvcs/orbsvcs/AV/AVStreams_i.i: Inlined all the small
functions in TAO_AV_Qos class.
* orbsvcs/orbsvcs/AV/Transport.i: Moved all inline functions to
this file.
* orbsvcs/orbsvcs/AV/Policy.h: Added a new send_frame on the
protocol object to send iovecs.
* orbsvcs/orbsvcs/AV/RTP.{h,cpp}: Added an implementation for
send_frame using iovecs. Also fixed a bug in the creation of
RTCP_Flow_Handler in the UDP_MCast_Connector.
* orbsvcs/orbsvcs/AV/FlowSpec_Entry.{h,i,cpp}: Moved all the
FlowSpec_Entry class code to a separate file.
Mon Jul 26 18:27:56 1999 Nagarajan Surendran <naga@cs.wustl.edu>
* orbsvcs/orbsvcs/AV/RTCP.{h,cpp}:
These 2 new files contain all the classes for TAO AV's RTCP
implementation. Applications now dont have to write RTCP
code. The AV framework also gives hooks to get to the statistics
for a particular section. There'll be one RTCP object per flow.
* orbsvcs/orbsvcs/AV/media-timer.h:
* orbsvcs/orbsvcs/AV/ntp-time.h:
These files contain the media specific timestamp classes. These
provide default implementations for RTCP. Application objects
can override this behavior.
* orbsvcs/orbsvcs/AV/RTP.{h,cpp}:
Added RTP over UDP Multicast classes. Now the RTP layer
interacts with the source Manager to collect RTP statistics.
* orbsvcs/orbsvcs/AV/source.{h,cpp}:
These files provide a RTP source class. Applications should
derive if they want to extend the behavior.
* orbsvcs/orbsvcs/AV/Policy.{h,cpp}:
Added a new TAO_AV_frame_info struct which contains information
for a frame. This helps resolve the differences between the
different framing layer protocols like RTP and SFP.
* orbsvcs/orbsvcs/AV/AVStreams_i.{h,cpp}:
Added support for RTP_UDP_MCAST.
Tue Jul 20 14:50:52 1999 Nagarajan Surendran <naga@cs.wustl.edu>
* orbsvcs/tests/AVStreams/:
Changed the unit of fread in all ftp.cpp files from BUFSIZ to 1
so that the entire file is transferred.
* orbsvcs/orbsvcs/AV/AVStreams_i.cpp: Updated destroy methods to
called end_stream on the protocol object.
* orbsvcs/orbsvcs/AV/MCast.cpp: Added a multicast_loop disable by
default. This should probably be moved as a policy. Also added
code to set send and recv buf sizes to 80k by default. Again
this should probably be a policy set by the application. Added a
get_local_addr method to get the multicast address on which it
is listening.
* orbsvcs/orbsvcs/AV/Transport.{h,cpp}: Added set/get methods on
the TAO_AV_Callback class for transport object.
* orbsvcs/orbsvcs/AV/sfp.cpp: Removed the commented call to
TAO_SFP_Base::instance since this allowed the setting of the
static variables.
Thu Jul 15 22:43:51 1999 Balachandran Natarajan <bala@cs.wustl.edu>
* orbsvcs/orbsvcs/AV/Policy.i:
* orbsvcs/orbsvcs/AV/MCast.i:
Moved all the inline methods to the new .i files.
* orbsvcs/orbsvcs/AV/AVStreams_i.cpp:
* orbsvcs/orbsvcs/AV/MCast.cpp:
* orbsvcs/orbsvcs/AV/MCast.h:
* orbsvcs/orbsvcs/AV/Nil.cpp:
* orbsvcs/orbsvcs/AV/Nil.h
* orbsvcs/orbsvcs/AV/Policy.cpp:
* orbsvcs/orbsvcs/AV/Policy.h:
* orbsvcs/orbsvcs/AV/RTP.cpp:
* orbsvcs/orbsvcs/AV/RTP.h:
* orbsvcs/orbsvcs/AV/Transport.cpp:
* orbsvcs/orbsvcs/AV/sfp.cpp:
* orbsvcs/orbsvcs/AV/sfp.h: Fixed warnings in EGCS
Wed Jul 14 20:29:06 1999 Balachandran Natarajan <bala@cs.wustl.edu>
* orbsvcs/orbsvcs/AV/AVStreams_i.cpp:
* orbsvcs/orbsvcs/AV/MCast.cpp:
* orbsvcs/orbsvcs/AV/Transport.cpp:Changed the inheritance
structure.. Made the UDP_Flow_Handler classes have the
SOCK_Dgram as a memebr rather than inheriting from it..
Fixed warnings with g++ in other files listed below
* orbsvcs/orbsvcs/AV/Nill.cpp:
* orbsvcs/orbsvcs/AV/Endpoint_Strategy.cpp:
* orbsvcs/orbsvcs/AV/Endpoint_Strategy_T.cpp:
* orbsvcs/orbsvcs/AV/Policy.cpp:
* orbsvcs/orbsvcs/AV/sfp.cpp
* orbsvcs/orbsvcs/AV/RTP.cpp
Wed Jul 14 00:27:00 1999 Nagarajan Surendran <naga@cs.wustl.edu>
* orbsvcs/tests/AVStreams/Multicast_Full_Profile/ftp.{h,cpp}:
* orbsvcs/tests/AVStreams/Multicast_Full_Profile/server.{h,cpp}:
* orbsvcs/tests/AVStreams/Multicast_Full_Profile/Makefile:
Added this directory and files for testing the multipoint
binding in AVStreams in the full profile. This code is hardcoded
with 2 servers and a single ftp program streaming a file. The
servers store the streamed file received thru the multipoint
binding as 2 different files.
* orbsvcs/orbsvcs/AV/AVStreams_i.{h,cpp}:
Added code so that the multipoint binding work in the full
profile. Now the users can use full profile object like FDevs
inside MMDevice to create flow producers and flow
consumers. Right now the case of one multipoint source and
multiple multipoint sinks has been tested with the Full
profile.
Tue Jul 13 12:18:44 1999 Nagarajan Surendran <naga@cs.wustl.edu>
* orbsvcs/tests/AVStreams/Multicast/Makefile:
* orbsvcs/tests/AVStreams/Multicast/server.{h,cpp}:
* orbsvcs/tests/AVStreams/Multicast/ftp.{h,cpp}:
Added all the new files to test the Multipoint binding in
AVStreams. Two instances of server receive the same file from
the ftp program and save them under 2 different filenames using
the multipoint bindings of TAO_StreamCtrl in the light profile.
* orbsvcs/orbsvcs/AV/AVStreams_i.{h,cpp}:
Fixed a few a error in the multipoint bind_devs case. It works
now with one multicast source and multiple multicast sinks in
the light profile i.e with no FlowEndPoint interfaces.
* orbsvcs/orbsvcs/AV/MCast.cpp:
Added code to set the local address on the TAO_FlowSpec_Entry
upon accepting/connecting to a connection so that multiconnect
call can extract the multicast address being used for this
flow.
Mon Jul 12 16:15:20 1999 Nagarajan Surendran <naga@cs.wustl.edu>
* orbsvcs/tests/AVStreams/Full_Profile/ftp.cpp:
Removed the flowname from the flowspec for start and stop and
made use of the "empty flowspec will start all flows" feature of
the Streamctrl.
* orbsvcs/orbsvcs/AV/AVStreams_i.cpp:
Fixed the empty flowspec case for StreamCtrl::start,stop and
destroy operations. Now the user can specify an empty flowspec
and the operation will be done for all the flows.
Sun Jul 11 20:10:13 1999 Nagarajan Surendran <naga@cs.wustl.edu>
* orbsvcs/orbsvcs/AV/AVStreams_i.{h,cpp}:
Added code for the FlowEndPoint to make use of the Pluggable
Data Protocols. Also fixed a few bugs in the full profile
TAO_StreamCtrl::bind and other full profile classes like
TAO_FlowConnection. Now the AV application can make use of FDev
in MMDevices for each flow and automagically the appropriate
protocols will be chosen depending on the common protocol
between 2 flow endpoints.
* orbsvcs/tests/AVStreams/Full_Profile/ftp.{h,cpp}:
* orbsvcs/tests/AVStreams/Full_Profile/server.{h,cpp}:
* orbsvcs/tests/AVStreams/Full_Profile/Makefile:
Added a new test similar to the file transfer program under
Pluggable directory. This test make use of the full profile
classes. A FDev create flow consumers and flow producers and is
added to the MMDevice. During streamconnection this fdev creates
the consumer/producer depending on whether its a client or a
server. The flow endpoint is also a base_streamendpoint ensuring
that the pluggable data protocols can set the protocol object.
Wed Jul 7 22:05:22 1999 Nagarajan Surendran <naga@cs.wustl.edu>
* orbsvcs/orbsvcs/AV/RTP.{h,cpp}:
Added RTP over UDP support to the pluggable data protocols
framework in AV. The RTCP part is not complete yet.
* orbsvcs/orbsvcs/AV/Policy.{h,cpp}:
Defines the policy class to resolve differences in behavior
between the different framing protocols like SFP and RTP. For
eg RTP needs the Payload Type for all frames whereas in SFP its
optional.
* orbsvcs/orbsvcs/AV/Nil.{h,cpp}:
Defines Nil Framing protocols for TCP,UDP and UDP_MCast which
just sends the frames over the underlying transport.
* orbsvcs/orbsvcs/AV/AVStreams_i.{h,cpp}:
The protocol specific upcalls have been removed and there is a
generic upcall for setting the protocol object and getting the
callback for a flow.
* orbsvcs/orbsvcs/AV/Transport.{h,cpp}:
* orbsvcs/orbsvcs/AV/sfp.{h,cpp}:
All the transport handlers for udp,tcp,sfp now create protocol
objects and makes an upcall to the application to set them.
* orbsvcs/tests/AVStreams/Pluggable/ftp.{h,cpp}:
The application now uses a generic TAO_AV_Protocol_Object to
send the frames except for RTP for which it sets the
synchronization source and payload type policies.
* orbsvcs/tests/AVStreams/Pluggable/server.{h,cpp}:
The server side defines a generic TAO_AV_Callback which is
called by all the different framing protocols to give the
received frame.
Sun Jul 4 17:59:10 1999 Nagarajan Surendran <naga@cs.wustl.edu>
* orbsvcs/orbsvcs/AV/MCast.cpp:
Added Multicast Pluggable Data Protocol classes.
* orbsvcs/orbsvcs/AV/AVStreams_i.{h,cpp}:
* orbsvcs/orbsvcs/AV/Transport.{h,cpp}:
* orbsvcs/orbsvcs/AV/sfp.h:
Added support for the Multicast data protocols.
* orbsvcs/tests/AVStreams/Pluggable/ftp.{h,cpp}:
* orbsvcs/tests/AVStreams/Pluggable/server.{h,cpp}:
Added handler for Multicast Pluggable Data Protocol and if given
a multicast address on the command line to ftp it will multicast
the file to that address.
Sun Jul 4 13:59:05 1999 Nagarajan Surendran <naga@cs.wustl.edu>
* orbsvcs/tests/AVStreams/Pluggable/ftp.{h,cpp}:
This is a simple file transfer example to test the Pluggable
Data protocols feature provided by the AV service. It currently
implements handler for UDP,TCP and SFP_UDP. This streams a given
file at the rate of 0.5kbytes/sec.
* orbsvcs/tests/AVStreams/Pluggable/server.{h,cpp}:
This is the receiver side of the file transfer example and also
provides protocol specific handler to receive data from the
client and saves it to a file.
* orbsvcs/orbsvcs/AV/sfp.{h,cpp}:
The SFP implementation has been remodelled similar to the GIOP
implementation since it plays a similar role in AV framework as
GIOP in the ORB. There is a TAO_SFP_Base class which contains
only static methods and works on generic TAO_AV_Transport
classes so that the SFP specific code can be reused for
mappings over different transport like TCP and UDP. This design
may not entirely work out since the mapping of SFP over
different transport especially protocols like RTP may differ
unlike GIOP which imposes a uniform restriction on the transport.
* orbsvcs/orbsvcs/AV/AVStreams_i.{h,cpp}:
The TAO_Client_StreamEndPoint and TAO_Server_StreamEndPoint have
been renamed to TAO_StreamEndPoint_A and TAO_StreamEndPoint_B as
there is no notion of client and server in the streaming model,
rather both are identical except in the multicast case. Also
they're distinguished for type identification to the user.
The TAO_StreamEndPoint class now makes use of the Pluggable Data
Protocols to instantiate a given protocol handler and has hooks
for the user to supply a user-defined handler. Right now the
user has to supply different handlers for different protocols
but can use the same code to send and receive data using the
generic TAO_AV_Transport class interface.
Also in the case of SFP the SFP_Object is the interface to be
used by the sender and TAO_SFP_Callback is the interface on the
receiver side to which the framework makes an upcall when a
frame is received.
* orbsvcs/orbsvcs/AV/Transport.{h,cpp}:
These new files contain all the classes necessary for the A/V
Service's Pluggable Data protocols used by the
TAO_StreamEndPoint classes. This architecture is very similar to
the ORB Pluggable protocols architecture except for the Profile
specific and ORB specific code. The equivalent of a Profile in
AV is the TAO_AV_FlowSpec_Entry which can either be a forward or
reverse entry.
Currently this file contains the TCP and UDP Pluggable Data
protocols implementation. It also contains the implementation of
a TAO_AV_Core class similar in spirit to the ORB_Core class so
as to centralize all the Pluggable Protocol data structures.
|