DAOS API: src/include/daos_pipeline.h Source File

| DAOS API (v2.1 - dev)

Loading...
Searching...
No Matches
daos_pipeline.h
1
6/*
7 * The Pipeline API is under heavy development and should not be used in production. The API is
8 * subject to change.
9 */
10
11#ifndef __DAOS_PIPE_H__
12#define __DAOS_PIPE_H__
13
14#if defined(__cplusplus)
15extern "C" {
16#endif
17
18#include <stdint.h>
19#include <daos_types.h>
20#include <daos_obj.h>
21
26 typedef struct {
62 d_iov_t part_type;
80 d_iov_t data_type;
85 uint32_t num_operands;
89 daos_key_t akey;
93 size_t num_constants;
97 d_iov_t *constant;
103 size_t data_offset;
110 size_t data_len;
111} daos_filter_part_t;
112
116 typedef struct {
137 d_iov_t filter_type;
141 uint32_t num_parts;
145 daos_filter_part_t **parts;
146} daos_filter_t;
147
151 typedef struct {
155 uint64_t version;
159 uint32_t num_filters;
163 daos_filter_t **filters;
167 uint32_t num_aggr_filters;
171 daos_filter_t **aggr_filters;
172} daos_pipeline_t;
173
177 typedef struct {
183 uint64_t nr_objs;
189 uint64_t nr_dkeys;
194 uint64_t nr_akeys;
195} daos_pipeline_stats_t;
196
202void
203daos_pipeline_init(daos_pipeline_t *pipeline);
204
210void
211daos_filter_init(daos_filter_t *filter);
212
221int
222daos_pipeline_add(daos_pipeline_t *pipeline, daos_filter_t *filter);
223
232int
233daos_filter_add(daos_filter_t *filter, daos_filter_part_t *part);
234
241int
242daos_pipeline_check(daos_pipeline_t *pipeline);
243
251int
252daos_pipeline_free(daos_pipeline_t *pipeline);
253
331int
332daos_pipeline_run(daos_handle_t coh, daos_handle_t oh, daos_pipeline_t *pipeline, daos_handle_t th,
333 uint64_t flags, daos_key_t *dkey, uint32_t *nr_iods, daos_iod_t *iods,
334 daos_anchor_t *anchor, uint32_t *nr_kds, daos_key_desc_t *kds,
335 d_sg_list_t *sgl_keys, d_sg_list_t *sgl_recx, daos_size_t *recx_size,
336 d_sg_list_t *sgl_agg, daos_pipeline_stats_t *stats, daos_event_t *ev);
337
338#if defined(__cplusplus)
339}
340#endif
341
342#endif /* __DAOS_PIPE_H__ */
daos_anchor_t
Definition daos_types.h:60
daos_filter_part_t
Definition daos_pipeline.h:26
daos_filter_part_t::constant
d_iov_t * constant
Definition daos_pipeline.h:97
daos_filter_part_t::akey
daos_key_t akey
Definition daos_pipeline.h:89
daos_filter_part_t::data_offset
size_t data_offset
Definition daos_pipeline.h:103
daos_filter_part_t::data_type
d_iov_t data_type
Definition daos_pipeline.h:80
daos_filter_part_t::num_constants
size_t num_constants
Definition daos_pipeline.h:93
daos_filter_part_t::data_len
size_t data_len
Definition daos_pipeline.h:110
daos_filter_part_t::num_operands
uint32_t num_operands
Definition daos_pipeline.h:85
daos_filter_part_t::part_type
d_iov_t part_type
Definition daos_pipeline.h:62
daos_filter_t
Definition daos_pipeline.h:116
daos_filter_t::filter_type
d_iov_t filter_type
Definition daos_pipeline.h:137
daos_filter_t::num_parts
uint32_t num_parts
Definition daos_pipeline.h:141
daos_filter_t::parts
daos_filter_part_t ** parts
Definition daos_pipeline.h:145
daos_handle_t
Definition daos_types.h:75
daos_iod_t
Definition daos_obj.h:363
daos_key_desc_t
Definition daos_obj.h:476
daos_pipeline_stats_t
Definition daos_pipeline.h:177
daos_pipeline_stats_t::nr_dkeys
uint64_t nr_dkeys
Definition daos_pipeline.h:189
daos_pipeline_stats_t::nr_objs
uint64_t nr_objs
Definition daos_pipeline.h:183
daos_pipeline_stats_t::nr_akeys
uint64_t nr_akeys
Definition daos_pipeline.h:194
daos_pipeline_t
Definition daos_pipeline.h:151
daos_pipeline_t::aggr_filters
daos_filter_t ** aggr_filters
Definition daos_pipeline.h:171
daos_pipeline_t::num_aggr_filters
uint32_t num_aggr_filters
Definition daos_pipeline.h:167
daos_pipeline_t::filters
daos_filter_t ** filters
Definition daos_pipeline.h:163
daos_pipeline_t::num_filters
uint32_t num_filters
Definition daos_pipeline.h:159
daos_pipeline_t::version
uint64_t version
Definition daos_pipeline.h:155