01: /*
02: * JBoss, Home of Professional Open Source.
03: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
04: * as indicated by the @author tags. See the copyright.txt file in the
05: * distribution for a full listing of individual contributors.
06: *
07: * This is free software; you can redistribute it and/or modify it
08: * under the terms of the GNU Lesser General Public License as
09: * published by the Free Software Foundation; either version 2.1 of
10: * the License, or (at your option) any later version.
11: *
12: * This software is distributed in the hope that it will be useful,
13: * but WITHOUT ANY WARRANTY; without even the implied warranty of
14: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15: * Lesser General Public License for more details.
16: *
17: * You should have received a copy of the GNU Lesser General Public
18: * License along with this software; if not, write to the Free
19: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21: */
22: package org.jboss.jms.serverless;
23:
24: import org.jboss.logging.Logger;
25:
26: /**
27: * An object that holds the current state of a connection. The state could be one, and only one of
28: * DISCONNECTED, STOPPED, STARTED, CLOSED. The instance's lock is used during the operations that
29: * change the connection state.
30: *
31: * @author Ovidiu Feodorov <ovidiu@jboss.org>
32: * @version $Revision: 57195 $ $Date: 2006-09-26 08:08:17 -0400 (Tue, 26 Sep 2006) $
33: *
34: **/
35: public class ConnectionState {
36:
37: private static final Logger log = Logger
38: .getLogger(ConnectionState.class);
39:
40: public static final int DISCONNECTED = 0;
41: public static final int STOPPED = 1;
42: public static final int STARTED = 2;
43: public static final int CLOSED = 3;
44:
45: private int state;
46:
47: public ConnectionState() {
48: state = DISCONNECTED;
49: }
50:
51: public synchronized boolean isDisconnected() {
52: return state == DISCONNECTED;
53: }
54:
55: public synchronized boolean isStopped() {
56: return state == STOPPED;
57: }
58:
59: public synchronized boolean isStarted() {
60: return state == STARTED;
61: }
62:
63: public synchronized boolean isClosed() {
64: return state == CLOSED;
65: }
66:
67: // No state consistency check is performed at this level. State changing methods should do
68: // that and throw apropriate exceptions.
69:
70: public synchronized void setStopped() {
71: state = STOPPED;
72: }
73:
74: public synchronized void setStarted() {
75: state = STARTED;
76: }
77:
78: public synchronized void setClosed() {
79: state = CLOSED;
80: }
81:
82: public static String stateToString(ConnectionState cs) {
83: return cs.state == DISCONNECTED ? "DISCONNECTED"
84: : cs.state == STOPPED ? "STOPPED"
85: : cs.state == STARTED ? "STARTED"
86: : cs.state == CLOSED ? "CLOSED"
87: : "UNKNOWN";
88: }
89:
90: }
|