Data structure used for message callbacks. More...
Data Fields | |
| adbus_Connection * | connection |
| Connection the message was received on. | |
| adbus_Message * | msg |
| The received message. | |
| adbus_MsgFactory * | ret |
| A message factory used for setting up returned messages. | |
| adbus_Bool | noreturn |
| Flag to indicate that no return message should be sent. | |
| adbus_Iterator | setprop |
| Iterator setup to iterate over the property value to set to. | |
| adbus_Buffer * | getprop |
| Buffer to store the current property value. | |
| void * | user1 |
| First user data variable. | |
| void * | user2 |
| Second user data variable. | |
Related Functions | |
(Note that these are not member functions.) | |
| int | adbus_dispatch (adbus_MsgCallback callback, adbus_CbData *d) |
| Dispatch a message callback. | |
| int | adbus_errorf_jmp (adbus_CbData *d, const char *errorName, const char *errorMsgFormat,...) |
| Setup an error reply and longjmp out of the callback. | |
| int | adbus_errorf (adbus_CbData *d, const char *errorName, const char *errorMsgFormat,...) |
| Setup an error reply. | |
| int | adbus_error (adbus_CbData *d, const char *errorName, int errorNameSize, const char *errorMessage, int errorMessageSize) |
| Setup an error reply. | |
| void | adbus_check_end (adbus_CbData *d) |
| Check that all arguments have been consumed. | |
| adbus_Bool | adbus_check_bool (adbus_CbData *d) |
| Pull out a boolean. | |
| uint8_t | adbus_check_u8 (adbus_CbData *d) |
| Pull out a uint8. | |
| int16_t | adbus_check_i16 (adbus_CbData *d) |
| Pull out a int16. | |
| uint16_t | adbus_check_u16 (adbus_CbData *d) |
| Pull out a uint16. | |
| int32_t | adbus_check_i32 (adbus_CbData *d) |
| Pull out a int32. | |
| uint32_t | adbus_check_u32 (adbus_CbData *d) |
| Pull out a uint32. | |
| int64_t | adbus_check_i64 (adbus_CbData *d) |
| Pull out a int64. | |
| uint64_t | adbus_check_u64 (adbus_CbData *d) |
| Pull out a uint64. | |
| double | adbus_check_double (adbus_CbData *d) |
| Pull out a double. | |
| const char * | adbus_check_string (adbus_CbData *d, size_t *size) |
| Pull out a string. | |
| const char * | adbus_check_objectpath (adbus_CbData *d, size_t *size) |
| Pull out a object path. | |
| const char * | adbus_check_signature (adbus_CbData *d, size_t *size) |
| Pull out a signature. | |
| void | adbus_check_beginarray (adbus_CbData *d, adbus_IterArray *a) |
| Begin pulling out items in an array. | |
| adbus_Bool | adbus_check_inarray (adbus_CbData *d, adbus_IterArray *a) |
| Check if there are more entries to pull out of the array. | |
| void | adbus_check_endarray (adbus_CbData *d, adbus_IterArray *a) |
| Finish pulling out items in the array. | |
| void | adbus_check_beginstruct (adbus_CbData *d) |
| Begin pulling out items in a struct. | |
| void | adbus_check_endstruct (adbus_CbData *d) |
| Finish pulling out items in a struct. | |
| void | adbus_check_begindictentry (adbus_CbData *d) |
| Begin pulling out items in a dict entry. | |
| void | adbus_check_enddictentry (adbus_CbData *d) |
| Finish pulling out items in a dict entry. | |
| const char * | adbus_check_beginvariant (adbus_CbData *d, adbus_IterVariant *v) |
| Begin pulling out data in a variant. | |
| void | adbus_check_endvariant (adbus_CbData *d, adbus_IterVariant *v) |
| Finish pulling out data in a variant. | |
| void | adbus_check_value (adbus_CbData *d) |
| Iterate over a complete argument. | |
Data structure used for message callbacks.
For non-proxied callbacks this structure is setup within the connection parse functions.
For proxied callbacks, the proxier has to copy a number of these fields see adbus_ConnectionCallbacks::get_proxy for more details.
The various adbus_check functions are very handy in C callbacks. Any errors (including incorrect argument types) encountered whilst iterating over the arguments causes the check function to longjmp out.
For example:
int Callback(adbus_CbData* d) { double d = adbus_check_double(d); adbus_check_beginstruct(d); double v1 = adbus_check_double(d); double v2 = adbus_check_double(d); double v3 = adbus_check_double(d); adbus_check_endstruct(d); adbus_check_end(d); return 0; }
| int adbus_error | ( | adbus_CbData * | d, | |
| const char * | errorName, | |||
| int | errorNameSize, | |||
| const char * | errorMessage, | |||
| int | errorMessageSize | |||
| ) | [related] |
Setup an error reply.
| int adbus_errorf | ( | adbus_CbData * | d, | |
| const char * | errorName, | |||
| const char * | errorMsgFormat, | |||
| ... | ||||
| ) | [related] |
Setup an error reply.
The error message is formatted with a printf style format string in errorMsgFormat and the variable arguments.
For example:
int Callback(adbus_CbData* d) { ... if (have_error) { return adbus_errorf( d, "com.example.ExampleError", "Something happened with %s", "foo"); } }
| int adbus_errorf_jmp | ( | adbus_CbData * | d, | |
| const char * | errorName, | |||
| const char * | errorMsgFormat, | |||
| ... | ||||
| ) | [related] |
Setup an error reply and longjmp out of the callback.
A message factory used for setting up returned messages.
By default this will be used to return a message immediately after the callback completes unless noreturn is set to non-zero.
First user data variable.
For match and reply callbacks this is the user data supplied in the registration. For method and property callbacks this is the user data supplied in the interface.
Second user data variable.
This is only set for method and property callbacks where it is set to the user data supplied in the bind.
1.6.1