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