summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/framing
Commit message (Collapse)AuthorAgeFilesLines
* Preparation for session thread safety overhaul:Alan Conway2007-11-012-6/+40
| | | | | | | | | | - simplified SessionState, responsibility for protocol states now in Handlers - qpid::RefCounted, qpid::intrusive_ptr reference counting support. - build boost unit tests as single exe, speeds up testing. - fixed leak in AsynchIOAcceptor.cpp git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@590869 13f79535-47bb-0310-9956-ffa450edef68
* Simplify SessionState, preparing for session thread safety fixes.Alan Conway2007-10-312-40/+6
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@590751 13f79535-47bb-0310-9956-ffa450edef68
* ##-*-text-*-Alan Conway2007-10-292-12/+35
| | | | | | | | | Added qpidd --ack option to set ack/solicit-ack interval. 0 disabled acks. Sessions with 0 timeout never ack and don't store replay frames. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@589731 13f79535-47bb-0310-9956-ffa450edef68
* Session resume support in client & broker: Client can resume a sessionAlan Conway2007-10-2622-233/+418
| | | | | | | | | | | | | | | | | | | | | | | | | after voluntary suspend() or network failure. Frames lost in network failure are automatically re-transmitted for transparent re-connection. client::Session improvements: - Locking to avoid races between network & user threads. - Replaced client::StateManager with sys::StateMonitor - avoid heap allocation. qpid::Exception clean up: - use QPID_MSG consistently to format exception messages. - throw typed exceptions (in reply_exceptions.h) for AMQP exceptions. - re-throw correct typed exception on client for exceptions from broker. - Removed QpidError.h rubygen/templates/constants.rb: - constants.h: Added FOO_CLASS_ID and FOO_BAR_METHOD_ID constants. - reply_constants.h: Added throwReplyException(code, text) log::Logger: - Fixed shutdown race in Statement::~Initializer() git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@588761 13f79535-47bb-0310-9956-ffa450edef68
* More tidying up of field table APIAndrew Stitcher2007-10-233-11/+32
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@587480 13f79535-47bb-0310-9956-ffa450edef68
* QPID-651 applied patch from TedCarl C. Trieloff2007-10-192-2/+12
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@586578 13f79535-47bb-0310-9956-ffa450edef68
* git-svn-id: ↵Andrew Stitcher2007-10-193-296/+5
| | | | https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@586520 13f79535-47bb-0310-9956-ffa450edef68
* More rearranging of template specialisation to avoid gccisms and conform ↵Andrew Stitcher2007-10-182-24/+12
| | | | | | correctly to the standard git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@586054 13f79535-47bb-0310-9956-ffa450edef68
* Recast int to FixedWidthValue conversions to avoid tamplate specialisation ↵Andrew Stitcher2007-10-182-130/+18
| | | | | | and be more general git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@585966 13f79535-47bb-0310-9956-ffa450edef68
* Fixed return of acquired message ranges (and added tests)Gordon Sim2007-10-181-5/+11
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@585952 13f79535-47bb-0310-9956-ffa450edef68
* * Summary: generalized Invoker visitor to all *Operations andAlan Conway2007-10-165-30/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | *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/qpid@585223 13f79535-47bb-0310-9956-ffa450edef68
* Include declarations of the specialisations we define to make sure they are ↵Andrew Stitcher2007-10-161-0/+16
| | | | | | picked up correctly by everything git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@585190 13f79535-47bb-0310-9956-ffa450edef68
* Implementation of 0-10 field tablesAndrew Stitcher2007-10-169-95/+577
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@585097 13f79535-47bb-0310-9956-ffa450edef68
* Additional tests and fixesGordon Sim2007-10-044-7/+16
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@581957 13f79535-47bb-0310-9956-ffa450edef68
* Fix (and refactor) processing of ranges in message handler.Gordon Sim2007-10-041-0/+16
| | | | | | | | Alter release() to push released messages onto head in reverse order (todo: make this atomic instead) git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@581869 13f79535-47bb-0310-9956-ffa450edef68
* fixed decoding of b/e bitsRafael H. Schloming2007-10-031-1/+1
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@581468 13f79535-47bb-0310-9956-ffa450edef68
* Correction to interpretation of flags (B/E refer to the first/last segment ↵Gordon Sim2007-10-022-2/+2
| | | | | | in the frameset and should be set on all frames in such segments). git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@581214 13f79535-47bb-0310-9956-ffa450edef68
* Fixed bug introduced in r577027 where the header frame of a message is ↵Gordon Sim2007-10-021-0/+17
| | | | | | directly passed to output handler where the channel is changed. This causing problems when the message is sent to multiple channels concurrently. I've added a const modifier to preventthe message being altered by sendHeader(). git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@581185 13f79535-47bb-0310-9956-ffa450edef68
* * src/qpid/framing/ResumeHandler.cpp: Handle ack and resume logicAlan Conway2007-10-012-0/+125
| | | | | | | for broker and client. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@580984 13f79535-47bb-0310-9956-ffa450edef68
* Minor refactoring of execution layerGordon Sim2007-09-284-1/+13
| | | | | | | | Set sync bit when session is in sync mode git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@580380 13f79535-47bb-0310-9956-ffa450edef68
* Honour sync bit when processing L4 methodGordon Sim2007-09-282-1/+3
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@580266 13f79535-47bb-0310-9956-ffa450edef68
* Some revisions to rubygen for packed structs and execution header (changes ↵Gordon Sim2007-09-271-0/+48
| | | | | | not yet enabled) git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@580094 13f79535-47bb-0310-9956-ffa450edef68
* Start execution mark from -1 (0xFFFFFFFF)Gordon Sim2007-09-261-1/+1
| | | | | | | | Rename ackFrequency as ackBatchSize in Dispatcher git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@579553 13f79535-47bb-0310-9956-ffa450edef68
* Use octet each for class and method id (changed c++ and python)Gordon Sim2007-09-214-10/+10
| | | | | | | | | | | | | | | | | | Modified indexes in xml for message.empty, message.offset and the c++ cluster class Fixed encoding for rfc1982-long-set in c++ and python (its a size not a count that is prepended) Fixed minor typo in configuration option help string Use session.open/close in python tests, handle session.closed Commented out the response tag in session.close due to pythons ambiguity as to whether session.closed is a response or not Disabled broker.test_closed_channel (due to above issue); broker behaves as expected but test fails; test_invalid_channel is safe enough for now. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@578053 13f79535-47bb-0310-9956-ffa450edef68
* Refactor HandlerImpl to use Session rather than CoreRefs.Alan Conway2007-09-183-21/+3
| | | | | | | Remove most uses of ChannelAdapter in broker code. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@577027 13f79535-47bb-0310-9956-ffa450edef68
* * rubygen/templates/Proxy.rb, src/qpid/framing/Proxy.cpp, Proxy.h:Alan Conway2007-09-184-13/+21
| | | | | | | | | | | | Drop ChannelAdapter, construct Proxy from FrameHandler. * src/qpid/framing/amqp_types.h: Added missing decl for class Uuid. * src/qpid/broker/HandlerImpl.h, src/qpid/broker/ConnectionAdapter.cpp: Fix Proxy constructor calls * src/qpid/framing/AMQFrame.h (class AMQFrame): construct from AMQBody only. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@576963 13f79535-47bb-0310-9956-ffa450edef68
* * src/qpid/broker/SessionHandler.cpp:Alan Conway2007-09-181-22/+27
| | | | | | | | | | - Make SessionHandler an InOutHandler. - SessionHandler::out sets channel ID on frames. * src/qpid/framing/Handler.h: Fixed InOutHandler template. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@576947 13f79535-47bb-0310-9956-ffa450edef68
* Added Dispatcher class (plus test). This converts incoming MessageTransfer ↵Gordon Sim2007-09-181-1/+1
| | | | | | framesets to Messages and pumps them to registered listeners. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@576935 13f79535-47bb-0310-9956-ffa450edef68
* Use frameset begin/end flags for determining frameset boundaries.Gordon Sim2007-09-138-23/+62
| | | | | | | | Set frameset & segment begin/end flags for content bearing methods (i.e. messages). git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@575377 13f79535-47bb-0310-9956-ffa450edef68
* * python/qpid/codec.pyAndrew Stitcher2007-09-122-19/+54
| | | | | | | | | | | | | | | | | Comment typo * cpp/src/qpid/broker/RecoveryManagerImpl.cpp Cruft removal * python/qpid/codec.py * python/qpid/connection.py * cpp/src/qpid/framing/AMQFrame.h * cpp/src/qpid/framing/AMQFrame.cpp Initial implementation of 0-10 framing - This uses the new 12 byte frame header, but doesn't support splitting segments/framesets over multiple frames yet. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@574735 13f79535-47bb-0310-9956-ffa450edef68
* Moved old ClientChannel class from using basic to using message for publish ↵Gordon Sim2007-09-112-1/+43
| | | | | | | | | | & consume. (Get and qos still use the basic class's defintions, that will be changed next) git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@574551 13f79535-47bb-0310-9956-ffa450edef68
* Client side support for message and delivery properties in header segments.Gordon Sim2007-09-106-6/+125
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@574176 13f79535-47bb-0310-9956-ffa450edef68
* Implementation of execution.result on the client side Gordon Sim2007-09-064-2/+232
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@573359 13f79535-47bb-0310-9956-ffa450edef68
* * Tidy up framing::Buffer classAndrew Stitcher2007-09-062-47/+4
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@573213 13f79535-47bb-0310-9956-ffa450edef68
* Initial implementation (plus very simple tests) of message.acquire, ↵Gordon Sim2007-09-032-0/+17
| | | | | | message.release, message.reject and message.flush. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@572394 13f79535-47bb-0310-9956-ffa450edef68
* * Summary:Alan Conway2007-08-314-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | - Moved BrokerChannel functionality into Session. - Moved ChannelHandler methods handling into SessionAdapter. - Updated all handlers to use session. (We're still using AMQP channel methods in SessionAdapter) Roles & responsibilities: Session: - represents an _open_ session, may be active or suspended. - ows all session state including handler chains. - attahced to SessionAdapter when active, not when suspended. SessionAdapter: - reprents the association of a channel with a session. - owned by Connection, kept in the session map. - channel open == SessionAdapter.getSessio() != 0 Anything that depends on attachment to a channel, connection or protocol should be in SessionAdpater. Anything that suvives a session suspend belongs in Session. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@571575 13f79535-47bb-0310-9956-ffa450edef68
* * Changes to make C++ client code use the asynchronous network IOAndrew Stitcher2007-08-313-40/+46
| | | | | | | | * Fixed up the test for buffer changes * Removed unused buffer operations git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@571529 13f79535-47bb-0310-9956-ffa450edef68
* - Update cluster code to work with new FrameHandlerAlan Conway2007-08-301-15/+8
| | | | | | | | - Update ClassifierHandler to use Visitor rather than map. - Replace heap allocation in cluster classes with boost::optional. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@571246 13f79535-47bb-0310-9956-ffa450edef68
* * configure.ac: Disabled cluster build temporarily while fixing build problems.Alan Conway2007-08-301-1/+1
| | | | | | | * src/qpid/framing/Handler.h: Add missing default constructor. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@571161 13f79535-47bb-0310-9956-ffa450edef68
* * src/qpid/broker/Session.h, .cpp: Session holds all state of a session ↵Alan Conway2007-08-295-63/+98
| | | | | | | | | | | | | | | | | | | | | | | including handlers created for that session. Session is not directly associated with a channel. * src/qpid/broker/SessionAdapter.h, .cpp: SessionAdapter is bound to a channel managed by the Connection. It can be attached to and detatched from a Session. * src/qpid/broker/Connection.cpp, .h: Use SessionAdapter. * src/qpid/framing/Handler.h: Removed use of shared_ptr. Handlers belong either to a Session or a Connection and are destroyed with it. * src/qpid/framing/InputHandler.h, OutputHandler.h: Both now inherit from FrameHandler and can be used as FrameHandlers. Intermediate step to removing them entirely. * src/qpid/broker/ConnectionAdapter.h: * src/qpid/client/ConnectionHandler.h: * src/qpid/framing/ChannelAdapter.cpp, .h: Minor changes required by Handler changes. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@570982 13f79535-47bb-0310-9956-ffa450edef68
* Updated message.transfer encoding to use header and content segments ↵Gordon Sim2007-08-2818-50/+645
| | | | | | | | | | (including new structs). Unified more between the basic and message classes messages. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@570538 13f79535-47bb-0310-9956-ffa450edef68
* * Fix compile errors.Alan Conway2007-08-271-8/+12
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@570251 13f79535-47bb-0310-9956-ffa450edef68
* * src/qpid/framing/FrameDefaultVisitor.h:Alan Conway2007-08-271-2/+12
| | | | | | | | | | | | | | | 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/qpid@570236 13f79535-47bb-0310-9956-ffa450edef68
* * src/qpid/framing/FrameDefaultVisitor.h:Alan Conway2007-08-271-0/+56
| | | | | | | | | | | | | | Visitor for all concrete frame body types. Override to handle specific bodies (methods or header/content) and provide default handling for others. * rubygen/MethodBodyDefaultVisitor.rb: Visitor for MethodBodies with visit functions that call virtual defaultVisit(). Override to handle specific methods and give default behavior for others. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@570121 13f79535-47bb-0310-9956-ffa450edef68
* * rubygen/amqpgen.rb: Performance and API improvements.Alan Conway2007-08-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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/qpid@570096 13f79535-47bb-0310-9956-ffa450edef68
* Reapply rev 568249 with the changes made to the generator this time, rather ↵Gordon Sim2007-08-222-2/+17
| | | | | | than the generated file itself. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@568517 13f79535-47bb-0310-9956-ffa450edef68
* Undo revision 568249, causing tests to hang.Alan Conway2007-08-212-17/+2
| | | | | | | | | | | | | ------------------------------------------------------------------------ r568249 | gsim | 2007-08-21 16:11:20 -0400 (Tue, 21 Aug 2007) | 3 lines Invocation now uses the visitor mechanism ------------------------------------------------------------------------ git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@568298 13f79535-47bb-0310-9956-ffa450edef68
* Invocation now uses the visitor mechanismGordon Sim2007-08-212-2/+17
| | | | git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@568249 13f79535-47bb-0310-9956-ffa450edef68
* - header correction for bufferCarl C. Trieloff2007-08-211-0/+1
| | | | | | | | | - added tests for one msg to multiple queue in async mode - added counter for async multiple msg git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@568236 13f79535-47bb-0310-9956-ffa450edef68
* Refresh of transitional xml to more closely reflect latest specificationGordon Sim2007-08-213-0/+97
| | | | | | | | | 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/qpid@568174 13f79535-47bb-0310-9956-ffa450edef68