diff options
| author | Alan Conway <aconway@apache.org> | 2007-03-21 01:26:37 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2007-03-21 01:26:37 +0000 |
| commit | ae01787ce90ee7cd1303ce7769328cd242e00f6e (patch) | |
| tree | 72df2f2f98c1f2cdc117debb2c6e1f9141bf1df7 /cpp-0-9/lib/common/framing/MethodContext.h | |
| parent | 26aa43e242082422647240054e16c003a54d0df9 (diff) | |
| download | qpid-python-ae01787ce90ee7cd1303ce7769328cd242e00f6e.tar.gz | |
* cpp-0-9: svn copy of 0-9 branch cpp, will rename to cpp on next update.
* cpp-0-9/gentools: independent copy of gentools for cpp.
Temporary measure till /java and /gentools are at 0-9
* python/tests_0-9: tests from 0-9 branch.
* python/qpid/testlib.py: Use tests_0-9 with 0-9 spec (default is still 0-8)
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@520690 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp-0-9/lib/common/framing/MethodContext.h')
| -rw-r--r-- | cpp-0-9/lib/common/framing/MethodContext.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/cpp-0-9/lib/common/framing/MethodContext.h b/cpp-0-9/lib/common/framing/MethodContext.h new file mode 100644 index 0000000000..3493924bf6 --- /dev/null +++ b/cpp-0-9/lib/common/framing/MethodContext.h @@ -0,0 +1,80 @@ +#ifndef _framing_MethodContext_h +#define _framing_MethodContext_h + +/* + * + * Copyright (c) 2006 The Apache Software Foundation + * + * Licensed 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 <boost/shared_ptr.hpp> + +#include "OutputHandler.h" +#include "ProtocolVersion.h" + +namespace qpid { +namespace framing { + +class BodyHandler; +class AMQMethodBody; +class ChannelAdapter; + +/** + * Invocation context for an AMQP method. + * + * It provides the method being processed and the channel on which + * it arrived. + * + * All Handler functions take a MethodContext as the last parameter. + */ +struct MethodContext +{ + typedef boost::shared_ptr<AMQMethodBody> BodyPtr; + + MethodContext(ChannelAdapter* ch=0, BodyPtr method=BodyPtr()) + : channel(ch), methodBody(method) {} + + /** + * Channel on which the method being processed arrived. + * 0 if the method was constructed by the caller + * rather than received from a channel. + */ + ChannelAdapter* channel; + + /** + * Body of the method being processed. + * It's useful for passing around instead of unpacking all its parameters. + * It's also provides the request ID when constructing a response. + */ + BodyPtr methodBody; + + /** + * Return methodBody's request ID. + * It is an error to call this if methodBody is not a request. + */ + RequestId getRequestId() const; +}; + +// FIXME aconway 2007-02-01: Method context only required on Handler +// functions, not on Proxy functions. If we add set/getChannel(ChannelAdapter*) +// on AMQBody and set it during decodeing then we could get rid of the context. + + + +}} // namespace qpid::framing + + + +#endif /*!_framing_MethodContext_h*/ |
