Mercurial > libervia-pubsub
annotate idavoll/idavoll.py @ 109:9fb8f0867d02
Use storage.
author | Ralph Meijer <ralphm@ik.nu> |
---|---|
date | Fri, 08 Apr 2005 10:16:53 +0000 |
parents | 8d8946e67fcb |
children | 3d77f3808bfa |
rev | line source |
---|---|
105 | 1 from twisted.words.protocols.jabber import component |
1 | 2 from twisted.application import service |
8 | 3 from twisted.python import components |
67
cdf17c4d3bf9
Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents:
63
diff
changeset
|
4 from twisted.internet import defer |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
5 import backend |
1 | 6 import pubsub |
7 import xmpp_error | |
73 | 8 import disco |
1 | 9 |
10 import sys | |
11 | |
8 | 12 NS_VERSION = 'jabber:iq:version' |
13 | |
1 | 14 IQ_GET = '/iq[@type="get"]' |
15 IQ_SET = '/iq[@type="set"]' | |
8 | 16 VERSION = IQ_GET + '/query[@xmlns="' + NS_VERSION + '"]' |
73 | 17 DISCO_INFO = IQ_GET + '/query[@xmlns="' + disco.NS_INFO + '"]' |
18 DISCO_ITEMS = IQ_GET + '/query[@xmlns="' + disco.NS_ITEMS + '"]' | |
1 | 19 |
20 class IdavollService(component.Service): | |
21 | |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
22 def componentConnected(self, xmlstream): |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
23 self.xmlstream = xmlstream |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
24 xmlstream.addObserver(VERSION, self.onVersion, 1) |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
25 xmlstream.addObserver(DISCO_INFO, self.onDiscoInfo, 1) |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
26 xmlstream.addObserver(DISCO_ITEMS, self.onDiscoItems, 1) |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
27 xmlstream.addObserver(IQ_GET, self.iqFallback, -1) |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
28 xmlstream.addObserver(IQ_SET, self.iqFallback, -1) |
8 | 29 |
73 | 30 def get_disco_info(self, node): |
31 info = [] | |
57
445a61f872b6
Use NodeCreationService for pgsql backend, too.
Ralph Meijer <ralphm@ik.nu>
parents:
52
diff
changeset
|
32 |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
33 if not node: |
73 | 34 info.append(disco.Feature(disco.NS_ITEMS)) |
35 info.append(disco.Feature(NS_VERSION)) | |
57
445a61f872b6
Use NodeCreationService for pgsql backend, too.
Ralph Meijer <ralphm@ik.nu>
parents:
52
diff
changeset
|
36 |
73 | 37 return defer.succeed(info) |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
38 |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
39 def onVersion(self, iq): |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
40 iq.swapAttributeValues("to", "from") |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
41 iq["type"] = "result" |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
42 name = iq.addElement("name", None, 'Idavoll') |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
43 version = iq.addElement("version", None, '0.1') |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
44 self.send(iq) |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
45 iq.handled = True |
1 | 46 |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
47 def onDiscoInfo(self, iq): |
73 | 48 dl = [] |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
49 node = iq.query.getAttribute("node") |
8 | 50 |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
51 for c in self.parent: |
105 | 52 if component.IService.providedBy(c): |
73 | 53 if hasattr(c, "get_disco_info"): |
54 dl.append(c.get_disco_info(node)) | |
92
878a5b7697f2
Consume errors in DeferredLists.
Ralph Meijer <ralphm@ik.nu>
parents:
91
diff
changeset
|
55 d = defer.DeferredList(dl, fireOnOneErrback=1, consumeErrors=1) |
102
f4d725a94202
Fix bug in how errors are handled in disco info request.
Ralph Meijer <ralphm@ik.nu>
parents:
101
diff
changeset
|
56 d.addErrback(self._error, iq) |
67
cdf17c4d3bf9
Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents:
63
diff
changeset
|
57 d.addCallback(self._disco_info_results, iq, node) |
cdf17c4d3bf9
Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents:
63
diff
changeset
|
58 d.addCallback(self.send) |
cdf17c4d3bf9
Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents:
63
diff
changeset
|
59 |
cdf17c4d3bf9
Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents:
63
diff
changeset
|
60 iq.handled = True |
cdf17c4d3bf9
Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents:
63
diff
changeset
|
61 |
73 | 62 def _disco_info_results(self, results, iq, node): |
63 info = [] | |
64 for i in results: | |
65 info.extend(i[1]) | |
67
cdf17c4d3bf9
Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents:
63
diff
changeset
|
66 |
73 | 67 if node and not info: |
67
cdf17c4d3bf9
Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents:
63
diff
changeset
|
68 return xmpp_error.error_from_iq(iq, 'item-not-found') |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
69 else: |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
70 iq.swapAttributeValues("to", "from") |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
71 iq["type"] = "result" |
101
b75fcc554358
Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents:
97
diff
changeset
|
72 for item in info: |
b75fcc554358
Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents:
97
diff
changeset
|
73 #domish.Element.addChild should probably do this for all |
b75fcc554358
Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents:
97
diff
changeset
|
74 # subclasses of Element |
b75fcc554358
Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents:
97
diff
changeset
|
75 item.parent = iq.query |
b75fcc554358
Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents:
97
diff
changeset
|
76 |
b75fcc554358
Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents:
97
diff
changeset
|
77 iq.query.addChild(item) |
67
cdf17c4d3bf9
Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents:
63
diff
changeset
|
78 |
cdf17c4d3bf9
Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents:
63
diff
changeset
|
79 return iq |
cdf17c4d3bf9
Made returning disco info use deferreds.
Ralph Meijer <ralphm@ik.nu>
parents:
63
diff
changeset
|
80 |
101
b75fcc554358
Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents:
97
diff
changeset
|
81 def _error(self, result, iq): |
b75fcc554358
Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents:
97
diff
changeset
|
82 print "Got error on index %d:" % result.value[1] |
b75fcc554358
Added support for disco info meta data.
Ralph Meijer <ralphm@ik.nu>
parents:
97
diff
changeset
|
83 result.value[0].printBriefTraceback() |
89
ccf699adae5e
Merge from RELENG_0: Fix bug in handling uncaught exceptions.
Ralph Meijer <ralphm@ik.nu>
parents:
85
diff
changeset
|
84 return xmpp_error.error_from_iq(iq, 'internal-server-error') |
8 | 85 |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
86 def onDiscoItems(self, iq): |
73 | 87 dl = [] |
88 node = iq.query.getAttribute("node") | |
89 | |
90 for c in self.parent: | |
105 | 91 if component.IService.providedBy(c): |
73 | 92 if hasattr(c, "get_disco_items"): |
93 dl.append(c.get_disco_items(node)) | |
92
878a5b7697f2
Consume errors in DeferredLists.
Ralph Meijer <ralphm@ik.nu>
parents:
91
diff
changeset
|
94 d = defer.DeferredList(dl, fireOnOneErrback=1, consumeErrors=1) |
102
f4d725a94202
Fix bug in how errors are handled in disco info request.
Ralph Meijer <ralphm@ik.nu>
parents:
101
diff
changeset
|
95 d.addErrback(self._error, iq) |
73 | 96 d.addCallback(self._disco_items_result, iq, node) |
97 d.addCallback(self.send) | |
98 | |
99 iq.handled = True | |
100 | |
101 def _disco_items_result(self, results, iq, node): | |
102 items = [] | |
103 | |
104 for i in results: | |
105 items.extend(i[1]) | |
106 | |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
107 iq.swapAttributeValues("to", "from") |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
108 iq["type"] = "result" |
73 | 109 iq.query.children = items |
110 | |
111 return iq | |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
112 |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
113 def iqFallback(self, iq): |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
114 if iq.handled == True: |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
115 return |
1 | 116 |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
117 self.send(xmpp_error.error_from_iq(iq, 'service-unavailable')) |
1 | 118 |
76
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
119 class LogService(component.Service): |
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
120 |
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
121 def transportConnected(self, xmlstream): |
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
122 xmlstream.rawDataInFn = self.rawDataIn |
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
123 xmlstream.rawDataOutFn = self.rawDataOut |
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
124 |
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
125 def rawDataIn(self, buf): |
78
a7196ca7cefd
Fixed bug in LogService with non-ascii chars.
Ralph Meijer <ralphm@ik.nu>
parents:
76
diff
changeset
|
126 print "RECV: %s" % unicode(buf, 'utf-8').encode('ascii', 'replace') |
76
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
127 |
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
128 def rawDataOut(self, buf): |
78
a7196ca7cefd
Fixed bug in LogService with non-ascii chars.
Ralph Meijer <ralphm@ik.nu>
parents:
76
diff
changeset
|
129 print "SEND: %s" % unicode(buf, 'utf-8').encode('ascii', 'replace') |
76
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
130 |
1 | 131 def makeService(config): |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
132 serviceCollection = service.MultiService() |
1 | 133 |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
134 # set up Jabber Component |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
135 sm = component.buildServiceManager(config["jid"], config["secret"], |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
136 ("tcp:%s:%s" % (config["rhost"], config["rport"]))) |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
137 |
76
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
138 if config["verbose"]: |
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
139 LogService().setServiceParent(sm) |
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
75
diff
changeset
|
140 |
42
7d088c61e131
Make choice of backend an option to mktap. This includes the database
Ralph Meijer <ralphm@ik.nu>
parents:
35
diff
changeset
|
141 if config['backend'] == 'pgsql': |
109 | 142 import pgsql_storage |
143 st = pgsql_storage.Storage(user=config['dbuser'], | |
144 database=config['dbname']) | |
42
7d088c61e131
Make choice of backend an option to mktap. This includes the database
Ralph Meijer <ralphm@ik.nu>
parents:
35
diff
changeset
|
145 elif config['backend'] == 'memory': |
109 | 146 import memory_storage |
147 st = memory_storage.Storage() | |
42
7d088c61e131
Make choice of backend an option to mktap. This includes the database
Ralph Meijer <ralphm@ik.nu>
parents:
35
diff
changeset
|
148 |
109 | 149 import generic_backend as b |
43
9685b7e291ef
Moved common stuff out of pgsql_backend.py to backend.py.
Ralph Meijer <ralphm@ik.nu>
parents:
42
diff
changeset
|
150 bs = b.BackendService(st) |
1 | 151 |
97
cf918d581da5
Enable admin to hide all nodes when the service is queried using disco items.
Ralph Meijer <ralphm@ik.nu>
parents:
92
diff
changeset
|
152 c = component.IService(bs) |
cf918d581da5
Enable admin to hide all nodes when the service is queried using disco items.
Ralph Meijer <ralphm@ik.nu>
parents:
92
diff
changeset
|
153 c.setServiceParent(sm) |
cf918d581da5
Enable admin to hide all nodes when the service is queried using disco items.
Ralph Meijer <ralphm@ik.nu>
parents:
92
diff
changeset
|
154 c.hide_nodes = config["hide-nodes"] |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
155 |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
156 bsc = b.PublishService() |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
157 bsc.setServiceParent(bs) |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
158 component.IService(bsc).setServiceParent(sm) |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
159 |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
160 bsc = b.NotificationService() |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
161 bsc.setServiceParent(bs) |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
162 component.IService(bsc).setServiceParent(sm) |
1 | 163 |
52
0947b46c0968
Use ISubscriptionService support of PostgreSQL backend.
Ralph Meijer <ralphm@ik.nu>
parents:
43
diff
changeset
|
164 bsc = b.SubscriptionService() |
0947b46c0968
Use ISubscriptionService support of PostgreSQL backend.
Ralph Meijer <ralphm@ik.nu>
parents:
43
diff
changeset
|
165 bsc.setServiceParent(bs) |
0947b46c0968
Use ISubscriptionService support of PostgreSQL backend.
Ralph Meijer <ralphm@ik.nu>
parents:
43
diff
changeset
|
166 component.IService(bsc).setServiceParent(sm) |
0947b46c0968
Use ISubscriptionService support of PostgreSQL backend.
Ralph Meijer <ralphm@ik.nu>
parents:
43
diff
changeset
|
167 |
57
445a61f872b6
Use NodeCreationService for pgsql backend, too.
Ralph Meijer <ralphm@ik.nu>
parents:
52
diff
changeset
|
168 bsc = b.NodeCreationService() |
445a61f872b6
Use NodeCreationService for pgsql backend, too.
Ralph Meijer <ralphm@ik.nu>
parents:
52
diff
changeset
|
169 bsc.setServiceParent(bs) |
445a61f872b6
Use NodeCreationService for pgsql backend, too.
Ralph Meijer <ralphm@ik.nu>
parents:
52
diff
changeset
|
170 component.IService(bsc).setServiceParent(sm) |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
171 |
75
1f7b8b6b8ce9
Enable AffiliationsService for memory backend, too.
Ralph Meijer <ralphm@ik.nu>
parents:
73
diff
changeset
|
172 bsc = b.AffiliationsService() |
1f7b8b6b8ce9
Enable AffiliationsService for memory backend, too.
Ralph Meijer <ralphm@ik.nu>
parents:
73
diff
changeset
|
173 bsc.setServiceParent(bs) |
1f7b8b6b8ce9
Enable AffiliationsService for memory backend, too.
Ralph Meijer <ralphm@ik.nu>
parents:
73
diff
changeset
|
174 component.IService(bsc).setServiceParent(sm) |
63
60e95c60252d
Setup AffiliationsService and matching protocol adapter for the pgsql
Ralph Meijer <ralphm@ik.nu>
parents:
57
diff
changeset
|
175 |
109 | 176 bsc = b.ItemRetrievalService() |
177 bsc.setServiceParent(bs) | |
178 component.IService(bsc).setServiceParent(sm) | |
82
758cb81b97ce
Enable ItemRetrievalService for pgsql backend.
Ralph Meijer <ralphm@ik.nu>
parents:
78
diff
changeset
|
179 |
109 | 180 bsc = b.RetractionService() |
181 bsc.setServiceParent(bs) | |
182 component.IService(bsc).setServiceParent(sm) | |
85
ec557449d1aa
Implement node retraction, with storage support for pgsql.
Ralph Meijer <ralphm@ik.nu>
parents:
82
diff
changeset
|
183 |
109 | 184 bsc = b.NodeDeletionService() |
185 bsc.setServiceParent(bs) | |
186 component.IService(bsc).setServiceParent(sm) | |
91
47ee5369c410
Use NodeDeletionService for the pgsql backend.
Ralph Meijer <ralphm@ik.nu>
parents:
89
diff
changeset
|
187 |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
188 s = IdavollService() |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
189 s.setServiceParent(sm) |
1 | 190 |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
191 sm.setServiceParent(serviceCollection) |
1 | 192 |
32
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
193 # other stuff |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
194 |
ddc08757ec1d
Fire up several component.IServices that match the backend Services.
Ralph Meijer <ralphm@ik.nu>
parents:
26
diff
changeset
|
195 return sm |