comparison idavoll/pubsub.py @ 68:a3d67cbab9c4

Return deferreds from getFeatures() and getIdentities(). Find out if a node exists for getIdentities(), and return its type.
author Ralph Meijer <ralphm@ik.nu>
date Sat, 06 Nov 2004 22:18:45 +0000
parents f6b7a06b8870
children 5d7a924ebddb
comparison
equal deleted inserted replaced
67:cdf17c4d3bf9 68:a3d67cbab9c4
112 iq.handled = True 112 iq.handled = True
113 113
114 class ComponentServiceFromService(Service): 114 class ComponentServiceFromService(Service):
115 115
116 def getIdentities(self, node): 116 def getIdentities(self, node):
117 results = [] 117 if node:
118 if not node: 118 d = self.backend.get_node_type(node)
119 results.append({ 119 d.addCallback(lambda x: [{'category': 'pubsub', 'type': x}])
120 'category': 'pubsub', 120 d.addErrback(lambda x: [])
121 'type': 'generic', 121 return d
122 'name': 'Generic Pubsub Service' 122 else:
123 }) 123 return defer.succeed({'category': 'pubsub',
124 return results 124 'type': 'generic',
125 'name': 'Generic Pubsub Service'})
125 126
126 def getFeatures(self, node): 127 def getFeatures(self, node):
127 features = [] 128 features = []
128 129
129 if not node: 130 if not node:
134 features.append(NS_PUBSUB + "#outcast-affiliation") 135 features.append(NS_PUBSUB + "#outcast-affiliation")
135 136
136 if self.backend.supports_persistent_items(): 137 if self.backend.supports_persistent_items():
137 features.append(NS_PUBSUB + "#persistent-items") 138 features.append(NS_PUBSUB + "#persistent-items")
138 139
139 return features 140 return defer.succeed(features)
140 141
141 components.registerAdapter(ComponentServiceFromService, backend.IBackendService, component.IService) 142 components.registerAdapter(ComponentServiceFromService, backend.IBackendService, component.IService)
142 143
143 class ComponentServiceFromNotificationService(Service): 144 class ComponentServiceFromNotificationService(Service):
144 145
203 features = [] 204 features = []
204 205
205 if not node: 206 if not node:
206 features.append(NS_PUBSUB + "#subscribe") 207 features.append(NS_PUBSUB + "#subscribe")
207 208
208 return features 209 return defer.succeed(features)
209 210
210 def onSubscribe(self, iq): 211 def onSubscribe(self, iq):
211 self.handler_wrapper(self._onSubscribe, iq) 212 self.handler_wrapper(self._onSubscribe, iq)
212 213
213 def _onSubscribe(self, iq): 214 def _onSubscribe(self, iq):
261 262
262 components.registerAdapter(ComponentServiceFromSubscriptionService, backend.ISubscriptionService, component.IService) 263 components.registerAdapter(ComponentServiceFromSubscriptionService, backend.ISubscriptionService, component.IService)
263 264
264 class ComponentServiceFromNodeCreationService(Service): 265 class ComponentServiceFromNodeCreationService(Service):
265 266
266 def getFeatures(self, node):
267 features = []
268
269 if not node:
270 features.append(NS_PUBSUB + "#create-nodes")
271
272 if self.backend.supports_instant_nodes():
273 features.append(NS_PUBSUB + "#instant-nodes")
274
275 return features
276
277 def componentConnected(self, xmlstream): 267 def componentConnected(self, xmlstream):
278 xmlstream.addObserver(PUBSUB_CREATE, self.onCreate) 268 xmlstream.addObserver(PUBSUB_CREATE, self.onCreate)
279 xmlstream.addObserver(PUBSUB_CONFIGURE_GET, self.onConfigureGet) 269 xmlstream.addObserver(PUBSUB_CONFIGURE_GET, self.onConfigureGet)
280 xmlstream.addObserver(PUBSUB_CONFIGURE_SET, self.onConfigureSet) 270 xmlstream.addObserver(PUBSUB_CONFIGURE_SET, self.onConfigureSet)
271
272 def getFeatures(self, node):
273 features = []
274
275 if not node:
276 features.append(NS_PUBSUB + "#create-nodes")
277
278 if self.backend.supports_instant_nodes():
279 features.append(NS_PUBSUB + "#instant-nodes")
280
281 return defer.succeed(features)
281 282
282 def onCreate(self, iq): 283 def onCreate(self, iq):
283 self.handler_wrapper(self._onCreate, iq) 284 self.handler_wrapper(self._onCreate, iq)
284 285
285 def _onCreate(self, iq): 286 def _onCreate(self, iq):