diff options
| author | Alan Conway <aconway@apache.org> | 2007-09-19 22:34:11 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2007-09-19 22:34:11 +0000 |
| commit | 7ac52b8288273de98f3e97ee8e34776a61034bfc (patch) | |
| tree | e0a180875e3d097fabcb9b01d543a9d65f4f5cc2 /cpp/src/qpid/client/SessionHandler.h | |
| parent | 9759046f7a53c88d17355d75d9ca7cc38ec35657 (diff) | |
| download | qpid-python-7ac52b8288273de98f3e97ee8e34776a61034bfc.tar.gz | |
AMQP 0-10 Session suppported on broker and client.
Client always uses session on the wire but client::Channel API is
still available until all C++ tests are migrated.
Broker allows both session and channel connection to support python
tests.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@577459 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/client/SessionHandler.h')
| -rw-r--r-- | cpp/src/qpid/client/SessionHandler.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/cpp/src/qpid/client/SessionHandler.h b/cpp/src/qpid/client/SessionHandler.h new file mode 100644 index 0000000000..e71d527406 --- /dev/null +++ b/cpp/src/qpid/client/SessionHandler.h @@ -0,0 +1,59 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * + */ +#ifndef _SessionHandler_ +#define _SessionHandler_ + +#include "StateManager.h" +#include "ChainableFrameHandler.h" +#include "qpid/framing/amqp_framing.h" + +namespace qpid { +namespace client { + +class SessionHandler : private StateManager, public ChainableFrameHandler +{ + enum STATES {OPENING, OPEN, CLOSING, CLOSED, CLOSED_BY_PEER}; + framing::ProtocolVersion version; + uint16_t id; + + uint16_t code; + std::string text; + + void handleMethod(framing::AMQMethodBody* method); + void closed(uint16_t code, const std::string& msg); + +public: + typedef boost::function<void(uint16_t, const std::string&)> CloseListener; + + SessionHandler(); + + void incoming(framing::AMQFrame& frame); + void outgoing(framing::AMQFrame& frame); + + void open(uint16_t id); + void close(); + + CloseListener onClose; +}; + +}} + +#endif |
