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 void _dbus_header_free (DBusHeader *header);
00064 void _dbus_header_reinit (DBusHeader *header);
00065 dbus_bool_t _dbus_header_create (DBusHeader *header,
00066 int byte_order,
00067 int type,
00068 const char *destination,
00069 const char *path,
00070 const char *interface,
00071 const char *member,
00072 const char *error_name);
00073 dbus_bool_t _dbus_header_copy (const DBusHeader *header,
00074 DBusHeader *dest);
00075 int _dbus_header_get_message_type (DBusHeader *header);
00076 void _dbus_header_set_serial (DBusHeader *header,
00077 dbus_uint32_t serial);
00078 dbus_uint32_t _dbus_header_get_serial (DBusHeader *header);
00079 void _dbus_header_update_lengths (DBusHeader *header,
00080 int body_len);
00081 dbus_bool_t _dbus_header_set_field_basic (DBusHeader *header,
00082 int field,
00083 int type,
00084 const void *value);
00085 dbus_bool_t _dbus_header_get_field_basic (DBusHeader *header,
00086 int field,
00087 int type,
00088 void *value);
00089 dbus_bool_t _dbus_header_get_field_raw (DBusHeader *header,
00090 int field,
00091 const DBusString **str,
00092 int *pos);
00093 dbus_bool_t _dbus_header_delete_field (DBusHeader *header,
00094 int field);
00095 void _dbus_header_toggle_flag (DBusHeader *header,
00096 dbus_uint32_t flag,
00097 dbus_bool_t value);
00098 dbus_bool_t _dbus_header_get_flag (DBusHeader *header,
00099 dbus_uint32_t flag);
00100 dbus_bool_t _dbus_header_ensure_signature (DBusHeader *header,
00101 DBusString **type_str,
00102 int *type_pos);
00103 dbus_bool_t _dbus_header_have_message_untrusted (int max_message_length,
00104 DBusValidity *validity,
00105 int *byte_order,
00106 int *fields_array_len,
00107 int *header_len,
00108 int *body_len,
00109 const DBusString *str,
00110 int start,
00111 int len);
00112 dbus_bool_t _dbus_header_load (DBusHeader *header,
00113 DBusValidationMode mode,
00114 DBusValidity *validity,
00115 int byte_order,
00116 int fields_array_len,
00117 int header_len,
00118 int body_len,
00119 const DBusString *str,
00120 int start,
00121 int len);
00122 void _dbus_header_byteswap (DBusHeader *header,
00123 int new_order);
00124 char _dbus_header_get_byte_order (const DBusHeader *header);
00125
00126
00127
00128 #endif