context_list.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2018 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_EXT_TRANSPORT_CHTTP2_TRANSPORT_CONTEXT_LIST_H
20 #define GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CONTEXT_LIST_H
21 
23 
24 #include <stddef.h>
25 
29 
30 namespace grpc_core {
32 class ContextList {
33  public:
34  /* Creates a new element with \a context as the value and appends it to the
35  * list. */
36  static void Append(ContextList** head, grpc_chttp2_stream* s);
37 
38  /* Executes a function \a fn with each context in the list and \a ts. It also
39  * frees up the entire list after this operation. It is intended as a callback
40  * and hence does not take a ref on \a error */
41  static void Execute(void* arg, Timestamps* ts, grpc_error_handle error);
42 
43  private:
44  void* trace_context_ = nullptr;
45  ContextList* next_ = nullptr;
46  size_t byte_offset_ = 0;
47 };
48 
50  void (*fn)(void*, Timestamps*, grpc_error_handle error));
51 void grpc_http2_set_fn_get_copied_context(void* (*fn)(void*));
52 } /* namespace grpc_core */
53 
54 #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CONTEXT_LIST_H */
grpc_core::ContextList::trace_context_
void * trace_context_
Definition: context_list.h:44
buffer_list.h
grpc_core
Definition: call_metric_recorder.h:31
error
grpc_error_handle error
Definition: retry_filter.cc:499
grpc_core::ContextList::Append
static void Append(ContextList **head, grpc_chttp2_stream *s)
Definition: context_list.cc:34
grpc_core::ContextList
Definition: context_list.h:32
grpc_core::ContextList::Execute
static void Execute(void *arg, Timestamps *ts, grpc_error_handle error)
Definition: context_list.cc:47
grpc_core::Timestamps
Definition: buffer_list.h:90
grpc_core::ContextList::next_
ContextList * next_
Definition: context_list.h:45
grpc_chttp2_stream
Definition: src/core/ext/transport/chttp2/transport/internal.h:456
generate-asm-lcov.fn
fn
Definition: generate-asm-lcov.py:146
arg
Definition: cmdline.cc:40
error.h
frame.h
grpc_core::grpc_http2_set_write_timestamps_callback
void grpc_http2_set_write_timestamps_callback(void(*fn)(void *, Timestamps *, grpc_error_handle error))
Definition: context_list.cc:63
grpc_core::grpc_http2_set_fn_get_copied_context
void grpc_http2_set_fn_get_copied_context(void *(*fn)(void *))
Definition: context_list.cc:68
grpc_error
Definition: error_internal.h:42
grpc_core::ContextList::byte_offset_
size_t byte_offset_
Definition: context_list.h:46
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:55