View Javadoc
1   package org.apache.commons.jcs.engine.behavior;
2   
3   import java.io.IOException;
4   
5   /*
6    * Licensed to the Apache Software Foundation (ASF) under one
7    * or more contributor license agreements.  See the NOTICE file
8    * distributed with this work for additional information
9    * regarding copyright ownership.  The ASF licenses this file
10   * to you under the Apache License, Version 2.0 (the
11   * "License"); you may not use this file except in compliance
12   * with the License.  You may obtain a copy of the License at
13   *
14   *   http://www.apache.org/licenses/LICENSE-2.0
15   *
16   * Unless required by applicable law or agreed to in writing,
17   * software distributed under the License is distributed on an
18   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19   * KIND, either express or implied.  See the License for the
20   * specific language governing permissions and limitations
21   * under the License.
22   */
23  
24  import org.apache.commons.jcs.engine.stats.behavior.IStats;
25  
26  /**
27   * Interface for a cache event queue. An event queue is used to propagate
28   * ordered cache events to one and only one target listener.
29   */
30  public interface ICacheEventQueue<K, V>
31  {
32      enum QueueType
33      {
34          /** Does not use a thread pool. */
35          SINGLE,
36  
37          /** Uses a thread pool. */
38          POOLED
39      }
40  
41      /**
42       * Return the type of event queue we are using, either single or pooled.
43       * <p>
44       * @return the queue type: single or pooled
45       */
46      QueueType getQueueType();
47  
48      /**
49       * Adds a feature to the PutEvent attribute of the ICacheEventQueue object
50       * <p>
51       * @param ce
52       *            The feature to be added to the PutEvent attribute
53       * @throws IOException
54       */
55      void addPutEvent( ICacheElement<K, V> ce )
56          throws IOException;
57  
58      /**
59       * Adds a feature to the RemoveEvent attribute of the ICacheEventQueue
60       * object
61       * <p>
62       * @param key
63       *            The feature to be added to the RemoveEvent attribute
64       * @throws IOException
65       */
66      void addRemoveEvent( K key )
67          throws IOException;
68  
69      /**
70       * Adds a feature to the RemoveAllEvent attribute of the ICacheEventQueue
71       * object
72       * <p>
73       * @throws IOException
74       */
75      void addRemoveAllEvent()
76          throws IOException;
77  
78      /**
79       * Adds a feature to the DisposeEvent attribute of the ICacheEventQueue
80       * object
81       * <p>
82       * @throws IOException
83       */
84      void addDisposeEvent()
85          throws IOException;
86  
87      /**
88       * Gets the listenerId attribute of the ICacheEventQueue object
89       *
90       * @return The listenerId value
91       */
92      long getListenerId();
93  
94      /** Description of the Method */
95      void destroy();
96  
97      /**
98       * Gets the alive attribute of the ICacheEventQueue object. Alive just
99       * indicates that there are active threads. This is less important that if
100      * the queue is working.
101      * <p>
102      * @return The alive value
103      */
104     boolean isAlive();
105 
106     /**
107      * A Queue is working unless it has reached its max failure count.
108      * <p>
109      * @return boolean
110      */
111     boolean isWorking();
112 
113     /**
114      * Returns the number of elements in the queue.  If the queue cannot
115      * determine the size accurately it will return 1.
116      * <p>
117      * @return number of items in the queue.
118      */
119     int size();
120 
121     /**
122      * Are there elements in the queue.
123      * <p>
124      * @return true if there are stil elements.
125      */
126     boolean isEmpty();
127 
128     /**
129      * Returns the historical and statistical data for an event queue cache.
130      * <p>
131      * @return IStats
132      */
133     IStats getStatistics();
134 }