[call-v3] Add some initialization support for the new call architecture (#35301)

Closes #35301

COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/35301 from ctiller:init-call-review a2022cc485
PiperOrigin-RevId: 590982608
pull/35314/head
Craig Tiller 12 months ago committed by Copybara-Service
parent 96ac691531
commit def3288d93
  1. 17
      src/core/lib/channel/channel_stack.cc
  2. 3
      src/core/lib/channel/channel_stack.h
  3. 5
      src/core/lib/transport/transport.h

@ -28,6 +28,7 @@
#include <grpc/support/log.h>
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack_trace.h"
#include "src/core/lib/gpr/alloc.h"
#include "src/core/lib/surface/channel_init.h"
@ -320,3 +321,19 @@ grpc_channel_stack::MakeServerCallPromise(grpc_core::CallArgs call_args) {
return ServerNext(grpc_channel_stack_element(this, this->count - 1))(
std::move(call_args));
}
void grpc_channel_stack::InitClientCallSpine(
grpc_core::CallSpineInterface* call) {
for (size_t i = 0; i < count; i++) {
auto* elem = grpc_channel_stack_element(this, i);
elem->filter->init_call(elem, call);
}
}
void grpc_channel_stack::InitServerCallSpine(
grpc_core::CallSpineInterface* call) {
for (size_t i = 0; i < count; i++) {
auto* elem = grpc_channel_stack_element(this, count - 1 - i);
elem->filter->init_call(elem, call);
}
}

@ -244,6 +244,9 @@ struct grpc_channel_stack {
MakeClientCallPromise(grpc_core::CallArgs call_args);
grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
MakeServerCallPromise(grpc_core::CallArgs call_args);
void InitClientCallSpine(grpc_core::CallSpineInterface* call);
void InitServerCallSpine(grpc_core::CallSpineInterface* call);
};
// A call stack tracks a set of related filters for one call, and guarantees

@ -491,6 +491,11 @@ class CallHandler {
const RefCountedPtr<CallSpine> spine_;
};
struct CallInitiatorAndHandler {
CallInitiator initiator;
CallHandler handler;
};
template <typename CallHalf>
auto OutgoingMessages(CallHalf& h) {
struct Wrapper {

Loading…
Cancel
Save