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)