<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/python-packages/qpid-python.git/cpp/src/qpid/framing/Frame.h, branch asyncstore</title>
<subtitle>git.apache.org: qpid.git
</subtitle>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/qpid-python.git/'/>
<entry>
<title>AMQBodies are no longer allocated on the heap and passed with shared_ptr.</title>
<updated>2007-08-16T20:12:33+00:00</updated>
<author>
<name>Alan Conway</name>
<email>aconway@apache.org</email>
</author>
<published>2007-08-16T20:12:33+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/qpid-python.git/commit/?id=49c7a491c98c26fe7d4f017a7ba655dfc029278c'/>
<id>49c7a491c98c26fe7d4f017a7ba655dfc029278c</id>
<content type='text'>
AMQFrame contains a boost::variant of AMQHeaderBody,AMQContentBody,
AMQHeatbeatBody, and MethodHolder. A variant is basically a type-safe
union, it can allocate any of the types in-place.

MethodHolder contains a Blob, a less sophisticated kind of variant,
which can contain any of the concrete method body types. 

Using variants for all the method types causes outrageous compile
times and bloated library symbol names. Blob lacks some of the finer
features of variant and needs help from generated code. For now both
are hidden to the rest of the code base behind AMQFrame and MethodBody
classes so if/when we decide to settle on just one "variant" type
solution we can do so.

This commit touches nearly 100 files, mostly converting method
signatures with shared_ptr&lt;FooBody&gt; to FooBody* or FooBody&amp;, and
converting stored shared_ptr&lt;AMQBody&gt; to AMQFrame and
share_ptr&lt;AMQMethodBody&gt; to MethodHolder.

There is one outstanding client memory leak, which I will fix in my next commit.


git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@566822 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
AMQFrame contains a boost::variant of AMQHeaderBody,AMQContentBody,
AMQHeatbeatBody, and MethodHolder. A variant is basically a type-safe
union, it can allocate any of the types in-place.

MethodHolder contains a Blob, a less sophisticated kind of variant,
which can contain any of the concrete method body types. 

Using variants for all the method types causes outrageous compile
times and bloated library symbol names. Blob lacks some of the finer
features of variant and needs help from generated code. For now both
are hidden to the rest of the code base behind AMQFrame and MethodBody
classes so if/when we decide to settle on just one "variant" type
solution we can do so.

This commit touches nearly 100 files, mostly converting method
signatures with shared_ptr&lt;FooBody&gt; to FooBody* or FooBody&amp;, and
converting stored shared_ptr&lt;AMQBody&gt; to AMQFrame and
share_ptr&lt;AMQMethodBody&gt; to MethodHolder.

There is one outstanding client memory leak, which I will fix in my next commit.


git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@566822 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed include guard.</title>
<updated>2007-08-08T12:23:45+00:00</updated>
<author>
<name>Alan Conway</name>
<email>aconway@apache.org</email>
</author>
<published>2007-08-08T12:23:45+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/qpid-python.git/commit/?id=b6884d21a8a34ff40c808e154f96a4047391b298'/>
<id>b6884d21a8a34ff40c808e154f96a4047391b298</id>
<content type='text'>
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@563826 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@563826 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
<entry>
<title>	* Summary: new Frame type to replace AMQFrame. Instead of holding</title>
<updated>2007-08-07T22:28:06+00:00</updated>
<author>
<name>Alan Conway</name>
<email>aconway@apache.org</email>
</author>
<published>2007-08-07T22:28:06+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/python-packages/qpid-python.git/commit/?id=a45694048d1f26e0ed317f661b464bae862fb8fa'/>
<id>a45694048d1f26e0ed317f661b464bae862fb8fa</id>
<content type='text'>
	  a shared_ptr to a heap-allocated AMQBody subclass, it holds the
	  body in-line in a boost::variant of all the concrete AMQBody
	  subclasses. Actually there are nested variants, the compiler
	  does not cope well with a single variant of 130-some types.

	  Creating, encoding and decoding a local Frame doess 0 heap
	  allocation apart from that done by the concrete
	  AMQBody::encode/decode - e.g. method bodies with std::string
	  fields.  for method bodies

	  All variants contain type boost::blank. This guarantees 0 heap
	  alloocation by the variant and represents the "uninitialized"
	  state. variant.h provides NoBlankVisitor to help write visitors
	  for variants containing blank. 
	
	* src/qpid/framing/MethodHolder.h, .cpp: Holds a variant
	  containing a method body. 

	* src/qpid/framing/Frame.h, .cpp: New Frame holds body in a
	  variant rather than via heap allocation.

	* src/qpid/framing/variant.h: Utilities for using boost::variant.

	* src/qpid/framing/amqp_types.h: Added FrameType typedef.

	* src/qpid/framing/AMQMethodBody.h: Friends with MethodHolder.

	* src/Makefile.am:
	 - Improved ruby generation rule.
	 - Run method_variants template.
	 - Added new source files
	 - Pre-compiled header rule for method_variants.h

	* rubygen/templates/method_variants.rb: Generate variants
	  to hold methods of each class, and MethodVariant to hold all
	  the class variants.

	* rubygen/cppgen.rb: variant, tuple methods.

	* MethodBodyClass.h.tmpl: Added default constructor to method bodies.

	* amqpgen.rb (AmqpRoot::merge): fix bug in merge.


git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@563683 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	  a shared_ptr to a heap-allocated AMQBody subclass, it holds the
	  body in-line in a boost::variant of all the concrete AMQBody
	  subclasses. Actually there are nested variants, the compiler
	  does not cope well with a single variant of 130-some types.

	  Creating, encoding and decoding a local Frame doess 0 heap
	  allocation apart from that done by the concrete
	  AMQBody::encode/decode - e.g. method bodies with std::string
	  fields.  for method bodies

	  All variants contain type boost::blank. This guarantees 0 heap
	  alloocation by the variant and represents the "uninitialized"
	  state. variant.h provides NoBlankVisitor to help write visitors
	  for variants containing blank. 
	
	* src/qpid/framing/MethodHolder.h, .cpp: Holds a variant
	  containing a method body. 

	* src/qpid/framing/Frame.h, .cpp: New Frame holds body in a
	  variant rather than via heap allocation.

	* src/qpid/framing/variant.h: Utilities for using boost::variant.

	* src/qpid/framing/amqp_types.h: Added FrameType typedef.

	* src/qpid/framing/AMQMethodBody.h: Friends with MethodHolder.

	* src/Makefile.am:
	 - Improved ruby generation rule.
	 - Run method_variants template.
	 - Added new source files
	 - Pre-compiled header rule for method_variants.h

	* rubygen/templates/method_variants.rb: Generate variants
	  to hold methods of each class, and MethodVariant to hold all
	  the class variants.

	* rubygen/cppgen.rb: variant, tuple methods.

	* MethodBodyClass.h.tmpl: Added default constructor to method bodies.

	* amqpgen.rb (AmqpRoot::merge): fix bug in merge.


git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@563683 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
</feed>
