This PR adds support for QoE Metrics Reporting. In addition, it refactors the code to make it more modular, use dependency injection and introduce a more clear separation of concerns.
Adds dedicated controller classes for consumption reporting, QoE metrics reporting, handling of Service Access Information and session management. The MediaSessionHandlerMessengerService only acts as an entry point after an IPC message from the Media Stream Handler has been received. It calls the right controller class to perform the necessary actions.
The QoeMetricsReportingController requests QoE metrics reports from the MediaStreamHandler and sends them via M5 to the AF
QoeMetricsReportingController and ConsumptionReportingController extend ReportingController which is implemented as an abstract class. That way, common functionality and required methods are shared across ReportingController classes.
SessionController acts as a controller for media streaming sessions initiating playback and download of ServiceAccessInformation (via ServiceAccessInformationController).
Dedicated messenger services for incoming and outgoing messages
Added an Eventbus to implement an observer pattern that allow subscriber classes to react to changes dispatched by publisher classes. As an example. the ServiceAccessInformationController dispatches a notification once the ServiceAccessInformation has been updated to allow the ConsumptionReportingController to react to these changes.
Increases version number to 1.2.0
Example of a report as generated by version 1.2.0:
This PR adds support for QoE Metrics Reporting. In addition, it refactors the code to make it more modular, use dependency injection and introduce a more clear separation of concerns.
MediaSessionHandlerMessengerService
only acts as an entry point after an IPC message from the Media Stream Handler has been received. It calls the right controller class to perform the necessary actions.QoeMetricsReportingController
requests QoE metrics reports from the MediaStreamHandler and sends them via M5 to the AFQoeMetricsReportingController
andConsumptionReportingController
extendReportingController
which is implemented as an abstract class. That way, common functionality and required methods are shared acrossReportingController
classes.SessionController
acts as a controller for media streaming sessions initiating playback and download of ServiceAccessInformation (viaServiceAccessInformationController
).Eventbus
to implement an observer pattern that allow subscriber classes to react to changes dispatched by publisher classes. As an example. theServiceAccessInformationController
dispatches a notification once the ServiceAccessInformation has been updated to allow theConsumptionReportingController
to react to these changes.Example of a report as generated by version 1.2.0: