From 4d78b5b9d6989658f6dd44acf5a4e6785076f4d9 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 7 Nov 2023 13:46:35 -0600 Subject: [PATCH 1/2] feat: improve marshaller performance adds some more missing types --- src/dbus_fast/_private/marshaller.pxd | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/dbus_fast/_private/marshaller.pxd b/src/dbus_fast/_private/marshaller.pxd index 89784d94..86101413 100644 --- a/src/dbus_fast/_private/marshaller.pxd +++ b/src/dbus_fast/_private/marshaller.pxd @@ -2,7 +2,7 @@ import cython -from ..signature cimport SignatureTree +from ..signature cimport SignatureTree, SignatureType, Variant cdef object PACK_UINT32 @@ -28,16 +28,17 @@ cdef class Marshaller: ) cdef unsigned int _align(self, unsigned int n) - cpdef write_boolean(self, object boolean, object _type) + cpdef write_boolean(self, object boolean, SignatureType type_) @cython.locals( written=cython.uint, ) cdef unsigned int _write_boolean(self, object boolean) - cpdef write_string(self, object value, object _type) + cpdef write_string(self, object value, SignatureType type_) @cython.locals( + buf=cython.bytearray, value_len=cython.uint, signature_len=cython.uint, written=cython.uint, @@ -49,49 +50,50 @@ cdef class Marshaller: ) cdef unsigned int _write_signature(self, bytes signature_bytes) - cpdef write_array(self, object array, object type) + cpdef write_array(self, object array, SignatureType type_) @cython.locals( array_len=cython.uint, buf=cython.bytearray, written=cython.uint, token=cython.str, + child_type=SignatureType, array_len_packed=cython.bytes, size=cython.uint, writer=cython.object, packer=cython.object, i=cython.uint, ) - cdef unsigned int _write_array(self, object array, object type) + cdef unsigned int _write_array(self, cython.list array, SignatureType type_) - cpdef write_struct(self, object array, object type) + cpdef write_struct(self, object array, SignatureType type_) @cython.locals( written=cython.uint, i=cython.uint, ) - cdef unsigned int _write_struct(self, object array, object type) + cdef unsigned int _write_struct(self, cython.list array, SignatureType type_) - cpdef write_variant(self, object variant, object type) + cpdef write_variant(self, Variant variant, SignatureType type_) @cython.locals( written=cython.uint, signature=cython.str, signature_bytes=cython.bytes, ) - cdef unsigned int _write_variant(self, object variant, object type) + cdef unsigned int _write_variant(self, Variant variant, SignatureType type_) @cython.locals( written=cython.uint, size=cython.uint, ) - cdef unsigned int _write_single(self, object type_, object body) + cdef unsigned int _write_single(self, SignatureType type_, object body) @cython.locals( written=cython.uint, t=cython.str, ) - cpdef write_dict_entry(self, object type_, object body) + cpdef write_dict_entry(self, cython.list dict_entry, SignatureType type_) cpdef marshall(self) @@ -103,5 +105,6 @@ cdef class Marshaller: size=cython.uint, writer=cython.object, packer=cython.object, + type_=SignatureType, ) cdef _construct_buffer(self) From c6a60f9f635923a5a48467b41865a7b5a089236f Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 7 Nov 2023 13:49:53 -0600 Subject: [PATCH 2/2] fix: array can be list or dict --- src/dbus_fast/_private/marshaller.pxd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dbus_fast/_private/marshaller.pxd b/src/dbus_fast/_private/marshaller.pxd index 86101413..2c5d28bf 100644 --- a/src/dbus_fast/_private/marshaller.pxd +++ b/src/dbus_fast/_private/marshaller.pxd @@ -64,7 +64,7 @@ cdef class Marshaller: packer=cython.object, i=cython.uint, ) - cdef unsigned int _write_array(self, cython.list array, SignatureType type_) + cdef unsigned int _write_array(self, object array, SignatureType type_) cpdef write_struct(self, object array, SignatureType type_)