reifydb_core/interceptor/
ringbuffer.rs1use std::marker::PhantomData;
2
3use reifydb_type::RowNumber;
4
5use crate::{
6 define_api_function, define_closure_interceptor, define_interceptor, impl_register_interceptor,
7 interface::RingBufferDef, value::encoded::EncodedValues,
8};
9
10define_interceptor!(
12 context: RingBufferPreInsertContext<T>,
13 trait: RingBufferPreInsertInterceptor,
14 fields: {
15 txn: &'a mut T,
16 ringbuffer: &'a RingBufferDef,
17 row: &'a EncodedValues}
18);
19
20define_closure_interceptor!(
21 ClosureRingBufferPreInsertInterceptor,
22 RingBufferPreInsertInterceptor,
23 RingBufferPreInsertContext,
24 with_transaction
25);
26
27define_api_function!(
28 ringbuffer_pre_insert,
29 ClosureRingBufferPreInsertInterceptor<T, F>,
30 RingBufferPreInsertContext<T>
31);
32
33define_interceptor!(
35 context: RingBufferPostInsertContext<T>,
36 trait: RingBufferPostInsertInterceptor,
37 fields: {
38 txn: &'a mut T,
39 ringbuffer: &'a RingBufferDef,
40 id: RowNumber,
41 row: &'a EncodedValues}
42);
43
44define_closure_interceptor!(
45 ClosureRingBufferPostInsertInterceptor,
46 RingBufferPostInsertInterceptor,
47 RingBufferPostInsertContext,
48 with_transaction
49);
50
51define_api_function!(
52 ringbuffer_post_insert,
53 ClosureRingBufferPostInsertInterceptor<T, F>,
54 RingBufferPostInsertContext<T>
55);
56
57define_interceptor!(
59 context: RingBufferPreUpdateContext<T>,
60 trait: RingBufferPreUpdateInterceptor,
61 fields: {
62 txn: &'a mut T,
63 ringbuffer: &'a RingBufferDef,
64 id: RowNumber,
65 row: &'a EncodedValues}
66);
67
68define_closure_interceptor!(
69 ClosureRingBufferPreUpdateInterceptor,
70 RingBufferPreUpdateInterceptor,
71 RingBufferPreUpdateContext,
72 with_transaction
73);
74
75define_api_function!(
76 ringbuffer_pre_update,
77 ClosureRingBufferPreUpdateInterceptor<T, F>,
78 RingBufferPreUpdateContext<T>
79);
80
81define_interceptor!(
83 context: RingBufferPostUpdateContext<T>,
84 trait: RingBufferPostUpdateInterceptor,
85 fields: {
86 txn: &'a mut T,
87 ringbuffer: &'a RingBufferDef,
88 id: RowNumber,
89 row: &'a EncodedValues,
90 old_row: &'a EncodedValues}
91);
92
93define_closure_interceptor!(
94 ClosureRingBufferPostUpdateInterceptor,
95 RingBufferPostUpdateInterceptor,
96 RingBufferPostUpdateContext,
97 with_transaction
98);
99
100define_api_function!(
101 ringbuffer_post_update,
102 ClosureRingBufferPostUpdateInterceptor<T, F>,
103 RingBufferPostUpdateContext<T>
104);
105
106define_interceptor!(
108 context: RingBufferPreDeleteContext<T>,
109 trait: RingBufferPreDeleteInterceptor,
110 fields: {
111 txn: &'a mut T,
112 ringbuffer: &'a RingBufferDef,
113 id: RowNumber}
114);
115
116define_closure_interceptor!(
117 ClosureRingBufferPreDeleteInterceptor,
118 RingBufferPreDeleteInterceptor,
119 RingBufferPreDeleteContext,
120 with_transaction
121);
122
123define_api_function!(
124 ringbuffer_pre_delete,
125 ClosureRingBufferPreDeleteInterceptor<T, F>,
126 RingBufferPreDeleteContext<T>
127);
128
129define_interceptor!(
131 context: RingBufferPostDeleteContext<T>,
132 trait: RingBufferPostDeleteInterceptor,
133 fields: {
134 txn: &'a mut T,
135 ringbuffer: &'a RingBufferDef,
136 id: RowNumber,
137 deleted_row: &'a EncodedValues}
138);
139
140define_closure_interceptor!(
141 ClosureRingBufferPostDeleteInterceptor,
142 RingBufferPostDeleteInterceptor,
143 RingBufferPostDeleteContext,
144 with_transaction
145);
146
147define_api_function!(
148 ringbuffer_post_delete,
149 ClosureRingBufferPostDeleteInterceptor<T, F>,
150 RingBufferPostDeleteContext<T>
151);
152
153impl_register_interceptor!(
154 ClosureRingBufferPreInsertInterceptor<T, F>,
155 RingBufferPreInsertContext<T>,
156 RingBufferPreInsertInterceptor,
157 ringbuffer_pre_insert
158);
159
160impl_register_interceptor!(
161 ClosureRingBufferPostInsertInterceptor<T, F>,
162 RingBufferPostInsertContext<T>,
163 RingBufferPostInsertInterceptor,
164 ringbuffer_post_insert
165);
166
167impl_register_interceptor!(
168 ClosureRingBufferPreUpdateInterceptor<T, F>,
169 RingBufferPreUpdateContext<T>,
170 RingBufferPreUpdateInterceptor,
171 ringbuffer_pre_update
172);
173
174impl_register_interceptor!(
175 ClosureRingBufferPostUpdateInterceptor<T, F>,
176 RingBufferPostUpdateContext<T>,
177 RingBufferPostUpdateInterceptor,
178 ringbuffer_post_update
179);
180
181impl_register_interceptor!(
182 ClosureRingBufferPreDeleteInterceptor<T, F>,
183 RingBufferPreDeleteContext<T>,
184 RingBufferPreDeleteInterceptor,
185 ringbuffer_pre_delete
186);
187
188impl_register_interceptor!(
189 ClosureRingBufferPostDeleteInterceptor<T, F>,
190 RingBufferPostDeleteContext<T>,
191 RingBufferPostDeleteInterceptor,
192 ringbuffer_post_delete
193);