added more parameter-types to set properties in the envelope

This commit is contained in:
Emiel Bruijntjes 2020-08-14 11:52:08 +02:00
parent 1c08399ab0
commit ee6ed20430
2 changed files with 114 additions and 6 deletions

View File

@ -230,7 +230,6 @@ public:
/** /**
* Set the various supported fields using r-value references * Set the various supported fields using r-value references
*
* @param value moveable value * @param value moveable value
*/ */
void setExpiration (std::string &&value) { _expiration = std::move(value); _bools1.set(0,true); } void setExpiration (std::string &&value) { _expiration = std::move(value); _bools1.set(0,true); }
@ -245,6 +244,37 @@ public:
void setTypeName (std::string &&value) { _typeName = std::move(value); _bools2.set(5,true); } void setTypeName (std::string &&value) { _typeName = std::move(value); _bools2.set(5,true); }
void setMessageID (std::string &&value) { _messageID = std::move(value); _bools2.set(7,true); } void setMessageID (std::string &&value) { _messageID = std::move(value); _bools2.set(7,true); }
/**
* Set the various supported fields using data buffers
* @param value data buffer
* @param size size of the buffer
*/
void setExpiration (const char *value, size_t size) { _expiration.assign(value, size); _bools1.set(0,true); }
void setReplyTo (const char *value, size_t size) { _replyTo.assign(value, size); _bools1.set(1,true); }
void setCorrelationID (const char *value, size_t size) { _correlationID.assign(value, size); _bools1.set(2,true); }
void setContentEncoding (const char *value, size_t size) { _contentEncoding.assign(value, size); _bools1.set(6,true); }
void setContentType (const char *value, size_t size) { _contentType.assign(value, size); _bools1.set(7,true); }
void setClusterID (const char *value, size_t size) { _clusterID.assign(value, size); _bools2.set(2,true); }
void setAppID (const char *value, size_t size) { _appID.assign(value, size); _bools2.set(3,true); }
void setUserID (const char *value, size_t size) { _userID.assign(value, size); _bools2.set(4,true); }
void setTypeName (const char *value, size_t size) { _typeName.assign(value, size); _bools2.set(5,true); }
void setMessageID (const char *value, size_t size) { _messageID.assign(value, size); _bools2.set(7,true); }
/**
* Set the various supported fields using c strings
* @param value data buffer
*/
void setExpiration (const char *value) { _expiration.assign(value); _bools1.set(0,true); }
void setReplyTo (const char *value) { _replyTo.assign(value); _bools1.set(1,true); }
void setCorrelationID (const char *value) { _correlationID.assign(value); _bools1.set(2,true); }
void setContentEncoding (const char *value) { _contentEncoding.assign(value); _bools1.set(6,true); }
void setContentType (const char *value) { _contentType.assign(value); _bools1.set(7,true); }
void setClusterID (const char *value) { _clusterID.assign(value); _bools2.set(2,true); }
void setAppID (const char *value) { _appID.assign(value); _bools2.set(3,true); }
void setUserID (const char *value) { _userID.assign(value); _bools2.set(4,true); }
void setTypeName (const char *value) { _typeName.assign(value); _bools2.set(5,true); }
void setMessageID (const char *value) { _messageID.assign(value); _bools2.set(7,true); }
/** /**
* Retrieve the fields * Retrieve the fields
* @return string * @return string

View File

@ -1,7 +1,7 @@
/** /**
* String field types for amqp * String field types for amqp
* *
* @copyright 2014 Copernica BV * @copyright 2014 - 2020 Copernica BV
*/ */
/** /**
@ -43,17 +43,28 @@ public:
/** /**
* Construct based on a std::string * Construct based on a std::string
*
* @param value string value * @param value string value
*/ */
StringField(const std::string &value) : _data(value) {} StringField(const std::string &value) : _data(value) {}
/** /**
* Construct based on a std::string * Construct based on a std::string
*
* @param value string value * @param value string value
*/ */
StringField(std::string &&value) : _data(std::move(value)) {} StringField(std::string &&value) : _data(std::move(value)) {}
/**
* Construct based on a buffer
* @param buffer buffer value
* @param size size of the buffer
*/
StringField(const char *buffer, size_t size) : _data(buffer, size) {}
/**
* Construct based on a c-string
* @param buffer buffer value
*/
StringField(const char *buffer) : _data(buffer) {}
/** /**
* Construct based on received data * Construct based on received data
@ -85,7 +96,6 @@ public:
/** /**
* Assign a new value * Assign a new value
*
* @param value new value * @param value new value
*/ */
StringField& operator=(const std::string &value) StringField& operator=(const std::string &value)
@ -99,7 +109,6 @@ public:
/** /**
* Assign a new value * Assign a new value
*
* @param value new value * @param value new value
*/ */
StringField& operator=(std::string &&value) StringField& operator=(std::string &&value)
@ -111,6 +120,75 @@ public:
return *this; return *this;
} }
/**
* Assign a new value
* @param value new value
*/
StringField& operator=(const char *value)
{
// overwrite data
_data.assign(value);
// allow chaining
return *this;
}
/**
* Assign a new value
* @param value
* @return StringField
*/
StringField& assign(const std::string &value)
{
// overwrite data
_data = value;
// allow chaining
return *this;
}
/**
* Assign a new value
* @param value new value
* @return StringField
*/
StringField& assign(std::string &&value)
{
// overwrite data
_data = std::move(value);
// allow chaining
return *this;
}
/**
* Assign a new value
* @param value new value
* @return StringField
*/
StringField& assign(const char *value)
{
// overwrite data
_data.assign(value);
// allow chaining
return *this;
}
/**
* Assign a new value
* @param value new value
* @return StringField
*/
StringField& assign(const char *value, size_t size)
{
// overwrite data
_data.assign(value, size);
// allow chaining
return *this;
}
/** /**
* Get the size this field will take when * Get the size this field will take when
* encoded in the AMQP wire-frame format * encoded in the AMQP wire-frame format