-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDispatchModule.h
More file actions
135 lines (107 loc) · 2.73 KB
/
Copy pathDispatchModule.h
File metadata and controls
135 lines (107 loc) · 2.73 KB
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
* DispatchModule.h
*
* Created on: May 20, 2009
* Author: bear
*/
#ifndef DISPATCHMODULE_H_
#define DISPATCHMODULE_H_
#include <string>
#include "../config/config.h"
#include "../util/FilteringStreamBuf.h"
#include "../util/NameTimeInserter.h"
#include "../core/QueueProvider.h"
using namespace std;
using namespace dispatch;
using namespace dispatch::util;
using namespace dispatch::config;
namespace dispatch {
namespace module {
/**
* Basisklasse for pluggbare moduler i systemet. Denne er abstrakt (må subklasses).
*/
class DispatchModule :
public NameTimeTaggingOutputSet,
public QueueProvider {
private:
QueueProvider* queue_provider;
public:
/* NameTimeTaggedOutput out;
NameTimeTaggedOutput log;
NameTimeTaggedOutput err;
NameTimeTaggedOutput dbg;*/
/**
* Flagg brukt av system-kjerne-koden for å holde kontroll på om de har startet en modul eller ikke. Primitivt men fungerer :-)
*/
bool started;
/**
* Constructor
*/
DispatchModule();
/**
* Destructor
*/
virtual ~DispatchModule();
/**
* Skal returnere et beskrivende navn på modulen
*/
virtual string getModuleName() = 0;
/**
* Returnere et tråd-navn, samme som modulnavn
*/
string getName();
/**
* Returnerer true dersom modulen kan brukes som event-kilde
*/
virtual bool isEventSource() = 0;
/**
* Returnerer true dersom modulen kan brukes som event-handler
*/
virtual bool isEventHandler() = 0;
/**
* Fremtidig metode, ikke i bruk enda.
*/
//virtual bool isServiceHandler() = 0;
void setQueueProvider(QueueProvider* qp);
QueueProvider* getQueueProvider();
EventQueue* getEventQueue();
/**
* First-stage oppstart av modulen. Skal finne ut av konfig o.l.
* Skal returnere true dersom alt er OK, hvis ikke blir ikke modulen startet opp.
*/
virtual bool preInitialize() = 0;
/**
* Start opp modulen til ordinær drift
*/
virtual bool startup() = 0;
/**
* Initierer nedstenging av modulen
*/
virtual bool shutdown() = 0;
/**
* Tilbakekallsmetode som benyttes av visitoren, denne får alle konfigurasjonsfilnodene etter tur.
*/
virtual bool scanConfigNode(GConfigNode* node) = 0;
/**
* Hent ut config-visitor. Denne er ikke abstrakt, og trengs ikke implementeres av modulene.
*/
virtual config::GConfigNodeVisitor* getConfigVisitor();
};
/**
* Wrapper-visitor som brukes for at en modul skal kunne lese konfigurasjon
*/
class DispatchModuleConfigVisitor : public config::GConfigNodeVisitor {
DispatchModule* module;
public:
/**
* Konstructor which takes the module it is going to be used to read config for
*/
DispatchModuleConfigVisitor(DispatchModule* mod) : module(mod) {
}
/**
* Node som besøkes
*/
virtual void node(config::GConfigNode* node);
};
}} // end namespace
#endif /* DISPATCHMODULE_H_ */