diff options
author | Alan Conway <aconway@apache.org> | 2007-08-27 20:39:35 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2007-08-27 20:39:35 +0000 |
commit | d52cb3fdccb2c18fa91c8331b4a09e4ea032ff1c (patch) | |
tree | fd21a8d5693446309ecaac3d73d2d3f7a01af284 /cpp/src/qpid/broker/SessionState.h | |
parent | 7959f701c9420511009d3124a6d86fd8c652b439 (diff) | |
download | qpid-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.h | 31 |
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; }; |