X-Git-Url: https://rtime.felk.cvut.cz/gitweb/l4.git/blobdiff_plain/5a0e6ead0fbfbb912cd817abad695c078e82481c..8d9e85aaae867f39cdd610261e3a4181c25add2d:/l4/pkg/mag/include/server/plugin diff --git a/l4/pkg/mag/include/server/plugin b/l4/pkg/mag/include/server/plugin index 7c1f88b57..017e52f39 100644 --- a/l4/pkg/mag/include/server/plugin +++ b/l4/pkg/mag/include/server/plugin @@ -10,46 +10,56 @@ #pragma once #include -#include +#include #include +#include +#include + struct lua_State; +namespace Mag_gfx { +class Font; +} + namespace Mag_server { class User_state; -class Core_api; - +class Input_source; class Core_api { private: - Input_source *_input; - Registry *_reg; User_state *_ust; L4::Cap _rcv_cap; L4::Cap _fb; lua_State *_lua; + Mag_gfx::Font const *_label_font; // not instanziatable Core_api(Core_api const &); void operator = (Core_api const &); -public: - Core_api(Registry *r, lua_State *lua, User_state *u, L4::Cap rcvc, - L4::Cap fb); +protected: + Core_api(lua_State *lua, User_state *u, L4::Cap rcvc, + L4::Cap fb, Mag_gfx::Font const *label_font); - Registry *registry() const { return _reg; } +public: User_state *user_state() const { return _ust; } - Input_source *input_sources() const { return _input; } L4::Cap backend_fb() const { return _fb; } - - void get_refs_table() const; - void add_input_source(Input_source *i); - + Mag_gfx::Font const *label_font() const { return _label_font; } lua_State *lua_state() const { return _lua; } - L4::Cap rcv_cap() const { return _rcv_cap; } + + virtual Registry *registry() const = 0; + virtual void set_session_options(Session *s, L4::Ipc::Istream &ios, + Session::Property_handler const *extra = 0) const; + virtual void get_refs_table() const; + virtual void add_input_source(Input_source *i) = 0; + virtual void register_session(Session *) const = 0; + virtual Session_list *sessions() const = 0; + virtual void add_session_observer(cxx::Observer *) const = 0; + virtual void get_ticks(cxx::Observer *) const = 0; }; class Plugin