Mercurial > libervia-pubsub
comparison idavoll/memory_storage.py @ 167:ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Author: ralphm
Fixes: #4
author | Ralph Meijer <ralphm@ik.nu> |
---|---|
date | Wed, 03 Oct 2007 12:41:43 +0000 |
parents | 5191ba7c4df8 |
children | bc269696ef42 |
comparison
equal
deleted
inserted
replaced
166:5abb017bd687 | 167:ef22e4150caa |
---|---|
1 # Copyright (c) 2003-2006 Ralph Meijer | 1 # Copyright (c) 2003-2007 Ralph Meijer |
2 # See LICENSE for details. | 2 # See LICENSE for details. |
3 | 3 |
4 import copy | 4 import copy |
5 from zope.interface import implements | 5 from zope.interface import implements |
6 from twisted.internet import defer | 6 from twisted.internet import defer |
7 from twisted.words.protocols.jabber import jid | 7 from twisted.words.protocols.jabber import jid |
8 import storage | 8 |
9 from idavoll import error, iidavoll | |
9 | 10 |
10 default_config = {"pubsub#persist_items": True, | 11 default_config = {"pubsub#persist_items": True, |
11 "pubsub#deliver_payloads": True} | 12 "pubsub#deliver_payloads": True} |
12 | 13 |
13 class Storage: | 14 class Storage: |
14 | 15 |
15 implements(storage.IStorage) | 16 implements(iidavoll.IStorage) |
16 | 17 |
17 def __init__(self): | 18 def __init__(self): |
18 self._nodes = {} | 19 self._nodes = {} |
19 | 20 |
20 def get_node(self, node_id): | 21 def get_node(self, node_id): |
21 try: | 22 try: |
22 node = self._nodes[node_id] | 23 node = self._nodes[node_id] |
23 except KeyError: | 24 except KeyError: |
24 return defer.fail(storage.NodeNotFound()) | 25 return defer.fail(error.NodeNotFound()) |
25 | 26 |
26 return defer.succeed(node) | 27 return defer.succeed(node) |
27 | 28 |
28 def get_node_ids(self): | 29 def get_node_ids(self): |
29 return defer.succeed(self._nodes.keys()) | 30 return defer.succeed(self._nodes.keys()) |
30 | 31 |
31 def create_node(self, node_id, owner, config = None, type='leaf'): | 32 def create_node(self, node_id, owner, config = None, type='leaf'): |
32 if node_id in self._nodes: | 33 if node_id in self._nodes: |
33 return defer.fail(storage.NodeExists()) | 34 return defer.fail(error.NodeExists()) |
34 | 35 |
35 if not config: | 36 if not config: |
36 config = copy.copy(default_config) | 37 config = copy.copy(default_config) |
37 | 38 |
38 if type != 'leaf': | 39 if type != 'leaf': |
45 | 46 |
46 def delete_node(self, node_id): | 47 def delete_node(self, node_id): |
47 try: | 48 try: |
48 del self._nodes[node_id] | 49 del self._nodes[node_id] |
49 except KeyError: | 50 except KeyError: |
50 return defer.fail(storage.NodeNotFound()) | 51 return defer.fail(error.NodeNotFound()) |
51 | 52 |
52 return defer.succeed(None) | 53 return defer.succeed(None) |
53 | 54 |
54 def get_affiliations(self, entity): | 55 def get_affiliations(self, entity): |
55 entity = entity.userhost() | 56 entity = entity.userhost() |
68 | 69 |
69 return defer.succeed(subscriptions) | 70 return defer.succeed(subscriptions) |
70 | 71 |
71 class Node: | 72 class Node: |
72 | 73 |
73 implements(storage.INode) | 74 implements(iidavoll.INode) |
74 | 75 |
75 def __init__(self, node_id, owner, config): | 76 def __init__(self, node_id, owner, config): |
76 self.id = node_id | 77 self.id = node_id |
77 self._affiliations = {owner.userhost(): 'owner'} | 78 self._affiliations = {owner.userhost(): 'owner'} |
78 self._subscriptions = {} | 79 self._subscriptions = {} |
108 state = subscription.state | 109 state = subscription.state |
109 return defer.succeed(state) | 110 return defer.succeed(state) |
110 | 111 |
111 def add_subscription(self, subscriber, state): | 112 def add_subscription(self, subscriber, state): |
112 if self._subscriptions.get(subscriber.full()): | 113 if self._subscriptions.get(subscriber.full()): |
113 return defer.fail(storage.SubscriptionExists()) | 114 return defer.fail(error.SubscriptionExists()) |
114 | 115 |
115 subscription = Subscription(state) | 116 subscription = Subscription(state) |
116 self._subscriptions[subscriber.full()] = subscription | 117 self._subscriptions[subscriber.full()] = subscription |
117 return defer.succeed(None) | 118 return defer.succeed(None) |
118 | 119 |
119 def remove_subscription(self, subscriber): | 120 def remove_subscription(self, subscriber): |
120 try: | 121 try: |
121 del self._subscriptions[subscriber.full()] | 122 del self._subscriptions[subscriber.full()] |
122 except KeyError: | 123 except KeyError: |
123 return defer.fail(storage.SubscriptionNotFound()) | 124 return defer.fail(error.SubscriptionNotFound()) |
124 | 125 |
125 return defer.succeed(None) | 126 return defer.succeed(None) |
126 | 127 |
127 def get_subscribers(self): | 128 def get_subscribers(self): |
128 subscribers = [jid.internJID(subscriber) for subscriber, subscription | 129 subscribers = [jid.internJID(subscriber) for subscriber, subscription |
206 | 207 |
207 return defer.succeed(None) | 208 return defer.succeed(None) |
208 | 209 |
209 class LeafNode(Node, LeafNodeMixin): | 210 class LeafNode(Node, LeafNodeMixin): |
210 | 211 |
211 implements(storage.ILeafNode) | 212 implements(iidavoll.ILeafNode) |
212 | 213 |
213 def __init__(self, node_id, owner, config): | 214 def __init__(self, node_id, owner, config): |
214 Node.__init__(self, node_id, owner, config) | 215 Node.__init__(self, node_id, owner, config) |
215 LeafNodeMixin.__init__(self) | 216 LeafNodeMixin.__init__(self) |
216 | 217 |
217 class Subscription: | 218 class Subscription: |
218 | 219 |
219 implements(storage.ISubscription) | |
220 | |
221 def __init__(self, state): | 220 def __init__(self, state): |
222 self.state = state | 221 self.state = state |