The demand for session announcement and session description as well as current protocol solutions
were described in Section .
Of course, the architecture presented in this Section must allow the integration of session announcement techniques.
Figure: Export and import of session descriptions.
Every application built on the proposed architecture contains a SessionAgent object. On
behalf of the SessionManager, the SessionAgent manages the import and export of session
description, as shown in Figure .
On request, the SessionAgent instantiates or terminates SessionImporter and
SessionExporter objects. Such objects each have a private thread of control assigned to them.
A SessionExporter uses a SessionMapper object to create
network-transmittable session description packets of the sessions, which the application currently
participates in. The SessionExporter forwards session description packets by means of a
Connection object. This is done periodically or on explicit request of the SessionManager, for
example at session-creation time. The format of a session description packet depends on
the session description protocol that a particular SessionMapper implements.
The SessionImporter in turn receives session description packets by means of a Connection object. The
received session description packets are decoded by a SessionMapper that is capable of
understanding the used session description protocol. The result of the decoding operation is a
ProtoSession object, which the SessionImporter reports to the AppManager.
A ProtoSession object constructed from a session description packet contains all information
that is necessary to create a Session object that is parametrised for participating in the
described session. To decide whether the application is capable of joining an advertised
session, the SessionMapper must know the protocols and
payload types that the locally available Connection, ProtocolCoDec, Consumer, and Producer
classes can handle. This information is stored in TypeHandlerTable objects, which are
configured during the start-up phase of the application.
Though Figure shows only one SessionExporter and one SessionImporter for the
sake of simplicity, there can be an arbitrary number of these objects running within an
application to communicate session descriptions with different remote partners, or to make use of different protocols.
However, only one SessionExporter and one SessionImporter can share a single Connection object,
whereas a SessionMapper can be accessed by all SessionExporters and SessionImporters that intend
to use the SessionMapper's session description protocol.