diff options
| author | Alan Conway <aconway@apache.org> | 2008-04-08 19:53:07 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2008-04-08 19:53:07 +0000 |
| commit | e72e25abd1272c4e9489f7efd5bc02c4ecf0b5cd (patch) | |
| tree | 2d32b5153aefb4059ec410118ffd80f37d64b6bd /cpp/src/qpid/amqp_0_10/Unit.cpp | |
| parent | 43aaed1c309c8c7ff95695109cf49b5b9157f4b6 (diff) | |
| download | qpid-python-e72e25abd1272c4e9489f7efd5bc02c4ecf0b5cd.tar.gz | |
Summary: added 0-10 Array encoding and decoding.
rubygen/0-10/allsegmenttypes.rb: test header,body and each command and control type.
rubygen/0-10/specification.rb: enable packed encoding.
src/qpid/amqp_0_10/Array.h: Implemented array and array domains.
src/qpid/amqp_0_10/Codec.h: enable litte-endian encoding for pack bits
src/qpid/amqp_0_10/Packer.h: use litte-endian encoding for pack bits
src/qpid/amqp_0_10/Unit.cpp, .h: setting flags, fix op <<.
src/qpid/amqp_0_10/complex_types.cpp, .h: added op <<
src/qpid/framing/Blob.h: copy-object template constructor.
src/tests/amqp_0_10/serialize.cpp:
- test Array
Minor adjustments for new Array.h:
src/qpid/amqp_0_10/Map.cpp
src/qpid/amqp_0_10/Map.h
src/qpid/amqp_0_10/UnknownType.h
src/qpid/amqp_0_10/built_in_types.h
src/qpid/amqp_0_10/Body.h
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@646054 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/amqp_0_10/Unit.cpp')
| -rw-r--r-- | cpp/src/qpid/amqp_0_10/Unit.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/cpp/src/qpid/amqp_0_10/Unit.cpp b/cpp/src/qpid/amqp_0_10/Unit.cpp index 6b0a2e542d..1fa6b2e085 100644 --- a/cpp/src/qpid/amqp_0_10/Unit.cpp +++ b/cpp/src/qpid/amqp_0_10/Unit.cpp @@ -24,7 +24,7 @@ namespace qpid { namespace amqp_0_10 { -void Unit::setVariant() { +void Unit::updateVariant() { switch (header.getType()) { case CONTROL: variant=ControlHolder(); break; case COMMAND: variant=CommandHolder(); @@ -40,8 +40,16 @@ struct GetTypeVisitor : public boost::static_visitor<SegmentType> { SegmentType operator()(const Body&) const { return BODY; } }; -void Unit::setHeader(uint8_t flags) { - header.setFlags(flags); +struct GetFlagsVisitor : public boost::static_visitor<uint8_t> { + uint8_t operator()(const CommandHolder& ) const { return FIRST_FRAME|LAST_FRAME|FIRST_SEGMENT; } + uint8_t operator()(const ControlHolder& ) const { return FIRST_FRAME|LAST_FRAME|FIRST_SEGMENT; } + uint8_t operator()(const Header& ) const { return FIRST_FRAME|LAST_FRAME; } + uint8_t operator()(const Body&) const { return 0; } +}; + +void Unit::updateHeader(uint8_t flags) { + GetFlagsVisitor flagger; + header.setFlags(flags | variant.apply_visitor(flagger)); GetTypeVisitor getter; header.setType(variant.apply_visitor(getter)); header.setDataSize(Codec::size(*this)); @@ -50,7 +58,7 @@ void Unit::setHeader(uint8_t flags) { } std::ostream& operator<<(std::ostream& o, const Unit& u) { - return o << u.getHeader() << " " << u.getVariant(); + return o << u.getHeader() << " " << u.variant.type().name() << "[" << u.variant << "]"; } }} // namespace qpid::amqp_0_10 |
