Development Team/Presence Service Removal

From Sugar Labs
Jump to navigation Jump to search

Some notes follow about how we can replace the implementation of the signals and methods in the Presence Service by another that uses more fully the telepathy framework and is stateless.

See here for some related information:

Interface org.laptop.Sugar.Presence

@dbus.service.signal(PRESENCE_INTERFACE, signature="o")
def ActivityAppeared(self, activity):
    pass
  • Used by: Shell to display activities in the neighborhood and friends views
  • Present: Is fired when the properties contained in org.laptop.Telepathy.ActivityProperties become all non-None. We start tracking an ActivityProperties when a Buddy we track joins/shares an activity, and we know that via the ActivitiesChanged signal in the interface org.laptop.Telepathy.BuddyInfo.
  • Future:
@dbus.service.signal(PRESENCE_INTERFACE, signature="o")
def ActivityDisappeared(self, activity):
    pass
  • Used by: Shell to display activities in the neighborhood and friends views
  • Present: Is fired when the properties contained in org.laptop.Telepathy.ActivityProperties stop being all non-None, and when the last buddy leaves the activity. A buddy is known to have left an activity when disappears (see BuddyDisappeared) and when the MembersChanged signal in org.freedesktop.Telepathy.Channel.Interface.Group says so.
  • Future:
@dbus.service.signal(PRESENCE_INTERFACE, signature="o")
def BuddyAppeared(self, buddy):
    pass
  • Used by: Shell to display buddies in the neighborhood and friends views
  • Present: Is fired when the properties contained in org.laptop.Telepathy.BuddyInfo become all non-None. We start tracking a BuddyInfo when it appears as online in the signal PresenceUpdate of org.freedesktop.Telepathy.Connection.Interface.Presence.
  • Future: Listen contact list channels (Roster in the future) for the contacts we are subscribed to, and track their presence through the SimplePresence interface.
@dbus.service.signal(PRESENCE_INTERFACE, signature="o")
def BuddyDisappeared(self, buddy):
  • Used by: Shell to display buddies in the neighborhood and friends views
  • Present: A buddy is known to have disappeared when PresenceUpdate notifies us it has gone offline.
  • Future: Same as BuddyAppeared.
@dbus.service.signal(PRESENCE_INTERFACE, signature="oos")
def ActivityInvitation(self, activity, buddy, message):
    pass
  • Used by: Shell to display a new invitation in the frame
  • Present: Gets fired when a new channel that communicates with a room becomes ready.
  • Future: Should be fired on reception of an incoming channel (TODO: check the API in MC5 for this)
@dbus.service.signal(PRESENCE_INTERFACE, signature="soos")
def PrivateInvitation(self, bus_name, connection, channel, chan_type):
    pass
  • Used by: Shell to display an invitation from a non-Sugar XMPP client
  • Present: Gets fired when a new channel that communicates with a contact is created.
  • Future:
@dbus.service.method(PRESENCE_INTERFACE, in_signature="", out_signature="ao")
def GetActivities(self):
    pass
  • Used by: Shell to display shared activities
  • Present: Returns a list of activities cached locally, this list is kept up to date by listening to ActivitiesChanged in org.laptop.Telepathy.BuddyInfo.
  • Future:
@dbus.service.method(PRESENCE_INTERFACE, in_signature="s", out_signature="o")
def GetActivityById(self, actid):
    pass
  • Used by: at activity startup to know whether this is a shared instance.
  • Present: Returns the activity identified by actid from the list mentioned in GetActivities.
  • Future:
@dbus.service.method(PRESENCE_INTERFACE, in_signature="",
                        out_signature="ao")
def GetBuddies(self):
    pass
  • Used by: shell to display all buddies in the neighborhood view and to retrieve the contact of a friend.
  • Present: returns all tracked buddies, see BuddyAppeared.
  • Future:
@dbus.service.method(PRESENCE_INTERFACE, in_signature="ay", out_signature="o",
                        byte_arrays=True)
def GetBuddyByPublicKey(self, key):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(PRESENCE_INTERFACE, in_signature="sou",
                        out_signature="o")
def GetBuddyByTelepathyHandle(self, tp_conn_name, tp_conn_path, handle):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(PRESENCE_INTERFACE, in_signature="", out_signature="o")
def GetOwner(self):
    pass
  • Used by: shell to represent the buddy icon for the owner
  • Present: color, tags and nick are retrieved from GConf, the public key from the owner.key.pub file
  • Future:
