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_PRIVATE_EXPORT
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_PRIVATE_EXPORT
00091 dbus_bool_t _dbus_header_get_field_raw (DBusHeader *header,
00092 int field,
00093 const DBusString **str,
00094 int *pos);
00095 DBUS_PRIVATE_EXPORT
00096 dbus_bool_t _dbus_header_delete_field (DBusHeader *header,
00097 int field);
00098 void _dbus_header_toggle_flag (DBusHeader *header,
00099 dbus_uint32_t flag,
00100 dbus_bool_t value);
00101 dbus_bool_t _dbus_header_get_flag (DBusHeader *header,
00102 dbus_uint32_t flag);
00103 dbus_bool_t _dbus_header_ensure_signature (DBusHeader *header,
00104 DBusString **type_str,
00105 int *type_pos);
00106 dbus_bool_t _dbus_header_have_message_untrusted (int max_message_length,
00107 DBusValidity *validity,
00108 int *byte_order,
00109 int *fields_array_len,
00110 int *header_len,
00111 int *body_len,
00112 const DBusString *str,
00113 int start,
00114 int len);
00115 dbus_bool_t _dbus_header_load (DBusHeader *header,
00116 DBusValidationMode mode,
00117 DBusValidity *validity,
00118 int byte_order,
00119 int fields_array_len,
00120 int header_len,
00121 int body_len,
00122 const DBusString *str,
00123 int start,
00124 int len);
00125 void _dbus_header_byteswap (DBusHeader *header,
00126 int new_order);
00127 DBUS_PRIVATE_EXPORT
00128 char _dbus_header_get_byte_order (const DBusHeader *header);
00129
00130
00131
00132 #endif