Mercurial > libervia-pubsub
comparison idavoll/memory_storage.py @ 204:b4bf0a5ce50d
Implement storage facilities for the HTTP gateway.
Author: ralphm.
Fixes #12.
One of the storage facilities is PostgreSQL based, providing persistence.
author | Ralph Meijer <ralphm@ik.nu> |
---|---|
date | Wed, 16 Jul 2008 06:38:32 +0000 |
parents | 77c61e2b8c75 |
children | 274a45d2a5ab |
comparison
equal
deleted
inserted
replaced
203:2c46e6664680 | 204:b4bf0a5ce50d |
---|---|
264 | 264 |
265 class Subscription: | 265 class Subscription: |
266 | 266 |
267 def __init__(self, state): | 267 def __init__(self, state): |
268 self.state = state | 268 self.state = state |
269 | |
270 | |
271 | |
272 class GatewayStorage(object): | |
273 """ | |
274 Memory based storage facility for the XMPP-HTTP gateway. | |
275 """ | |
276 | |
277 def __init__(self): | |
278 self.callbacks = {} | |
279 | |
280 | |
281 def addCallback(self, service, nodeIdentifier, callback): | |
282 try: | |
283 callbacks = self.callbacks[service, nodeIdentifier] | |
284 except KeyError: | |
285 callbacks = set([callback]) | |
286 self.callbacks[service, nodeIdentifier] = callbacks | |
287 else: | |
288 callbacks.add(callback) | |
289 pass | |
290 | |
291 print self.callbacks | |
292 return defer.succeed(None) | |
293 | |
294 | |
295 def removeCallback(self, service, nodeIdentifier, callback): | |
296 try: | |
297 callbacks = self.callbacks[service, nodeIdentifier] | |
298 callbacks.remove(callback) | |
299 except KeyError: | |
300 return defer.fail(error.NotSubscribed()) | |
301 else: | |
302 if not callbacks: | |
303 del self.callbacks[service, nodeIdentifier] | |
304 | |
305 return defer.succeed(not callbacks) | |
306 | |
307 | |
308 def getCallbacks(self, service, nodeIdentifier): | |
309 try: | |
310 callbacks = self.callbacks[service, nodeIdentifier] | |
311 except KeyError: | |
312 return defer.fail(error.NoCallbacks()) | |
313 else: | |
314 return defer.succeed(callbacks) | |
315 | |
316 | |
317 def hasCallbacks(self, service, nodeIdentifier): | |
318 return defer.succeed((service, nodeIdentifier) in self.callbacks) |