@dbus.service.method(PRESENCE_INTERFACE, in_signature="", out_signature="so")
def GetPreferredConnection(self):
    pass
  • Used by: activities to interact with a connection manager
  • Present: returns the gabble CM if available or the salut one otherwise
  • Future:
@dbus.service.method(PRESENCE_INTERFACE, in_signature="sssa{sv}",
        out_signature="o", async_callbacks=("async_cb", "async_err_cb"),
        sender_keyword="sender")
def ShareActivity(self, actid, atype, name, properties, async_cb,
                    async_err_cb, sender):
    pass
  • Used by: activities to become shared publicly or privately
  • Present: requests a room from the CM, then requests a text channel and tubes channel on this room
  • Future:
@dbus.service.method(PRESENCE_INTERFACE, in_signature="as", out_signature="")
def SyncFriends(self, keys):
    pass
  • Used by: shell every time that the local friends list changes
  • Present: add local friends to the contact list in the server
  • Future:
@dbus.service.method(PRESENCE_INTERFACE, in_signature="", out_signature="")
def RestartServerConnection(self):
    pass
  • Used by: shell when the jabber server name is changed
  • Present: disconnects the gabble CM and starts it again
  • Future:


Interface org.laptop.Sugar.Presence.Buddy

@dbus.service.signal(_BUDDY_INTERFACE, signature="ay")
def IconChanged(self, icon_data):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.signal(_BUDDY_INTERFACE, signature="o")
def JoinedActivity(self, activity_path):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.signal(_BUDDY_INTERFACE, signature="o")
def LeftActivity(self, activity_path):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.signal(_BUDDY_INTERFACE, signature="a{sv}")
def PropertyChanged(self, updated):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.signal(_BUDDY_INTERFACE, signature='sou')
def TelepathyHandleAdded(self, tp_conn_name, tp_conn_path, handle):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_BUDDY_INTERFACE, in_signature="", out_signature="ay")
def GetIcon(self):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_BUDDY_INTERFACE, in_signature="", out_signature="ao")
def GetJoinedActivities(self):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_BUDDY_INTERFACE, in_signature="", out_signature="a{sv}")
def GetProperties(self):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_BUDDY_INTERFACE, in_signature=, out_signature='a(sou)')
def GetTelepathyHandles(self):
    pass
  • Used by:
  • Present:
  • Future:


Interface org.laptop.Sugar.Presence.Activity

@dbus.service.signal(_ACTIVITY_INTERFACE, signature="o")
def BuddyJoined(self, buddy_path):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.signal(_ACTIVITY_INTERFACE, signature="ou")
def BuddyHandleJoined(self, buddy_path, handle):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.signal(_ACTIVITY_INTERFACE, signature="o")
def BuddyLeft(self, buddy_path):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.signal(_ACTIVITY_INTERFACE, signature="a{sv}")
def PropertiesChanged(self, properties):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.signal(_ACTIVITY_INTERFACE, signature="o")
def NewChannel(self, channel_path):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE, in_signature="", out_signature="a{sv}")
def GetProperties(self):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE, in_signature="", out_signature="s")
def GetId(self):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE, in_signature="", out_signature="s")
def GetColor(self):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE, in_signature="", out_signature="s")
def GetType(self):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE,
                     in_signature='os', out_signature=,
                     async_callbacks=('async_cb', 'async_err_cb'))
def Invite(self, buddy_path, message, async_cb, async_err_cb):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE,
                     in_signature="", out_signature="",
                     async_callbacks=('async_cb', 'async_err_cb'),
                     sender_keyword='sender')
def Join(self, async_cb, async_err_cb, sender):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE,
                     in_signature="", out_signature="",
                     async_callbacks=('async_cb', 'async_err_cb'))
def Leave(self, async_cb, async_err_cb):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE, in_signature="", out_signature="ao")
def GetJoinedBuddies(self):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE, in_signature="", out_signature="soao")
def GetChannels(self):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE, in_signature="", out_signature="soa(osuu)")
def ListChannels(self):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE, in_signature='a{sv}', out_signature=)
def SetProperties(self, new_props):
    pass
  • Used by:
  • Present:
  • Future:
@dbus.service.method(_ACTIVITY_INTERFACE, in_signature="", out_signature="s")
def GetName(self):
    pass
  • Used by:
  • Present:
  • Future: