Subversion Repositories HomeAutomation

Rev

Details | Last modification | View Log | SVN | RSS feed

Rev Author Line No. Line
1607 runge 1
 
2
function ServiceManager() {}
3
 
4
ServiceManager.Services = new Array();
5
ServiceManager.Callbacks = new Array();
6
 
7
ServiceManager.addCallback = function(callback)
8
{
9
    ServiceManager.Callbacks[ServiceManager.Callbacks.length] = callback;
10
}
11
 
12
ServiceManager.getService = function(type, name, id)
13
{
14
    var fullId = name + ":" + id;
15
 
16
    if (!ServiceManager.Services[fullId])
17
    {
18
        if (eval("typeof " + name + " != 'function'"))///FIXME: eval = evil!
19
        {
20
            if (!LoadScript("legacy/" + type + "/" + name + ".js"))
21
            {
22
                //log("Could not load " + name + ".js\n");
23
                return null;
24
            }
25
        }
26
 
27
        ServiceManager.Services[fullId] = eval("(new " + name + "('" + type + "', '" + name + "', " + id + "))");///FIXME: Can we do this without eval??
28
 
29
        for (var n in ServiceManager.Callbacks)
30
        {
31
            ServiceManager.Callbacks[n](ServiceManager.Services[fullId]);
32
        }
33
    }
34
 
35
    return ServiceManager.Services[fullId];
36
}
37
 
38
ServiceManager.startService = function(type, name, id, args)
39
{
40
    var service = ServiceManager.getService(type, name, id);
41
    if (service != null)
42
    {
43
        service.initialize(args);
44
    }
45
}
46
 
47
ServiceManager.numServices = function()
48
{
49
    return ServiceManager.Services.length;
50
}
51
 
52
ServiceManager.numCallbacks = function()
53
{
54
        return ServiceManager.Callbacks.length;
55
}
56