summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/SessionState.h
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-08-27 20:39:35 +0000
committerAlan Conway <aconway@apache.org>2007-08-27 20:39:35 +0000
commitd52cb3fdccb2c18fa91c8331b4a09e4ea032ff1c (patch)
treefd21a8d5693446309ecaac3d73d2d3f7a01af284 /cpp/src/qpid/broker/SessionState.h
parent7959f701c9420511009d3124a6d86fd8c652b439 (diff)
downloadqpid-python-d52cb3fdccb2c18fa91c8331b4a09e4ea032ff1c.tar.gz
* src/qpid/framing/FrameDefaultVisitor.h:
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
Diffstat (limited to 'cpp/src/qpid/broker/SessionState.h')
-rw-r--r--cpp/src/qpid/broker/SessionState.h31
1 files changed, 22 insertions, 9 deletions
diff --git a/cpp/src/qpid/broker/SessionState.h b/cpp/src/qpid/broker/SessionState.h
index 30f071ca55..7558ea7866 100644
--- a/cpp/src/qpid/broker/SessionState.h
+++ b/cpp/src/qpid/broker/SessionState.h
@@ -10,9 +10,9 @@
* 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
@@ -33,20 +33,33 @@ namespace broker {
class SessionState
{
public:
- /** Create a new, active session. */
- SessionState(uint32_t timeoutSeconds)
- : id(true), active(true), timeout(timeoutSeconds) {}
+ enum State { CLOSED, ACTIVE, SUSPENDED };
+
+ /** Initially in CLOSED state */
+ SessionState() : id(false), state(CLOSED), timeout(0) {}
+ /** Make CLOSED session ACTIVE, assigns a new UUID.
+ * #@param timeout in seconds
+ */
+ void open(u_int32_t timeout_) {
+ state=ACTIVE; id.generate(); timeout=timeout_;
+ }
+
+ /** Close a session. */
+ void close() { state=CLOSED; id.clear(); timeout=0; }
+
+ State getState() const { return state; }
const framing::Uuid& getId() const { return id; }
uint32_t getTimeout() const { return timeout; }
- /** Call SuspendedSessions::resume to re-activate a suspended session. */
- bool isActive() const { return active; }
-
+ bool isOpen() { return state == ACTIVE; }
+ bool isClosed() { return state == CLOSED; }
+ bool isSuspended() { return state == SUSPENDED; }
+
private:
friend class SuspendedSessions;
framing::Uuid id;
- bool active;
+ State state;
uint32_t timeout;
};