services/presence/server_plugin: Use telepathy-python helper function request_channel()
Also request the subscribe and publish handles at the same time, to reduce D-Bus roundtrips.
This commit is contained in:
parent
a450a82e59
commit
4e188059e3
@ -356,21 +356,6 @@ class ServerPlugin(gobject.GObject):
|
||||
self._handle_connection_status_change(status,
|
||||
CONNECTION_STATUS_REASON_NONE_SPECIFIED)
|
||||
|
||||
def _request_list_channel(self, name):
|
||||
"""Request a contact-list channel from Telepathy
|
||||
|
||||
name -- publish/subscribe, for the type of channel
|
||||
"""
|
||||
handle = self._conn[CONN_INTERFACE].RequestHandles(
|
||||
HANDLE_TYPE_LIST, [name])[0]
|
||||
chan_path = self._conn[CONN_INTERFACE].RequestChannel(
|
||||
CHANNEL_TYPE_CONTACT_LIST, HANDLE_TYPE_LIST,
|
||||
handle, True)
|
||||
channel = Channel(self._conn.service_name, chan_path)
|
||||
# hack
|
||||
channel._valid_interfaces.add(CHANNEL_INTERFACE_GROUP)
|
||||
return channel
|
||||
|
||||
def _connected_cb(self):
|
||||
"""Callback on successful connection to a server
|
||||
"""
|
||||
@ -379,8 +364,13 @@ class ServerPlugin(gobject.GObject):
|
||||
# we successfully register this account
|
||||
self._owner.set_registered(True)
|
||||
|
||||
# request both handles at the same time to reduce round-trips
|
||||
pub_handle, sub_handle = self._conn[CONN_INTERFACE].RequestHandles(
|
||||
HANDLE_TYPE_LIST, ['publish', 'subscribe'])
|
||||
|
||||
# the group of contacts who may receive your presence
|
||||
publish = self._request_list_channel('publish')
|
||||
publish = self._conn.request_channel(CHANNEL_TYPE_CONTACT_LIST,
|
||||
HANDLE_TYPE_LIST, pub_handle, True)
|
||||
self._publish_channel = publish
|
||||
publish[CHANNEL_INTERFACE_GROUP].connect_to_signal('MembersChanged',
|
||||
self._publish_members_changed_cb)
|
||||
@ -388,7 +378,8 @@ class ServerPlugin(gobject.GObject):
|
||||
publish[CHANNEL_INTERFACE_GROUP].GetAllMembers()
|
||||
|
||||
# the group of contacts for whom you wish to receive presence
|
||||
subscribe = self._request_list_channel('subscribe')
|
||||
subscribe = self._conn.request_channel(CHANNEL_TYPE_CONTACT_LIST,
|
||||
HANDLE_TYPE_LIST, sub_handle, True)
|
||||
self._subscribe_channel = subscribe
|
||||
subscribe[CHANNEL_INTERFACE_GROUP].connect_to_signal('MembersChanged',
|
||||
self._subscribe_members_changed_cb)
|
||||
|
Loading…
Reference in New Issue
Block a user