many methods in the Channel class now take a std::string_view instead of a std::string parameter, and are thus a bit more efficient

This commit is contained in:
Emiel Bruijntjes 2023-02-13 10:27:51 +01:00
parent 1adbd25164
commit 84a87d8f93
18 changed files with 100 additions and 94 deletions

View File

@ -1,7 +1,7 @@
/** /**
* Class describing a (mid-level) AMQP channel implementation * Class describing a (mid-level) AMQP channel implementation
* *
* @copyright 2014 - 2018 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -219,12 +219,12 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &declareExchange(const std::string &name, ExchangeType type, int flags, const Table &arguments) { return _implementation->declareExchange(name, type, flags, arguments); } Deferred &declareExchange(const std::string_view &name, ExchangeType type, int flags, const Table &arguments) { return _implementation->declareExchange(name, type, flags, arguments); }
Deferred &declareExchange(const std::string &name, ExchangeType type, const Table &arguments) { return _implementation->declareExchange(name, type, 0, arguments); } Deferred &declareExchange(const std::string_view &name, ExchangeType type, const Table &arguments) { return _implementation->declareExchange(name, type, 0, arguments); }
Deferred &declareExchange(const std::string &name, ExchangeType type = fanout, int flags = 0) { return _implementation->declareExchange(name, type, flags, Table()); } Deferred &declareExchange(const std::string_view &name, ExchangeType type = fanout, int flags = 0) { return _implementation->declareExchange(name, type, flags, Table()); }
Deferred &declareExchange(ExchangeType type, int flags, const Table &arguments) { return _implementation->declareExchange(std::string(), type, flags, arguments); } Deferred &declareExchange(ExchangeType type, int flags, const Table &arguments) { return _implementation->declareExchange(std::string_view(), type, flags, arguments); }
Deferred &declareExchange(ExchangeType type, const Table &arguments) { return _implementation->declareExchange(std::string(), type, 0, arguments); } Deferred &declareExchange(ExchangeType type, const Table &arguments) { return _implementation->declareExchange(std::string_view(), type, 0, arguments); }
Deferred &declareExchange(ExchangeType type = fanout, int flags = 0) { return _implementation->declareExchange(std::string(), type, flags, Table()); } Deferred &declareExchange(ExchangeType type = fanout, int flags = 0) { return _implementation->declareExchange(std::string_view(), type, flags, Table()); }
/** /**
* Remove an exchange * Remove an exchange
@ -239,7 +239,7 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &removeExchange(const std::string &name, int flags = 0) { return _implementation->removeExchange(name, flags); } Deferred &removeExchange(const std::string_view &name, int flags = 0) { return _implementation->removeExchange(name, flags); }
/** /**
* Bind two exchanges to each other * Bind two exchanges to each other
@ -252,8 +252,8 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &bindExchange(const std::string &source, const std::string &target, const std::string &routingkey, const Table &arguments) { return _implementation->bindExchange(source, target, routingkey, arguments); } Deferred &bindExchange(const std::string_view &source, const std::string_view &target, const std::string_view &routingkey, const Table &arguments) { return _implementation->bindExchange(source, target, routingkey, arguments); }
Deferred &bindExchange(const std::string &source, const std::string &target, const std::string &routingkey) { return _implementation->bindExchange(source, target, routingkey, Table()); } Deferred &bindExchange(const std::string_view &source, const std::string_view &target, const std::string_view &routingkey) { return _implementation->bindExchange(source, target, routingkey, Table()); }
/** /**
* Unbind two exchanges from one another * Unbind two exchanges from one another
@ -266,8 +266,8 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &unbindExchange(const std::string &target, const std::string &source, const std::string &routingkey, const Table &arguments) { return _implementation->unbindExchange(target, source, routingkey, arguments); } Deferred &unbindExchange(const std::string_view &target, const std::string_view &source, const std::string_view &routingkey, const Table &arguments) { return _implementation->unbindExchange(target, source, routingkey, arguments); }
Deferred &unbindExchange(const std::string &target, const std::string &source, const std::string &routingkey) { return _implementation->unbindExchange(target, source, routingkey, Table()); } Deferred &unbindExchange(const std::string_view &target, const std::string_view &source, const std::string_view &routingkey) { return _implementation->unbindExchange(target, source, routingkey, Table()); }
/** /**
* Declare a queue * Declare a queue
@ -298,12 +298,12 @@ public:
* *
* }); * });
*/ */
DeferredQueue &declareQueue(const std::string &name, int flags, const Table &arguments) { return _implementation->declareQueue(name, flags, arguments); } DeferredQueue &declareQueue(const std::string_view &name, int flags, const Table &arguments) { return _implementation->declareQueue(name, flags, arguments); }
DeferredQueue &declareQueue(const std::string &name, const Table &arguments) { return _implementation->declareQueue(name, 0, arguments); } DeferredQueue &declareQueue(const std::string_view &name, const Table &arguments) { return _implementation->declareQueue(name, 0, arguments); }
DeferredQueue &declareQueue(const std::string &name, int flags = 0) { return _implementation->declareQueue(name, flags, Table()); } DeferredQueue &declareQueue(const std::string_view &name, int flags = 0) { return _implementation->declareQueue(name, flags, Table()); }
DeferredQueue &declareQueue(int flags, const Table &arguments) { return _implementation->declareQueue(std::string(), flags, arguments); } DeferredQueue &declareQueue(int flags, const Table &arguments) { return _implementation->declareQueue(std::string_view(), flags, arguments); }
DeferredQueue &declareQueue(const Table &arguments) { return _implementation->declareQueue(std::string(), 0, arguments); } DeferredQueue &declareQueue(const Table &arguments) { return _implementation->declareQueue(std::string_view(), 0, arguments); }
DeferredQueue &declareQueue(int flags = 0) { return _implementation->declareQueue(std::string(), flags, Table()); } DeferredQueue &declareQueue(int flags = 0) { return _implementation->declareQueue(std::string_view(), flags, Table()); }
/** /**
* Bind a queue to an exchange * Bind a queue to an exchange
@ -316,8 +316,8 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &bindQueue(const std::string &exchange, const std::string &queue, const std::string &routingkey, const Table &arguments) { return _implementation->bindQueue(exchange, queue, routingkey, arguments); } Deferred &bindQueue(const std::string_view &exchange, const std::string_view &queue, const std::string_view &routingkey, const Table &arguments) { return _implementation->bindQueue(exchange, queue, routingkey, arguments); }
Deferred &bindQueue(const std::string &exchange, const std::string &queue, const std::string &routingkey) { return _implementation->bindQueue(exchange, queue, routingkey, Table()); } Deferred &bindQueue(const std::string_view &exchange, const std::string_view &queue, const std::string_view &routingkey) { return _implementation->bindQueue(exchange, queue, routingkey, Table()); }
/** /**
* Unbind a queue from an exchange * Unbind a queue from an exchange
@ -329,8 +329,8 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &unbindQueue(const std::string &exchange, const std::string &queue, const std::string &routingkey, const Table &arguments) { return _implementation->unbindQueue(exchange, queue, routingkey, arguments); } Deferred &unbindQueue(const std::string_view &exchange, const std::string_view &queue, const std::string_view &routingkey, const Table &arguments) { return _implementation->unbindQueue(exchange, queue, routingkey, arguments); }
Deferred &unbindQueue(const std::string &exchange, const std::string &queue, const std::string &routingkey) { return _implementation->unbindQueue(exchange, queue, routingkey, Table()); } Deferred &unbindQueue(const std::string_view &exchange, const std::string_view &queue, const std::string_view &routingkey) { return _implementation->unbindQueue(exchange, queue, routingkey, Table()); }
/** /**
* Purge a queue * Purge a queue
@ -350,7 +350,7 @@ public:
* *
* }); * });
*/ */
DeferredDelete &purgeQueue(const std::string &name){ return _implementation->purgeQueue(name); } DeferredDelete &purgeQueue(const std::string_view &name){ return _implementation->purgeQueue(name); }
/** /**
* Remove a queue * Remove a queue
@ -376,7 +376,7 @@ public:
* *
* }); * });
*/ */
DeferredDelete &removeQueue(const std::string &name, int flags = 0) { return _implementation->removeQueue(name, flags); } DeferredDelete &removeQueue(const std::string_view &name, int flags = 0) { return _implementation->removeQueue(name, flags); }
/** /**
* Publish a message to an exchange * Publish a message to an exchange
@ -403,10 +403,10 @@ public:
* @param size size of the message * @param size size of the message
* @param flags optional flags * @param flags optional flags
*/ */
bool publish(const std::string &exchange, const std::string &routingKey, const Envelope &envelope, int flags = 0) { return _implementation->publish(exchange, routingKey, envelope, flags); } bool publish(const std::string_view &exchange, const std::string_view &routingKey, const Envelope &envelope, int flags = 0) { return _implementation->publish(exchange, routingKey, envelope, flags); }
bool publish(const std::string &exchange, const std::string &routingKey, const std::string &message, int flags = 0) { return _implementation->publish(exchange, routingKey, Envelope(message.data(), message.size()), flags); } bool publish(const std::string_view &exchange, const std::string_view &routingKey, const std::string &message, int flags = 0) { return _implementation->publish(exchange, routingKey, Envelope(message.data(), message.size()), flags); }
bool publish(const std::string &exchange, const std::string &routingKey, const char *message, size_t size, int flags = 0) { return _implementation->publish(exchange, routingKey, Envelope(message, size), flags); } bool publish(const std::string_view &exchange, const std::string_view &routingKey, const char *message, size_t size, int flags = 0) { return _implementation->publish(exchange, routingKey, Envelope(message, size), flags); }
bool publish(const std::string &exchange, const std::string &routingKey, const char *message, int flags = 0) { return _implementation->publish(exchange, routingKey, Envelope(message, strlen(message)), flags); } bool publish(const std::string_view &exchange, const std::string_view &routingKey, const char *message, int flags = 0) { return _implementation->publish(exchange, routingKey, Envelope(message, strlen(message)), flags); }
/** /**
* Set the Quality of Service (QOS) for this channel * Set the Quality of Service (QOS) for this channel
@ -450,20 +450,20 @@ public:
* *
* The onSuccess() callback that you can install should have the following signature: * The onSuccess() callback that you can install should have the following signature:
* *
* void myCallback(const std::string& tag); * void myCallback(const std::string_view& tag);
* *
* For example: channel.consume("myqueue").onSuccess([](const std::string& tag) { * For example: channel.consume("myqueue").onSuccess([](const std::string_view& tag) {
* *
* std::cout << "Started consuming under tag " << tag << std::endl; * std::cout << "Started consuming under tag " << tag << std::endl;
* *
* }); * });
*/ */
DeferredConsumer &consume(const std::string &queue, const std::string &tag, int flags, const Table &arguments) { return _implementation->consume(queue, tag, flags, arguments); } DeferredConsumer &consume(const std::string_view &queue, const std::string_view &tag, int flags, const Table &arguments) { return _implementation->consume(queue, tag, flags, arguments); }
DeferredConsumer &consume(const std::string &queue, const std::string &tag, int flags = 0) { return _implementation->consume(queue, tag, flags, Table()); } DeferredConsumer &consume(const std::string_view &queue, const std::string_view &tag, int flags = 0) { return _implementation->consume(queue, tag, flags, Table()); }
DeferredConsumer &consume(const std::string &queue, const std::string &tag, const Table &arguments) { return _implementation->consume(queue, tag, 0, arguments); } DeferredConsumer &consume(const std::string_view &queue, const std::string_view &tag, const Table &arguments) { return _implementation->consume(queue, tag, 0, arguments); }
DeferredConsumer &consume(const std::string &queue, int flags, const Table &arguments) { return _implementation->consume(queue, std::string(), flags, arguments); } DeferredConsumer &consume(const std::string_view &queue, int flags, const Table &arguments) { return _implementation->consume(queue, std::string_view(), flags, arguments); }
DeferredConsumer &consume(const std::string &queue, int flags = 0) { return _implementation->consume(queue, std::string(), flags, Table()); } DeferredConsumer &consume(const std::string_view &queue, int flags = 0) { return _implementation->consume(queue, std::string_view(), flags, Table()); }
DeferredConsumer &consume(const std::string &queue, const Table &arguments) { return _implementation->consume(queue, std::string(), 0, arguments); } DeferredConsumer &consume(const std::string_view &queue, const Table &arguments) { return _implementation->consume(queue, std::string_view(), 0, arguments); }
/** /**
* Tell the messages that you are ready to recall/take back messages that messages thar are unroutable. * Tell the messages that you are ready to recall/take back messages that messages thar are unroutable.
@ -497,7 +497,7 @@ public:
* *
* }); * });
*/ */
DeferredCancel &cancel(const std::string &tag) { return _implementation->cancel(tag); } DeferredCancel &cancel(const std::string_view &tag) { return _implementation->cancel(tag); }
/** /**
* Retrieve a single message from RabbitMQ * Retrieve a single message from RabbitMQ
@ -531,7 +531,7 @@ public:
* *
* }); * });
*/ */
DeferredGet &get(const std::string &queue, int flags = 0) { return _implementation->get(queue, flags); } DeferredGet &get(const std::string_view &queue, int flags = 0) { return _implementation->get(queue, flags); }
/** /**
* Acknoldge a received message * Acknoldge a received message

View File

@ -5,7 +5,7 @@
* that has a private constructor so that it can not be used from outside * that has a private constructor so that it can not be used from outside
* the AMQP library * the AMQP library
* *
* @copyright 2014 - 2022 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -308,7 +308,7 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &declareExchange(const std::string &name, ExchangeType type, int flags, const Table &arguments); Deferred &declareExchange(const std::string_view &name, ExchangeType type, int flags, const Table &arguments);
/** /**
* bind two exchanges * bind two exchanges
@ -321,7 +321,7 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &bindExchange(const std::string &source, const std::string &target, const std::string &routingkey, const Table &arguments); Deferred &bindExchange(const std::string_view &source, const std::string_view &target, const std::string_view &routingkey, const Table &arguments);
/** /**
* unbind two exchanges * unbind two exchanges
@ -334,7 +334,7 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &unbindExchange(const std::string &source, const std::string &target, const std::string &routingkey, const Table &arguments); Deferred &unbindExchange(const std::string_view &source, const std::string_view &target, const std::string_view &routingkey, const Table &arguments);
/** /**
* remove an exchange * remove an exchange
@ -345,7 +345,7 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &removeExchange(const std::string &name, int flags); Deferred &removeExchange(const std::string_view &name, int flags);
/** /**
* declare a queue * declare a queue
@ -356,7 +356,7 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
DeferredQueue &declareQueue(const std::string &name, int flags, const Table &arguments); DeferredQueue &declareQueue(const std::string_view &name, int flags, const Table &arguments);
/** /**
* Bind a queue to an exchange * Bind a queue to an exchange
@ -369,7 +369,7 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &bindQueue(const std::string &exchangeName, const std::string &queueName, const std::string &routingkey, const Table &arguments); Deferred &bindQueue(const std::string_view &exchangeName, const std::string_view &queueName, const std::string_view &routingkey, const Table &arguments);
/** /**
* Unbind a queue from an exchange * Unbind a queue from an exchange
@ -382,7 +382,7 @@ public:
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &unbindQueue(const std::string &exchangeName, const std::string &queueName, const std::string &routingkey, const Table &arguments); Deferred &unbindQueue(const std::string_view &exchangeName, const std::string_view &queueName, const std::string_view &routingkey, const Table &arguments);
/** /**
* Purge a queue * Purge a queue
@ -401,7 +401,7 @@ public:
* *
* }); * });
*/ */
DeferredDelete &purgeQueue(const std::string &name); DeferredDelete &purgeQueue(const std::string_view &name);
/** /**
* Remove a queue * Remove a queue
@ -421,7 +421,7 @@ public:
* *
* }); * });
*/ */
DeferredDelete &removeQueue(const std::string &name, int flags); DeferredDelete &removeQueue(const std::string_view &name, int flags);
/** /**
* Publish a message to an exchange * Publish a message to an exchange
@ -437,7 +437,7 @@ public:
* @param flags optional flags * @param flags optional flags
* @return bool * @return bool
*/ */
bool publish(const std::string &exchange, const std::string &routingKey, const Envelope &envelope, int flags); bool publish(const std::string_view &exchange, const std::string_view &routingKey, const Envelope &envelope, int flags);
/** /**
* Set the Quality of Service (QOS) of the entire connection * Set the Quality of Service (QOS) of the entire connection
@ -471,7 +471,7 @@ public:
* *
* }); * });
*/ */
DeferredConsumer& consume(const std::string &queue, const std::string &tag, int flags, const Table &arguments); DeferredConsumer& consume(const std::string_view &queue, const std::string_view &tag, int flags, const Table &arguments);
/** /**
* Tell that you are prepared to recall/take back messages that could not be * Tell that you are prepared to recall/take back messages that could not be
@ -501,7 +501,7 @@ public:
* *
* }); * });
*/ */
DeferredCancel &cancel(const std::string &tag); DeferredCancel &cancel(const std::string_view &tag);
/** /**
* Retrieve a single message from RabbitMQ * Retrieve a single message from RabbitMQ
@ -535,7 +535,7 @@ public:
* *
* }); * });
*/ */
DeferredGet &get(const std::string &queue, int flags = 0); DeferredGet &get(const std::string_view &queue, int flags = 0);
/** /**
* Acknowledge a message * Acknowledge a message

View File

@ -1,7 +1,7 @@
/** /**
* String field types for amqp * String field types for amqp
* *
* @copyright 2014 - 2020 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -47,6 +47,12 @@ public:
*/ */
StringField(const std::string &value) : _data(value) {} StringField(const std::string &value) : _data(value) {}
/**
* Construct based on a std::string
* @param value string value
*/
StringField(const std::string_view &value) : _data(value) {}
/** /**
* Construct based on a std::string * Construct based on a std::string
* @param value string value * @param value string value

View File

@ -1,6 +1,6 @@
CPP = g++ CPP = g++
RM = rm -f RM = rm -f
CPPFLAGS = -Wall -c -I../include -std=c++11 -MD -Wno-class-conversion CPPFLAGS = -Wall -c -I../include -std=c++17 -MD -Wno-class-conversion
LD = g++ LD = g++
LD_FLAGS = -Wall -shared LD_FLAGS = -Wall -shared
SHARED_LIB = lib$(LIBRARY_NAME).so.$(VERSION) SHARED_LIB = lib$(LIBRARY_NAME).so.$(VERSION)

View File

@ -1,7 +1,7 @@
/** /**
* Class describing a basic cancel frame * Class describing a basic cancel frame
* *
* @copyright 2014 - 2022 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -58,7 +58,7 @@ public:
* @param consumerTag consumertag specified by client of provided by server * @param consumerTag consumertag specified by client of provided by server
* @param noWait whether to wait for a response. * @param noWait whether to wait for a response.
*/ */
BasicCancelFrame(uint16_t channel, const std::string& consumerTag, bool noWait = false) : BasicCancelFrame(uint16_t channel, const std::string_view &consumerTag, bool noWait = false) :
BasicFrame(channel, (uint32_t)(consumerTag.size() + 2)), // 1 for extra string size, 1 for bool BasicFrame(channel, (uint32_t)(consumerTag.size() + 2)), // 1 for extra string size, 1 for bool
_consumerTag(consumerTag), _consumerTag(consumerTag),
_noWait(noWait) {} _noWait(noWait) {}

