def __init__(self, tube):
        ExportedGObject.__init__(self, tube, constants.DBUS_PATH)
        self.tube = tube

        self.idNotify = self.tube.add_signal_receiver(self._newRecdTubeCb,
                                                      'notifyBudsOfNewRecd',
                                                      constants.DBUS_IFACE,
                                                      path=constants.DBUS_PATH,
                                                      sender_keyword='sender')
        self.idRequest = self.tube.add_signal_receiver(
            self._reqRecdTubeCb,
            'requestRecdBits',
            constants.DBUS_IFACE,
            path=constants.DBUS_PATH,
            sender_keyword='sender')
        self.idBroadcast = self.tube.add_signal_receiver(
            self._getRecdTubeCb,
            'broadcastRecdBits',
            constants.DBUS_IFACE,
            path=constants.DBUS_PATH,
            sender_keyword='sender',
            byte_arrays=True)
        self.idUnavailable = self.tube.add_signal_receiver(
            self._unavailableRecdTubeCb,
            'unavailableRecd',
            constants.DBUS_IFACE,
            path=constants.DBUS_PATH,
            sender_keyword='sender')
    def __init__(self, tube, initiator):
        ExportedGObject.__init__(self, tube, PATH)

        self.initiator = initiator
        self._tube = tube
        self.me = None

        self._tube.watch_participants(self._participant_changed_cb)
 def __init__(self, tube, is_initiator, model):
     ExportedGObject.__init__(self, tube, PATH)
     self.tube = tube
     self.is_initiator = is_initiator
     self.members = []
     self.entered = False
     self.model = model
     self.bus_name = None
     self.tube.watch_participants(self.participant_change_cb)
Exemple #4
0
 def __init__(self, tube, is_initiator, model):
     ExportedGObject.__init__(self, tube, PATH)
     self.tube = tube
     self.is_initiator = is_initiator
     self.members = []
     self.entered = False
     self.model = model
     self.bus_name = None
     self.tube.watch_participants(self.participant_change_cb)
 def __init__(self, tube, is_initiator, get_buddy, game):
     ExportedGObject.__init__(self, tube, PATH)
     self._tube = tube
     self.is_initiator = is_initiator
     self._get_buddy = get_buddy
     self.game = game
     self.ordered_bus_names = []
     self.entered = False        
     self._tube.watch_participants(self.participant_change_cb)
     self.files = {}
 def __init__(self, tube, is_initiator, get_buddy, game):
     ExportedGObject.__init__(self, tube, PATH)
     self._tube = tube
     self.is_initiator = is_initiator
     self._get_buddy = get_buddy
     self.game = game
     self.ordered_bus_names = []
     self.entered = False
     self._tube.watch_participants(self.participant_change_cb)
     self.files = {}
    def __init__(self, tube, initiator, view):
        ExportedGObject.__init__(self, tube, PATH)

        self.initiator = initiator
        self._tube = tube
        self._entered = False
        self._slots = []
        self._view = view

        self._view.connect('frame-changed', self._frame_changed_cb)
        self._tube.watch_participants(self._participant_change_cb)
