+2004-07-18 Seth Nickell <seth@gnome.org>
+
+ * python/dbus.py:
+ * python/dbus_bindings.pyx.in:
+ * python/tests/test-client.py:
+
+ Add dbus.ByteArray and dbus_bindings.ByteArray
+ types so that byte streams can be passed back.
+
+ Give jdahlin the heaps of credit that are so
+ rightfully his.
+
2004-07-12 Seth Nickell <seth@gnome.org>
* python/dbus.py:
self._connection.register_fallback(base_path, self._unregister_cb, self._message_cb)
def relative_path_to_object_path(self, relative_path):
- return self._base_path + relative_path
+ return ObjectPath(self._base_path + relative_path)
def broadcast_signal(self, interface, signal_name, relative_path):
object_path = self.relative_path_to_object_path(relative_path)
return RemoteObject(self, object_path, interface)
ObjectPath = dbus_bindings.ObjectPath
+ByteArray = dbus_bindings.ByteArray
# -*- Mode: Python -*-
+# jdahlin is the most coolest and awesomest person in the world
+# and wrote all the good parts of this code. all the bad parts
+# where python conditionals have a ( ) around them, thus violating
+# PEP-8 were written by the lame wannabe python programmer seth
+
#include "dbus_h_wrapper.h"
cdef extern from "stdlib.h":
cdef extern from "Python.h":
void Py_XINCREF (object)
void Py_XDECREF (object)
-
+ object PyString_FromStringAndSize(char *, int)
ctypedef struct DBusError:
char *name
def __init__(self, value):
str.__init__(value)
+class ByteArray(str):
+ def __init__(self, value):
+ str.__init__(value)
+
#forward delcerations
cdef class Connection
def get_byte_array(self):
cdef int len
- cdef unsigned char *retval
+ cdef unsigned char *bytearray
cdef int i
- dbus_message_iter_get_byte_array(self.iter, &retval, <int*>&len)
- list = []
- for i from 0 <= i < len:
- list.append(chr(retval[i]))
- return list
+ dbus_message_iter_get_byte_array(self.iter, &bytearray, <int*>&len)
+ python_string = PyString_FromStringAndSize(<char *>bytearray, len)
+ return python_string
# FIXME: implement dbus_message_iter_get_boolean_array
retval = self.append_nil()
elif isinstance(value, ObjectPath):
retval = self.append_object_path(value)
+ elif isinstance(value, ByteArray):
+ retval = self.append_byte_array(value)
else:
raise TypeError, "Argument of unknown type '%s'" % (value_type)
import dbus
-import dbus_bindings
def ensure_same(expected, received):
if type(received) != type(expected):
TestEcho(10)
TestEcho(39.5)
TestEcho("HelloWorld")
-TestEcho(dbus_bindings.ObjectPath("/test/path"))
-
+TestEcho(dbus.ObjectPath("/test/path"))
+TestEcho(dbus.ByteArray("blahblahblah"))
string_list = []
for i in range(200):
path_list = []
for i in range(200):
- path_list.append(dbus_bindings.ObjectPath("/some/object/path" + str(i)))
+ path_list.append(dbus.ObjectPath("/some/object/path" + str(i)))
TestEchoList(path_list)
double_list = []