View File

@ -1,7 +1,7 @@
/** /**
* Class describing a basic consume frame * Class describing a basic consume frame
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -85,7 +85,7 @@ public:
* @param noWait don't wait for a response * @param noWait don't wait for a response
* @param filter additional arguments * @param filter additional arguments
*/ */
BasicConsumeFrame(uint16_t channel, const std::string& queueName, const std::string& consumerTag, bool noLocal = false, bool noAck = false, bool exclusive = false, bool noWait = false, const Table& filter = {}) : BasicConsumeFrame(uint16_t channel, const std::string_view &queueName, const std::string_view &consumerTag, bool noLocal = false, bool noAck = false, bool exclusive = false, bool noWait = false, const Table& filter = {}) :
BasicFrame(channel, (uint32_t)(queueName.length() + consumerTag.length() + 5 + filter.size())), // size of vars, +1 for each shortstring size, +1 for bools, +2 for deprecated value BasicFrame(channel, (uint32_t)(queueName.length() + consumerTag.length() + 5 + filter.size())), // size of vars, +1 for each shortstring size, +1 for bools, +2 for deprecated value
_queueName(queueName), _queueName(queueName),
_consumerTag(consumerTag), _consumerTag(consumerTag),

View File

@ -1,7 +1,7 @@
/** /**
* Class describing a basic get frame * Class describing a basic get frame
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -58,7 +58,7 @@ public:
* @param queue name of the queue * @param queue name of the queue
* @param noAck whether server expects acknowledgements for messages * @param noAck whether server expects acknowledgements for messages
*/ */
BasicGetFrame(uint16_t channel, const std::string& queue, bool noAck = false) : BasicGetFrame(uint16_t channel, const std::string_view &queue, bool noAck = false) :
BasicFrame(channel, (uint32_t)(queue.length() + 4)), // 1 for bool, 1 for string size, 2 for deprecated field BasicFrame(channel, (uint32_t)(queue.length() + 4)), // 1 for bool, 1 for string size, 2 for deprecated field
_queue(queue), _queue(queue),
_noAck(noAck) _noAck(noAck)

