Mir
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
default_server_configuration.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2012-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 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 General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authored by: Alan Griffiths <alan@octopull.co.uk>
17  */
18 #ifndef MIR_DEFAULT_SERVER_CONFIGURATION_H_
19 #define MIR_DEFAULT_SERVER_CONFIGURATION_H_
20 
21 #include "mir/cached_ptr.h"
23 
24 #include <memory>
25 #include <string>
26 
27 namespace mir
28 {
29 namespace compositor
30 {
31 class Renderer;
32 class BufferStreamFactory;
33 class Scene;
34 class Drawer;
35 class DisplayBufferCompositorFactory;
36 class Compositor;
37 class RendererFactory;
38 class CompositorReport;
39 }
40 namespace frontend
41 {
42 class Shell;
43 class Connector;
44 class ConnectorReport;
45 class ProtobufIpcFactory;
46 class SessionCreator;
47 class SessionMediatorReport;
48 class MessageProcessorReport;
49 class SessionAuthorizer;
50 class EventSink;
51 class DisplayChanger;
52 class Screencast;
53 }
54 
55 namespace shell
56 {
57 class SurfaceFactory;
58 class InputTargeter;
59 class FocusSetter;
60 class PlacementStrategy;
61 class SessionListener;
62 class FocusController;
63 class DisplayLayout;
64 }
65 namespace time
66 {
67 class Clock;
68 }
69 namespace scene
70 {
71 class SurfaceFactory;
72 class BroadcastingSessionEventSink;
73 class BufferStreamFactory;
74 class MediatingDisplayChanger;
75 class PixelBuffer;
76 class SessionContainer;
77 class SessionEventSink;
78 class SessionEventHandlerRegister;
79 class SessionManager;
80 class SnapshotStrategy;
81 class SurfaceCoordinator;
82 class SurfaceConfigurator;
83 class SurfaceStackModel;
84 class SurfaceStack;
85 class SurfaceRanker;
86 class SurfaceController;
87 class InputRegistrar;
88 class SceneReport;
89 }
90 namespace graphics
91 {
92 class Platform;
93 class Display;
94 class BufferInitializer;
95 class DisplayReport;
96 class GraphicBufferAllocator;
97 class GLConfig;
98 namespace nested { class HostConnection; }
99 }
100 namespace input
101 {
102 class InputReport;
103 class InputManager;
104 class CompositeEventFilter;
105 class InputChannelFactory;
106 class InputConfiguration;
107 class CursorListener;
108 class InputRegion;
109 class NestedInputRelay;
110 class EventHandler;
111 }
112 
113 namespace logging
114 {
115 class Logger;
116 }
117 
118 namespace options
119 {
120 class Option;
121 class Configuration;
122 }
123 
124 namespace report
125 {
126 class ReportFactory;
127 }
128 
130 {
131 public:
132  DefaultServerConfiguration(int argc, char const* argv[]);
133  explicit DefaultServerConfiguration(std::shared_ptr<options::Configuration> const& configuration_options);
134 
138  virtual std::shared_ptr<frontend::Connector> the_connector();
139  virtual std::shared_ptr<graphics::Display> the_display();
140  virtual std::shared_ptr<compositor::Compositor> the_compositor();
141  virtual std::shared_ptr<input::InputManager> the_input_manager();
142  virtual std::shared_ptr<MainLoop> the_main_loop();
143  virtual std::shared_ptr<ServerStatusListener> the_server_status_listener();
144  virtual std::shared_ptr<DisplayChanger> the_display_changer();
145  virtual std::shared_ptr<graphics::Platform> the_graphics_platform();
146  virtual std::shared_ptr<input::InputConfiguration> the_input_configuration();
152  virtual std::shared_ptr<graphics::BufferInitializer> the_buffer_initializer();
153  virtual std::shared_ptr<compositor::RendererFactory> the_renderer_factory();
154  virtual std::shared_ptr<graphics::DisplayConfigurationPolicy> the_display_configuration_policy();
155  virtual std::shared_ptr<graphics::nested::HostConnection> the_host_connection();
156  virtual std::shared_ptr<input::EventFilter> the_nested_event_filter();
157  virtual std::shared_ptr<graphics::GLConfig> the_gl_config();
163  virtual std::shared_ptr<graphics::DisplayReport> the_display_report();
169  virtual std::shared_ptr<compositor::CompositorReport> the_compositor_report();
170  virtual std::shared_ptr<compositor::DisplayBufferCompositorFactory> the_display_buffer_compositor_factory();
176  virtual std::shared_ptr<graphics::GraphicBufferAllocator> the_buffer_allocator();
177  virtual std::shared_ptr<compositor::Scene> the_scene();
183  virtual std::shared_ptr<frontend::SessionMediatorReport> the_session_mediator_report();
184  virtual std::shared_ptr<frontend::MessageProcessorReport> the_message_processor_report();
185  virtual std::shared_ptr<frontend::SessionAuthorizer> the_session_authorizer();
186  virtual std::shared_ptr<frontend::Shell> the_frontend_shell();
187  virtual std::shared_ptr<frontend::EventSink> the_global_event_sink();
188  virtual std::shared_ptr<frontend::DisplayChanger> the_frontend_display_changer();
189  virtual std::shared_ptr<frontend::Screencast> the_screencast();
193  virtual std::shared_ptr<frontend::SessionCreator> the_session_creator();
194  virtual std::shared_ptr<frontend::ConnectorReport> the_connector_report();
198  virtual std::shared_ptr<shell::FocusController> the_focus_controller();
199 
203  virtual std::shared_ptr<shell::SurfaceFactory> the_shell_surface_factory();
204  virtual std::shared_ptr<shell::FocusSetter> the_shell_focus_setter();
205  virtual std::shared_ptr<shell::PlacementStrategy> the_shell_placement_strategy();
206  virtual std::shared_ptr<shell::SessionListener> the_shell_session_listener();
207  virtual std::shared_ptr<shell::DisplayLayout> the_shell_display_layout();
214  virtual std::shared_ptr<scene::PixelBuffer> the_pixel_buffer();
215  virtual std::shared_ptr<scene::SnapshotStrategy> the_snapshot_strategy();
216  virtual std::shared_ptr<scene::SessionContainer> the_session_container();
217  virtual std::shared_ptr<scene::SessionEventSink> the_session_event_sink();
218  virtual std::shared_ptr<scene::SessionEventHandlerRegister> the_session_event_handler_register();
219  virtual std::shared_ptr<scene::SurfaceStackModel> the_surface_stack_model();
220  virtual std::shared_ptr<scene::SurfaceRanker> the_surface_ranker();
221  virtual std::shared_ptr<scene::SurfaceFactory> the_surface_factory();
222  virtual std::shared_ptr<scene::SurfaceCoordinator>the_surface_coordinator();
223  virtual std::shared_ptr<scene::SurfaceConfigurator> the_surface_configurator();
229  virtual std::shared_ptr<scene::BufferStreamFactory> the_buffer_stream_factory();
230  virtual std::shared_ptr<scene::SceneReport> the_scene_report();
236  virtual std::shared_ptr<input::InputReport> the_input_report();
237  virtual std::shared_ptr<input::CompositeEventFilter> the_composite_event_filter();
238  virtual std::shared_ptr<scene::InputRegistrar> the_input_registrar();
239  virtual std::shared_ptr<shell::InputTargeter> the_input_targeter();
240  virtual std::shared_ptr<input::CursorListener> the_cursor_listener();
241  virtual std::shared_ptr<input::InputRegion> the_input_region();
247  virtual std::shared_ptr<logging::Logger> the_logger();
250  virtual std::shared_ptr<time::Clock> the_clock();
251 
252 protected:
253  std::shared_ptr<options::Option> the_options() const;
254 
255  virtual std::shared_ptr<input::InputChannelFactory> the_input_channel_factory();
256  virtual std::shared_ptr<scene::MediatingDisplayChanger> the_mediating_display_changer();
257  virtual std::shared_ptr<frontend::ProtobufIpcFactory> the_ipc_factory(
258  std::shared_ptr<frontend::Shell> const& shell,
259  std::shared_ptr<graphics::GraphicBufferAllocator> const& allocator);
260 
262 
264 
276 
289 
312 
313 private:
314  std::shared_ptr<options::Configuration> const configuration_options;
315  std::shared_ptr<input::EventFilter> const default_filter;
316 
317  virtual std::string the_socket_file() const;
318 
319  // The following caches and factory functions are internal to the
320  // default implementations of corresponding the Mir components
321  CachedPtr<scene::BroadcastingSessionEventSink> broadcasting_session_event_sink;
322  CachedPtr<input::NestedInputRelay> nested_input_relay;
323  CachedPtr<scene::SurfaceController> surface_controller;
324  CachedPtr<scene::SessionManager> session_manager;
325 
326  std::shared_ptr<scene::BroadcastingSessionEventSink> the_broadcasting_session_event_sink();
327  std::shared_ptr<input::NestedInputRelay> the_nested_input_relay();
328  std::shared_ptr<scene::SessionManager> the_session_manager();
329  std::shared_ptr<scene::SurfaceController> the_surface_controller();
330 
331  auto report_factory(char const* report_opt) -> std::unique_ptr<report::ReportFactory>;
332 };
333 }
334 
335 
336 #endif /* MIR_DEFAULT_SERVER_CONFIGURATION_H_ */
virtual std::shared_ptr< graphics::DisplayConfigurationPolicy > the_display_configuration_policy()
Definition: default_configuration.cpp:52
virtual std::shared_ptr< graphics::nested::HostConnection > the_host_connection()
Definition: default_configuration.cpp:117
CachedPtr< logging::Logger > logger
Definition: default_server_configuration.h:303
virtual std::shared_ptr< input::InputRegion > the_input_region()
Definition: default_configuration.cpp:39
CachedPtr< input::InputManager > input_manager
Definition: default_server_configuration.h:267
virtual std::shared_ptr< frontend::MessageProcessorReport > the_message_processor_report()
Definition: default_server_configuration.cpp:85
CachedPtr< compositor::Compositor > compositor
Definition: default_server_configuration.h:301
virtual std::shared_ptr< shell::DisplayLayout > the_shell_display_layout()
Definition: default_configuration.cpp:66
CachedPtr< graphics::GLConfig > gl_config
Definition: default_server_configuration.h:311
virtual std::shared_ptr< ServerStatusListener > the_server_status_listener()
Definition: default_server_configuration.cpp:186
CachedPtr< graphics::DisplayReport > display_report
Definition: default_server_configuration.h:304
CachedPtr< input::InputConfiguration > input_configuration
Definition: default_server_configuration.h:263
CachedPtr< input::InputReport > input_report
Definition: default_server_configuration.h:265
CachedPtr< shell::SurfaceFactory > shell_surface_factory
Definition: default_server_configuration.h:290
std::shared_ptr< options::Option > the_options() const
Definition: default_server_configuration.cpp:61
CachedPtr< scene::SurfaceStack > surface_stack
Definition: default_server_configuration.h:287
CachedPtr< scene::SessionContainer > session_container
Definition: default_server_configuration.h:292
virtual std::shared_ptr< input::EventFilter > the_nested_event_filter()
Definition: default_configuration.cpp:127
CachedPtr< ServerStatusListener > server_status_listener
Definition: default_server_configuration.h:307
CachedPtr< input::InputRegion > input_region
Definition: default_server_configuration.h:268
CachedPtr< MainLoop > main_loop
Definition: default_server_configuration.h:306
CachedPtr< frontend::Screencast > screencast
Definition: default_server_configuration.h:284
virtual std::shared_ptr< scene::PixelBuffer > the_pixel_buffer()
Definition: default_configuration.cpp:214
virtual std::shared_ptr< input::InputChannelFactory > the_input_channel_factory()
Definition: default_server_configuration.cpp:162
CachedPtr< frontend::MessageProcessorReport > message_processor_report
Definition: default_server_configuration.h:280
CachedPtr< scene::SurfaceConfigurator > surface_configurator
Definition: default_server_configuration.h:299
Definition: server_configuration.h:55
CachedPtr< scene::MediatingDisplayChanger > mediating_display_changer
Definition: default_server_configuration.h:310
virtual std::shared_ptr< compositor::DisplayBufferCompositorFactory > the_display_buffer_compositor_factory()
Definition: default_configuration.cpp:47
CachedPtr< graphics::Platform > graphics_platform
Definition: default_server_configuration.h:272
CachedPtr< time::Clock > clock
Definition: default_server_configuration.h:305
CachedPtr< frontend::ProtobufIpcFactory > ipc_factory
Definition: default_server_configuration.h:278
virtual std::shared_ptr< frontend::EventSink > the_global_event_sink()
Definition: default_configuration.cpp:176
CachedPtr< graphics::DisplayConfigurationPolicy > display_configuration_policy
Definition: default_server_configuration.h:308
virtual std::shared_ptr< scene::SurfaceRanker > the_surface_ranker()
Definition: default_configuration.cpp:107
virtual std::shared_ptr< frontend::Screencast > the_screencast()
Definition: default_configuration.cpp:81
CachedPtr< graphics::nested::HostConnection > host_connection
Definition: default_server_configuration.h:309
virtual std::shared_ptr< graphics::Platform > the_graphics_platform()
Definition: default_configuration.cpp:61
virtual std::shared_ptr< time::Clock > the_clock()
Definition: default_server_configuration.cpp:167
input_rectangles report(report)
virtual std::shared_ptr< scene::SessionEventSink > the_session_event_sink()
Definition: default_configuration.cpp:129
virtual std::shared_ptr< shell::FocusSetter > the_shell_focus_setter()
Definition: default_configuration.cpp:54
virtual std::shared_ptr< input::CompositeEventFilter > the_composite_event_filter()
Definition: default_configuration.cpp:49
virtual std::shared_ptr< graphics::Display > the_display()
Definition: default_configuration.cpp:96
virtual std::shared_ptr< scene::SurfaceConfigurator > the_surface_configurator()
Definition: default_server_configuration.cpp:116
CachedPtr< shell::SessionListener > shell_session_listener
Definition: default_server_configuration.h:295
virtual std::shared_ptr< input::CursorListener > the_cursor_listener()
Definition: default_server_configuration.cpp:90
virtual std::shared_ptr< shell::PlacementStrategy > the_shell_placement_strategy()
Definition: default_configuration.cpp:43
CachedPtr< frontend::SessionCreator > session_creator
Definition: default_server_configuration.h:283
CachedPtr< shell::InputTargeter > input_targeter
Definition: default_server_configuration.h:270
CachedPtr< frontend::Connector > connector
Definition: default_server_configuration.h:261
CachedPtr< scene::SceneReport > scene_report
Definition: default_server_configuration.h:288
CachedPtr< compositor::RendererFactory > renderer_factory
Definition: default_server_configuration.h:285
CachedPtr< input::CompositeEventFilter > composite_event_filter
Definition: default_server_configuration.h:266
CachedPtr< frontend::SessionMediatorReport > session_mediator_report
Definition: default_server_configuration.h:279
virtual std::shared_ptr< scene::MediatingDisplayChanger > the_mediating_display_changer()
Definition: default_configuration.cpp:148
virtual std::shared_ptr< scene::SessionContainer > the_session_container()
Definition: default_configuration.cpp:141
virtual std::shared_ptr< scene::SessionEventHandlerRegister > the_session_event_handler_register()
Definition: default_configuration.cpp:135
CachedPtr< compositor::CompositorReport > compositor_report
Definition: default_server_configuration.h:302
virtual std::shared_ptr< frontend::ConnectorReport > the_connector_report()
Definition: default_server_configuration.cpp:67
virtual std::shared_ptr< shell::SessionListener > the_shell_session_listener()
Definition: default_server_configuration.cpp:80
CachedPtr< frontend::ConnectorReport > connector_report
Definition: default_server_configuration.h:277
virtual std::shared_ptr< logging::Logger > the_logger()
Definition: default_configuration.cpp:27
virtual std::shared_ptr< input::InputReport > the_input_report()
Definition: default_server_configuration.cpp:103
virtual std::shared_ptr< input::InputManager > the_input_manager()
Definition: default_configuration.cpp:92
virtual std::shared_ptr< input::InputConfiguration > the_input_configuration()
Definition: default_configuration.cpp:60
DefaultServerConfiguration(int argc, char const *argv[])
Definition: default_server_configuration.cpp:50
CachedPtr< shell::PlacementStrategy > shell_placement_strategy
Definition: default_server_configuration.h:294
virtual std::shared_ptr< frontend::Shell > the_frontend_shell()
Definition: default_configuration.cpp:202
CachedPtr< scene::SurfaceFactory > surface_factory
Definition: default_server_configuration.h:291
CachedPtr< shell::DisplayLayout > shell_display_layout
Definition: default_server_configuration.h:298
CachedPtr< graphics::Display > display
Definition: default_server_configuration.h:275
virtual std::shared_ptr< graphics::GLConfig > the_gl_config()
Definition: default_configuration.cpp:155
virtual std::shared_ptr< compositor::RendererFactory > the_renderer_factory()
Definition: default_configuration.cpp:72
virtual std::shared_ptr< shell::FocusController > the_focus_controller()
Definition: default_configuration.cpp:208
virtual std::shared_ptr< compositor::Scene > the_scene()
Definition: default_configuration.cpp:63
virtual std::shared_ptr< shell::InputTargeter > the_input_targeter()
Definition: default_configuration.cpp:103
virtual std::shared_ptr< MainLoop > the_main_loop()
Definition: default_server_configuration.cpp:176
virtual std::shared_ptr< shell::SurfaceFactory > the_shell_surface_factory()
Definition: default_configuration.cpp:31
CachedPtr< input::CursorListener > cursor_listener
Definition: default_server_configuration.h:271
CachedPtr< scene::InputRegistrar > input_registrar
Definition: default_server_configuration.h:269
CachedPtr< scene::PixelBuffer > pixel_buffer
Definition: default_server_configuration.h:296
virtual std::shared_ptr< graphics::GraphicBufferAllocator > the_buffer_allocator()
Definition: default_configuration.cpp:86
CachedPtr< graphics::BufferInitializer > buffer_initializer
Definition: default_server_configuration.h:273
virtual std::shared_ptr< compositor::CompositorReport > the_compositor_report()
Definition: default_server_configuration.cpp:58
virtual std::shared_ptr< frontend::SessionMediatorReport > the_session_mediator_report()
Definition: default_server_configuration.cpp:76
CachedPtr< frontend::EventSink > global_event_sink
Definition: default_server_configuration.h:282
virtual std::shared_ptr< scene::SurfaceStackModel > the_surface_stack_model()
Definition: default_configuration.cpp:45
Definition: default_server_configuration.h:129
virtual std::shared_ptr< graphics::BufferInitializer > the_buffer_initializer()
Definition: default_configuration.cpp:42
virtual std::shared_ptr< compositor::Compositor > the_compositor()
Definition: default_configuration.cpp:58
virtual std::shared_ptr< DisplayChanger > the_display_changer()
Definition: default_configuration.cpp:170
CachedPtr< compositor::BufferStreamFactory > buffer_stream_factory
Definition: default_server_configuration.h:286
CachedPtr< compositor::DisplayBufferCompositorFactory > display_buffer_compositor_factory
Definition: default_server_configuration.h:300
virtual std::shared_ptr< scene::InputRegistrar > the_input_registrar()
Definition: default_configuration.cpp:112
virtual std::shared_ptr< scene::SurfaceFactory > the_surface_factory()
Definition: default_configuration.cpp:80
virtual std::shared_ptr< frontend::DisplayChanger > the_frontend_display_changer()
Definition: default_configuration.cpp:164
virtual std::shared_ptr< frontend::Connector > the_connector()
Definition: default_configuration.cpp:129
CachedPtr< scene::SnapshotStrategy > snapshot_strategy
Definition: default_server_configuration.h:297
virtual std::shared_ptr< graphics::DisplayReport > the_display_report()
Definition: default_server_configuration.cpp:94
CachedPtr< graphics::GraphicBufferAllocator > buffer_allocator
Definition: default_server_configuration.h:274
virtual std::shared_ptr< frontend::SessionCreator > the_session_creator()
Definition: default_configuration.cpp:117
virtual std::shared_ptr< scene::BufferStreamFactory > the_buffer_stream_factory()
Definition: default_configuration.cpp:37
virtual std::shared_ptr< scene::SnapshotStrategy > the_snapshot_strategy()
Definition: default_configuration.cpp:225
virtual std::shared_ptr< scene::SceneReport > the_scene_report()
Definition: default_server_configuration.cpp:112
virtual std::shared_ptr< frontend::ProtobufIpcFactory > the_ipc_factory(std::shared_ptr< frontend::Shell > const &shell, std::shared_ptr< graphics::GraphicBufferAllocator > const &allocator)
Definition: default_configuration.cpp:155
CachedPtr< frontend::SessionAuthorizer > session_authorizer
Definition: default_server_configuration.h:281
virtual std::shared_ptr< scene::SurfaceCoordinator > the_surface_coordinator()
Definition: default_configuration.cpp:113
virtual std::shared_ptr< frontend::SessionAuthorizer > the_session_authorizer()
Definition: default_server_configuration.cpp:136
CachedPtr< shell::FocusSetter > shell_focus_setter
Definition: default_server_configuration.h:293

Copyright © 2012,2013 Canonical Ltd.
Generated on Fri Apr 11 21:14:53 UTC 2014