View Javadoc
1   package org.apache.commons.jcs.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.jcs.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 = 0;
45  
46      /** what failover server we are connected to. */
47      private int failoverIndex = 0;
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          super();
71      }
72  
73      /**
74       * Gets the failoverIndex attribute of the RemoteCacheAttributes object.
75       * <p>
76       * @return The failoverIndex value
77       */
78      @Override
79      public int getFailoverIndex()
80      {
81          return failoverIndex;
82      }
83  
84      /**
85       * Sets the failoverIndex attribute of the RemoteCacheAttributes object.
86       * <p>
87       * @param p The new failoverIndex value
88       */
89      @Override
90      public void setFailoverIndex( int p )
91      {
92          this.failoverIndex = p;
93      }
94  
95      /**
96       * Gets the failovers attribute of the RemoteCacheAttributes object.
97       * <p>
98       * @return The failovers value
99       */
100     @Override
101     public List<RemoteLocation> getFailovers()
102     {
103         return this.failovers;
104     }
105 
106     /**
107      * Sets the failovers attribute of the RemoteCacheAttributes object.
108      * <p>
109      * @param failovers The new failovers value
110      */
111     @Override
112     public void setFailovers( List<RemoteLocation> failovers )
113     {
114         this.failovers = failovers;
115     }
116 
117     /**
118      * Gets the failoverServers attribute of the RemoteCacheAttributes object.
119      * <p>
120      * @return The failoverServers value
121      */
122     @Override
123     public String getFailoverServers()
124     {
125         return this.failoverServers;
126     }
127 
128     /**
129      * Sets the failoverServers attribute of the RemoteCacheAttributes object.
130      * <p>
131      * @param s The new failoverServers value
132      */
133     @Override
134     public void setFailoverServers( String s )
135     {
136         this.failoverServers = s;
137     }
138 
139     /**
140      * Gets the localPort attribute of the RemoteCacheAttributes object.
141      * <p>
142      * @return The localPort value
143      */
144     @Override
145     public int getLocalPort()
146     {
147         return this.localPort;
148     }
149 
150     /**
151      * Sets the localPort attribute of the RemoteCacheAttributes object
152      * @param p The new localPort value
153      */
154     @Override
155     public void setLocalPort( int p )
156     {
157         this.localPort = p;
158     }
159 
160     /**
161      * @return the name of the pool
162      */
163     @Override
164     public String getThreadPoolName()
165     {
166         return threadPoolName;
167     }
168 
169     /**
170      * @param name
171      */
172     @Override
173     public void setThreadPoolName( String name )
174     {
175         threadPoolName = name;
176     }
177 
178     /**
179      * @return getTimeoutMillis
180      */
181     @Override
182     public int getGetTimeoutMillis()
183     {
184         return getTimeoutMillis;
185     }
186 
187     /**
188      * @param millis
189      */
190     @Override
191     public void setGetTimeoutMillis( int millis )
192     {
193         getTimeoutMillis = millis;
194     }
195 
196     /**
197      * By default this option is true. If you set it to false, you will not receive updates or
198      * removes from the remote server.
199      * <p>
200      * @param receive
201      */
202     @Override
203     public void setReceive( boolean receive )
204     {
205         this.receive = receive;
206     }
207 
208     /**
209      * If RECEIVE is false then the remote cache will not register a listener with the remote
210      * server. This allows you to configure a remote server as a repository from which you can get
211      * and to which you put, but from which you do not receive any notifications. That is, you will
212      * not receive updates or removes.
213      * <p>
214      * If you set this option to false, you should set your local memory size to 0.
215      * <p>
216      * The remote cache manager uses this value to decide whether or not to register a listener.
217      * @return the receive value.
218      */
219     @Override
220     public boolean isReceive()
221     {
222         return this.receive;
223     }
224 
225     /**
226      * The number of elements the zombie queue will hold. This queue is used to store events if we
227      * loose our connection with the server.
228      * <p>
229      * @param zombieQueueMaxSize The zombieQueueMaxSize to set.
230      */
231     @Override
232     public void setZombieQueueMaxSize( int zombieQueueMaxSize )
233     {
234         this.zombieQueueMaxSize = zombieQueueMaxSize;
235     }
236 
237     /**
238      * The number of elements the zombie queue will hold. This queue is used to store events if we
239      * loose our connection with the server.
240      * <p>
241      * @return Returns the zombieQueueMaxSize.
242      */
243     @Override
244     public int getZombieQueueMaxSize()
245     {
246         return zombieQueueMaxSize;
247     }
248 
249     /**
250      * @return String, all the important values that can be configured
251      */
252     @Override
253     public String toString()
254     {
255         StringBuilder buf = new StringBuilder(super.toString());
256         buf.append( "\n receive = [" + isReceive() + "]" );
257         buf.append( "\n getTimeoutMillis = [" + getGetTimeoutMillis() + "]" );
258         buf.append( "\n threadPoolName = [" + getThreadPoolName() + "]" );
259         buf.append( "\n localClusterConsistency = [" + isLocalClusterConsistency() + "]" );
260         buf.append( "\n zombieQueueMaxSize = [" + getZombieQueueMaxSize() + "]" );
261         return buf.toString();
262     }
263 }