Browse Source

[2922] Return unsubscribed groups from unsubscribe_all

Return a list of groups and instances the socket was unsubscribed from
from the subscription manager's unsubscribe_all.

Needed in follow-up work.
Michal 'vorner' Vaner 12 years ago
parent
commit
6bcd96718c
2 changed files with 7 additions and 2 deletions
  1. 4 1
      src/bin/msgq/msgq.py.in
  2. 3 1
      src/bin/msgq/tests/msgq_test.py

+ 4 - 1
src/bin/msgq/msgq.py.in

@@ -125,9 +125,12 @@ class SubscriptionManager:
 
     def unsubscribe_all(self, socket):
         """Remove the socket from all subscriptions."""
-        for socklist in self.subscriptions.values():
+        removed_from = []
+        for subs, socklist in self.subscriptions.items():
             if socket in socklist:
                 socklist.remove(socket)
+                removed_from.append(subs)
+        return removed_from
 
     def find_sub(self, group, instance):
         """Return an array of sockets which want this specific group,

+ 3 - 1
src/bin/msgq/tests/msgq_test.py

@@ -75,7 +75,9 @@ class TestSubscriptionManager(unittest.TestCase):
         self.sm.subscribe('g2', 'i1', 's2')
         self.sm.subscribe('g2', 'i2', 's1')
         self.sm.subscribe('g2', 'i2', 's2')
-        self.sm.unsubscribe_all('s1')
+        self.assertEqual(set([('g1', 'i1'), ('g1', 'i2'), ('g2', 'i1'),
+                              ('g2', 'i2')]),
+                         set(self.sm.unsubscribe_all('s1')))
         self.assertEqual(self.sm.find_sub("g1", "i1"), [ 's2' ])
         self.assertEqual(self.sm.find_sub("g1", "i2"), [ 's2' ])
         self.assertEqual(self.sm.find_sub("g2", "i1"), [ 's2' ])