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    import java.io.Serializable;
022    
023    /**
024     * Denotes life cycle infomation for a Producer of messages
025     */
026    
027    public class ProducerInfo extends AbstractPacket implements Serializable{
028        static final long serialVersionUID = 3489666788L;
029        private ActiveMQDestination destination;
030        private short producerId;
031        private String clientId;
032        private short sessionId;
033        private long startTime;
034        private boolean started;
035    
036    
037        /**
038         * Test for equality
039         *
040         * @param obj object to test
041         * @return true if equivalent
042         */
043        public boolean equals(Object obj) {
044            boolean result = false;
045            if (obj != null && obj instanceof ProducerInfo) {
046                ProducerInfo info = (ProducerInfo) obj;
047                result = this.producerId == info.producerId &&
048                  this.sessionId == info.sessionId &&
049                  this.clientId.equals(info.clientId);
050            }
051            return result;
052        }
053    
054        /**
055         * @return hash code for instance
056         */
057        
058        public int hashCode() {
059            if (cachedHashCode == -1){
060                String hashCodeStr = clientId + sessionId + producerId;
061                cachedHashCode = hashCodeStr.hashCode();
062            }
063            return cachedHashCode;
064        }
065    
066    
067        /**
068         * @return Returns the producerId.
069         */
070        public short getProducerId() {
071            return producerId;
072        }
073    
074        /**
075         * @param producerId The producerId to set.
076         */
077        public void setProducerId(short producerId) {
078            this.producerId = producerId;
079        }
080    
081        /**
082         * @return Returns the sessionId.
083         */
084        public short getSessionId() {
085            return sessionId;
086        }
087    
088        /**
089         * @param sessionId The sessionId to set.
090         */
091        public void setSessionId(short sessionId) {
092            this.sessionId = sessionId;
093        }
094    
095        /**
096         * Return the type of Packet
097         *
098         * @return integer representation of the type of Packet
099         */
100    
101        public int getPacketType() {
102            return PRODUCER_INFO;
103        }
104    
105    
106        /**
107         * @return Returns the clientId.
108         */
109        public String getClientId() {
110            return this.clientId;
111        }
112    
113        /**
114         * @param newClientId The clientId to set.
115         */
116        public void setClientId(String newClientId) {
117            this.clientId = newClientId;
118        }
119    
120    
121        /**
122         * @return Returns the destination.
123         */
124        public ActiveMQDestination getDestination() {
125            return this.destination;
126        }
127    
128        /**
129         * @param newDestination The destination to set.
130         */
131        public void setDestination(ActiveMQDestination newDestination) {
132            this.destination = newDestination;
133        }
134    
135    
136        /**
137         * @return Returns the started.
138         */
139        public boolean isStarted() {
140            return this.started;
141        }
142    
143        /**
144         * @param flag to indicate if started
145         */
146        public void setStarted(boolean flag) {
147            this.started = flag;
148        }
149    
150        /**
151         * @return Returns the startTime.
152         */
153        public long getStartTime() {
154            return this.startTime;
155        }
156    
157        /**
158         * @param newStartTime The startTime to set.
159         */
160        public void setStartTime(long newStartTime) {
161            this.startTime = newStartTime;
162        }
163    
164        public String toString() {
165            return super.toString() + " ProducerInfo{ " +
166                    "clientId = '" + clientId + "' " +
167                    ", destination = " + destination +
168                    ", producerId = '" + producerId + "' " +
169                    ", sessionId = '" + sessionId + "' " +
170                    ", startTime = " + startTime +
171                    ", started = " + started +
172                    " }";
173        }
174    }