001    /**
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  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    package org.apache.activemq.openwire;
018    
019    import org.apache.activemq.command.CommandTypes;
020    import org.apache.activemq.command.WireFormatInfo;
021    import org.apache.activemq.wireformat.WireFormat;
022    import org.apache.activemq.wireformat.WireFormatFactory;
023    
024    /**
025     * 
026     */
027    public class OpenWireFormatFactory implements WireFormatFactory {
028    
029        //
030        // The default values here are what the wire format changes to after a
031        // default negotiation.
032        //
033    
034        private int version = CommandTypes.PROTOCOL_VERSION;
035        private boolean stackTraceEnabled = true;
036        private boolean tcpNoDelayEnabled = true;
037        private boolean cacheEnabled = true;
038        private boolean tightEncodingEnabled = true;
039        private boolean sizePrefixDisabled;
040        private long maxInactivityDuration = 30*1000;
041        private long maxInactivityDurationInitalDelay = 10*1000;
042        private int cacheSize = 1024;
043    
044        public WireFormat createWireFormat() {
045            WireFormatInfo info = new WireFormatInfo();
046            info.setVersion(version);
047    
048            try {
049                info.setStackTraceEnabled(stackTraceEnabled);
050                info.setCacheEnabled(cacheEnabled);
051                info.setTcpNoDelayEnabled(tcpNoDelayEnabled);
052                info.setTightEncodingEnabled(tightEncodingEnabled);
053                info.setSizePrefixDisabled(sizePrefixDisabled);
054                info.setMaxInactivityDuration(maxInactivityDuration);
055                info.setMaxInactivityDurationInitalDelay(maxInactivityDurationInitalDelay);
056                info.setCacheSize(cacheSize);
057            } catch (Exception e) {
058                IllegalStateException ise = new IllegalStateException("Could not configure WireFormatInfo");
059                ise.initCause(e);
060                throw ise;
061            }
062    
063            OpenWireFormat f = new OpenWireFormat(version);
064            f.setPreferedWireFormatInfo(info);
065            return f;
066        }
067    
068        public boolean isStackTraceEnabled() {
069            return stackTraceEnabled;
070        }
071    
072        public void setStackTraceEnabled(boolean stackTraceEnabled) {
073            this.stackTraceEnabled = stackTraceEnabled;
074        }
075    
076        public boolean isTcpNoDelayEnabled() {
077            return tcpNoDelayEnabled;
078        }
079    
080        public void setTcpNoDelayEnabled(boolean tcpNoDelayEnabled) {
081            this.tcpNoDelayEnabled = tcpNoDelayEnabled;
082        }
083    
084        public int getVersion() {
085            return version;
086        }
087    
088        public void setVersion(int version) {
089            this.version = version;
090        }
091    
092        public boolean isCacheEnabled() {
093            return cacheEnabled;
094        }
095    
096        public void setCacheEnabled(boolean cacheEnabled) {
097            this.cacheEnabled = cacheEnabled;
098        }
099    
100        public boolean isTightEncodingEnabled() {
101            return tightEncodingEnabled;
102        }
103    
104        public void setTightEncodingEnabled(boolean tightEncodingEnabled) {
105            this.tightEncodingEnabled = tightEncodingEnabled;
106        }
107    
108        public boolean isSizePrefixDisabled() {
109            return sizePrefixDisabled;
110        }
111    
112        public void setSizePrefixDisabled(boolean sizePrefixDisabled) {
113            this.sizePrefixDisabled = sizePrefixDisabled;
114        }
115    
116        public long getMaxInactivityDuration() {
117            return maxInactivityDuration;
118        }
119    
120        public void setMaxInactivityDuration(long maxInactivityDuration) {
121            this.maxInactivityDuration = maxInactivityDuration;
122        }
123    
124        public int getCacheSize() {
125            return cacheSize;
126        }
127    
128        public void setCacheSize(int cacheSize) {
129            this.cacheSize = cacheSize;
130        }
131    
132        public long getMaxInactivityDurationInitalDelay() {
133            return maxInactivityDurationInitalDelay;
134        }
135    
136        public void setMaxInactivityDurationInitalDelay(
137                long maxInactivityDurationInitalDelay) {
138            this.maxInactivityDurationInitalDelay = maxInactivityDurationInitalDelay;
139        }
140    }