Music Hub ..
A session-wide music playback service
service_skeleton.h
Go to the documentation of this file.
1/*
2 * Copyright © 2013-2014 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License version 3,
6 * as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Thomas Voß <thomas.voss@canonical.com>
17 */
18
19#ifndef CORE_UBUNTU_MEDIA_SERVICE_SKELETON_H_
20#define CORE_UBUNTU_MEDIA_SERVICE_SKELETON_H_
21
22#include "apparmor/ubuntu.h"
23
24#include <core/media/service.h>
25
26#include "cover_art_resolver.h"
27#include "keyed_player_store.h"
28#include "service_traits.h"
29
30#include <core/dbus/skeleton.h>
31
32#include <memory>
33
34namespace core
35{
36namespace ubuntu
37{
38namespace media
39{
40class ServiceSkeleton : public core::dbus::Skeleton<core::ubuntu::media::Service>
41{
42public:
43 // Creation time arguments go here.
45 {
46 std::shared_ptr<Service> impl;
50 };
51
52 ServiceSkeleton(const Configuration& configuration);
54
55 // From media::Service
56 std::shared_ptr<Player> create_session(const Player::Configuration&);
57 void detach_session(const std::string&, const Player::Configuration&);
58 std::shared_ptr<Player> reattach_session(const std::string&, const Player::Configuration&);
59 void destroy_session(const std::string&, const media::Player::Configuration&);
60 std::shared_ptr<Player> create_fixed_session(const std::string& name, const Player::Configuration&);
61 std::shared_ptr<Player> resume_session(Player::PlayerKey);
66
67 void run();
68 void stop();
69
70 virtual const core::Signal<void>& service_disconnected() const;
71 virtual const core::Signal<void>& service_reconnected() const;
72
73 private:
74 struct Private;
75 std::shared_ptr<Private> d;
76};
77}
78}
79}
80
81#endif // CORE_UBUNTU_MEDIA_SERVICE_SKELETON_H_
std::shared_ptr< KeyedPlayerStore > Ptr
void set_current_player(Player::PlayerKey key)
bool is_current_player(Player::PlayerKey key) const
virtual const core::Signal< void > & service_reconnected() const
std::shared_ptr< Player > reattach_session(const std::string &, const Player::Configuration &)
void destroy_session(const std::string &, const media::Player::Configuration &)
virtual const core::Signal< void > & service_disconnected() const
std::shared_ptr< Player > create_fixed_session(const std::string &name, const Player::Configuration &)
ServiceSkeleton(const Configuration &configuration)
void pause_other_sessions(Player::PlayerKey key)
std::shared_ptr< Player > create_session(const Player::Configuration &)
std::shared_ptr< Player > resume_session(Player::PlayerKey)
void detach_session(const std::string &, const Player::Configuration &)
std::function< std::string(const std::string &, const std::string &, const std::string &)> CoverArtResolver
Definition: player.h:34