KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > excalibur > event > Queue


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12  * implied.
13  *
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17 package org.apache.excalibur.event;
18
19 /**
20  * A Source implements the side of an event queue where QueueElements are
21  * dequeued operations only.
22  *
23  * <p>
24  * The interface design is heavily influenced by
25  * <a HREF="mailto:mdw@cs.berkeley.edu">Matt Welsh</a>'s SandStorm server,
26  * his demonstration of the SEDA architecture. We have deviated where we
27  * felt the design differences where better.
28  * </p>
29  *
30  * @author <a HREF="mailto:dev@avalon.apache.org">Avalon Development Team</a>
31  */

32 public interface Queue extends Source, Sink
33 {
34     String JavaDoc ROLE = Queue.class.getName();
35
36     /**
37      * Set the enqueue predicate for this sink. This mechanism
38      * allows user to define a method that will 'screen'
39      * QueueElementIF's during the enqueue procedure to either
40      * accept or reject them. The enqueue predicate runs in the
41      * context of the caller of {@link #enqueue(Object)},
42      * which means it must be simple and fast. This can be used
43      * to implement many interesting m_sink-thresholding policies,
44      * such as simple count threshold, credit-based mechanisms,
45      * and more.
46      * @since Feb 10, 2003
47      *
48      * @param enqueuePredicate
49      * the enqueue predicate for this sink
50      */

51     public void setEnqueuePredicate(EnqueuePredicate enqueuePredicate);
52
53     /**
54      * Return the enqueue predicate for this sink.
55      * @since Feb 10, 2003
56      *
57      * @return {@link EnqueuePredicate}
58      * the enqueue predicate for this sink.
59      */

60     public EnqueuePredicate getEnqueuePredicate();
61
62     /**
63      * Set the dequeue executable for this sink. This mechanism
64      * allows users to define a methods that will be executed
65      * before or after dequeuing elements from a source
66      * @since Feb 10, 2003
67      *
68      * @param executable
69      * The dequeue executable for this sink.
70      */

71     public void setDequeueInterceptor(DequeueInterceptor executable);
72
73     /**
74      * Return the dequeue executable for this sink.
75      * @since Feb 10, 2003
76      *
77      * @return {@link DequeueInterceptor}
78      * The dequeue executable for this sink.
79      */

80     public DequeueInterceptor getDequeueInterceptor();
81 }
82
Popular Tags