3 * (c) 2010 Alexander Warg <warg@os.inf.tu-dresden.de>
4 * economic rights: Technische Universität Dresden (Germany)
6 * This file is part of TUD:OS and distributed under the terms of the
7 * GNU General Public License 2.
8 * Please see the COPYING-GPL-2 file for details.
12 #include <l4/mag/server/object>
13 #include <l4/mag/server/session>
14 #include <l4/re/video/goos>
16 #include <l4/cxx/hlist>
17 #include <l4/cxx/observer>
25 namespace Mag_server {
34 L4::Cap<void> _rcv_cap;
35 L4::Cap<L4Re::Video::Goos> _fb;
37 Mag_gfx::Font const *_label_font;
40 Core_api(Core_api const &);
41 void operator = (Core_api const &);
44 Core_api(lua_State *lua, User_state *u, L4::Cap<void> rcvc,
45 L4::Cap<L4Re::Video::Goos> fb, Mag_gfx::Font const *label_font);
48 User_state *user_state() const { return _ust; }
49 L4::Cap<L4Re::Video::Goos> backend_fb() const { return _fb; }
50 Mag_gfx::Font const *label_font() const { return _label_font; }
51 lua_State *lua_state() const { return _lua; }
52 L4::Cap<void> rcv_cap() const { return _rcv_cap; }
54 virtual Registry *registry() const = 0;
55 virtual void set_session_options(Session *s, L4::Ipc::Istream &ios,
56 Session::Property_handler const *extra = 0) const;
57 virtual void get_refs_table() const;
58 virtual void add_input_source(Input_source *i) = 0;
59 virtual void register_session(Session *) const = 0;
60 virtual Session_list *sessions() const = 0;
61 virtual void add_session_observer(cxx::Observer *) const = 0;
62 virtual void get_ticks(cxx::Observer *) const = 0;
68 friend class Plugin_manager;
70 char const *const _name;
74 static Plugin *_first;
76 Plugin(Plugin const &);
77 void operator = (Plugin const &);
80 unsigned &get_flags() { return _flags; }
81 Plugin(char const *name) : _name(name), _flags(0), _next(_first)
90 virtual char const *type() const { return "generic"; }
91 char const *name() const { return _name; }
93 bool started() const { return _flags & F_started; }
95 virtual void start(Core_api *) = 0;
96 virtual void stop() {}