summaryrefslogtreecommitdiffstats
path: root/src/tests/sbus_codegen_tests_generated.c
diff options
context:
space:
mode:
authorStef Walter <stefw@redhat.com>2014-01-10 08:54:41 +0100
committerJakub Hrozek <jhrozek@redhat.com>2014-02-24 11:14:49 +0100
commitfcd8093c58638dc7c4f9cddfc97f273b94ce2ead (patch)
tree9f8374be57b0a48f19cd861ae4d38f666ae7af5e /src/tests/sbus_codegen_tests_generated.c
parentb699c4d7f85a5404be1d1ee9450331aea869b886 (diff)
downloadsssd-fcd8093c58638dc7c4f9cddfc97f273b94ce2ead.tar.gz
sssd-fcd8093c58638dc7c4f9cddfc97f273b94ce2ead.tar.xz
sssd-fcd8093c58638dc7c4f9cddfc97f273b94ce2ead.zip
sbus: Add sbus_vtable and update codegen to support it
Each interface is a vtable structure derived from sbus_vtable, in the sense that it has an sbus_vtable struct as its first argument. This lets us upcast the interface vtable structure to an sbus_vtable and dispatch to it dynamically and cleanly. The interface metadata contains information about which vtable offset in the interface metadata should be dispatched to for a given function. This is a common scheme, not only among dbus implementations, but also compiled languages. Currently all the vtable functions are of type sbus_msg_handler_fn. These are the handlers we are familiar with and perform raw processing of the message. Later commits will introduce type safe handlers that levelage compile checking and automatic argument packing/unpacking. Although this may seem contrived now, the remainder of the dbus infrastructure work will build on this, including ofd.Properties, ofd.ObjectManager, ofd.Introspect, compiler checked type safe unpacking/packing, etc. The codegen now generates vtable structures for each interface along-side the metadata, and fills in vtable offsets appropriately. It is obviously still possible to hand-craft such vtables and metadata if needed for a special case. Once again examples output can be found at: src/tests/sbus_codegen_tests_generated.h Reviewed-by: Jakub Hrozek <jhrozek@redhat.com> Reviewed-by: Sumit Bose <sbose@redhat.com> Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com> Reviewed-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'src/tests/sbus_codegen_tests_generated.c')
-rw-r--r--src/tests/sbus_codegen_tests_generated.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/tests/sbus_codegen_tests_generated.c b/src/tests/sbus_codegen_tests_generated.c
index 556eea12c..ccf612996 100644
--- a/src/tests/sbus_codegen_tests_generated.c
+++ b/src/tests/sbus_codegen_tests_generated.c
@@ -3,6 +3,7 @@
#include "util/util.h"
#include "sbus/sssd_dbus.h"
#include "sbus/sssd_dbus_meta.h"
+#include "sbus_codegen_tests_generated.h"
/* arguments for com.planetexpress.Ship.MoveUniverse */
const struct sbus_arg_meta com_planetexpress_Ship_MoveUniverse__in[] = {
@@ -23,6 +24,13 @@ const struct sbus_method_meta com_planetexpress_Ship__methods[] = {
"MoveUniverse", /* name */
com_planetexpress_Ship_MoveUniverse__in,
com_planetexpress_Ship_MoveUniverse__out,
+ offsetof(struct com_planetexpress_Ship, MoveUniverse),
+ },
+ {
+ "Crash", /* name */
+ NULL, /* no in_args */
+ NULL, /* no out_args */
+ offsetof(struct com_planetexpress_Ship, crash_now),
},
{ NULL, }
};