adbus_CbData Struct Reference

Data structure used for message callbacks. More...

Data Fields

adbus_Connectionconnection
 Connection the message was received on.
adbus_Messagemsg
 The received message.
adbus_MsgFactoryret
 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_Buffergetprop
 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.

Detailed Description

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.

Note:
The adbus_check functions should not be used in combination with manual iteration.

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;
  }

Friends And Related Function Documentation

int adbus_error ( adbus_CbData d,
const char *  errorName,
int  errorNameSize,
const char *  errorMessage,
int  errorMessageSize 
) [related]

Setup an error reply.

Returns:
0 always - designed to be returned directly from a message callback
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.

Returns:
0 always - designed to be returned directly from a message callback.

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.

Warning:
Since this uses longjmp, it should be used with caution.

Field Documentation

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.

Warning:
This is only set for method and property callbacks.

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.


The documentation for this struct was generated from the following files:
 All Data Structures Files Functions Variables Friends Defines

Generated on Mon Mar 22 00:10:02 2010 for adbus by  doxygen 1.6.1