On Mon, May 26, 2014 at 03:53:26PM +0200, Jakub Hrozek wrote:
> On Sat, May 24, 2014 at 02:13:28PM +0200, Lukas Slebodnik wrote:
> > On (23/05/14 17:39), Jakub Hrozek wrote:
> > >On Fri, May 23, 2014 at 11:56:32AM +0200, Jakub Hrozek wrote:
> > >> On Fri, May 23, 2014 at 08:31:49AM +0200, Lukas Slebodnik wrote:
> > >> > On (21/05/14 22:53), Jakub Hrozek wrote:
> > >> > >Hi,
> > >> > >
> > >> > >the attached patches implement the
> > >> > >org.freedesktop.DBus.Properties.GetAll method for retrieving primitive
> > >> > >types and their arrays.
> > >> > >
> > >> > >The patchset build on the previous set (currently still on review) 
> > >> > >that
> > >> > >implements the .Get method. The GetAll handler simply walks through 
> > >> > >the
> > >> > >existing getters and retrieves the results, storing them in a single
> > >> > >variant.
> > >> > >
> > >> > >The patches include a unit test that tests all currently supported
> > >> > >combinations of primitive types and array of primitive types.
> > >> > 
> > >> > >From fc4b278c0914b2c7001393e471f4f6f0b532ba54 Mon Sep 17 00:00:00 2001
> > >> > >From: Jakub Hrozek <[email protected]>
> > >> > >Date: Wed, 21 May 2014 16:48:45 +0200
> > >> > >Subject: [PATCH 1/5] SBUS: Add utility function 
> > >> > >sbus_add_variant_to_dict
> > >> > >
> > >> > >---
> > >> > > src/sbus/sssd_dbus.h            |   5 ++
> > >> > > src/sbus/sssd_dbus_properties.c | 116 
> > >> > > ++++++++++++++++++++++++++++++++++++++++
> > >> > > 2 files changed, 121 insertions(+)
> > >> > >
> > >> > src/sbus/sssd_dbus_properties.c:287:41: error: no member named 
> > >> > 'invoker_get_all' in
> > >> >       'struct sbus_interface_meta'
> > >> >                                   meta->invoker_get_all);
> > >> >                                   ~~~~  ^
> > >> > It is introduced in 4th aptch
> > >> > "SBUS: Implement org.freedesktop.DBus.Properties.GetAll for primitive 
> > >> > types"
> > >> > 
> > >> > >From 32d84445012991dba38ee5b60f5614aca70b889d Mon Sep 17 00:00:00 2001
> > >> > >From: Jakub Hrozek <[email protected]>
> > >> > >Date: Wed, 21 May 2014 20:10:23 +0200
> > >> > >Subject: [PATCH 5/5] SBUS: Add org.freedesktop.DBus.Properties.GetAll 
> > >> > >to
> > >> > > Introspection
> > >> > 
> > >> > FAIL: sbus_tests
> > >> > 
> > >> > sbys_tests.log file is attached.
> > >> > 
> > >> > LS
> > >> 
> > >> Ah, I didn't amend the test to include GetAll in introspection like I
> > >> did with Get, thanks. I'll prepare a new set.
> > >
> > >Hi,
> > >
> > >new patches are attached, but only the Introspection patch had changed
> > >-- I added the GetAll XML to the unit test.
> > 
> > >From 9511be0f60affc2909ec2388f0d1ab5cc8487647 Mon Sep 17 00:00:00 2001
> > >From: Jakub Hrozek <[email protected]>
> > >Date: Wed, 21 May 2014 21:29:15 +0200
> > >Subject: [PATCH 4/5] SBUS: Implement org.freedesktop.DBus.Properties.GetAll
> > > for primitive types
> > >
> > >This patch implements the GetAll method of the
> > >org.freedesktop.DBus.Properties interface by iterating over the
> > >available getters and putting all the results into a single getter.
> > >
> > >The patch includes a unit test that exercies all currently supported
> > >array types.
> > >---
> > > src/monitor/monitor_iface_generated.c         |   2 +
> > > src/providers/data_provider_iface_generated.c |   2 +
> > > src/responder/ifp/ifp_iface_generated.c       |   1 +
> > > src/sbus/sbus_codegen                         |  96 +++++-
> > > src/sbus/sssd_dbus_meta.h                     |   1 +
> > > src/tests/sbus_codegen_tests.c                | 299 +++++++++++++++++++
> > > src/tests/sbus_codegen_tests_generated.c      | 415 
> > > +++++++++++++++++++++++++-
> > > 7 files changed, 806 insertions(+), 10 deletions(-)
> > >
> > 
> > //snip
> > 
> > >diff --git a/src/sbus/sssd_dbus_meta.h b/src/sbus/sssd_dbus_meta.h
> > >index 
> > >f25b1ac28abf1b1ef53fa54a090fa84ef868ab77..2cb9e95e3e12da55b1f101e076a0e05203984215
> > > 100644
> > >--- a/src/sbus/sssd_dbus_meta.h
> > >+++ b/src/sbus/sssd_dbus_meta.h
> > >@@ -80,6 +80,7 @@ struct sbus_interface_meta {
> > >     const struct sbus_method_meta *methods;
> > >     const struct sbus_signal_meta *signals;
> > >     const struct sbus_property_meta *properties;
> > >+    sbus_method_invoker_fn invoker_get_all;
> > > };
> > >
> > Move this change to the 1st patch.
> 
> Fixed.
> 
> > 
> > There is little problem with introspection.
> > 
> > sh# gdbus introspect --system --dest org.freedesktop.sssd.infopipe 
> > --object-path / --recurse
> > 
> > ==11539== Jump to the invalid address stated on the next line
> > ==11539==    at 0x0: ???
> > ==11539==    by 0x7C3E25C: sbus_request_invoke_or_finish 
> > (sssd_dbus_request.c:69)
> > ==11539==    by 0x7C3DC47: sbus_properties_dispatch 
> > (sssd_dbus_properties.c:361)
> > ==11539==    by 0x7C3BD87: sbus_handler_got_caller_id 
> > (sssd_dbus_connection.c:524)
> > ==11539==    by 0x4C2D753: tevent_common_loop_immediate 
> > (tevent_immediate.c:135)
> > ==11539==    by 0x4C31FBD: epoll_event_loop_once (tevent_epoll.c:908)
> > ==11539==    by 0x4C306B6: std_event_loop_once (tevent_standard.c:112)
> > ==11539==    by 0x4C2CF2C: _tevent_loop_once (tevent.c:530)
> > ==11539==    by 0x4C2D0CA: tevent_common_loop_wait (tevent.c:634)
> > ==11539==    by 0x4C30656: std_event_loop_wait (tevent_standard.c:138)
> > ==11539==    by 0x7C42C12: server_loop (server.c:587)
> > ==11539==    by 0x10C571: main (ifpsrv.c:397)
> > ==11539==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
> > ==11539== 
> > ==11539== 
> > ==11539== Process terminating with default action of signal 11 (SIGSEGV)
> > ==11539==  Bad permissions for mapped region at address 0x0
> > ==11539==    at 0x0: ???
> > ==11539==    by 0x7C3E25C: sbus_request_invoke_or_finish 
> > (sssd_dbus_request.c:69)
> > ==11539==    by 0x7C3DC47: sbus_properties_dispatch 
> > (sssd_dbus_properties.c:361)
> > ==11539==    by 0x7C3BD87: sbus_handler_got_caller_id 
> > (sssd_dbus_connection.c:524)
> > ==11539==    by 0x4C2D753: tevent_common_loop_immediate 
> > (tevent_immediate.c:135)
> > ==11539==    by 0x4C31FBD: epoll_event_loop_once (tevent_epoll.c:908)
> > ==11539==    by 0x4C306B6: std_event_loop_once (tevent_standard.c:112)
> > ==11539==    by 0x4C2CF2C: _tevent_loop_once (tevent.c:530)
> > ==11539==    by 0x4C2D0CA: tevent_common_loop_wait (tevent.c:634)
> > ==11539==    by 0x4C30656: std_event_loop_wait (tevent_standard.c:138)
> > ==11539==    by 0x7C42C12: server_loop (server.c:587)
> > ==11539==    by 0x10C571: main (ifpsrv.c:397)
> > ==11539== 
> > ==11539== HEAP SUMMARY:
> > ==11539==     in use at exit: 93,205 bytes in 449 blocks
> > ==11539==   total heap usage: 3,296 allocs, 2,847 frees, 440,463 bytes 
> > allocated
> > 
> 
> Thanks, I didn't see this earlier because I never used --recurse.
> 
> I modified the codegen a bit so than an invoker is called even if there
> are no properties. The invoker creates an empty array, adds nothing (the
> property getters would be inserted here by codegen) and returns.

btw returning an empty array instead of, for example, returning an
error, was suggested by Marius Vollmer.
_______________________________________________
sssd-devel mailing list
[email protected]
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to