Music Hub  ..
A session-wide music playback service
service_stub.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_STUB_H_
20 #define CORE_UBUNTU_MEDIA_SERVICE_STUB_H_
21 
22 #include <core/media/service.h>
23 
24 #include "service_traits.h"
25 
26 #include <core/dbus/bus.h>
27 #include <core/dbus/service_watcher.h>
28 #include <core/dbus/stub.h>
29 
30 #include <memory>
31 #include <string>
32 
33 namespace core
34 {
35 namespace ubuntu
36 {
37 namespace media
38 {
39 class ServiceStub : public core::dbus::Stub<core::ubuntu::media::Service>
40 {
41  public:
42  ServiceStub();
43  ~ServiceStub();
44 
45  std::shared_ptr<Player> create_session(const Player::Configuration&);
46  void detach_session(const std::string& uuid, const Player::Configuration&);
47  std::shared_ptr<Player> reattach_session(const std::string& uuid, const Player::Configuration&);
48  void destroy_session(const std::string& uuid, const Player::Configuration&);
49  std::shared_ptr<Player> create_fixed_session(const std::string& name, const Player::Configuration&);
50  std::shared_ptr<Player> resume_session(Player::PlayerKey key);
52 
53  virtual const core::Signal<void>& service_disconnected() const;
54  virtual const core::Signal<void>& service_reconnected() const;
55 
56  private:
57  dbus::Object::Ptr object;
58  dbus::DBus daemon;
59  dbus::ServiceWatcher::Ptr service_watcher_reg;
60  dbus::ServiceWatcher::Ptr service_watcher_unreg;
61  std::thread worker;
62 
63  struct Signals
64  {
65  core::Signal<void> service_disconnected;
66  core::Signal<void> service_reconnected;
67  } signals;
68 };
69 }
70 }
71 }
72 
73 #endif // CORE_UBUNTU_MEDIA_SERVICE_STUB_H_
std::shared_ptr< Player > resume_session(Player::PlayerKey key)
std::shared_ptr< Player > create_fixed_session(const std::string &name, const Player::Configuration &)
virtual const core::Signal< void > & service_reconnected() const
Definition: player.h:33
std::shared_ptr< Player > create_session(const Player::Configuration &)
virtual const core::Signal< void > & service_disconnected() const
void pause_other_sessions(Player::PlayerKey key)
void detach_session(const std::string &uuid, const Player::Configuration &)
void destroy_session(const std::string &uuid, const Player::Configuration &)
std::shared_ptr< Player > reattach_session(const std::string &uuid, const Player::Configuration &)