001    /** 
002     * 
003     * Copyright 2004 Protique Ltd
004     * 
005     * Licensed under the Apache License, Version 2.0 (the "License"); 
006     * you may not use this file except in compliance with the License. 
007     * You may obtain a copy of the License at 
008     * 
009     * http://www.apache.org/licenses/LICENSE-2.0
010     * 
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS, 
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
014     * See the License for the specific language governing permissions and 
015     * limitations under the License. 
016     * 
017     **/
018    
019    package org.activemq.message;
020    
021    /**
022     * Denotes an object that can be serialized/deserailized using a Packet Reader/Writer
023     */
024    
025    public class SessionInfo extends AbstractPacket {
026    
027        private String clientId;
028        private short sessionId;
029        private long startTime;
030        private boolean started;
031        private int sessionMode;
032    
033        /**
034         * @return Returns the sessionMode.
035         */
036        public int getSessionMode() {
037            return sessionMode;
038        }
039        /**
040         * @param sessionMode The sessionMode to set.
041         */
042        public void setSessionMode(int sessionMode) {
043            this.sessionMode = sessionMode;
044        }
045        /**
046         * Return the type of Packet
047         *
048         * @return integer representation of the type of Packet
049         */
050    
051        public int getPacketType() {
052            return SESSION_INFO;
053        }
054    
055    
056        /**
057         * Test for equality
058         *
059         * @param obj object to test
060         * @return true if equivalent
061         */
062        public boolean equals(Object obj) {
063            boolean result = false;
064            if (obj != null && obj instanceof SessionInfo) {
065                SessionInfo info = (SessionInfo) obj;
066                result = this.clientId.equals(info.clientId) && this.sessionId == info.sessionId;
067            }
068            return result;
069        }
070    
071        /**
072         * @return hash code for instance
073         */
074        public int hashCode() {
075            if (cachedHashCode == -1){
076                String hashCodeStr = clientId + sessionId;
077                cachedHashCode = hashCodeStr.hashCode();
078            }
079            return cachedHashCode;
080        }
081        
082    
083    
084        /**
085         * @return Returns the sessionId.
086         */
087        public short getSessionId() {
088            return sessionId;
089        }
090    
091        /**
092         * @param sessionId The sessionId to set.
093         */
094        public void setSessionId(short sessionId) {
095            this.sessionId = sessionId;
096        }
097    
098    
099        /**
100         * @return Returns the clientId.
101         */
102        public String getClientId() {
103            return this.clientId;
104        }
105    
106        /**
107         * @param newClientId The clientId to set.
108         */
109        public void setClientId(String newClientId) {
110            this.clientId = newClientId;
111        }
112    
113    
114        /**
115         * @return Returns the started.
116         */
117        public boolean isStarted() {
118            return this.started;
119        }
120    
121        /**
122         * @param flag to indicate if started
123         */
124        public void setStarted(boolean flag) {
125            this.started = flag;
126        }
127    
128        /**
129         * @return Returns the startTime.
130         */
131        public long getStartTime() {
132            return this.startTime;
133        }
134    
135        /**
136         * @param newStartTime The startTime to set.
137         */
138        public void setStartTime(long newStartTime) {
139            this.startTime = newStartTime;
140        }
141    
142        public String toString() {
143            return super.toString() + " SessionInfo{ " +
144                    "clientId = '" + clientId + "' " +
145                    ", sessionId = '" + sessionId + "' " +
146                    ", startTime = " + startTime +
147                    ", started = " + started +
148                    " }";
149        }
150    }