diff options
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; }; |