예제 #1
0
    def call_method(self,
                    path,
                    member,
                    interface=None,
                    format=None,
                    args=None,
                    destination=None,
                    callback=None,
                    timeout=None):
        """Call a method."""
        if '.' in member:
            member, interface = self._split_member(member)
        if interface is None:
            raise Exception('you need to specify the interface')

        message = _tdbus.Message(_tdbus.DBUS_MESSAGE_TYPE_METHOD_CALL,
                                 path=path,
                                 member=member,
                                 interface=interface,
                                 destination=destination)
        if format is not None:
            message.set_args(format, args)
        if callback is None:
            message.set_no_reply(True)
            self._connection.send(message)
        else:
            if timeout is None:
                timeout = -1
            else:
                timeout = int(1000 * timeout)
            deferred = self._connection.send_with_reply(message, timeout)
            deferred.set_notify(callback)
예제 #2
0
 def send_method_return(self, message, format=None, args=None):
     """Send a method call return."""
     reply = _tdbus.Message(_tdbus.DBUS_MESSAGE_TYPE_METHOD_RETURN,
                            reply_serial=message.get_serial(),
                            destination=message.get_sender())
     if format is not None:
         reply.set_args(format, args)
     self._connection.send(reply)
예제 #3
0
 def send_error(self, message, error_name, format=None, args=None):
     """Send an error reply."""
     reply = _tdbus.Message(_tdbus.DBUS_MESSAGE_TYPE_ERROR,
                            reply_serial=message.get_serial(),
                            destination=message.get_sender(),
                            error_name=error_name)
     if format is not None:
         reply.set_args(format, args)
     self._connection.send(reply)
예제 #4
0
 def send_signal(self,
                 path,
                 member,
                 interface=None,
                 format=None,
                 args=None,
                 destination=None):
     """Send a signal."""
     if '.' in member:
         member, interface = self._split_member(member)
     if interface is None:
         raise Exception('you need to specify the interface')
     message = _tdbus.Message(_tdbus.DBUS_MESSAGE_TYPE_SIGNAL,
                              member=member,
                              interface=interface,
                              path=path)
     if destination is not None:
         message.set_destination(destination)
     if format is not None:
         message.set_args(format, args)
     self._connection.send(message)