/usr/include/qpid/messaging/Address.h is in libqpidmessaging2-dev 0.16-6+deb7u1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | #ifndef QPID_MESSAGING_ADDRESS_H
#define QPID_MESSAGING_ADDRESS_H
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
#include "qpid/messaging/ImportExport.h"
#include "qpid/messaging/exceptions.h"
#include "qpid/types/Variant.h"
#include <string>
#include <ostream>
namespace qpid {
namespace messaging {
class AddressImpl;
/** \ingroup messaging
* Represents an address to which messages can be sent and from which
* messages can be received. Often a simple name is sufficient for
* this, however this can be augmented with a subject pattern and
* options.
*
* All parts of an address can be specified in a string of the
* following form:
*
* <address> [ / <subject> ] ; [ { <key> : <value> , ... } ]
*
* Here the <address> is a simple name for the addressed
* entity and <subject> is a subject or subject pattern for
* messages sent to or received from this address. The options are
* specified as a series of key value pairs enclosed in curly brackets
* (denoting a map). Values can be nested maps, or lists (which are
* denoted as a comma separated list of values inside square brackets,
* e.g. [a, b, c]).
*
* The currently supported options are as follows:
*
* <table border=0>
*
* <tr valign=top>
* <td>create</td>
* <td>Indicate whether the address should be automatically created
* or not. Can be one of <i>always</i>, <i>never</i>,
* <i>sender</i> or <i>receiver</i>. The properties of the node
* to be created can be specified via the node options (see
* below).
* </td>
* </tr>
*
* <tr valign=top>
* <td>assert</td>
* <td>Indicate whether or not to assert any specified node
* properties(see below) match the address. Can be one of
* <i>always</i>, <i>never</i>, <i>sender</i> or
* <i>receiver</i>.
* </td>
* </tr>
*
* <tr valign=top>
* <td>delete</td>
* <td>Indicate whether or not to delete the addressed node when a
* sender or receiver is cancelled. Can be one of <i>always</i>,
* <i>never</i>, <i>sender</i> or <i>receiver</i>.
* </td>
* </tr>
*
* <tr valign=top>
* <td>node</td>
* <td>A nested map describing properties of the addressed
* node. Current properties supported are type (topic or queue),
* durable (boolean), x-declare and x-bindings. The x-declare
* option is a nested map in whcih protocol amqp 0-10 specific
* options for queue or exchange declare can be specified. The
* x-bindings option is a nested list, each element of which can
* specify a queue, an exchange, a binding-key and arguments,
* which are used to establish a binding on create. The node
* will be used if queue or exchange values are not specified.
* </td>
* </tr>
*
* <tr valign=top>
* <td>link</td>
* <td>A nested map through which properties of the 'link' from
* sender/receiver to node can be configured. Current propeties
* are name, durable, realiability, x-declare, x-subscribe and
* x-bindings.
* </td>
* </tr>
*
* For receivers there is one other option of interest:
*
* <table border=0 valign=top>
* <tr valign=top><td>mode</td><td>(only relevant for queues)
* indicates whether the subscribe should consume (the default) or
* merely browse the messages. Valid values are 'consume' and
* 'browse'</td></tr>
* </table>
*
* An address has value semantics.
*/
class QPID_MESSAGING_CLASS_EXTERN Address
{
public:
QPID_MESSAGING_EXTERN Address();
QPID_MESSAGING_EXTERN Address(const std::string& address);
QPID_MESSAGING_EXTERN Address(const std::string& name, const std::string& subject,
const qpid::types::Variant::Map& options, const std::string& type = "");
QPID_MESSAGING_EXTERN Address(const Address& address);
QPID_MESSAGING_EXTERN ~Address();
QPID_MESSAGING_EXTERN Address& operator=(const Address&);
QPID_MESSAGING_EXTERN const std::string& getName() const;
QPID_MESSAGING_EXTERN void setName(const std::string&);
QPID_MESSAGING_EXTERN const std::string& getSubject() const;
QPID_MESSAGING_EXTERN void setSubject(const std::string&);
QPID_MESSAGING_EXTERN const qpid::types::Variant::Map& getOptions() const;
QPID_MESSAGING_EXTERN qpid::types::Variant::Map& getOptions();
QPID_MESSAGING_EXTERN void setOptions(const qpid::types::Variant::Map&);
QPID_MESSAGING_EXTERN std::string getType() const;
/**
* The type of and addressed node influences how receivers and
* senders are constructed for it. It also affects how a reply-to
* address is encoded. If the type is not specified in the address
* itself, it will be automatically determined by querying the
* broker. The type can be explicitly set to prevent this if
* needed.
*/
QPID_MESSAGING_EXTERN void setType(const std::string&);
QPID_MESSAGING_EXTERN std::string str() const;
QPID_MESSAGING_EXTERN operator bool() const;
QPID_MESSAGING_EXTERN bool operator !() const;
private:
AddressImpl* impl;
};
#ifndef SWIG
QPID_MESSAGING_EXTERN std::ostream& operator<<(std::ostream& out, const Address& address);
#endif
}} // namespace qpid::messaging
#endif /*!QPID_MESSAGING_ADDRESS_H*/
|