You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@12 8e941d3f-bd1b-0410-a28a-d453659cc2b4
252 lines
11 KiB
C
252 lines
11 KiB
C
{ -*- mode: C; c-file-style: "gnu" -*- }
|
|
{ dbus-protocol.h D-Bus protocol constants
|
|
*
|
|
* Copyright (C) 2002, 2003 CodeFactory AB
|
|
* Copyright (C) 2004, 2005 Red Hat, Inc.
|
|
*
|
|
* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*
|
|
}
|
|
|
|
{ Normally docs are in .c files, but there isn't a .c file for this. }
|
|
{
|
|
* @defgroup DBusProtocol Protocol constants
|
|
* @ingroup DBus
|
|
*
|
|
* D-Bus protocol constants
|
|
*
|
|
* @brief Defines constants which are part of the D-Bus protocol
|
|
}
|
|
|
|
const
|
|
|
|
{ Message byte order }
|
|
DBUS_LITTLE_ENDIAN = 'l'; {< LSB first }
|
|
DBUS_BIG_ENDIAN = 'B'; {< MSB first }
|
|
|
|
{ Protocol version }
|
|
DBUS_MAJOR_PROTOCOL_VERSION = 1;
|
|
|
|
{ Never a legitimate type }
|
|
DBUS_TYPE_INVALID = 0;
|
|
DBUS_TYPE_INVALID_AS_STRING = #0;
|
|
|
|
{ Primitive types }
|
|
DBUS_TYPE_BYTE = Integer('y');
|
|
DBUS_TYPE_BYTE_AS_STRING = 'y';
|
|
DBUS_TYPE_BOOLEAN = Integer('b');
|
|
DBUS_TYPE_BOOLEAN_AS_STRING = 'b';
|
|
DBUS_TYPE_INT16 = Integer('n');
|
|
DBUS_TYPE_INT16_AS_STRING = 'n';
|
|
DBUS_TYPE_UINT16 = Integer('q');
|
|
DBUS_TYPE_UINT16_AS_STRING = 'q';
|
|
DBUS_TYPE_INT32 = Integer('i');
|
|
DBUS_TYPE_INT32_AS_STRING = 'i';
|
|
DBUS_TYPE_UINT32 = Integer('u');
|
|
DBUS_TYPE_UINT32_AS_STRING = 'u';
|
|
DBUS_TYPE_INT64 = Integer('x');
|
|
DBUS_TYPE_INT64_AS_STRING = 'x';
|
|
DBUS_TYPE_UINT64 = Integer('t');
|
|
DBUS_TYPE_UINT64_AS_STRING = 't';
|
|
DBUS_TYPE_DOUBLE = Integer('d');
|
|
DBUS_TYPE_DOUBLE_AS_STRING = 'd';
|
|
DBUS_TYPE_STRING = Integer('s');
|
|
DBUS_TYPE_STRING_AS_STRING = 's';
|
|
DBUS_TYPE_OBJECT_PATH = Integer('o');
|
|
DBUS_TYPE_OBJECT_PATH_AS_STRING = 'o';
|
|
DBUS_TYPE_SIGNATURE = Integer('g');
|
|
DBUS_TYPE_SIGNATURE_AS_STRING = 'g';
|
|
|
|
{ Compound types }
|
|
DBUS_TYPE_ARRAY = Integer('a');
|
|
DBUS_TYPE_ARRAY_AS_STRING = 'a';
|
|
DBUS_TYPE_VARIANT = Integer('v');
|
|
DBUS_TYPE_VARIANT_AS_STRING = 'v';
|
|
|
|
{ STRUCT and DICT_ENTRY are sort of special since their codes can't
|
|
* appear in a type string, instead
|
|
* DBUS_STRUCT_BEGIN_CHAR/DBUS_DICT_ENTRY_BEGIN_CHAR have to appear
|
|
}
|
|
DBUS_TYPE_STRUCT = Integer('r');
|
|
DBUS_TYPE_STRUCT_AS_STRING = 'r';
|
|
DBUS_TYPE_DICT_ENTRY = Integer('e');
|
|
DBUS_TYPE_DICT_ENTRY_AS_STRING = 'e';
|
|
|
|
{ Does not count INVALID }
|
|
DBUS_NUMBER_OF_TYPES = (16);
|
|
|
|
{ characters other than typecodes that appear in type signatures }
|
|
DBUS_STRUCT_BEGIN_CHAR = Integer('(');
|
|
DBUS_STRUCT_BEGIN_CHAR_AS_STRING = '(';
|
|
DBUS_STRUCT_END_CHAR = Integer(')');
|
|
DBUS_STRUCT_END_CHAR_AS_STRING = ')';
|
|
DBUS_DICT_ENTRY_BEGIN_CHAR = Integer('{');
|
|
DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING = '{';
|
|
DBUS_DICT_ENTRY_END_CHAR = Integer('}');
|
|
DBUS_DICT_ENTRY_END_CHAR_AS_STRING = '}';
|
|
|
|
{ Max length in bytes of a bus name, interface, or member (not object
|
|
* path, paths are unlimited). This is limited because lots of stuff
|
|
* is O(n) in this number, plus it would be obnoxious to type in a
|
|
* paragraph-long method name so most likely something like that would
|
|
* be an exploit.
|
|
}
|
|
DBUS_MAXIMUM_NAME_LENGTH = 255;
|
|
|
|
{ This one is 255 so it fits in a byte }
|
|
DBUS_MAXIMUM_SIGNATURE_LENGTH = 255;
|
|
|
|
{ Max length of a match rule string; to keep people from hosing the
|
|
* daemon with some huge rule
|
|
}
|
|
DBUS_MAXIMUM_MATCH_RULE_LENGTH = 1024;
|
|
|
|
{ Max arg number you can match on in a match rule, e.g.
|
|
* arg0='hello' is OK, arg3489720987='hello' is not
|
|
}
|
|
DBUS_MAXIMUM_MATCH_RULE_ARG_NUMBER = 63;
|
|
|
|
{ Max length of a marshaled array in bytes (64M, 2^26) We use signed
|
|
* int for lengths so must be INT_MAX or less. We need something a
|
|
* bit smaller than INT_MAX because the array is inside a message with
|
|
* header info, etc. so an INT_MAX array wouldn't allow the message
|
|
* overhead. The 64M number is an attempt at a larger number than
|
|
* we'd reasonably ever use, but small enough that your bus would chew
|
|
* through it fairly quickly without locking up forever. If you have
|
|
* data that's likely to be larger than this, you should probably be
|
|
* sending it in multiple incremental messages anyhow.
|
|
}
|
|
DBUS_MAXIMUM_ARRAY_LENGTH = (67108864);
|
|
{ Number of bits you need in an unsigned to store the max array size }
|
|
DBUS_MAXIMUM_ARRAY_LENGTH_BITS = 26;
|
|
|
|
{ The maximum total message size including header and body; similar
|
|
* rationale to max array size.
|
|
}
|
|
DBUS_MAXIMUM_MESSAGE_LENGTH = (DBUS_MAXIMUM_ARRAY_LENGTH * 2);
|
|
{ Number of bits you need in an unsigned to store the max message size }
|
|
DBUS_MAXIMUM_MESSAGE_LENGTH_BITS = 27;
|
|
|
|
{ Depth of recursion in the type tree. This is automatically limited
|
|
* to DBUS_MAXIMUM_SIGNATURE_LENGTH since you could only have an array
|
|
* of array of array of ... that fit in the max signature. But that's
|
|
* probably a bit too large.
|
|
}
|
|
DBUS_MAXIMUM_TYPE_RECURSION_DEPTH = 32;
|
|
|
|
{ Types of message }
|
|
DBUS_MESSAGE_TYPE_INVALID = 0;
|
|
DBUS_MESSAGE_TYPE_METHOD_CALL = 1;
|
|
DBUS_MESSAGE_TYPE_METHOD_RETURN= 2;
|
|
DBUS_MESSAGE_TYPE_ERROR = 3;
|
|
DBUS_MESSAGE_TYPE_SIGNAL = 4;
|
|
|
|
{ Header flags }
|
|
DBUS_HEADER_FLAG_NO_REPLY_EXPECTED = $1;
|
|
DBUS_HEADER_FLAG_NO_AUTO_START = $2;
|
|
|
|
{ Header fields }
|
|
DBUS_HEADER_FIELD_INVALID = 0;
|
|
DBUS_HEADER_FIELD_PATH = 1;
|
|
DBUS_HEADER_FIELD_INTERFACE = 2;
|
|
DBUS_HEADER_FIELD_MEMBER = 3;
|
|
DBUS_HEADER_FIELD_ERROR_NAME = 4;
|
|
DBUS_HEADER_FIELD_REPLY_SERIAL = 5;
|
|
DBUS_HEADER_FIELD_DESTINATION = 6;
|
|
DBUS_HEADER_FIELD_SENDER = 7;
|
|
DBUS_HEADER_FIELD_SIGNATURE = 8;
|
|
|
|
DBUS_HEADER_FIELD_LAST = DBUS_HEADER_FIELD_SIGNATURE;
|
|
|
|
{ Header format is defined as a signature:
|
|
* byte byte order
|
|
* byte message type ID
|
|
* byte flags
|
|
* byte protocol version
|
|
* uint32 body length
|
|
* uint32 serial
|
|
* array of struct (byte,variant) (field name, value)
|
|
*
|
|
* The length of the header can be computed as the
|
|
* fixed size of the initial data, plus the length of
|
|
* the array at the end, plus padding to an 8-boundary.
|
|
}
|
|
{ DBUS_HEADER_SIGNATURE \
|
|
DBUS_TYPE_BYTE_AS_STRING \
|
|
DBUS_TYPE_BYTE_AS_STRING \
|
|
DBUS_TYPE_BYTE_AS_STRING \
|
|
DBUS_TYPE_BYTE_AS_STRING \
|
|
DBUS_TYPE_UINT32_AS_STRING \
|
|
DBUS_TYPE_UINT32_AS_STRING \
|
|
DBUS_TYPE_ARRAY_AS_STRING \
|
|
DBUS_STRUCT_BEGIN_CHAR_AS_STRING \
|
|
DBUS_TYPE_BYTE_AS_STRING \
|
|
DBUS_TYPE_VARIANT_AS_STRING \
|
|
DBUS_STRUCT_END_CHAR_AS_STRING}
|
|
|
|
|
|
{
|
|
* The smallest header size that can occur. (It won't be valid due to
|
|
* missing required header fields.) This is 4 bytes, two uint32, an
|
|
* array length. This isn't any kind of resource limit, just the
|
|
* necessary/logical outcome of the header signature.
|
|
}
|
|
DBUS_MINIMUM_HEADER_SIZE = 16;
|
|
|
|
{ Errors }
|
|
{ WARNING these get autoconverted to an enum in dbus-glib.h. Thus,
|
|
* if you change the order it breaks the ABI. Keep them in order.
|
|
* Also, don't change the formatting since that will break the sed
|
|
* script.
|
|
}
|
|
DBUS_ERROR_FAILED = 'org.freedesktop.DBus.Error.Failed';
|
|
DBUS_ERROR_NO_MEMORY = 'org.freedesktop.DBus.Error.NoMemory';
|
|
DBUS_ERROR_SERVICE_UNKNOWN = 'org.freedesktop.DBus.Error.ServiceUnknown';
|
|
DBUS_ERROR_NAME_HAS_NO_OWNER = 'org.freedesktop.DBus.Error.NameHasNoOwner';
|
|
DBUS_ERROR_NO_REPLY = 'org.freedesktop.DBus.Error.NoReply';
|
|
DBUS_ERROR_IO_ERROR = 'org.freedesktop.DBus.Error.IOError';
|
|
DBUS_ERROR_BAD_ADDRESS = 'org.freedesktop.DBus.Error.BadAddress';
|
|
DBUS_ERROR_NOT_SUPPORTED = 'org.freedesktop.DBus.Error.NotSupported';
|
|
DBUS_ERROR_LIMITS_EXCEEDED = 'org.freedesktop.DBus.Error.LimitsExceeded';
|
|
DBUS_ERROR_ACCESS_DENIED = 'org.freedesktop.DBus.Error.AccessDenied';
|
|
DBUS_ERROR_AUTH_FAILED = 'org.freedesktop.DBus.Error.AuthFailed';
|
|
DBUS_ERROR_NO_SERVER = 'org.freedesktop.DBus.Error.NoServer';
|
|
DBUS_ERROR_TIMEOUT = 'org.freedesktop.DBus.Error.Timeout';
|
|
DBUS_ERROR_NO_NETWORK = 'org.freedesktop.DBus.Error.NoNetwork';
|
|
DBUS_ERROR_ADDRESS_IN_USE = 'org.freedesktop.DBus.Error.AddressInUse';
|
|
DBUS_ERROR_DISCONNECTED = 'org.freedesktop.DBus.Error.Disconnected';
|
|
DBUS_ERROR_INVALID_ARGS = 'org.freedesktop.DBus.Error.InvalidArgs';
|
|
DBUS_ERROR_FILE_NOT_FOUND = 'org.freedesktop.DBus.Error.FileNotFound';
|
|
DBUS_ERROR_UNKNOWN_METHOD = 'org.freedesktop.DBus.Error.UnknownMethod';
|
|
DBUS_ERROR_TIMED_OUT = 'org.freedesktop.DBus.Error.TimedOut';
|
|
DBUS_ERROR_MATCH_RULE_NOT_FOUND = 'org.freedesktop.DBus.Error.MatchRuleNotFound';
|
|
DBUS_ERROR_MATCH_RULE_INVALID = 'org.freedesktop.DBus.Error.MatchRuleInvalid';
|
|
DBUS_ERROR_SPAWN_EXEC_FAILED = 'org.freedesktop.DBus.Error.Spawn.ExecFailed';
|
|
DBUS_ERROR_SPAWN_FORK_FAILED = 'org.freedesktop.DBus.Error.Spawn.ForkFailed';
|
|
DBUS_ERROR_SPAWN_CHILD_EXITED = 'org.freedesktop.DBus.Error.Spawn.ChildExited';
|
|
DBUS_ERROR_SPAWN_CHILD_SIGNALED = 'org.freedesktop.DBus.Error.Spawn.ChildSignaled';
|
|
DBUS_ERROR_SPAWN_FAILED = 'org.freedesktop.DBus.Error.Spawn.Failed';
|
|
DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN = 'org.freedesktop.DBus.Error.UnixProcessIdUnknown';
|
|
DBUS_ERROR_INVALID_SIGNATURE = 'org.freedesktop.DBus.Error.InvalidSignature';
|
|
DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN = 'org.freedesktop.DBus.Error.SELinuxSecurityContextUnknown';
|
|
|
|
DBUS_INTROSPECT_1_0_XML_NAMESPACE = 'http://www.freedesktop.org/standards/dbus';
|
|
DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER = '-//freedesktop//DTD D-BUS Object Introspection 1.0//EN';
|
|
DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER = 'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd';
|
|
DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE = '<!DOCTYPE node PUBLIC \""DBUS_INTROSPECT_1_0_XML_PUBLIC_IDENTIFIER"\"\n\""DBUS_INTROSPECT_1_0_XML_SYSTEM_IDENTIFIER"\">\n';
|
|
|