*/
using GLib;
-using Gee;
namespace zavai {
public class Registry : Object, Resource
{
- HashMap<string, Resource> memb_resources;
- HashMap<string, Service> memb_services;
- HashMap<string, Applet> memb_applets;
- HashMap<string, Menu> memb_menus;
- protected ArrayList<Resource> registration_order;
+ List<Resource> resources;
public DBus.Connection sbus;
public string bus_name;
public Registry()
{
- memb_resources = new HashMap<string, Resource>(str_hash, str_equal);
- memb_services = new HashMap<string, Service>(str_hash, str_equal);
- memb_applets = new HashMap<string, Applet>(str_hash, str_equal);
- memb_menus = new HashMap<string, Menu>(str_hash, str_equal);
- registration_order = new ArrayList<Resource>();
+ resources = new List<Resource>();
try {
sbus = DBus.Bus.get(DBus.BusType.SYSTEM);
} catch (DBus.Error e) {
public void shutdown()
{
// Shutdown in reverse registration order
- for (int i = registration_order.size - 1; i >= 0; --i)
- registration_order[i].shutdown();
+ for (weak List<Resource> i = resources; i != null; i = i.next)
+ i.data.shutdown();
}
- public void register_resource(string name, Resource obj)
+ public void register(Resource obj)
{
- memb_resources[name] = obj;
- registration_order.add(obj);
- }
-
- public void register_service(Service obj)
- {
- memb_services[obj.name] = obj;
- registration_order.add(obj);
- }
-
- public void register_applet(string name, Applet obj)
- {
- memb_applets[name] = obj;
- registration_order.add(obj);
- }
-
- public void register_menu(string name, Menu obj)
- {
- memb_applets[name] = obj;
- memb_menus[name] = obj;
- registration_order.add(obj);
- }
-
- public Resource? getr(string name)
- {
- if (name in memb_resources)
- return memb_resources[name];
- else
- {
- log.error("getr: no resource found: " + name);
- return null;
- }
- }
-
- public Service? gets(string name)
- {
- if (name in memb_services)
- return memb_services[name];
- else
- {
- log.error("gets: no service found: " + name);
- return null;
- }
- }
-
- public Applet? geta(string name)
- {
- if (name in memb_applets)
- return memb_applets[name];
- else
- {
- log.error("geta: no applet found: " + name);
- return null;
- }
- }
-
- public Menu? getmenu(string name)
- {
- if (name in memb_menus)
- return memb_menus[name];
- else
- {
- log.error("getmenu: no menu found: " + name);
- return null;
- }
+ resources.prepend(obj);
}
}