17
17
18
18
package org .apache .kafka .queue ;
19
19
20
- import org .slf4j .Logger ;
21
20
22
21
import java .util .OptionalLong ;
23
- import java .util .concurrent .RejectedExecutionException ;
24
- import java .util .function .Function ;
22
+ import java .util .function .UnaryOperator ;
25
23
26
24
27
25
public interface EventQueue extends AutoCloseable {
@@ -44,38 +42,20 @@ interface Event {
44
42
default void handleException (Throwable e ) {}
45
43
}
46
44
47
- abstract class FailureLoggingEvent implements Event {
48
- private final Logger log ;
49
-
50
- public FailureLoggingEvent (Logger log ) {
51
- this .log = log ;
52
- }
53
-
54
- @ Override
55
- public void handleException (Throwable e ) {
56
- if (e instanceof RejectedExecutionException ) {
57
- log .info ("Not processing {} because the event queue is closed." , this );
58
- } else {
59
- log .error ("Unexpected error handling {}" , this , e );
60
- }
61
- }
62
-
63
- @ Override
64
- public String toString () {
65
- return this .getClass ().getSimpleName ();
66
- }
67
- }
68
-
69
- class NoDeadlineFunction implements Function <OptionalLong , OptionalLong > {
45
+ class NoDeadlineFunction implements UnaryOperator <OptionalLong > {
70
46
public static final NoDeadlineFunction INSTANCE = new NoDeadlineFunction ();
47
+
48
+ private NoDeadlineFunction () {
49
+
50
+ }
71
51
72
52
@ Override
73
53
public OptionalLong apply (OptionalLong ignored ) {
74
54
return OptionalLong .empty ();
75
55
}
76
56
}
77
57
78
- class DeadlineFunction implements Function < OptionalLong , OptionalLong > {
58
+ class DeadlineFunction implements UnaryOperator < OptionalLong > {
79
59
private final long deadlineNs ;
80
60
81
61
public DeadlineFunction (long deadlineNs ) {
@@ -88,7 +68,7 @@ public OptionalLong apply(OptionalLong ignored) {
88
68
}
89
69
}
90
70
91
- class EarliestDeadlineFunction implements Function < OptionalLong , OptionalLong > {
71
+ class EarliestDeadlineFunction implements UnaryOperator < OptionalLong > {
92
72
private final long newDeadlineNs ;
93
73
94
74
public EarliestDeadlineFunction (long newDeadlineNs ) {
@@ -107,28 +87,13 @@ public OptionalLong apply(OptionalLong prevDeadlineNs) {
107
87
}
108
88
}
109
89
110
- class LatestDeadlineFunction implements Function <OptionalLong , OptionalLong > {
111
- private final long newDeadlineNs ;
112
-
113
- public LatestDeadlineFunction (long newDeadlineNs ) {
114
- this .newDeadlineNs = newDeadlineNs ;
115
- }
116
-
117
- @ Override
118
- public OptionalLong apply (OptionalLong prevDeadlineNs ) {
119
- if (prevDeadlineNs .isEmpty ()) {
120
- return OptionalLong .of (newDeadlineNs );
121
- } else if (prevDeadlineNs .getAsLong () > newDeadlineNs ) {
122
- return prevDeadlineNs ;
123
- } else {
124
- return OptionalLong .of (newDeadlineNs );
125
- }
126
- }
127
- }
128
-
129
90
class VoidEvent implements Event {
130
91
public static final VoidEvent INSTANCE = new VoidEvent ();
131
-
92
+
93
+ private VoidEvent () {
94
+
95
+ }
96
+
132
97
@ Override
133
98
public void run () throws Exception {
134
99
}
@@ -182,7 +147,7 @@ default void appendWithDeadline(long deadlineNs, Event event) {
182
147
* @param event The event to schedule.
183
148
*/
184
149
default void scheduleDeferred (String tag ,
185
- Function < OptionalLong , OptionalLong > deadlineNsCalculator ,
150
+ UnaryOperator < OptionalLong > deadlineNsCalculator ,
186
151
Event event ) {
187
152
enqueue (EventInsertionType .DEFERRED , tag , deadlineNsCalculator , event );
188
153
}
@@ -224,7 +189,7 @@ enum EventInsertionType {
224
189
*/
225
190
void enqueue (EventInsertionType insertionType ,
226
191
String tag ,
227
- Function < OptionalLong , OptionalLong > deadlineNsCalculator ,
192
+ UnaryOperator < OptionalLong > deadlineNsCalculator ,
228
193
Event event );
229
194
230
195
/**
0 commit comments