diff options
Diffstat (limited to 'qpid/cpp/src/qpid/framing/AMQHeaderBody.h')
-rw-r--r-- | qpid/cpp/src/qpid/framing/AMQHeaderBody.h | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/qpid/cpp/src/qpid/framing/AMQHeaderBody.h b/qpid/cpp/src/qpid/framing/AMQHeaderBody.h deleted file mode 100644 index 96bd396330..0000000000 --- a/qpid/cpp/src/qpid/framing/AMQHeaderBody.h +++ /dev/null @@ -1,109 +0,0 @@ -#ifndef QPID_FRAMING_AMQHEADERBODY_H -#define QPID_FRAMING_AMQHEADERBODY_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 "amqp_types.h" -#include "AMQBody.h" -#include "Buffer.h" -#include "qpid/framing/DeliveryProperties.h" -#include "qpid/framing/MessageProperties.h" -#include <iostream> - -#include <boost/optional.hpp> - - -namespace qpid { -namespace framing { - -enum DeliveryMode { TRANSIENT = 1, PERSISTENT = 2}; - -class AMQHeaderBody : public AMQBody -{ - template <class T> struct OptProps { boost::optional<T> props; }; - template <class Base, class T> - struct PropSet : public Base, public OptProps<T> { - uint32_t size() const { - const boost::optional<T>& p=this->OptProps<T>::props; - return (p ? p->size() : 0) + Base::size(); - } - void encode(Buffer& buffer) const { - const boost::optional<T>& p=this->OptProps<T>::props; - if (p) p->encode(buffer); - Base::encode(buffer); - } - bool decode(Buffer& buffer, uint32_t size, uint16_t type) { - boost::optional<T>& p=this->OptProps<T>::props; - if (type == T::TYPE) { - p=T(); - p->decodeStructBody(buffer, size); - return true; - } - else - return Base::decode(buffer, size, type); - } - void print(std::ostream& out) const { - const boost::optional<T>& p=this->OptProps<T>::props; - if (p) out << *p; - Base::print(out); - } - }; - - struct Empty { - uint32_t size() const { return 0; } - void encode(Buffer&) const {}; - bool decode(Buffer&, uint32_t, uint16_t) const { return false; }; - void print(std::ostream&) const {} - }; - - // Could use boost::mpl::fold to construct a larger set. - typedef PropSet<PropSet<Empty, DeliveryProperties>, - MessageProperties> Properties; - - Properties properties; - -public: - - inline uint8_t type() const { return HEADER_BODY; } - - uint32_t size() const; - void encode(Buffer& buffer) const; - void decode(Buffer& buffer, uint32_t size); - uint64_t getContentLength() const; - void print(std::ostream& out) const; - void accept(AMQBodyConstVisitor&) const; - - template <class T> T* get(bool create) { - boost::optional<T>& p=properties.OptProps<T>::props; - if (create && !p) p=T(); - return p.get_ptr(); - } - - template <class T> const T* get() const { - return properties.OptProps<T>::props.get_ptr(); - } -}; - -}} - - - -#endif /*!QPID_FRAMING_AMQHEADERBODY_H*/ |