Exemple #8
0
    def __init__(self, tube, is_initiator, chat):
        ExportedGObject.__init__(self, tube, PATH)

        self.is_initiator = is_initiator
        self.chat = chat

        self._tube = tube
        self._entered = False
        self._buddies = {}

        self._tube.watch_participants(self._participant_change_cb)
    def __init__(self, bus, object_id, **kwargs):
        """Initialize the Buddy object

        bus -- connection to the D-Bus session bus
        object_id -- the buddy's unique identifier, either based on their
            key-ID or JID
        kwargs -- used to initialize the object's properties

        constructs a DBUS "object path" from the BUDDY_PATH
        and object_id
        """

        self._object_id = object_id
        self._object_path = dbus.ObjectPath(BUDDY_PATH + object_id)

        #: activity ID -> activity
        self._activities = {}
        self._activity_sigids = {}
        #: Telepathy plugin -> (handle, identifier e.g. JID)
        self._handles = {}

        self._awaiting = set(('alias', 'properties'))
        self._owner = False
        self._key = None
        self._icon = ''
        self._current_activity = ''
        self._current_activity_plugin = None
        self._nick = None
        self._color = None
        self._ip4_address = None
        self._tags = None

        _ALLOWED_INIT_PROPS = [_PROP_NICK, _PROP_KEY, _PROP_ICON,
                               _PROP_CURACT, _PROP_COLOR, _PROP_IP4_ADDRESS,
                               _PROP_TAGS]
        for (key, value) in kwargs.items():
            if key not in _ALLOWED_INIT_PROPS:
                _logger.debug("Invalid init property '%s'; ignoring..." % key)
                del kwargs[key]

        # Set icon after superclass init, because it sends DBus and GObject
        # signals when set
        icon_data = None
        if kwargs.has_key(_PROP_ICON):
            icon_data = kwargs[_PROP_ICON]
            del kwargs[_PROP_ICON]

        ExportedGObject.__init__(self, bus, self._object_path,
                                 gobject_properties=kwargs)

        if icon_data is not None:
            self._icon = str(icon_data)
            self.IconChanged(self._icon)
    def __init__(self):
        self._next_object_id = 0

        # all Buddy objects
        # identifier -> Buddy, GC'd when no more refs exist
        self._buddies = WeakValueDictionary()

        # the online buddies for whom we know the full public key
        # base64 public key -> Buddy
        self._buddies_by_pubkey = {}

        # The online buddies (those who're available via some CM)
        # TP plugin -> (handle -> Buddy)
        self._handles_buddies = {}

        # activity id -> Activity
        self._activities_by_id = {}
        #: Tp plugin -> (handle -> Activity)
        self._activities_by_handle = {}

        #: Connection -> list of SignalMatch
        self._conn_matches = {}

        self._session_bus = dbus.SessionBus()
        self._session_bus.add_signal_receiver(self._connection_disconnected_cb,
                signal_name="Disconnected",
                dbus_interface="org.freedesktop.DBus")

        # Create the Owner object
        self._owner = self._create_owner()
        key = self._owner.props.key
        keyid = pubkey_to_keyid(key)
        self._buddies['keyid/' + keyid] = self._owner
        self._buddies_by_pubkey[key] = self._owner

        self._registry = ManagerRegistry()
        self._registry.LoadManagers()

        # Set up the Telepathy plugins
        self._plugins = []
        debug_flags = set(environ.get('PRESENCE_SERVICE_DEBUG', '').split(','))
        _logger.debug('Debug flags: %r', debug_flags)
        if 'disable-gabble' in debug_flags:
            self._server_plugin = None
        else:
            server = self._owner.get_server()
            if server and len(server):
                self._server_plugin = ServerPlugin(self._registry, self._owner)
                self._plugins.append(self._server_plugin)
            else:
                self._server_plugin = None
        if 'disable-salut' in debug_flags:
            self._ll_plugin = None
        else:
            self._ll_plugin = LinkLocalPlugin(self._registry, self._owner)
            self._plugins.append(self._ll_plugin)
        self._connected_plugins = set()

        for tp in self._plugins:
            self._handles_buddies[tp] = {}
            self._activities_by_handle[tp] = {}

            tp.connect('status', self._tp_status_cb)
            tp.connect('contacts-online', self._contacts_online)
            tp.connect('contacts-offline', self._contacts_offline)
            tp.connect('activity-invitation',
                                        self._activity_invitation)
            tp.connect('private-invitation',
                                        self._private_invitation)
            tp.connect('want-to-connect', self._want_to_connect)

            connection = tp.get_connection()
            if connection is not None:
                status = connection.GetStatus()
                self._tp_status_cb(tp, status, CONNECTION_STATUS_REASON_NONE_SPECIFIED)

        self._contacts_online_queue = []

        ExportedGObject.__init__(self, self._session_bus, _PRESENCE_PATH)

        # for activation to work in a race-free way, we should really
        # export the bus name only after we export our initial object;
        # so this comes after the parent __init__
        self._bus_name = dbus.service.BusName(_PRESENCE_SERVICE,
                                              bus=self._session_bus)