D-Bus  1.12.2
dbus-message-internal.h
1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2 /* dbus-message-internal.h DBusMessage object internal interfaces
3  *
4  * Copyright (C) 2002 Red Hat Inc.
5  *
6  * Licensed under the Academic Free License version 2.1
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  *
22  */
23 #ifndef DBUS_MESSAGE_INTERNAL_H
24 #define DBUS_MESSAGE_INTERNAL_H
25 
26 #include <dbus/dbus-marshal-validate.h>
27 #include <dbus/dbus-message.h>
28 #include <dbus/dbus-resources.h>
29 #include <dbus/dbus-list.h>
30 
32 
33 #ifdef DBUS_ENABLE_VERBOSE_MODE
34 void _dbus_message_trace_ref (DBusMessage *message,
35  int old_refcount,
36  int new_refcount,
37  const char *why);
38 #else
39 /* this bypasses any "unused" warnings for the old and new refcount */
40 #define _dbus_message_trace_ref(m, o, n, w) \
41  do \
42  {\
43  (void) (o); \
44  (void) (n); \
45  } while (0)
46 #endif
47 
49 
51  const DBusString **header,
52  const DBusString **body);
53 DBUS_PRIVATE_EXPORT
55  const int **fds,
56  unsigned *n_fds);
57 
58 unsigned int _dbus_message_get_n_unix_fds (DBusMessage *message);
59 void _dbus_message_lock (DBusMessage *message);
60 void _dbus_message_unlock (DBusMessage *message);
62  DBusCounter *counter);
64  DBusList *link);
66  DBusCounter *counter);
67 
68 DBUS_PRIVATE_EXPORT
70 DBUS_PRIVATE_EXPORT
72 DBUS_PRIVATE_EXPORT
74 
75 DBUS_PRIVATE_EXPORT
77  DBusString **buffer,
78  int *max_to_read,
79  dbus_bool_t *may_read_unix_fds);
80 DBUS_PRIVATE_EXPORT
82  DBusString *buffer);
83 
84 
85 #ifdef HAVE_UNIX_FD_PASSING
86 DBUS_PRIVATE_EXPORT
87 dbus_bool_t _dbus_message_loader_get_unix_fds (DBusMessageLoader *loader,
88  int **fds,
89  unsigned *max_n_fds);
90 
91 DBUS_PRIVATE_EXPORT
92 void _dbus_message_loader_return_unix_fds (DBusMessageLoader *loader,
93  int *fds,
94  unsigned n_fds);
95 #endif
96 
97 DBUS_PRIVATE_EXPORT
100 DBUS_PRIVATE_EXPORT
104  DBusList *link);
105 
106 DBUS_PRIVATE_EXPORT
109 
111  long size);
112 DBUS_PRIVATE_EXPORT
114 
116  long n);
120  void (* callback) (void *),
121  void *data);
122 
123 typedef struct DBusVariant DBusVariant;
124 DBUS_PRIVATE_EXPORT
126 DBUS_PRIVATE_EXPORT
128  DBusMessageIter *writer);
129 DBUS_PRIVATE_EXPORT
130 void _dbus_variant_free (DBusVariant *self);
131 DBUS_PRIVATE_EXPORT
132 int _dbus_variant_get_length (DBusVariant *self);
133 DBUS_PRIVATE_EXPORT
134 const DBusString *_dbus_variant_peek (DBusVariant *self);
135 DBUS_PRIVATE_EXPORT
136 const char *_dbus_variant_get_signature (DBusVariant *self);
137 
138 static inline void
139 _dbus_clear_variant (DBusVariant **variant_p)
140 {
141  _dbus_clear_pointer_impl (DBusVariant, variant_p, _dbus_variant_free);
142 }
143 
144 typedef struct DBusInitialFDs DBusInitialFDs;
145 DBusInitialFDs *_dbus_check_fdleaks_enter (void);
146 void _dbus_check_fdleaks_leave (DBusInitialFDs *fds);
147 
149 
150 #endif /* DBUS_MESSAGE_INTERNAL_H */
DBUS_PRIVATE_EXPORT long _dbus_message_loader_get_max_message_size(DBusMessageLoader *loader)
Gets the maximum allowed message size in bytes.
void _dbus_message_loader_putback_message_link(DBusMessageLoader *loader, DBusList *link)
Returns a popped message link, used to undo a pop.
DBUS_PRIVATE_EXPORT void _dbus_message_loader_return_buffer(DBusMessageLoader *loader, DBusString *buffer)
Returns a buffer obtained from _dbus_message_loader_get_buffer(), indicating to the loader how many b...
#define DBUS_BEGIN_DECLS
Macro used prior to declaring functions in the D-Bus header files.
DBUS_PRIVATE_EXPORT DBusMessage * _dbus_message_loader_pop_message(DBusMessageLoader *loader)
Pops a loaded message (passing ownership of the message to the caller).
DBUS_PRIVATE_EXPORT const char * _dbus_variant_get_signature(DBusVariant *self)
Return the signature of the item stored in self.
Internals of DBusCounter.
An opaque data structure containing the serialized form of any single D-Bus message item...
DBUS_PRIVATE_EXPORT void _dbus_message_loader_unref(DBusMessageLoader *loader)
Decrements the reference count of the loader and finalizes the loader when the count reaches zero...
DBusValidity _dbus_message_loader_get_corruption_reason(DBusMessageLoader *loader)
Checks what kind of bad data confused the loader.
DBusValidity
This is primarily used in unit testing, so we can verify that each invalid message is invalid for the...
DBusMessageIter struct; contains no public fields.
Definition: dbus-message.h:61
dbus_bool_t _dbus_message_add_counter(DBusMessage *message, DBusCounter *counter)
Adds a counter to be incremented immediately with the size/unix fds of this message, and decremented by the size/unix fds of this message when this message if finalized.
Definition: dbus-message.c:352
void _dbus_message_add_counter_link(DBusMessage *message, DBusList *link)
Adds a counter to be incremented immediately with the size/unix fds of this message, and decremented by the size/unix fds of this message when this message if finalized.
Definition: dbus-message.c:303
Internals of DBusMessage.
void _dbus_message_loader_set_max_message_size(DBusMessageLoader *loader, long size)
Sets the maximum size message we allow.
dbus_uint32_t dbus_bool_t
A boolean, valid values are TRUE and FALSE.
Definition: dbus-types.h:35
DBusString data
Buffered data.
DBUS_PRIVATE_EXPORT DBusMessageLoader * _dbus_message_loader_ref(DBusMessageLoader *loader)
Increments the reference count of the loader.
void _dbus_message_remove_counter(DBusMessage *message, DBusCounter *counter)
Removes a counter tracking the size/unix fds of this message, and decrements the counter by the size/...
Definition: dbus-message.c:375
DBUS_PRIVATE_EXPORT DBusMessageLoader * _dbus_message_loader_new(void)
Creates a new message loader.
void _dbus_message_loader_set_pending_fds_function(DBusMessageLoader *loader, void(*callback)(void *), void *data)
Register a function to be called whenever the number of pending file descriptors in the loader change...
DBUS_PRIVATE_EXPORT dbus_bool_t _dbus_message_loader_get_is_corrupted(DBusMessageLoader *loader)
Checks whether the loader is confused due to bad data.
DBUS_PRIVATE_EXPORT dbus_bool_t _dbus_variant_write(DBusVariant *self, DBusMessageIter *writer)
Copy the single D-Bus message item from self into writer.
long _dbus_message_loader_get_max_message_unix_fds(DBusMessageLoader *loader)
Gets the maximum allowed number of unix fds per message.
void _dbus_message_get_network_data(DBusMessage *message, const DBusString **header, const DBusString **body)
Gets the data to be sent over the network for this message.
Definition: dbus-message.c:231
unsigned int _dbus_message_get_n_unix_fds(DBusMessage *message)
Gets the number of unix fds attached to this message.
DBUS_PRIVATE_EXPORT DBusVariant * _dbus_variant_read(DBusMessageIter *reader)
Copy a single D-Bus message item from reader into a newly-allocated DBusVariant.
DBusList * _dbus_message_loader_pop_message_link(DBusMessageLoader *loader)
Pops a loaded message inside a list link (passing ownership of the message and link to the caller)...
A node in a linked list.
Definition: dbus-list.h:34
DBusMessage * _dbus_message_loader_peek_message(DBusMessageLoader *loader)
Peeks at first loaded message, returns NULL if no messages have been queued.
DBUS_PRIVATE_EXPORT void _dbus_message_loader_get_buffer(DBusMessageLoader *loader, DBusString **buffer, int *max_to_read, dbus_bool_t *may_read_unix_fds)
Gets the buffer to use for reading data from the network.
DBUS_PRIVATE_EXPORT dbus_bool_t _dbus_message_loader_queue_messages(DBusMessageLoader *loader)
Converts buffered data into messages, if we have enough data.
DBUS_PRIVATE_EXPORT void _dbus_message_get_unix_fds(DBusMessage *message, const int **fds, unsigned *n_fds)
Gets the unix fds to be sent over the network for this message.
Definition: dbus-message.c:250
void _dbus_message_loader_set_max_message_unix_fds(DBusMessageLoader *loader, long n)
Sets the maximum unix fds per message we allow.
Implementation details of DBusMessageLoader.
int _dbus_message_loader_get_pending_fds_count(DBusMessageLoader *loader)
Return how many file descriptors are pending in the loader.
#define DBUS_END_DECLS
Macro used after declaring functions in the D-Bus header files.