summaryrefslogtreecommitdiff
path: root/dbus/dbus-message-internal.h
blob: 55f473f49621b5ba013b2a003c1afde7bcf70e05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/* dbus-message-internal.h DBusMessage object internal interfaces
 *
 * Copyright (C) 2002  Red Hat Inc.
 *
 * SPDX-License-Identifier: AFL-2.1 OR GPL-2.0-or-later
 *
 * Licensed under the Academic Free License version 2.1
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 */
#ifndef DBUS_MESSAGE_INTERNAL_H
#define DBUS_MESSAGE_INTERNAL_H

#include <dbus/dbus-marshal-validate.h>
#include <dbus/dbus-message.h>
#include <dbus/dbus-resources.h>
#include <dbus/dbus-list.h>

DBUS_BEGIN_DECLS

#ifdef DBUS_ENABLE_VERBOSE_MODE
void _dbus_message_trace_ref (DBusMessage *message,
                              int          old_refcount,
                              int          new_refcount,
                              const char  *why);
#else
/* this bypasses any "unused" warnings for the old and new refcount */
#define _dbus_message_trace_ref(m, o, n, w) \
  do \
  {\
    (void) (o); \
    (void) (n); \
  } while (0)
#endif

typedef struct DBusMessageLoader DBusMessageLoader;

void _dbus_message_get_network_data  (DBusMessage       *message,
				      const DBusString **header,
				      const DBusString **body);
DBUS_PRIVATE_EXPORT
void _dbus_message_get_unix_fds      (DBusMessage *message,
                                      const int **fds,
                                      unsigned *n_fds);

unsigned int _dbus_message_get_n_unix_fds       (DBusMessage  *message);
void        _dbus_message_lock                  (DBusMessage  *message);
void        _dbus_message_unlock                (DBusMessage  *message);
dbus_bool_t _dbus_message_add_counter           (DBusMessage  *message,
                                                 DBusCounter  *counter);
void        _dbus_message_add_counter_link      (DBusMessage  *message,
                                                 DBusList     *link);
void        _dbus_message_remove_counter        (DBusMessage  *message,
                                                 DBusCounter  *counter);
DBUS_PRIVATE_EXPORT
dbus_bool_t _dbus_message_remove_unknown_fields (DBusMessage  *message);

DBUS_PRIVATE_EXPORT
DBusMessageLoader* _dbus_message_loader_new                   (void);
DBUS_PRIVATE_EXPORT
DBusMessageLoader* _dbus_message_loader_ref                   (DBusMessageLoader  *loader);
DBUS_PRIVATE_EXPORT
void               _dbus_message_loader_unref                 (DBusMessageLoader  *loader);

DBUS_PRIVATE_EXPORT
void               _dbus_message_loader_get_buffer            (DBusMessageLoader  *loader,
                                                               DBusString        **buffer,
                                                               int                *max_to_read,
                                                               dbus_bool_t        *may_read_unix_fds);
DBUS_PRIVATE_EXPORT
void               _dbus_message_loader_return_buffer         (DBusMessageLoader  *loader,
                                                               DBusString         *buffer);


#ifdef HAVE_UNIX_FD_PASSING
DBUS_PRIVATE_EXPORT
dbus_bool_t        _dbus_message_loader_get_unix_fds          (DBusMessageLoader  *loader,
                                                               int               **fds,
                                                               unsigned           *max_n_fds);

DBUS_PRIVATE_EXPORT
void               _dbus_message_loader_return_unix_fds       (DBusMessageLoader  *loader,
                                                               int                *fds,
                                                               unsigned            n_fds);
#endif

DBUS_PRIVATE_EXPORT
dbus_bool_t        _dbus_message_loader_queue_messages        (DBusMessageLoader  *loader);
DBusMessage*       _dbus_message_loader_peek_message          (DBusMessageLoader  *loader);
DBUS_PRIVATE_EXPORT
DBusMessage*       _dbus_message_loader_pop_message           (DBusMessageLoader  *loader);
DBusList*          _dbus_message_loader_pop_message_link      (DBusMessageLoader  *loader);
void               _dbus_message_loader_putback_message_link  (DBusMessageLoader  *loader,
                                                               DBusList           *link);

DBUS_PRIVATE_EXPORT
dbus_bool_t        _dbus_message_loader_get_is_corrupted      (DBusMessageLoader  *loader);
DBusValidity       _dbus_message_loader_get_corruption_reason (DBusMessageLoader  *loader);

void               _dbus_message_loader_set_max_message_size  (DBusMessageLoader  *loader,
                                                               long                size);
DBUS_PRIVATE_EXPORT
long               _dbus_message_loader_get_max_message_size  (DBusMessageLoader  *loader);

void               _dbus_message_loader_set_max_message_unix_fds(DBusMessageLoader  *loader,
                                                                 long                n);
long               _dbus_message_loader_get_max_message_unix_fds(DBusMessageLoader  *loader);
int                _dbus_message_loader_get_pending_fds_count (DBusMessageLoader  *loader);
void               _dbus_message_loader_set_pending_fds_function (DBusMessageLoader *loader,
                                                                  void (* callback) (void *),
                                                                  void *data);

typedef struct DBusVariant DBusVariant;
DBUS_PRIVATE_EXPORT
DBusVariant       *_dbus_variant_read                            (DBusMessageIter *reader);
DBUS_PRIVATE_EXPORT
dbus_bool_t        _dbus_variant_write                           (DBusVariant *self,
                                                                  DBusMessageIter *writer);
DBUS_PRIVATE_EXPORT
void               _dbus_variant_free                            (DBusVariant *self);
DBUS_PRIVATE_EXPORT
int                _dbus_variant_get_length                      (DBusVariant *self);
DBUS_PRIVATE_EXPORT
const DBusString  *_dbus_variant_peek                            (DBusVariant *self);
DBUS_PRIVATE_EXPORT
const char        *_dbus_variant_get_signature                   (DBusVariant *self);

static inline void
_dbus_clear_variant (DBusVariant **variant_p)
{
  _dbus_clear_pointer_impl (DBusVariant, variant_p, _dbus_variant_free);
}

DBUS_END_DECLS

#endif /* DBUS_MESSAGE_INTERNAL_H */