Go to the documentation of this file.
19 #ifndef GRPC_CORE_LIB_IOMGR_CALL_COMBINER_H
20 #define GRPC_CORE_LIB_IOMGR_CALL_COMBINER_H
26 #include "absl/container/inlined_vector.h"
56 #define GRPC_CALL_COMBINER_START(call_combiner, closure, error, reason) \
57 (call_combiner)->Start((closure), (error), __FILE__, __LINE__, (reason))
58 #define GRPC_CALL_COMBINER_STOP(call_combiner, reason) \
59 (call_combiner)->Stop(__FILE__, __LINE__, (reason))
62 int line,
const char* reason);
64 void Stop(
const char*
file,
int line,
const char* reason);
66 #define GRPC_CALL_COMBINER_START(call_combiner, closure, error, reason) \
67 (call_combiner)->Start((closure), (error), (reason))
68 #define GRPC_CALL_COMBINER_STOP(call_combiner, reason) \
69 (call_combiner)->Stop((reason))
74 void Stop(
const char* reason);
105 #ifdef GRPC_TSAN_ENABLED
115 #ifdef GRPC_TSAN_ENABLED
123 struct TsanLock :
public RefCounted<TsanLock, NonPolymorphicRefCount> {
129 std::atomic<bool> taken{
false};
173 "CallCombinerClosureList executing closure while already "
174 "holding call_combiner %p: closure=%p error=%s reason=%s",
void SetNotifyOnCancel(grpc_closure *closure)
#define TSAN_ANNOTATE_RWLOCK_DESTROY(addr)
#define TSAN_ANNOTATE_RWLOCK_CREATE(addr)
void Start(grpc_closure *closure, grpc_error_handle error, const char *file, int line, const char *reason)
Starts processing closure.
#define GRPC_TRACE_FLAG_ENABLED(f)
CallCombinerClosure(grpc_closure *closure, grpc_error_handle error, const char *reason)
void Cancel(grpc_error_handle error)
Indicates that the call has been cancelled.
void ScheduleClosure(grpc_closure *closure, grpc_error_handle error)
def c_str(s, encoding='ascii')
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
#define GRPC_CALL_COMBINER_STOP(call_combiner, reason)
void Stop(const char *file, int line, const char *reason)
Yields the call combiner to the next closure in the queue, if any.
#define GRPC_CALL_COMBINER_START(call_combiner, closure, error, reason)
void RunClosures(CallCombiner *call_combiner)
void Add(grpc_closure *closure, grpc_error_handle error, const char *reason)
std::string grpc_error_std_string(grpc_error_handle error)
MultiProducerSingleConsumerQueue queue_
void RunClosuresWithoutYielding(CallCombiner *call_combiner)
DebugOnlyTraceFlag grpc_call_combiner_trace(false, "call_combiner")
static void Run(const DebugLocation &location, grpc_closure *closure, grpc_error_handle error)
absl::InlinedVector< CallCombinerClosure, 6 > closures_
CallCombinerClosureList()
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:42