UPnP AV Framework Class Organization (Windows CE 5.0)
The UPnP AV Framework is implemented in a number of C++ classes. Developers using the UPnP AV Framework only work directly with a subset of these classes, but it is helpful to understand both the general naming convention for all classes and the high-level purpose of the classes that developers do not use directly.
Note Only classes that are regularly used by developers are documented in detail. The other classes are listed here only for overview purposes.
The following table shows classes in the UPnP AV Framework.
Class | Description |
---|---|
IAVTransport | Pure virtual classes at the root of the class hierarchy used for customization. These classes define methods for actions in the corresponding service.
Control points call these methods to access functionality. Devices implement these methods to provide functionality. |
IAVTransportImpl | Abstract base classes that inherit from the pure virtual classes at the top of the hierarchy, such as IAVTransport. These classes provide default implementations of these services.
Developers derive from these classes and provide method overrides that implement their device's functionality. With the exception of IConnectionManagerImpl, the only content in each class are do-nothing method overrides for methods that correspond to optional actions. IConnectionManagerImpl contains connection and protocol management code. Although it provides the majority of the necessary functionality, it still requires implementations of IConnectionManagerImpl::CreateConnection and IConnectionManagerImpl::EndConnection to enable custom connection preparation and termination code, and calls to IConnectionManagerImpl::AddSinkProtocol and IConnectionManagerImpl::AddSourceProtocol to define the protocols supported by the instance. |
MediaRendererDevice | Classes that can be instantiated by control points. These classes in turn provide the UPnP AV Framework control point proxy classes that control points use to communicate with UPnP AV devices. |
IEventSink | Pure virtual classes that provide state variable methods and virtual service support. IEventSink and IEventSource provide state variable support. IVirtualService provides virtual service support for use by theAVTransport and RenderingControl services.
The pure virtual classes at the top of the hierarchy, like IAVTransport, inherit from IEventSource and, for IAVTransport and IRenderingControl, from IVirtualService. Control points implement IEventSink to receive event notifications. |
parser
object (structure) |
Utility classes that provide object-oriented access to information returned by a ContentDirectory instance.
Control points use these classes to interact with ContentDirectory data. These classes are defined in a subset of the av_upnp namespace: av_upnp::DIDL_Lite. |
wstring | Provides an object-oriented representation of a string. |
AVTransportService
AVTransportServiceImpl ConnectionManagerService ConnectionManagerServiceImpl ContentDirectoryService ContentDirectoryServiceImpl RenderingControlService RenderingControlServiceImpl |
Internal utility classes that implement the COM objects required for integration with the general purpose UPnP Device Host API.
Devices that use the UPnP AV Framework create instances of these classes but do not modify or change the classes. For general information about how custom device implementations use classes such as AVTransportService and ConnectionManagerService, see Registering Device Implementations. |
UPnPErrorReporting
IEventSinkSupport ModeratedEventSupport VirtualServiceSupport |
Utility classes used for internal processing.
Custom device implementations and control points do not usually use or modify these classes. |
All of the classes in the above table are defined in the av_upnp C++ namespace. This namespace is usually aliased so it can be referred to in code as the av namespace. For more information about namespaces in the UPnP AV Framework, see C++ Namespaces in the UPnP AV Framework. (The parser class and object structure are defined in a subset of the av_upnp namespace: av_upnp::DIDL_Lite.)
See Also
Send Feedback on this topic to the authors