00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef DBUS_MARSHAL_HEADER_H
00025 #define DBUS_MARSHAL_HEADER_H
00026
00027 #include <dbus/dbus-marshal-basic.h>
00028 #include <dbus/dbus-marshal-validate.h>
00029
00030 typedef struct DBusHeader DBusHeader;
00031 typedef struct DBusHeaderField DBusHeaderField;
00032
00033 #define _DBUS_HEADER_FIELD_VALUE_UNKNOWN -1
00034 #define _DBUS_HEADER_FIELD_VALUE_NONEXISTENT -2
00035
00039 struct DBusHeaderField
00040 {
00041 int value_pos;
00042 };
00043
00047 struct DBusHeader
00048 {
00049 DBusString data;
00054 DBusHeaderField fields[DBUS_HEADER_FIELD_LAST + 1];
00058 dbus_uint32_t padding : 3;
00059 dbus_uint32_t byte_order : 8;
00060 };
00061
00062 dbus_bool_t _dbus_header_init (DBusHeader *header,
00063 int byte_order);
00064 void _dbus_header_free (DBusHeader *header);
00065 void _dbus_header_reinit (DBusHeader *header,
00066 int byte_order);
00067 dbus_bool_t _dbus_header_create (DBusHeader *header,
00068 int type,
00069 const char *destination,
00070 const char *path,
00071 const char *interface,
00072 const char *member,
00073 const char *error_name);
00074 dbus_bool_t _dbus_header_copy (const DBusHeader *header,
00075 DBusHeader *dest);
00076 int _dbus_header_get_message_type (DBusHeader *header);
00077 void _dbus_header_set_serial (DBusHeader *header,
00078 dbus_uint32_t serial);
00079 dbus_uint32_t _dbus_header_get_serial (DBusHeader *header);
00080 void _dbus_header_update_lengths (DBusHeader *header,
00081 int body_len);
00082 dbus_bool_t _dbus_header_set_field_basic (DBusHeader *header,
00083 int field,
00084 int type,
00085 const void *value);
00086 dbus_bool_t _dbus_header_get_field_basic (DBusHeader *header,
00087 int field,
00088 int type,
00089 void *value);
00090 dbus_bool_t _dbus_header_get_field_raw (DBusHeader *header,
00091 int field,
00092 const DBusString **str,
00093 int *pos);
00094 dbus_bool_t _dbus_header_delete_field (DBusHeader *header,
00095 int field);
00096 void _dbus_header_toggle_flag (DBusHeader *header,
00097 dbus_uint32_t flag,
00098 dbus_bool_t value);
00099 dbus_bool_t _dbus_header_get_flag (DBusHeader *header,
00100 dbus_uint32_t flag);
00101 dbus_bool_t _dbus_header_ensure_signature (DBusHeader *header,
00102 DBusString **type_str,
00103 int *type_pos);
00104 dbus_bool_t _dbus_header_have_message_untrusted (int max_message_length,
00105 DBusValidity *validity,
00106 int *byte_order,
00107 int *fields_array_len,
00108 int *header_len,
00109 int *body_len,
00110 const DBusString *str,
00111 int start,
00112 int len);
00113 dbus_bool_t _dbus_header_load (DBusHeader *header,
00114 DBusValidationMode mode,
00115 DBusValidity *validity,
00116 int byte_order,
00117 int fields_array_len,
00118 int header_len,
00119 int body_len,
00120 const DBusString *str,
00121 int start,
00122 int len);
00123 void _dbus_header_byteswap (DBusHeader *header,
00124 int new_order);
00125
00126
00127
00128 #endif