Mercurial > libervia-pubsub
comparison idavoll/memory_backend.py @ 59:0fa161c00ed9
Use jid.JIDs everywhere in the backend.
Fix subscription list retrieval in pgsql_backend, thereby actually making
notifications work.
author | Ralph Meijer <ralphm@ik.nu> |
---|---|
date | Sat, 06 Nov 2004 17:07:47 +0000 |
parents | 62fdb37234e5 |
children | 0e642e5b4fb2 |
comparison
equal
deleted
inserted
replaced
58:3e2e0040e3e0 | 59:0fa161c00ed9 |
---|---|
47 try: | 47 try: |
48 node = self.nodes[node_id] | 48 node = self.nodes[node_id] |
49 except KeyError: | 49 except KeyError: |
50 raise backend.NodeNotFound | 50 raise backend.NodeNotFound |
51 else: | 51 else: |
52 return defer.succeed(node.affiliations.get(entity, None)) | 52 return defer.succeed(node.affiliations.get(entity.full(), None)) |
53 | 53 |
54 def get_subscribers(self, node_id): | 54 def get_subscribers(self, node_id): |
55 try: | 55 try: |
56 node = self.nodes[node_id] | 56 node = self.nodes[node_id] |
57 except KeyError: | 57 except KeyError: |
58 raise backend.NodeNotFound | 58 raise backend.NodeNotFound |
59 else: | 59 else: |
60 subscriptions = self.nodes[node_id].subscriptions | 60 subscriptions = self.nodes[node_id].subscriptions |
61 subscribers = [s for s in subscriptions | 61 subscribers = [jid.JID(s) for s in subscriptions |
62 if subscriptions[s].state == 'subscribed'] | 62 if subscriptions[s].state == 'subscribed'] |
63 return defer.succeed(subscribers) | 63 return defer.succeed(subscribers) |
64 | 64 |
65 def store_items(self, node_id, items, publisher): | 65 def store_items(self, node_id, items, publisher): |
66 for item in items: | 66 for item in items: |
72 node = self.nodes[node_id] | 72 node = self.nodes[node_id] |
73 except KeyError: | 73 except KeyError: |
74 raise backend.NodeNotFound | 74 raise backend.NodeNotFound |
75 | 75 |
76 try: | 76 try: |
77 subscription = node.subscriptions[subscriber] | 77 subscription = node.subscriptions[subscriber.full()] |
78 except: | 78 except: |
79 subscription = Subscription(state) | 79 subscription = Subscription(state) |
80 node.subscriptions[subscriber] = subscription | 80 node.subscriptions[subscriber.full()] = subscription |
81 | 81 |
82 return defer.succeed({'node': node_id, | 82 return defer.succeed({'node': node_id, |
83 'jid': subscriber, | 83 'jid': subscriber, |
84 'subscription': subscription.state}) | 84 'subscription': subscription.state}) |
85 | 85 |
88 node = self.nodes[node_id] | 88 node = self.nodes[node_id] |
89 except KeyError: | 89 except KeyError: |
90 raise backend.NodeNotFound | 90 raise backend.NodeNotFound |
91 | 91 |
92 try: | 92 try: |
93 del node.subscriptions[subscriber] | 93 del node.subscriptions[subscriber.full()] |
94 except KeyError: | 94 except KeyError: |
95 raise backend.NotSubscribed | 95 raise backend.NotSubscribed |
96 | 96 |
97 return defer.succeed(None) | 97 return defer.succeed(None) |
98 | 98 |
99 def create_node(self, node_id, owner): | 99 def create_node(self, node_id, owner): |
100 if node_id in self.nodes: | 100 if node_id in self.nodes: |
101 raise backend.NodeExists | 101 raise backend.NodeExists |
102 | 102 |
103 node = Node(node_id) | 103 node = Node(node_id) |
104 node.affiliations[owner] = 'owner' | 104 node.affiliations[owner.full()] = 'owner' |
105 self.nodes[node_id] = node | 105 self.nodes[node_id] = node |
106 | 106 |
107 return defer.succeed(None) | 107 return defer.succeed(None) |
108 | 108 |
109 class BackendService(backend.BackendService): | 109 class BackendService(backend.BackendService): |