1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty5.buffer.api.internal;
17
18 import io.netty5.buffer.api.ComponentIterator;
19 import io.netty5.buffer.api.ComponentIterator.Next;
20 import io.netty5.util.Resource;
21
22 import java.lang.ref.Reference;
23
24 import static java.util.Objects.requireNonNull;
25
26 public final class SingleComponentIterator<T extends Next> implements ComponentIterator<T> {
27 private final Resource<?> lifecycle;
28 private final T singleComponent;
29
30 @SuppressWarnings("unchecked")
31 public SingleComponentIterator(Resource<?> lifecycle, Object singleComponent) {
32 this.lifecycle = requireNonNull(lifecycle, "lifecycle");
33
34 this.singleComponent = (T) singleComponent;
35 }
36
37 @Override
38 public T first() {
39 return singleComponent;
40 }
41
42 @Override
43 public void close() {
44 lifecycle.close();
45 Reference.reachabilityFence(lifecycle);
46 }
47 }