1 package org.apache.commons.jcs3.auxiliary.lateral.behavior;
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 org.apache.commons.jcs3.auxiliary.AuxiliaryCacheAttributes;
23
24 /**
25 * This interface defines configuration options common to lateral cache plugins.
26 * <p>
27 * TODO it needs to be trimmed down. The old version had features for every lateral. Now, the
28 * individual laterals have their own specific attributes interfaces.
29 */
30 public interface ILateralCacheAttributes
31 extends AuxiliaryCacheAttributes
32 {
33 enum Type
34 {
35 /** HTTP type */
36 HTTP("HTTP"), // 1
37
38 /** UDP type */
39 UDP("UDP"), // 2
40
41 /** TCP type */
42 TCP("TCP"), // 3
43
44 /** XMLRPC type */
45 XMLRPC("XMLRPC"); // 4
46
47 private final String typeName;
48
49 Type(String typeName)
50 {
51 this.typeName = typeName;
52 }
53
54 /**
55 * @since 3.1
56 */
57 @Override
58 public String toString()
59 {
60 return typeName;
61 }
62 }
63
64 /**
65 * The number of elements the zombie queue will hold. This queue is used to store events if we
66 * loose our connection with the server.
67 */
68 int DEFAULT_ZOMBIE_QUEUE_MAX_SIZE = 1000;
69
70 /**
71 * Sets the httpServer attribute of the ILateralCacheAttributes object
72 * <p>
73 * @param val The new httpServer value
74 */
75 void setHttpServer( String val );
76
77 /**
78 * Gets the httpServer attribute of the ILateralCacheAttributes object
79 * <p>
80 * @return The httpServer value
81 */
82 String getHttpServer();
83
84 /**
85 * Sets the httpListenerPort attribute of the ILateralCacheAttributes object
86 * <p>
87 * @param val The new tcpListenerPort value
88 */
89 void setHttpListenerPort( int val );
90
91 /**
92 * Gets the httpListenerPort attribute of the ILateralCacheAttributes object
93 * <p>
94 * @return The httpListenerPort value
95 */
96 int getHttpListenerPort();
97
98 /**
99 * Sets the httpServers attribute of the LateralCacheAttributes object
100 * <p>
101 * @param val The new httpServers value
102 */
103 void setHttpServers( String val );
104
105 /**
106 * Gets the httpSrvers attribute of the LateralCacheAttributes object
107 * <p>
108 * @return The httpServers value
109 */
110 String getHttpServers();
111
112 /**
113 * Sets the udpMulticastAddr attribute of the ILateralCacheAttributes object
114 * <p>
115 * @param val The new udpMulticastAddr value
116 */
117 void setUdpMulticastAddr( String val );
118
119 /**
120 * Gets the udpMulticastAddr attribute of the ILateralCacheAttributes object
121 * <p>
122 * @return The udpMulticastAddr value
123 */
124 String getUdpMulticastAddr();
125
126 /**
127 * Sets the udpMulticastPort attribute of the ILateralCacheAttributes object
128 * <p>
129 * @param val The new udpMulticastPort value
130 */
131 void setUdpMulticastPort( int val );
132
133 /**
134 * Gets the udpMulticastPort attribute of the ILateralCacheAttributes object
135 * <p>
136 * @return The udpMulticastPort value
137 */
138 int getUdpMulticastPort();
139
140 /**
141 * Sets the transmissionType attribute of the ILateralCacheAttributes object
142 * <p>
143 * @param val The new transmissionType value
144 */
145 void setTransmissionType( Type val );
146
147 /**
148 * Gets the transmissionType attribute of the ILateralCacheAttributes object
149 * <p>
150 * @return The transmissionType value
151 */
152 Type getTransmissionType();
153
154 /**
155 * Sets the transmissionTypeName attribute of the ILateralCacheAttributes object
156 * <p>
157 * @param val The new transmissionTypeName value
158 * @deprecated Use setTransmissionType()
159 */
160 @Deprecated
161 void setTransmissionTypeName( String val );
162
163 /**
164 * Gets the transmissionTypeName attribute of the ILateralCacheAttributes object
165 * <p>
166 * @return The transmissionTypeName value
167 * @deprecated Use getTransmissionType
168 */
169 @Deprecated
170 String getTransmissionTypeName();
171
172 /**
173 * Sets the putOnlyMode attribute of the ILateralCacheAttributes. When this is true the lateral
174 * cache will only issue put and remove order and will not try to retrieve elements from other
175 * lateral caches.
176 * <p>
177 * @param val The new transmissionTypeName value
178 */
179 void setPutOnlyMode( boolean val );
180
181 /**
182 * @return The outgoingOnlyMode value. Stops gets from going remote.
183 */
184 boolean getPutOnlyMode();
185
186 /**
187 * @param receive The receive to set.
188 */
189 void setReceive( boolean receive );
190
191 /**
192 * Should a listener be created. By default this is true.
193 * <p>
194 * If this is false the lateral will connect to others but it will not create a listener to
195 * receive.
196 * <p>
197 * It is possible if two laterals are misconfigured that lateral A may have a region R1 that is
198 * not configured for the lateral but another is. And if cache B has region R1 configured for
199 * lateral distribution, A will get messages for R1 but not send them.
200 * <p>
201 * @return true if we should have a listener connection
202 */
203 boolean isReceive();
204
205 /**
206 * The number of elements the zombie queue will hold. This queue is used to store events if we
207 * loose our connection with the server.
208 * <p>
209 * @param zombieQueueMaxSize The zombieQueueMaxSize to set.
210 */
211 void setZombieQueueMaxSize( int zombieQueueMaxSize );
212
213 /**
214 * The number of elements the zombie queue will hold. This queue is used to store events if we
215 * loose our connection with the server.
216 * <p>
217 * @return Returns the zombieQueueMaxSize.
218 */
219 int getZombieQueueMaxSize();
220 }