File: kernel.cpp

package info (click to toggle)
korelib 0.0.1-8
  • links: PTS
  • area: main
  • in suites: woody
  • size: 1,788 kB
  • ctags: 1,918
  • sloc: sh: 8,555; cpp: 3,989; makefile: 633; ansic: 65
file content (80 lines) | stat: -rw-r--r-- 2,297 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

#include <kore/version.h>
#include <kore/kernel.h>
#include <kore/servicemanager.h>
#include <kore/pluginloader.h>
#include <kore/modulemanager.h>
#include <kore/pluginmanager.h>

#define KERNEL_MAJOR 0
#define KERNEL_MINOR 0
#define KERNEL_REVISION 1
#define KERNEL_VERSION "0.0.1"
#define KERNEL_NAME "Kernel"
#define KERNEL_TYPE "Kernel"
#define KERNEL_DESCRIPTION "Default Kore Kernel"
#define KERNEL_SERVICE "Kore/Kernel/Kernel"
#define KERNEL_SERVICE_DESCRIPTION "Kore Kernel service"

using namespace kore;

Kernel* Kernel::_instance = 0;

Kernel* Kernel::instance()
{
    if( !_instance )
        setInstance(new Kernel());
    return _instance;
//    return (Kernel*)((ServiceManager*) _instance->_serviceManager->registeredProvider("Kore/Kernel/Service Manager"))->registeredProvider(KERNEL_SERVICE);
}

void Kernel::setInstance(Kernel* inst)
{
    _instance = inst;
}

Kernel::Kernel()
{
    _version = new Version(KERNEL_MAJOR,KERNEL_MINOR,KERNEL_REVISION,KERNEL_VERSION);
    _info = new Info(this, KERNEL_NAME, KERNEL_TYPE, KERNEL_DESCRIPTION, _version, _version);
    setInfo(_info);
    _kernelService = new Service(this, KERNEL_SERVICE, KERNEL_SERVICE_DESCRIPTION);
    addService(_kernelService);

    setServiceManager( new ServiceManager() );
    _serviceManager->registerProvider(_serviceManager);
    _serviceManager->registerProvider(this);

    _moduleManager = new ModuleManager();
    _serviceManager->registerProvider(_moduleManager);
    _moduleManager->registerModule(this);
    _moduleManager->registerModule(_serviceManager);
    _moduleManager->registerModule(_moduleManager);

    _pluginLoader = new PluginLoader();
    _serviceManager->registerProvider(_pluginLoader);
    _moduleManager->registerModule(_pluginLoader);
//    _pluginManager = new PluginManager();
}
Kernel::~Kernel()
{
//    _serviceManager->unregisterProvider(this);
//    _serviceManager->unregisterProvider(_serviceManager);
    _moduleManager->unregisterModule(_serviceManager);
    delete _serviceManager;
    delete _moduleManager;
    delete _pluginLoader;
    delete _info;
    delete _version;
    delete _kernelService;
}

ServiceManager* Kernel::serviceManager() const
{
    return _serviceManager;
}

void Kernel::setServiceManager(ServiceManager* sm)
{
    _serviceManager = sm;
}