Motr  M0
consumer.h
Go to the documentation of this file.
1 /* -*- C -*- */
2 /*
3  * Copyright (c) 2015-2020 Seagate Technology LLC and/or its Affiliates
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * For any questions about this software or licensing,
18  * please email opensource@seagate.com or cortx-questions@seagate.com.
19  *
20  */
21 
22 
23 #pragma once
24 
25 #ifndef __MOTR_ADDB2_CONSUMER_H__
26 #define __MOTR_ADDB2_CONSUMER_H__
27 
62 /* import */
63 #include "lib/types.h"
64 #include "lib/tlist.h"
65 
66 struct m0_addb2_trace;
67 struct m0_addb2_mach;
68 
69 /* export */
70 struct m0_addb2_record;
71 struct m0_addb2_cursor;
72 struct m0_addb2_source;
73 struct m0_addb2_philter;
74 struct m0_addb2_callback;
75 
77  const struct m0_addb2_trace *trace);
90 
91 enum {
96 };
97 
103  uint64_t va_id;
104  uint64_t va_time;
105  unsigned va_nr;
106  const uint64_t *va_data;
107 };
108 
116  unsigned ar_label_nr;
119 };
120 
129 };
130 
133 
140  bool (*ph_matches)(struct m0_addb2_philter *ph,
141  const struct m0_addb2_record *rec);
143  void *ph_datum;
148  uint64_t ph_magix;
149 };
150 
151 void m0_addb2_philter_init(struct m0_addb2_philter *philter,
152  bool (*matches)(struct m0_addb2_philter *,
153  const struct m0_addb2_record *),
154  void *datum);
155 
156 void m0_addb2_philter_fini(struct m0_addb2_philter *philter);
157 
162  struct m0_addb2_philter *ph);
166 void m0_addb2_philter_del(struct m0_addb2_philter *ph);
167 
174  void (*ca_fire)(const struct m0_addb2_source *src,
175  const struct m0_addb2_philter *ph,
176  const struct m0_addb2_callback *callback,
177  const struct m0_addb2_record *rec);
179  void *ca_datum;
182  uint64_t ca_magix;
183 };
184 
185 void m0_addb2_callback_init(struct m0_addb2_callback *callback,
186  void (*fire)(const struct m0_addb2_source *,
187  const struct m0_addb2_philter *,
188  const struct m0_addb2_callback *,
189  const struct m0_addb2_record *),
190  void *datum);
191 
192 void m0_addb2_callback_fini(struct m0_addb2_callback *callback);
193 
195  struct m0_addb2_callback *callback);
196 void m0_addb2_callback_del(struct m0_addb2_callback *callback);
197 
202  const struct m0_addb2_trace *cu_trace;
203  unsigned cu_pos;
206 };
207 
210 
218  const struct m0_addb2_record *rec);
219 
226 
230 void m0_addb2_philter_id_init(struct m0_addb2_philter *ph, uint64_t id);
231 
237 
243 #endif /* __MOTR_ADDB2_CONSUMER_H__ */
244 
245 /*
246  * Local variables:
247  * c-indentation-style: "K&R"
248  * c-basic-offset: 8
249  * tab-width: 8
250  * fill-column: 80
251  * scroll-step: 1
252  * End:
253  */
254 /*
255  * vim: tabstop=8 shiftwidth=8 noexpandtab textwidth=80 nowrap
256  */
struct m0_tl ph_callback
Definition: consumer.h:147
void m0_addb2_callback_fini(struct m0_addb2_callback *callback)
Definition: consumer.c:109
struct m0_addb2_source cu_src
Definition: consumer.h:204
static struct m0_addb2_mach * m
Definition: consumer.c:38
const struct m0_addb2_trace * cu_trace
Definition: consumer.h:202
static struct buffer * cur(struct m0_addb2_mach *mach, m0_bcount_t space)
Definition: addb2.c:791
unsigned va_nr
Definition: consumer.h:105
struct m0_tlink ph_linkage
Definition: consumer.h:145
int m0_addb2_cursor_next(struct m0_addb2_cursor *cur)
Definition: addb2.c:704
void m0_addb2_cursor_fini(struct m0_addb2_cursor *cur)
Definition: addb2.c:699
uint64_t ca_magix
Definition: consumer.h:182
uint64_t va_id
Definition: consumer.h:103
void m0_addb2_philter_global_del(struct m0_addb2_philter *ph)
Definition: consumer.c:196
unsigned ar_label_nr
Definition: consumer.h:116
void m0_addb2_callback_add(struct m0_addb2_philter *ph, struct m0_addb2_callback *callback)
Definition: consumer.c:114
uint64_t va_time
Definition: consumer.h:104
void m0_addb2_philter_id_init(struct m0_addb2_philter *ph, uint64_t id)
Definition: consumer.c:165
void m0_addb2_philter_true_init(struct m0_addb2_philter *ph)
Definition: consumer.c:160
static struct m0_addb2_callback c
Definition: consumer.c:41
Definition: tlist.h:251
struct m0_addb2_record cu_rec
Definition: consumer.h:205
unsigned cu_pos
Definition: consumer.h:203
void m0_addb2_consume(struct m0_addb2_source *src, const struct m0_addb2_record *rec)
Definition: consumer.c:143
struct m0_addb2_value ar_label[M0_ADDB2_LABEL_MAX]
Definition: consumer.h:118
void m0_addb2_cursor_init(struct m0_addb2_cursor *cur, const struct m0_addb2_trace *trace)
Definition: addb2.c:690
void m0_addb2_philter_global_add(struct m0_addb2_philter *ph)
Definition: consumer.c:182
void m0_addb2_callback_del(struct m0_addb2_callback *callback)
Definition: consumer.c:120
void m0_addb2_philter_fini(struct m0_addb2_philter *philter)
Definition: consumer.c:78
struct m0_tlink ca_linkage
Definition: consumer.h:181
struct m0_tl so_philter
Definition: consumer.h:128
bool(* ph_matches)(struct m0_addb2_philter *ph, const struct m0_addb2_record *rec)
Definition: consumer.h:140
struct m0_addb2_value ar_val
Definition: consumer.h:114
const uint64_t * va_data
Definition: consumer.h:106
void m0_addb2_philter_add(struct m0_addb2_source *src, struct m0_addb2_philter *ph)
Definition: consumer.c:86
uint64_t ph_magix
Definition: consumer.h:148
void(* ca_fire)(const struct m0_addb2_source *src, const struct m0_addb2_philter *ph, const struct m0_addb2_callback *callback, const struct m0_addb2_record *rec)
Definition: consumer.h:174
void m0_addb2_callback_init(struct m0_addb2_callback *callback, void(*fire)(const struct m0_addb2_source *, const struct m0_addb2_philter *, const struct m0_addb2_callback *, const struct m0_addb2_record *), void *datum)
Definition: consumer.c:97
void m0_addb2_source_fini(struct m0_addb2_source *src)
Definition: consumer.c:60
void * ph_datum
Definition: consumer.h:143
void m0_addb2_philter_del(struct m0_addb2_philter *ph)
Definition: consumer.c:92
void m0_addb2_source_init(struct m0_addb2_source *src)
Definition: consumer.c:55
void m0_addb2_philter_init(struct m0_addb2_philter *philter, bool(*matches)(struct m0_addb2_philter *, const struct m0_addb2_record *), void *datum)
Definition: consumer.c:67
struct m0_addb2_source * m0_addb2_mach_source(struct m0_addb2_mach *m)
Definition: addb2.c:678
struct m0_pdclust_src_addr src
Definition: fd.c:108
static void(* fire)(const struct m0_addb2_source *, const struct m0_addb2_philter *, const struct m0_addb2_callback *, const struct m0_addb2_record *)
Definition: consumer.c:44
struct m0_addb2_source * m0_addb2_cursor_source(struct m0_addb2_cursor *c)
Definition: consumer.c:125