summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-05-27 21:30:29 +0000
committerAlan Conway <aconway@apache.org>2008-05-27 21:30:29 +0000
commit16d338dd2b0c820ec2d553d138b32aa9172948ae (patch)
treef05c175c98f3ddd1869391e9cd4b921a5b5c0c5f /cpp
parent484dd3d384035e5d39a4e5c17fc0a955b82b9d91 (diff)
downloadqpid-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
Diffstat (limited to 'cpp')
-rw-r--r--cpp/src/Makefile.am2
-rw-r--r--cpp/src/qpid/client/SessionImpl.h1
-rw-r--r--cpp/src/qpid/framing/SessionState.cpp137
-rw-r--r--cpp/src/qpid/framing/SessionState.h138
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*/