GRPC C++  1.26.0
channel_stack_builder.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2016 gRPC authors.
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  */
18 
19 #ifndef GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_BUILDER_H
20 #define GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_BUILDER_H
21 
23 
24 #include <stdbool.h>
25 
28 
34 
37 
40  const char* name);
41 
44  const char* target);
45 
48 
51  grpc_channel_stack_builder* builder, grpc_transport* transport);
52 
56 
59  grpc_channel_stack_builder* builder, grpc_resource_user* resource_user);
60 
64 
67  grpc_channel_stack_builder* builder, const grpc_channel_args* args);
68 
72 
77 
82 
86 
90 
94 
98 
102 
106  grpc_channel_stack_builder* builder, const char* filter_name);
107 
109  grpc_channel_stack* channel_stack, grpc_channel_element* elem, void* arg);
110 
116  const grpc_channel_filter* filter,
117  grpc_post_filter_create_init_func post_init_func,
118  void* user_data) GRPC_MUST_USE_RESULT;
119 
125  const grpc_channel_filter* filter,
126  grpc_post_filter_create_init_func post_init_func,
127  void* user_data) GRPC_MUST_USE_RESULT;
128 
133  grpc_channel_stack_builder* builder, const grpc_channel_filter* filter,
134  grpc_post_filter_create_init_func post_init_func,
135  void* user_data) GRPC_MUST_USE_RESULT;
136 
141  grpc_channel_stack_builder* builder, const grpc_channel_filter* filter,
142  grpc_post_filter_create_init_func post_init_func,
143  void* user_data) GRPC_MUST_USE_RESULT;
144 
148  grpc_channel_stack_builder* builder, const char* filter_name);
149 
153 
160  grpc_channel_stack_builder* builder, size_t prefix_bytes, int initial_refs,
161  grpc_iomgr_cb_func destroy, void* destroy_arg, void** result);
162 
165 
166 #endif /* GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_BUILDER_H */
bool grpc_channel_stack_builder_move_next(grpc_channel_stack_builder_iterator *iterator)
Move an iterator to the next item.
void grpc_channel_stack_builder_destroy(grpc_channel_stack_builder *builder)
Destroy the builder without creating a channel stack.
void(* grpc_post_filter_create_init_func)(grpc_channel_stack *channel_stack, grpc_channel_element *elem, void *arg)
Definition: channel_stack_builder.h:108
const grpc_channel_args * grpc_channel_stack_builder_get_channel_arguments(grpc_channel_stack_builder *builder)
Return a borrowed pointer to the channel arguments.
struct grpc_channel_stack_builder grpc_channel_stack_builder
grpc_channel_stack_builder offers a programmatic interface to selected and order channel filters
Definition: channel_stack_builder.h:31
grpc_channel_stack_builder_iterator * grpc_channel_stack_builder_create_iterator_at_last(grpc_channel_stack_builder *builder)
Begin iterating over already defined filters in the builder at the end.
void grpc_channel_stack_builder_set_name(grpc_channel_stack_builder *builder, const char *name)
Assign a name to the channel stack: name must be statically allocated.
void grpc_channel_stack_builder_set_resource_user(grpc_channel_stack_builder *builder, grpc_resource_user *resource_user)
Attach resource_user to the builder (does not take ownership)
const char * grpc_channel_stack_builder_iterator_filter_name(grpc_channel_stack_builder_iterator *iterator)
What is the name of the filter at this iterator position?
void grpc_channel_stack_builder_set_channel_arguments(grpc_channel_stack_builder *builder, const grpc_channel_args *args)
Set channel arguments: copies args.
grpc_resource_user * grpc_channel_stack_builder_get_resource_user(grpc_channel_stack_builder *builder)
Fetch attached resource user.
grpc_channel_stack_builder_iterator * grpc_channel_stack_builder_create_iterator_at_first(grpc_channel_stack_builder *builder)
Begin iterating over already defined filters in the builder at the beginning.
void grpc_channel_stack_builder_set_target(grpc_channel_stack_builder *b, const char *target)
Set the target uri.
void grpc_channel_stack_builder_iterator_destroy(grpc_channel_stack_builder_iterator *iterator)
Terminate iteration and destroy iterator.
bool grpc_channel_stack_builder_add_filter_before(grpc_channel_stack_builder_iterator *iterator, const grpc_channel_filter *filter, grpc_post_filter_create_init_func post_init_func, void *user_data) GRPC_MUST_USE_RESULT
Add filter to the stack, before iterator.
bool grpc_channel_stack_builder_iterator_is_first(grpc_channel_stack_builder_iterator *iterator)
Is an iterator at the first element?
struct grpc_channel_stack_builder_iterator grpc_channel_stack_builder_iterator
Definition: channel_stack_builder.h:32
bool grpc_channel_stack_builder_move_prev(grpc_channel_stack_builder_iterator *iterator)
Move an iterator to the previous item.
grpc_transport * grpc_channel_stack_builder_get_transport(grpc_channel_stack_builder *builder)
Fetch attached transport.
void grpc_channel_stack_builder_set_transport(grpc_channel_stack_builder *builder, grpc_transport *transport)
Attach transport to the builder (does not take ownership)
bool grpc_channel_stack_builder_remove_filter(grpc_channel_stack_builder *builder, const char *filter_name)
Remove any filter whose name is filter_name from builder.
grpc_channel_stack_builder_iterator * grpc_channel_stack_builder_iterator_find(grpc_channel_stack_builder *builder, const char *filter_name)
Return an iterator at filter_name, or at the end of the list if not found.
bool grpc_channel_stack_builder_iterator_is_end(grpc_channel_stack_builder_iterator *iterator)
Is an iterator at the end?
bool grpc_channel_stack_builder_add_filter_after(grpc_channel_stack_builder_iterator *iterator, const grpc_channel_filter *filter, grpc_post_filter_create_init_func post_init_func, void *user_data) GRPC_MUST_USE_RESULT
Add filter to the stack, after iterator.
bool grpc_channel_stack_builder_append_filter(grpc_channel_stack_builder *builder, const grpc_channel_filter *filter, grpc_post_filter_create_init_func post_init_func, void *user_data) GRPC_MUST_USE_RESULT
Add filter to the end of the filter list.
bool grpc_channel_stack_builder_prepend_filter(grpc_channel_stack_builder *builder, const grpc_channel_filter *filter, grpc_post_filter_create_init_func post_init_func, void *user_data) GRPC_MUST_USE_RESULT
Add filter to the beginning of the filter list.
grpc_channel_stack_builder * grpc_channel_stack_builder_create(void)
Create a new channel stack builder.
const char * grpc_channel_stack_builder_get_target(grpc_channel_stack_builder *b)
grpc_error * grpc_channel_stack_builder_finish(grpc_channel_stack_builder *builder, size_t prefix_bytes, int initial_refs, grpc_iomgr_cb_func destroy, void *destroy_arg, void **result)
Destroy the builder, return the freshly minted channel stack in result.
void(* grpc_iomgr_cb_func)(void *arg, grpc_error *error)
gRPC Callback definition.
Definition: closure.h:53
#define GRPC_MUST_USE_RESULT
Definition: port_platform.h:570
struct grpc_resource_user grpc_resource_user
Definition: resource_quota.h:87
An array of arguments that can be passed around.
Definition: grpc_types.h:132
Definition: channel_stack.h:159
Definition: channel_stack.h:99
Definition: channel_stack.h:175
Definition: error_internal.h:39
Definition: transport_impl.h:66