Music Hub ..
A session-wide music playback service
player_skeleton.h
Go to the documentation of this file.
1
20#ifndef CORE_UBUNTU_MEDIA_PLAYER_SKELETON_H_
21#define CORE_UBUNTU_MEDIA_PLAYER_SKELETON_H_
22
23#include <core/media/player.h>
24
25#include "player_traits.h"
26
27#include "apparmor/ubuntu.h"
28#include "mpris/player.h"
29
30#include <core/dbus/skeleton.h>
31#include <core/dbus/types/object_path.h>
32
33#include <memory>
34
35namespace core
36{
37namespace ubuntu
38{
39namespace media
40{
41namespace helper
42{
43struct ExternalServices;
44}
45
46class Service;
47
49{
50 public:
51 // All creation time arguments go here.
53 {
54 // The bus connection we are associated with.
55 std::shared_ptr<core::dbus::Bus> bus;
56 // The service instance we are exposed under.
57 std::shared_ptr<core::dbus::Service> service;
58 // The session object that we want to expose the skeleton upon.
59 std::shared_ptr<core::dbus::Object> session;
60 // The Service instance that manages Player instances
62 // Our functional dependencies.
65 };
66
67 PlayerSkeleton(const Configuration& configuration);
69
70 virtual const core::Property<bool>& can_play() const;
71 virtual const core::Property<bool>& can_pause() const;
72 virtual const core::Property<bool>& can_seek() const;
73 virtual const core::Property<bool>& can_go_previous() const;
74 virtual const core::Property<bool>& can_go_next() const;
75 virtual const core::Property<bool>& is_video_source() const;
76 virtual const core::Property<bool>& is_audio_source() const;
77 virtual const core::Property<PlaybackStatus>& playback_status() const;
78 virtual const core::Property<AVBackend::Backend>& backend() const;
79 virtual const core::Property<LoopStatus>& loop_status() const;
80 virtual const core::Property<PlaybackRate>& playback_rate() const;
81 virtual const core::Property<bool>& shuffle() const;
82 virtual const core::Property<Track::MetaData>& meta_data_for_current_track() const;
83 virtual const core::Property<Volume>& volume() const;
84 virtual const core::Property<PlaybackRate>& minimum_playback_rate() const;
85 virtual const core::Property<PlaybackRate>& maximum_playback_rate() const;
86 virtual const core::Property<int64_t>& position() const;
87 virtual const core::Property<int64_t>& duration() const;
88 virtual const core::Property<AudioStreamRole>& audio_stream_role() const;
89 virtual const core::Property<Orientation>& orientation() const;
90 virtual const core::Property<Lifetime>& lifetime() const;
91
92 virtual core::Property<LoopStatus>& loop_status();
93 virtual core::Property<PlaybackRate>& playback_rate();
94 virtual core::Property<bool>& shuffle();
95 virtual core::Property<Volume>& volume();
96 virtual core::Property<AudioStreamRole>& audio_stream_role();
97 virtual core::Property<Lifetime>& lifetime();
98
99 virtual const core::Signal<int64_t>& seeked_to() const;
100 virtual const core::Signal<void>& about_to_finish() const;
101 virtual const core::Signal<void>& end_of_stream() const;
102 virtual const core::Signal<video::Dimensions>& video_dimension_changed() const;
103 virtual const core::Signal<Error>& error() const;
104 virtual const core::Signal<int>& buffering_changed() const;
105
106 // These properties are not exposed to the client, but still need to be
107 // able to be settable from within the Player:
108 virtual core::Property<PlaybackStatus>& playback_status();
109 virtual core::Property<AVBackend::Backend>& backend();
110 virtual core::Property<bool>& can_play();
111 virtual core::Property<bool>& can_pause();
112 virtual core::Property<bool>& can_seek();
113 virtual core::Property<bool>& can_go_previous();
114 virtual core::Property<bool>& can_go_next();
115 virtual core::Property<bool>& is_video_source();
116 virtual core::Property<bool>& is_audio_source();
117 virtual core::Property<Track::MetaData>& meta_data_for_current_track();
118 virtual core::Property<PlaybackRate>& minimum_playback_rate();
119 virtual core::Property<PlaybackRate>& maximum_playback_rate();
120 virtual core::Property<int64_t>& position();
121 virtual core::Property<int64_t>& duration();
122 virtual core::Property<Orientation>& orientation();
123
124 virtual core::Signal<int64_t>& seeked_to();
125 virtual core::Signal<void>& about_to_finish();
126 virtual core::Signal<void>& end_of_stream();
127 virtual core::Signal<PlaybackStatus>& playback_status_changed();
128 virtual core::Signal<video::Dimensions>& video_dimension_changed();
129 virtual core::Signal<Error>& error();
130 virtual core::Signal<int>& buffering_changed();
131
132 private:
133 struct Private;
134 std::shared_ptr<Private> d;
135};
136}
137}
138}
139
140#endif // CORE_UBUNTU_MEDIA_PLAYER_SKELETON_H_
virtual core::Signal< PlaybackStatus > & playback_status_changed()
virtual const core::Property< AudioStreamRole > & audio_stream_role() const
virtual core::Property< AVBackend::Backend > & backend()
virtual const core::Property< int64_t > & duration() const
virtual const core::Signal< int64_t > & seeked_to() const
virtual const core::Property< PlaybackRate > & maximum_playback_rate() const
virtual core::Property< Lifetime > & lifetime()
virtual core::Property< bool > & can_pause()
virtual const core::Property< PlaybackStatus > & playback_status() const
virtual const core::Property< bool > & can_pause() const
virtual const core::Property< bool > & is_audio_source() const
virtual core::Property< PlaybackRate > & playback_rate()
virtual const core::Signal< video::Dimensions > & video_dimension_changed() const
virtual core::Signal< void > & end_of_stream()
virtual core::Signal< int > & buffering_changed()
virtual core::Signal< void > & about_to_finish()
virtual core::Property< PlaybackRate > & maximum_playback_rate()
virtual const core::Signal< int > & buffering_changed() const
virtual core::Property< LoopStatus > & loop_status()
virtual core::Signal< int64_t > & seeked_to()
virtual const core::Property< bool > & can_go_previous() const
virtual const core::Property< bool > & shuffle() const
virtual const core::Property< bool > & can_play() const
PlayerSkeleton(const Configuration &configuration)
virtual const core::Property< bool > & can_seek() const
virtual core::Property< Track::MetaData > & meta_data_for_current_track()
virtual core::Property< bool > & shuffle()
virtual core::Property< bool > & can_go_next()
virtual const core::Signal< void > & about_to_finish() const
virtual core::Property< bool > & can_play()
virtual core::Property< bool > & can_go_previous()
virtual core::Signal< video::Dimensions > & video_dimension_changed()
virtual const core::Property< Orientation > & orientation() const
virtual const core::Property< Track::MetaData > & meta_data_for_current_track() const
virtual const core::Property< AVBackend::Backend > & backend() const
virtual const core::Property< int64_t > & position() const
virtual const core::Property< Lifetime > & lifetime() const
virtual core::Property< PlaybackRate > & minimum_playback_rate()
virtual core::Property< int64_t > & position()
virtual core::Property< AudioStreamRole > & audio_stream_role()
virtual const core::Property< LoopStatus > & loop_status() const
virtual const core::Property< Volume > & volume() const
virtual core::Signal< Error > & error()
virtual core::Property< bool > & is_audio_source()
virtual core::Property< PlaybackStatus > & playback_status()
virtual const core::Signal< Error > & error() const
virtual core::Property< Orientation > & orientation()
virtual core::Property< Volume > & volume()
virtual const core::Property< PlaybackRate > & minimum_playback_rate() const
virtual const core::Signal< void > & end_of_stream() const
virtual const core::Property< bool > & is_video_source() const
virtual core::Property< int64_t > & duration()
virtual const core::Property< bool > & can_go_next() const
virtual core::Property< bool > & is_video_source()
virtual const core::Property< PlaybackRate > & playback_rate() const
virtual core::Property< bool > & can_seek()
std::shared_ptr< RequestAuthenticator > Ptr
Definition: ubuntu.h:134
std::shared_ptr< RequestContextResolver > Ptr
Definition: ubuntu.h:94
Definition: player.h:34
apparmor::ubuntu::RequestAuthenticator::Ptr request_authenticator
std::shared_ptr< core::dbus::Object > session
apparmor::ubuntu::RequestContextResolver::Ptr request_context_resolver
std::shared_ptr< core::dbus::Bus > bus
std::shared_ptr< core::dbus::Service > service