View File

@ -1,7 +1,7 @@
/** /**
* Class describing a basic publish frame * Class describing a basic publish frame
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -69,7 +69,7 @@ public:
* @param mandatory indicate mandatory routing @default = false * @param mandatory indicate mandatory routing @default = false
* @param immediate request immediate delivery @default = false * @param immediate request immediate delivery @default = false
*/ */
BasicPublishFrame(uint16_t channel, const std::string& exchange = "", const std::string& routingKey = "", bool mandatory = false, bool immediate = false) : BasicPublishFrame(uint16_t channel, const std::string_view &exchange = "", const std::string_view &routingKey = "", bool mandatory = false, bool immediate = false) :
BasicFrame(channel, (uint32_t)(exchange.length() + routingKey.length() + 5)), // 1 extra per string (for the size), 1 for bools, 2 for deprecated field BasicFrame(channel, (uint32_t)(exchange.length() + routingKey.length() + 5)), // 1 extra per string (for the size), 1 for bools, 2 for deprecated field
_exchange(exchange), _exchange(exchange),
_routingKey(routingKey), _routingKey(routingKey),

View File

@ -3,7 +3,7 @@
* *
* Implementation for a channel * Implementation for a channel
* *
* @copyright 2014 - 2022 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
#include "includes.h" #include "includes.h"
#include "basicgetokframe.h" #include "basicgetokframe.h"
@ -279,7 +279,7 @@ Deferred &ChannelImpl::close()
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &ChannelImpl::declareExchange(const std::string &name, ExchangeType type, int flags, const Table &arguments) Deferred &ChannelImpl::declareExchange(const std::string_view &name, ExchangeType type, int flags, const Table &arguments)
{ {
// convert exchange type // convert exchange type
const char *exchangeType = ""; const char *exchangeType = "";
@ -314,7 +314,7 @@ Deferred &ChannelImpl::declareExchange(const std::string &name, ExchangeType typ
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &ChannelImpl::bindExchange(const std::string &source, const std::string &target, const std::string &routingkey, const Table &arguments) Deferred &ChannelImpl::bindExchange(const std::string_view &source, const std::string_view &target, const std::string_view &routingkey, const Table &arguments)
{ {
// send exchange bind frame // send exchange bind frame
return push(ExchangeBindFrame(_id, target, source, routingkey, false, arguments)); return push(ExchangeBindFrame(_id, target, source, routingkey, false, arguments));
@ -331,7 +331,7 @@ Deferred &ChannelImpl::bindExchange(const std::string &source, const std::string
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &ChannelImpl::unbindExchange(const std::string &source, const std::string &target, const std::string &routingkey, const Table &arguments) Deferred &ChannelImpl::unbindExchange(const std::string_view &source, const std::string_view &target, const std::string_view &routingkey, const Table &arguments)
{ {
// send exchange unbind frame // send exchange unbind frame
return push(ExchangeUnbindFrame(_id, target, source, routingkey, false, arguments)); return push(ExchangeUnbindFrame(_id, target, source, routingkey, false, arguments));
@ -346,7 +346,7 @@ Deferred &ChannelImpl::unbindExchange(const std::string &source, const std::stri
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &ChannelImpl::removeExchange(const std::string &name, int flags) Deferred &ChannelImpl::removeExchange(const std::string_view &name, int flags)
{ {
// send delete exchange frame // send delete exchange frame
return push(ExchangeDeleteFrame(_id, name, (flags & ifunused) != 0, false)); return push(ExchangeDeleteFrame(_id, name, (flags & ifunused) != 0, false));
@ -361,7 +361,7 @@ Deferred &ChannelImpl::removeExchange(const std::string &name, int flags)
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
DeferredQueue &ChannelImpl::declareQueue(const std::string &name, int flags, const Table &arguments) DeferredQueue &ChannelImpl::declareQueue(const std::string_view &name, int flags, const Table &arguments)
{ {
// the frame to send // the frame to send
QueueDeclareFrame frame(_id, name, (flags & passive) != 0, (flags & durable) != 0, (flags & exclusive) != 0, (flags & autodelete) != 0, false, arguments); QueueDeclareFrame frame(_id, name, (flags & passive) != 0, (flags & durable) != 0, (flags & exclusive) != 0, (flags & autodelete) != 0, false, arguments);
@ -387,7 +387,7 @@ DeferredQueue &ChannelImpl::declareQueue(const std::string &name, int flags, con
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &ChannelImpl::bindQueue(const std::string &exchangeName, const std::string &queueName, const std::string &routingkey, const Table &arguments) Deferred &ChannelImpl::bindQueue(const std::string_view &exchangeName, const std::string_view &queueName, const std::string_view &routingkey, const Table &arguments)
{ {
// send the bind queue frame // send the bind queue frame
return push(QueueBindFrame(_id, queueName, exchangeName, routingkey, false, arguments)); return push(QueueBindFrame(_id, queueName, exchangeName, routingkey, false, arguments));
@ -404,7 +404,7 @@ Deferred &ChannelImpl::bindQueue(const std::string &exchangeName, const std::str
* This function returns a deferred handler. Callbacks can be installed * This function returns a deferred handler. Callbacks can be installed
* using onSuccess(), onError() and onFinalize() methods. * using onSuccess(), onError() and onFinalize() methods.
*/ */
Deferred &ChannelImpl::unbindQueue(const std::string &exchange, const std::string &queue, const std::string &routingkey, const Table &arguments) Deferred &ChannelImpl::unbindQueue(const std::string_view &exchange, const std::string_view &queue, const std::string_view &routingkey, const Table &arguments)
{ {
// send the unbind queue frame // send the unbind queue frame
return push(QueueUnbindFrame(_id, queue, exchange, routingkey, arguments)); return push(QueueUnbindFrame(_id, queue, exchange, routingkey, arguments));
@ -427,7 +427,7 @@ Deferred &ChannelImpl::unbindQueue(const std::string &exchange, const std::strin
* *
* }); * });
*/ */
DeferredDelete &ChannelImpl::purgeQueue(const std::string &name) DeferredDelete &ChannelImpl::purgeQueue(const std::string_view &name)
{ {
// the frame to send // the frame to send
QueuePurgeFrame frame(_id, name, false); QueuePurgeFrame frame(_id, name, false);
@ -460,7 +460,7 @@ DeferredDelete &ChannelImpl::purgeQueue(const std::string &name)
* *
* }); * });
*/ */
DeferredDelete &ChannelImpl::removeQueue(const std::string &name, int flags) DeferredDelete &ChannelImpl::removeQueue(const std::string_view &name, int flags)
{ {
// the frame to send // the frame to send
QueueDeleteFrame frame(_id, name, (flags & ifunused) != 0, (flags & ifempty) != 0, false); QueueDeleteFrame frame(_id, name, (flags & ifunused) != 0, (flags & ifempty) != 0, false);
@ -486,7 +486,7 @@ DeferredDelete &ChannelImpl::removeQueue(const std::string &name, int flags)
* @param flags * @param flags
* @return bool * @return bool
*/ */
bool ChannelImpl::publish(const std::string &exchange, const std::string &routingKey, const Envelope &envelope, int flags) bool ChannelImpl::publish(const std::string_view &exchange, const std::string_view &routingKey, const Envelope &envelope, int flags)
{ {
// we are going to send out multiple frames, each one will trigger a call to the handler, // we are going to send out multiple frames, each one will trigger a call to the handler,
// which in turn could destruct the channel object, we need to monitor that // which in turn could destruct the channel object, we need to monitor that
@ -574,7 +574,7 @@ Deferred &ChannelImpl::setQos(uint16_t prefetchCount, bool global)
* *
* }); * });
*/ */
DeferredConsumer& ChannelImpl::consume(const std::string &queue, const std::string &tag, int flags, const Table &arguments) DeferredConsumer& ChannelImpl::consume(const std::string_view &queue, const std::string_view &tag, int flags, const Table &arguments)
{ {
// the frame to send // the frame to send
BasicConsumeFrame frame(_id, queue, tag, (flags & nolocal) != 0, (flags & noack) != 0, (flags & exclusive) != 0, false, arguments); BasicConsumeFrame frame(_id, queue, tag, (flags & nolocal) != 0, (flags & noack) != 0, (flags & exclusive) != 0, false, arguments);
@ -624,7 +624,7 @@ DeferredRecall &ChannelImpl::recall()
* *
* }); * });
*/ */
DeferredCancel &ChannelImpl::cancel(const std::string &tag) DeferredCancel &ChannelImpl::cancel(const std::string_view &tag)
{ {
// the cancel frame to send // the cancel frame to send
BasicCancelFrame frame(_id, tag, false); BasicCancelFrame frame(_id, tag, false);
@ -671,7 +671,7 @@ DeferredCancel &ChannelImpl::cancel(const std::string &tag)
* *
* }); * });
*/ */
DeferredGet &ChannelImpl::get(const std::string &queue, int flags) DeferredGet &ChannelImpl::get(const std::string_view &queue, int flags)
{ {
// the get frame to send // the get frame to send
BasicGetFrame frame(_id, queue, (flags & noack) != 0); BasicGetFrame frame(_id, queue, (flags & noack) != 0);

View File

@ -1,7 +1,7 @@
/** /**
* Exchangebindframe.h * Exchangebindframe.h
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -94,7 +94,7 @@ public:
* @param noWait * @param noWait
* @param arguments * @param arguments
*/ */
ExchangeBindFrame(uint16_t channel, const std::string &destination, const std::string &source, const std::string &routingKey, bool noWait, const Table &arguments) : ExchangeBindFrame(uint16_t channel, const std::string_view &destination, const std::string_view &source, const std::string_view &routingKey, bool noWait, const Table &arguments) :
ExchangeFrame(channel, (uint32_t)(destination.length() + source.length() + routingKey.length() + arguments.size() + 6)), // 1 for each string, 1 for booleanset, 2 for deprecated field ExchangeFrame(channel, (uint32_t)(destination.length() + source.length() + routingKey.length() + arguments.size() + 6)), // 1 for each string, 1 for booleanset, 2 for deprecated field
_destination(destination), _destination(destination),
_source(source), _source(source),

View File

@ -1,7 +1,7 @@
/** /**
* Class describing an AMQP exchange declare frame * Class describing an AMQP exchange declare frame
* *
* @copyright 2014 - 2018 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -82,7 +82,7 @@ public:
* @param noWait do not wait on response * @param noWait do not wait on response
* @param arguments additional arguments * @param arguments additional arguments
*/ */
ExchangeDeclareFrame(uint16_t channel, const std::string& name, const char *type, bool passive, bool durable, bool autodelete, bool internal, bool nowait, const Table& arguments) : ExchangeDeclareFrame(uint16_t channel, const std::string_view& name, const char *type, bool passive, bool durable, bool autodelete, bool internal, bool nowait, const Table& arguments) :
ExchangeFrame(channel, (uint32_t)(name.length() + strlen(type) + arguments.size() + 5)), // size of name, type and arguments + 1 (all booleans are stored in 1 byte) + 2 (deprecated short) + 2 (string sizes) ExchangeFrame(channel, (uint32_t)(name.length() + strlen(type) + arguments.size() + 5)), // size of name, type and arguments + 1 (all booleans are stored in 1 byte) + 2 (deprecated short) + 2 (string sizes)
_name(name), _name(name),
_type(type), _type(type),

View File

@ -1,7 +1,7 @@
/** /**
* Class describing an AMQP exchange delete frame * Class describing an AMQP exchange delete frame
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -72,7 +72,7 @@ public:
* @param bool ifUnused Delete only if frame is not used * @param bool ifUnused Delete only if frame is not used
* @param bool noWait Do not wait for a response * @param bool noWait Do not wait for a response
*/ */
ExchangeDeleteFrame(uint16_t channel, const std::string& name, bool ifUnused = false, bool noWait = false) : ExchangeDeleteFrame(uint16_t channel, const std::string_view &name, bool ifUnused = false, bool noWait = false) :
ExchangeFrame(channel, (uint32_t)(name.length() + 4)), // length of the name, 1 byte for encoding this length, 1 for bools, 2 for deprecated short ExchangeFrame(channel, (uint32_t)(name.length() + 4)), // length of the name, 1 byte for encoding this length, 1 for bools, 2 for deprecated short
_name(name), _name(name),
_bools(ifUnused, noWait) _bools(ifUnused, noWait)

View File

@ -1,7 +1,7 @@
/** /**
* Exchangeunbindframe.h * Exchangeunbindframe.h
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -94,7 +94,7 @@ public:
* @param noWait * @param noWait
* @param arguments * @param arguments
*/ */
ExchangeUnbindFrame(uint16_t channel, const std::string &destination, const std::string &source, const std::string &routingKey, bool noWait, const Table &arguments) : ExchangeUnbindFrame(uint16_t channel, const std::string_view &destination, const std::string_view &source, const std::string_view &routingKey, bool noWait, const Table &arguments) :
ExchangeFrame(channel, (uint32_t)(destination.length() + source.length() + routingKey.length() + arguments.size() + 6)), // 1 for each string, 1 for booleanset, 2 for deprecated field ExchangeFrame(channel, (uint32_t)(destination.length() + source.length() + routingKey.length() + arguments.size() + 6)), // 1 for each string, 1 for booleanset, 2 for deprecated field
_destination(destination), _destination(destination),
_source(source), _source(source),

View File

@ -1,7 +1,7 @@
/** /**
* Class describing an AMQP queue bind frame * Class describing an AMQP queue bind frame
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -86,7 +86,7 @@ public:
* @param Bool noWait do not wait for a response * @param Bool noWait do not wait for a response
* @param Table arguments additional arguments * @param Table arguments additional arguments
*/ */
QueueBindFrame(uint16_t channel, const std::string& name, const std::string& exchange, const std::string& routingKey = "", bool noWait = false, const Table& arguments = {}) : QueueBindFrame(uint16_t channel, const std::string_view &name, const std::string_view &exchange, const std::string_view &routingKey = "", bool noWait = false, const Table& arguments = {}) :
QueueFrame(channel, (uint32_t)(name.length() + exchange.length() + routingKey.length() + arguments.size() + 6) ), // 3 extra per string, 1 for bools, 2 for deprecated field QueueFrame(channel, (uint32_t)(name.length() + exchange.length() + routingKey.length() + arguments.size() + 6) ), // 3 extra per string, 1 for bools, 2 for deprecated field
_name(name), _name(name),
_exchange(exchange), _exchange(exchange),

View File

@ -1,7 +1,7 @@
/** /**
* Class describing an AMQP queue declare frame * Class describing an AMQP queue declare frame
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -79,7 +79,7 @@ public:
* @param Bool noWait whether to wait for a return value * @param Bool noWait whether to wait for a return value
* @param Table arguments additional arguments, implementation dependent * @param Table arguments additional arguments, implementation dependent
*/ */
QueueDeclareFrame(uint16_t channel, const std::string& name = "", bool passive = false, bool durable = false, bool exclusive = false, bool autoDelete = false, bool noWait = false, const Table& arguments = {}) : QueueDeclareFrame(uint16_t channel, const std::string_view &name = "", bool passive = false, bool durable = false, bool exclusive = false, bool autoDelete = false, bool noWait = false, const Table& arguments = {}) :
QueueFrame(channel, (uint32_t)(name.length() + arguments.size() + 4 ) ), // 1 extra for string size, 1 for bools, 2 for deprecated value QueueFrame(channel, (uint32_t)(name.length() + arguments.size() + 4 ) ), // 1 extra for string size, 1 for bools, 2 for deprecated value
_name(name), _name(name),
_bools(passive, durable, exclusive, autoDelete, noWait), _bools(passive, durable, exclusive, autoDelete, noWait),

View File

@ -1,7 +1,7 @@
/** /**
* Class describing an AMQP queue delete frame * Class describing an AMQP queue delete frame
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -68,7 +68,7 @@ public:
* @param ifEmpty delete only if empty * @param ifEmpty delete only if empty
* @param noWait do not wait on response * @param noWait do not wait on response
*/ */
QueueDeleteFrame(uint16_t channel, const std::string& name, bool ifUnused = false, bool ifEmpty = false, bool noWait = false) : QueueDeleteFrame(uint16_t channel, const std::string_view &name, bool ifUnused = false, bool ifEmpty = false, bool noWait = false) :
QueueFrame(channel, (uint32_t)(name.length() + 4)), // 1 for string length, 1 for bools, 2 for deprecated field QueueFrame(channel, (uint32_t)(name.length() + 4)), // 1 for string length, 1 for bools, 2 for deprecated field
_name(name), _name(name),
_bools(ifUnused, ifEmpty, noWait) _bools(ifUnused, ifEmpty, noWait)

View File

@ -1,7 +1,7 @@
/** /**
* Class describing an AMQP queue purge frame * Class describing an AMQP queue purge frame
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -64,7 +64,7 @@ public:
* *
* @return newly created Queuepurgeframe * @return newly created Queuepurgeframe
*/ */
QueuePurgeFrame(uint16_t channel, const std::string& name, bool noWait = false) : QueuePurgeFrame(uint16_t channel, const std::string_view &name, bool noWait = false) :
QueueFrame(channel, (uint32_t)(name.length() + 4)), // 1 extra for string length, 1 for bool, 2 for deprecated field QueueFrame(channel, (uint32_t)(name.length() + 4)), // 1 extra for string length, 1 for bool, 2 for deprecated field
_name(name), _name(name),
_noWait(noWait) _noWait(noWait)

View File

@ -1,7 +1,7 @@
/** /**
* Class describing an AMQP queue bind frame * Class describing an AMQP queue bind frame
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2023 Copernica BV
*/ */
/** /**
@ -79,7 +79,7 @@ public:
* @param routingKey the routingKey * @param routingKey the routingKey
* @param arguments additional arguments, implementation dependant. * @param arguments additional arguments, implementation dependant.
*/ */
QueueUnbindFrame(uint16_t channel, const std::string& name, const std::string& exchange, const std::string& routingKey = "", const Table& arguments = {} ) : QueueUnbindFrame(uint16_t channel, const std::string_view &name, const std::string_view &exchange, const std::string_view &routingKey = "", const Table& arguments = {} ) :
QueueFrame(channel, (uint32_t)(name.length() + exchange.length() + routingKey.length() + arguments.size() + 5) ), // 1 per string, 2 for deprecated field QueueFrame(channel, (uint32_t)(name.length() + exchange.length() + routingKey.length() + arguments.size() + 5) ), // 1 per string, 2 for deprecated field
_name(name), _name(name),
_exchange(exchange), _exchange(exchange),