summaryrefslogtreecommitdiff
path: root/qpid/cpp/rubygen/cppgen.rb
Commit message (Collapse)AuthorAgeFilesLines
* Merged revisions 649909-650455 via svnmerge from Aidan Skinner2008-04-221-4/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://svn.apache.org/repos/asf/incubator/qpid/trunk ........ r649915 | gsim | 2008-04-20 13:10:37 +0100 (Sun, 20 Apr 2008) | 6 lines QPID-920: converted c++ client to use final 0-10 protocol * connection handler converted to using invoker & proxy and updated to final method defs * SessionCore & ExecutionHandler replace by SessionImpl * simplified handling of completion & results, removed handling of responses ........ r650127 | arnaudsimon | 2008-04-21 13:45:48 +0100 (Mon, 21 Apr 2008) | 1 line QPID-939 Added "ID:" to message ID ........ r650159 | gsim | 2008-04-21 15:37:03 +0100 (Mon, 21 Apr 2008) | 4 lines QPID-920: send message-accept for acks (as well as completion) * AckPolicy now maintains a set of transfered messages for cumulative accepts ........ r650198 | aconway | 2008-04-21 17:36:08 +0100 (Mon, 21 Apr 2008) | 6 lines src/qpid/RangeSet.h: generic set implementation using ranges. - no heap allocation for simple sets (<= 3 ranges) - binary searches for o(log(n)) performance in complex sets ........ r650210 | aconway | 2008-04-21 18:34:49 +0100 (Mon, 21 Apr 2008) | 1 line Fix compile error on rhel5. ........ r650221 | aconway | 2008-04-21 19:59:31 +0100 (Mon, 21 Apr 2008) | 2 lines Better workaround for boost::ptr_map incompatibility between boost 1.33 and 1.34, based on public properties of ptr::map types rather than version numbers. ........ r650227 | aconway | 2008-04-21 20:19:42 +0100 (Mon, 21 Apr 2008) | 2 lines Disable compilation of amqp_0_10 codec until ready for integration. ........ r650250 | gsim | 2008-04-21 21:34:49 +0100 (Mon, 21 Apr 2008) | 4 lines * raise error when controls other than attached are received on unattached channel * corrected exception handling in client and on broker (broker to issue detach) ........ r650273 | aconway | 2008-04-21 22:22:09 +0100 (Mon, 21 Apr 2008) | 1 line Fix packaging problems for rpmbuild. ........ r650439 | gsim | 2008-04-22 11:33:12 +0100 (Tue, 22 Apr 2008) | 7 lines QPID-648: (based on patch from mfarrellee@redhat.com) * apply authentication to final 0-10 codepath * consolidate conditional compilation of sasl-related code * improved handling of connection close during connection establishment in client ........ r650450 | gsim | 2008-04-22 13:05:52 +0100 (Tue, 22 Apr 2008) | 3 lines QPID-944: do no-local checking where requested when there is an exclusive subscription active ........ git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/thegreatmerge@650478 13f79535-47bb-0310-9956-ffa450edef68
* QPID-832 sync cpp with trunkAidan Skinner2008-04-141-0/+390
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/thegreatmerge@647727 13f79535-47bb-0310-9956-ffa450edef68
* QPID-832 delete for resync with trunk (cpp, ruby) and M2.1 (java/broker)Aidan Skinner2008-04-141-332/+0
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/thegreatmerge@647726 13f79535-47bb-0310-9956-ffa450edef68
* Merged revisions ↵Aidan Skinner2008-02-281-13/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 630296,630353,630847,630852,630934,631002,631014,631128,631250,631486,631489-631490,631638,631657,631695,631697-631698,631740,631790,631823,631931 via svnmerge from https://svn.apache.org/repos/asf/incubator/qpid/trunk ........ r630296 | aconway | 2008-02-22 19:14:05 +0000 (Fri, 22 Feb 2008) | 2 lines Provide separate name, message and error code on all Exceptions. ........ r630353 | aconway | 2008-02-22 23:13:43 +0000 (Fri, 22 Feb 2008) | 6 lines Fixed rubygen to skip unchanged generated files, prevents needless rebuilding every time the code generator changes. Start of amqp 0-10 mapping, work in progress. ........ r630847 | arnaudsimon | 2008-02-25 13:45:53 +0000 (Mon, 25 Feb 2008) | 1 line Changed checkPreConditions for accessing directly to _messageSelector ........ r630852 | arnaudsimon | 2008-02-25 13:50:46 +0000 (Mon, 25 Feb 2008) | 1 line added prop jvmarg, that could be used allocate more memory: -Djvmarg=-Xmx512m ........ r630934 | gsim | 2008-02-25 16:56:29 +0000 (Mon, 25 Feb 2008) | 3 lines Some refactoring of the 0-10 codepath (being migrated to final spec) that primarily colocates the current session and execution layers to facilitate implementing the new session layer that will now encompass this behaviour. ........ r631002 | rhs | 2008-02-25 21:29:55 +0000 (Mon, 25 Feb 2008) | 1 line put queue listeners in their own thread ........ r631014 | aconway | 2008-02-25 21:56:03 +0000 (Mon, 25 Feb 2008) | 2 lines Fix build problem if openais is installed but openais-devel is not. ........ r631128 | gsim | 2008-02-26 08:40:13 +0000 (Tue, 26 Feb 2008) | 3 lines Use sessions reference to broker rather than connections in semantic state as the sessions ref is valid even when not attached. ........ r631250 | rhs | 2008-02-26 15:20:35 +0000 (Tue, 26 Feb 2008) | 1 line jvmarg -> test.mem; this fixes build breakage when jvmarg is empty or unspecified ........ r631486 | rajith | 2008-02-27 05:15:20 +0000 (Wed, 27 Feb 2008) | 2 lines This contains the ground work for QPID-803. ........ r631489 | rajith | 2008-02-27 05:17:07 +0000 (Wed, 27 Feb 2008) | 5 lines Added a new parser for the BindingURL. This allows adding multiple binding keys, using # and * in the URLs. This is tracked via QPID-814 ........ r631490 | rajith | 2008-02-27 05:17:46 +0000 (Wed, 27 Feb 2008) | 1 line added a test case for the multiple binding key case ........ r631638 | aconway | 2008-02-27 16:37:48 +0000 (Wed, 27 Feb 2008) | 3 lines Generate code for both 0-99 preview and 0-10 final specs . 0-10 final: extended code generation and non-generated support classes. ........ r631657 | rhs | 2008-02-27 17:18:40 +0000 (Wed, 27 Feb 2008) | 1 line improved error message ........ r631695 | rajith | 2008-02-27 19:56:58 +0000 (Wed, 27 Feb 2008) | 5 lines Correct the constant OPTION_BINDING_KEY that resulted in a test case failure Modified the AMQBindingURL to fix an error in the toString method Added more test cases to the main method in the BindingURLParser for quick testing, these cases are also present as unit tests. ........ r631697 | rajith | 2008-02-27 19:59:13 +0000 (Wed, 27 Feb 2008) | 2 lines Added another test to check for URISyntaxException when both routingkey and bindingkey is specified ........ r631698 | rajith | 2008-02-27 20:01:12 +0000 (Wed, 27 Feb 2008) | 3 lines Fixed the toString method to avoid printing both a routingkey and bindingkey and also to properly printout the bindingkeys when required. This bug caused 3 test failures. ........ r631740 | aconway | 2008-02-27 21:49:04 +0000 (Wed, 27 Feb 2008) | 4 lines Generating domains, structs, commands and controls for 0-10 final spec. Not yet generating: holders, visitors. ........ r631790 | aconway | 2008-02-28 00:32:56 +0000 (Thu, 28 Feb 2008) | 3 lines Added missing generated files to distribution. ........ r631823 | aconway | 2008-02-28 03:08:42 +0000 (Thu, 28 Feb 2008) | 3 lines Added missing generated files to RPM. ........ r631931 | arnaudsimon | 2008-02-28 11:17:50 +0000 (Thu, 28 Feb 2008) | 1 line See Qpid-817 ........ git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/thegreatmerge@632040 13f79535-47bb-0310-9956-ffa450edef68
* Add support for array type to c++ (and python, decode only for now)Gordon Sim2007-11-061-0/+1
| | | | | | | | Change the type of the in-doubt field in dtx-coordination.recover to an array (to bring in line with amqp spec) git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@592494 13f79535-47bb-0310-9956-ffa450edef68
* Generate doxygen comments for Session_0_10 using AMQP <doc> elements.Alan Conway2007-10-301-0/+6
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@590512 13f79535-47bb-0310-9956-ffa450edef68
* Client API: fix keyword parameter ambiguities for beta client API.Alan Conway2007-10-301-2/+11
| | | | | | | | | | | | | | Classes: - client::no_keyword::Session_0_10 - plain defaulted signatures - client::Session_0_10 - keyword API. Keyword API changes: - keywords in client::arg namespace, user says: s.bind(arg::queue="x"...) - user can omit with: using namespace client::arg; s.bind(queue="x"...) - No trailing "_" required on session functions. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@590498 13f79535-47bb-0310-9956-ffa450edef68
* * Summary: generalized Invoker visitor to all *Operations andAlan Conway2007-10-161-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | *Handler classes, client and broker. Single template free function invoke(Invocable, const AMQBody&); works for all invocable handlers. * rubygen/templates/OperationsInvoker.rb: Generates invoker visitors for all Operations classes, client and server. * src/qpid/framing/Invoker.h: Invoker base class and template invoke() function. * rubygen/templates/structs.rb: add generic invoke method template to invoke an arbitrary object with the correct memeber function. * src/qpid/framing/AMQMethodBody.cpp, .h: Removed invoke(), replaced by qpid::framing::invoke() * src/qpid/broker/SemanticHandler.cpp, ConnectionHandler.cpp: Replace AMQMethodBody::invoke with invoke() free function. * src/qpid/framing/StructHelper.h: Avoid un-necessary alloc and copy in encode/decode. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@585223 13f79535-47bb-0310-9956-ffa450edef68
* Implementation of 0-10 field tablesAndrew Stitcher2007-10-161-2/+2
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@585097 13f79535-47bb-0310-9956-ffa450edef68
* Some revisions to rubygen for packed structs and execution header (changes ↵Gordon Sim2007-09-271-0/+5
| | | | | | not yet enabled) git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@580094 13f79535-47bb-0310-9956-ffa450edef68
* Support for keyword args in session interfaceGordon Sim2007-09-101-6/+11
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@574323 13f79535-47bb-0310-9956-ffa450edef68
* * rubygen/cppgen.rb: Use class Uuid for AMQP uuids.Alan Conway2007-08-291-3/+1
| | | | | | | * rubygen/templates/structs.rb: Use class Uuid for AMQP uuids. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@570595 13f79535-47bb-0310-9956-ffa450edef68
* * src/qpid/framing/FrameDefaultVisitor.h:Alan Conway2007-08-271-0/+6
| | | | | | | | | | | | | | | A visitor for all concrete frame body types. * src/qpid/broker/SessionState.h: 3 states - closed, active, suspended. * src/qpid/broker/SessionAdapter.h, .cpp: Session handler, implements session class commands. In progres.. * rubygen/templates/MethodBodyDefaultVisitor.rb: A visitor for all method body types. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@570236 13f79535-47bb-0310-9956-ffa450edef68
* * rubygen/cppgen.rb: Use uint rather than u_int form for consistency.Alan Conway2007-08-271-7/+8
| | | | | | | * rubygen/amqpgen.rb: Removed unnecessary sorting. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@570111 13f79535-47bb-0310-9956-ffa450edef68
* * rubygen/amqpgen.rb: Performance and API improvements.Alan Conway2007-08-271-78/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added nodes for all amqp.xml elements except doc, assert and rule. (They can easily be added.) In particular AmqpDomain is a proper node, providing a place to do type mapping. Every node has reader methods for AMQP attributes/elements: - attr() for each AMQP attribute "attr" returns the string value. - foos() returns AmqpElements for all the "foo" children. - foo(name) returns AmqpElements for the named "foo" child domain() returns an AmqpDomain rather than the string name. Method names that would clash with Object methods get a trailing "_" So: class_/classes, method_/methods_, type_/types Notes: - no amqp_ prefixes. - AmqpElement does not inherit REXML::Element, AmqpElement#xml() to get the REXML element. Performance: all templates run in 2.8 seconds on my laptop, compared to almost two minutes previously. Main change was to replace xpath searches with simple descent of the Amqp model and cache values selectively based on profiling. * rubygen/cppgen.rb: - Updated for amqpgen changes. - Introduced CppType to manage C++ type information - Moved all type mapping to CppType/AmqpDomain Some templates still do their own type calculations, these should be centralized in CppType so they can be re-used. * rubygen/templates/*: Updated for new API * src/qpid/framing/amqp_types_full.h: Added Uuid.h * xml/cluster.xml: change "type" attribute to "domain" git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@570096 13f79535-47bb-0310-9956-ffa450edef68
* Refresh of transitional xml to more closely reflect latest specificationGordon Sim2007-08-211-1/+30
| | | | | | | | | Initial execution-result support (not yet handled on c++ client) Generation is now all done through the ruby code (it is a little slower at present I'm afraid, will try to speed it up over the next weeks) git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@568174 13f79535-47bb-0310-9956-ffa450edef68
* AMQBodies are no longer allocated on the heap and passed with shared_ptr.Alan Conway2007-08-161-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | 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<FooBody> to FooBody* or FooBody&, and converting stored shared_ptr<AMQBody> to AMQFrame and share_ptr<AMQMethodBody> 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@566822 13f79535-47bb-0310-9956-ffa450edef68
* Removed unused types: RequestId, ResponseId, MethodContext.Alan Conway2007-08-141-1/+4
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@565821 13f79535-47bb-0310-9956-ffa450edef68
* * src/qpid/framing/MethodHolder.h, .cpp:Alan Conway2007-08-091-3/+5
| | | | | | | | | | | Replace boost::variant with Blob. * rubygen/templates/MethodHolder.rb: Generate support files for Blob-based MethodHolder. * src/Makefile.am: generate MethodHolder suppport files. * rubygen/cppgen.rb: Minor fixes/enhancements. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@564409 13f79535-47bb-0310-9956-ffa450edef68
* Avoid clash with built-in ruby function Object.methods():nAlan Conway2007-08-091-1/+1
| | | | | | | | - Renamed methods*() to amqp_methods, classes*() to amqp_classes. - Renamed CppGen.class_() to cpp_class. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@564225 13f79535-47bb-0310-9956-ffa450edef68
* Moved Proxy generation to rubygen.Alan Conway2007-08-091-3/+3
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@564051 13f79535-47bb-0310-9956-ffa450edef68
* * Summary: new Frame type to replace AMQFrame. Instead of holdingAlan Conway2007-08-071-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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@563683 13f79535-47bb-0310-9956-ffa450edef68
* Added first cut of generated client interface.Gordon Sim2007-08-051-1/+1
| | | | | | | | | Old channel interface still supported; shares SessionCore with the new interface. Todo: allow applications to signal completion of received commands; keywrod args for interface. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@562866 13f79535-47bb-0310-9956-ffa450edef68
* * amqpgen.rb: fix sytax error.Alan Conway2007-08-051-11/+29
| | | | | | | | | | * cppgen.rb: - 0-10 types - typedef generator - automatic whitespace around classes etc. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@562845 13f79535-47bb-0310-9956-ffa450edef68
* Generate boost::variants for each class. Not yet used on trunk.Alan Conway2007-08-021-5/+6
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@562255 13f79535-47bb-0310-9956-ffa450edef68
* * src/generate.sh: Moved requirements test to configure.acAlan Conway2007-08-011-0/+25
| | | | | | | | | | | | | | | | | | | | | * rubygen: Cleanup and improvements, template for cluster work. * configure.ac: - support for ruby code generator + cleanup. - moved "can generate" tests to configure.ac - removed redundant APR stuff. * bootstrap: Remove codegen from bootstrap, all in config/make. * src/Makefile.am (libqpidcommon_la_LIBADD): - Ruby code generator. - Improvements to existing generator rules. - Removed APR stuff. * configure.ac (CPPUNIT_CXXFLAGS): Removed APR stuff. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@561869 13f79535-47bb-0310-9956-ffa450edef68
* Ruby code generator for C++.Alan Conway2007-07-311-0/+126
Not yet in active use yet but two sample templates are provided. Note: same dependency story as java codegen: distribution has pre-generated code so ruby not required to build a distro. Only required for svn working copy builds. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@561468 13f79535-47bb-0310-9956-ffa450edef68