diff options
author | Alan Conway <aconway@apache.org> | 2008-05-27 21:30:29 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2008-05-27 21:30:29 +0000 |
commit | 16d338dd2b0c820ec2d553d138b32aa9172948ae (patch) | |
tree | f05c175c98f3ddd1869391e9cd4b921a5b5c0c5f | |
parent | 484dd3d384035e5d39a4e5c17fc0a955b82b9d91 (diff) | |
download | qpid-python-16d338dd2b0c820ec2d553d138b32aa9172948ae.tar.gz |
Removed obsolete src/qpid/client/SessionImpl.h .cpp
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@660715 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | cpp/src/Makefile.am | 2 | ||||
-rw-r--r-- | cpp/src/qpid/client/SessionImpl.h | 1 | ||||
-rw-r--r-- | cpp/src/qpid/framing/SessionState.cpp | 137 | ||||
-rw-r--r-- | cpp/src/qpid/framing/SessionState.h | 138 |
4 files changed, 0 insertions, 278 deletions
diff --git a/cpp/src/Makefile.am b/cpp/src/Makefile.am index 4a73dddd77..0a2fe4df6f 100644 --- a/cpp/src/Makefile.am +++ b/cpp/src/Makefile.am @@ -203,7 +203,6 @@ libqpidcommon_la_SOURCES = \ qpid/framing/FrameSet.cpp \ qpid/framing/ProtocolInitiation.cpp \ qpid/framing/ProtocolVersion.cpp \ - qpid/framing/SessionState.cpp \ qpid/framing/SendContent.cpp \ qpid/framing/SequenceNumber.cpp \ qpid/framing/SequenceNumberSet.cpp \ @@ -499,7 +498,6 @@ nobase_include_HEADERS = \ qpid/framing/ProtocolInitiation.h \ qpid/framing/ProtocolVersion.h \ qpid/framing/Proxy.h \ - qpid/framing/SessionState.h \ qpid/framing/SendContent.h \ qpid/framing/SequenceNumber.h \ qpid/framing/SequenceSet.h \ diff --git a/cpp/src/qpid/client/SessionImpl.h b/cpp/src/qpid/client/SessionImpl.h index 7bb7136912..3e46dc6b3a 100644 --- a/cpp/src/qpid/client/SessionImpl.h +++ b/cpp/src/qpid/client/SessionImpl.h @@ -30,7 +30,6 @@ #include "qpid/shared_ptr.h" #include "qpid/framing/FrameHandler.h" #include "qpid/framing/ChannelHandler.h" -#include "qpid/framing/SessionState.h" #include "qpid/framing/SequenceNumber.h" #include "qpid/framing/AMQP_ClientOperations.h" #include "qpid/framing/AMQP_ServerProxy.h" diff --git a/cpp/src/qpid/framing/SessionState.cpp b/cpp/src/qpid/framing/SessionState.cpp deleted file mode 100644 index b72bd15803..0000000000 --- a/cpp/src/qpid/framing/SessionState.cpp +++ /dev/null @@ -1,137 +0,0 @@ -/* - * - * 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 WARRANTIE4bS OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -#include "SessionState.h" -#include "qpid/framing/reply_exceptions.h" -#include "qpid/framing/constants.h" -#include "qpid/framing/AMQMethodBody.h" -#include "qpid/log/Statement.h" - -#include <algorithm> - -#include <boost/bind.hpp> -#include <boost/none.hpp> - -namespace qpid { -namespace framing { - -SessionState::SessionState(uint32_t ack, bool enableReplay, const Uuid& uuid) : - state(ATTACHED), - id(uuid), - lastReceived(u_int32_t(-1)), - lastSent(u_int32_t(-1)), - ackInterval(ack), - sendAckAt(lastReceived+ackInterval), - solicitAckAt(lastSent+ackInterval), - ackSolicited(false), - resumable(enableReplay) -{} - -SessionState::SessionState(const Uuid& uuid) : - state(ATTACHED), - id(uuid), - lastReceived(u_int32_t(-1)), - lastSent(u_int32_t(-1)), - ackInterval(0), - sendAckAt(0), - solicitAckAt(0), - ackSolicited(false), - resumable(false) -{ -} -namespace { -bool isSessionCommand(const AMQFrame& f) { - return f.getMethod() && f.getMethod()->amqpClassId() == SESSION_CLASS_ID; -} -} - -boost::optional<SequenceNumber> SessionState::received(const AMQFrame& f) { - if (isSessionCommand(f)) - return boost::none; - if (state==RESUMING) - throw CommandInvalidException( - QPID_MSG("Invalid frame: Resuming session, expected session-ack")); - assert(state = ATTACHED); - ++lastReceived; - if (ackInterval && lastReceived == sendAckAt) - return sendingAck(); - else - return boost::none; -} - -bool SessionState::sent(const AMQFrame& f) { - if (isSessionCommand(f)) - return false; - if (resumable) { - sys::Mutex::ScopedLock l(unackedLock); - unackedOut.push_back(f); - } - ++lastSent; - return ackInterval && - (state!=RESUMING) && - (lastSent == solicitAckAt) && - sendingSolicit(); -} - -SessionState::Replay SessionState::replay() { - sys::Mutex::ScopedLock l(unackedLock); - Replay r(unackedOut.size()); - std::copy(unackedOut.begin(), unackedOut.end(), r.begin()); - return r; -} - -void SessionState::receivedAck(SequenceNumber acked) { - if (state==RESUMING) state=ATTACHED; - assert(state==ATTACHED); - if (lastSent < acked) - throw InvalidArgumentException("Invalid sequence number in ack"); - size_t keep = lastSent - acked; - if (keep < unackedOut.size()) { - sys::Mutex::ScopedLock l(unackedLock); - unackedOut.erase(unackedOut.begin(), unackedOut.end()-keep); - } - solicitAckAt = std::max(solicitAckAt, SequenceNumber(acked+ackInterval)); -} - -SequenceNumber SessionState::sendingAck() { - sendAckAt = lastReceived+ackInterval; - return lastReceived; -} - -bool SessionState::sendingSolicit() { - assert(state == ATTACHED); - if (ackSolicited) - return false; - solicitAckAt = lastSent + ackInterval; - return ackInterval != 0; -} - -SequenceNumber SessionState::resuming() { - if (!resumable) - throw InternalErrorException("Session is not resumable"); - state = RESUMING; - return sendingAck(); -} - -void SessionState::suspend() { - state = SUSPENDED; -} - -}} // namespace qpid::framing diff --git a/cpp/src/qpid/framing/SessionState.h b/cpp/src/qpid/framing/SessionState.h deleted file mode 100644 index 1df62b3138..0000000000 --- a/cpp/src/qpid/framing/SessionState.h +++ /dev/null @@ -1,138 +0,0 @@ -#ifndef QPID_FRAMING_SESSIONSTATE_H -#define QPID_FRAMING_SESSIONSTATE_H - -/* - * - * 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. - * - */ - -#include "qpid/framing/SequenceNumber.h" -#include "qpid/framing/Uuid.h" -#include "qpid/framing/AMQFrame.h" -#include "qpid/sys/Mutex.h" - -#include <boost/optional.hpp> - -#include <deque> - -namespace qpid { -namespace framing { - -/** - * Session state common to client and broker. - * Stores replay frames, implements session ack/resume protocols. - * - * A SessionState is always associated with an _open_ session (attached or - * suspended) it is destroyed when the session is closed. - * - */ -class SessionState -{ - public: - typedef std::vector<AMQFrame> Replay; - - /** States of a session. */ - enum State { - SUSPENDED, ///< Suspended, detached from any channel. - RESUMING, ///< Resuming, waiting for an initial ack from a peer. - ATTACHED ///< Attached to channel and operating normally. - }; - - /** - *Create a newly opened active session. - *@param ackInterval send/solicit an ack whenever N unacknowledged frames - * have been received/sent. - * - * N=0 disables voluntary send/solicit ack. - */ - SessionState(uint32_t ackInterval, bool enableReplay = true, const framing::Uuid& id=framing::Uuid(true)); - - /** - * Create a non-resumable session. Does not store session frames, - * never volunteers ack or solicit-ack. - */ - SessionState(const framing::Uuid& id=framing::Uuid(true)); - - const framing::Uuid& getId() const { return id; } - State getState() { return state; } - - /** Received incoming L3 frame. - * @return SequenceNumber if an ack should be sent, empty otherwise. - * SessionState assumes that acks are sent whenever it returns - * a sequence number. - */ - boost::optional<SequenceNumber> received(const AMQFrame&); - - /** Sent outgoing L3 frame. - *@return true if solicit-ack should be sent. Note the SessionState - *assumes that a solicit-ack is sent every time it returns true. - */ - bool sent(const AMQFrame&); - - /** Received normal incoming ack. */ - void receivedAck(SequenceNumber); - - /** Frames to replay - *@pre getState()==ATTACHED - */ - Replay replay(); - - /** Suspend the session. */ - void suspend(); - - /** Start resume protocol for the session. - *@returns sequence number to ack immediately. */ - SequenceNumber resuming(); - - /** About to send an unscheduled ack, for example, responding to a solicit-ack. - * - * Note: when received() returns a sequence number, this function - * should not be called. SessionState assumes that the ack is sent - * every time received() returns a sequence number. - */ - SequenceNumber sendingAck(); - - SequenceNumber getLastSent() const { return lastSent; } - SequenceNumber getLastReceived() const { return lastReceived; } - - private: - typedef std::deque<AMQFrame> Unacked; - - bool sendingSolicit(); - - State state; - framing::Uuid id; - - Unacked unackedOut; - SequenceNumber lastReceived; - SequenceNumber lastSent; - uint32_t ackInterval; - SequenceNumber sendAckAt; - SequenceNumber solicitAckAt; - bool ackSolicited; - bool suspending; - bool resumable; - sys::Mutex unackedLock; -}; - - -}} // namespace qpid::common - - -#endif /*!QPID_FRAMING_SESSIONSTATE_H*/ |