summaryrefslogtreecommitdiff
path: root/src/server/conn.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/conn.py')
-rw-r--r--src/server/conn.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/server/conn.py b/src/server/conn.py
index a3bd598..9192829 100644
--- a/src/server/conn.py
+++ b/src/server/conn.py
@@ -401,6 +401,31 @@ class ConnectionInterfaceCapabilities(_ConnectionInterfaceCapabilities):
# return all my capabilities
return [(ctype, caps[1]) for ctype, caps in my_caps.iteritems()]
+ def _diff_capabilities(self, handle, ctype, new_gen=None,
+ new_spec=None, added_gen=None, added_spec=None):
+ """Helper function to diff new caps with actual capabilities."""
+
+ if handle in self._caps and ctype in self._caps[handle]:
+ old_gen, old_spec = self._caps[handle][ctype]
+ else:
+ old_gen = 0
+ old_spec = 0
+
+ if new_gen is None:
+ new_gen = old_gen
+ if new_spec is None:
+ new_spec = old_spec
+ if added_gen:
+ new_gen |= added_gen
+ if added_spec:
+ new_spec |= new_spec
+
+ if old_gen != new_gen or old_spec != new_spec:
+ diff = (int(handle), ctype, old_gen, new_gen, old_spec, new_spec)
+ return diff
+
+ return None
+
from telepathy._generated.Connection_Interface_Contact_Capabilities \
import ConnectionInterfaceContactCapabilities \
as _ConnectionInterfaceContactCapabilities