1 package org.apache.commons.jcs3.auxiliary.remote; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 import java.util.List; 23 24 import org.apache.commons.jcs3.auxiliary.remote.behavior.IRemoteCacheAttributes; 25 26 /** 27 * These objects are used to configure the remote cache client. 28 */ 29 public class RemoteCacheAttributes 30 extends CommonRemoteCacheAttributes 31 implements IRemoteCacheAttributes 32 { 33 /** Don't change */ 34 private static final long serialVersionUID = -1555143736942374000L; 35 36 /** 37 * Failover servers will be used by local caches one at a time. Listeners will be registered 38 * with all cluster servers. If we add a get from cluster attribute we will have the ability to 39 * chain clusters and have them get from each other. 40 */ 41 private String failoverServers = ""; 42 43 /** callback */ 44 private int localPort; 45 46 /** what failover server we are connected to. */ 47 private int failoverIndex; 48 49 /** List of failover server addresses */ 50 private List<RemoteLocation> failovers; 51 52 /** default name is remote_cache_client */ 53 private String threadPoolName = "remote_cache_client"; 54 55 /** must be greater than 0 for a pool to be used. */ 56 private int getTimeoutMillis = -1; 57 58 /** 59 * Can we receive from the server. You might have a 0 local store and keep everything on the 60 * remote. If so, you don't want to be notified of updates. 61 */ 62 private boolean receive = DEFAULT_RECEIVE; 63 64 /** If the primary fails, we will queue items before reconnect. This limits the number of items that can be queued. */ 65 private int zombieQueueMaxSize = DEFAULT_ZOMBIE_QUEUE_MAX_SIZE; 66 67 /** Default constructor for the RemoteCacheAttributes object */ 68 public RemoteCacheAttributes() 69 { 70 } 71 72 /** 73 * Gets the failoverIndex attribute of the RemoteCacheAttributes object. 74 * <p> 75 * @return The failoverIndex value 76 */ 77 @Override 78 public int getFailoverIndex() 79 { 80 return failoverIndex; 81 } 82 83 /** 84 * Sets the failoverIndex attribute of the RemoteCacheAttributes object. 85 * <p> 86 * @param p The new failoverIndex value 87 */ 88 @Override 89 public void setFailoverIndex( final int p ) 90 { 91 this.failoverIndex = p; 92 } 93 94 /** 95 * Gets the failovers attribute of the RemoteCacheAttributes object. 96 * <p> 97 * @return The failovers value 98 */ 99 @Override 100 public List<RemoteLocation> getFailovers() 101 { 102 return this.failovers; 103 } 104 105 /** 106 * Sets the failovers attribute of the RemoteCacheAttributes object. 107 * <p> 108 * @param failovers The new failovers value 109 */ 110 @Override 111 public void setFailovers( final List<RemoteLocation> failovers ) 112 { 113 this.failovers = failovers; 114 } 115 116 /** 117 * Gets the failoverServers attribute of the RemoteCacheAttributes object. 118 * <p> 119 * @return The failoverServers value 120 */ 121 @Override 122 public String getFailoverServers() 123 { 124 return this.failoverServers; 125 } 126 127 /** 128 * Sets the failoverServers attribute of the RemoteCacheAttributes object. 129 * <p> 130 * @param s The new failoverServers value 131 */ 132 @Override 133 public void setFailoverServers( final String s ) 134 { 135 this.failoverServers = s; 136 } 137 138 /** 139 * Gets the localPort attribute of the RemoteCacheAttributes object. 140 * <p> 141 * @return The localPort value 142 */ 143 @Override 144 public int getLocalPort() 145 { 146 return this.localPort; 147 } 148 149 /** 150 * Sets the localPort attribute of the RemoteCacheAttributes object 151 * @param p The new localPort value 152 */ 153 @Override 154 public void setLocalPort( final int p ) 155 { 156 this.localPort = p; 157 } 158 159 /** 160 * @return the name of the pool 161 */ 162 @Override 163 public String getThreadPoolName() 164 { 165 return threadPoolName; 166 } 167 168 /** 169 * @param name 170 */ 171 @Override 172 public void setThreadPoolName( final String name ) 173 { 174 threadPoolName = name; 175 } 176 177 /** 178 * @return getTimeoutMillis 179 */ 180 @Override 181 public int getGetTimeoutMillis() 182 { 183 return getTimeoutMillis; 184 } 185 186 /** 187 * @param millis 188 */ 189 @Override 190 public void setGetTimeoutMillis( final int millis ) 191 { 192 getTimeoutMillis = millis; 193 } 194 195 /** 196 * By default this option is true. If you set it to false, you will not receive updates or 197 * removes from the remote server. 198 * <p> 199 * @param receive 200 */ 201 @Override 202 public void setReceive( final boolean receive ) 203 { 204 this.receive = receive; 205 } 206 207 /** 208 * If RECEIVE is false then the remote cache will not register a listener with the remote 209 * server. This allows you to configure a remote server as a repository from which you can get 210 * and to which you put, but from which you do not receive any notifications. That is, you will 211 * not receive updates or removes. 212 * <p> 213 * If you set this option to false, you should set your local memory size to 0. 214 * <p> 215 * The remote cache manager uses this value to decide whether or not to register a listener. 216 * @return the receive value. 217 */ 218 @Override 219 public boolean isReceive() 220 { 221 return this.receive; 222 } 223 224 /** 225 * The number of elements the zombie queue will hold. This queue is used to store events if we 226 * loose our connection with the server. 227 * <p> 228 * @param zombieQueueMaxSize The zombieQueueMaxSize to set. 229 */ 230 @Override 231 public void setZombieQueueMaxSize( final int zombieQueueMaxSize ) 232 { 233 this.zombieQueueMaxSize = zombieQueueMaxSize; 234 } 235 236 /** 237 * The number of elements the zombie queue will hold. This queue is used to store events if we 238 * loose our connection with the server. 239 * <p> 240 * @return Returns the zombieQueueMaxSize. 241 */ 242 @Override 243 public int getZombieQueueMaxSize() 244 { 245 return zombieQueueMaxSize; 246 } 247 248 /** 249 * @return String, all the important values that can be configured 250 */ 251 @Override 252 public String toString() 253 { 254 final StringBuilder buf = new StringBuilder(super.toString()); 255 buf.append( "\n receive = [" + isReceive() + "]" ); 256 buf.append( "\n getTimeoutMillis = [" + getGetTimeoutMillis() + "]" ); 257 buf.append( "\n threadPoolName = [" + getThreadPoolName() + "]" ); 258 buf.append( "\n localClusterConsistency = [" + isLocalClusterConsistency() + "]" ); 259 buf.append( "\n zombieQueueMaxSize = [" + getZombieQueueMaxSize() + "]" ); 260 return buf.toString(); 261 } 262 }