pull/36732/head
Craig Tiller 10 months ago
parent 883ecce915
commit 70317bc7ef
  1. 1
      src/core/lib/transport/call_spine.cc
  2. 9
      src/core/lib/transport/call_spine.h

@ -96,6 +96,7 @@ CallInitiatorAndHandler MakeCallPair(
ClientMetadataHandle client_initial_metadata, ClientMetadataHandle client_initial_metadata,
grpc_event_engine::experimental::EventEngine* event_engine, grpc_event_engine::experimental::EventEngine* event_engine,
RefCountedPtr<Arena> arena, grpc_call_context_element* legacy_context) { RefCountedPtr<Arena> arena, grpc_call_context_element* legacy_context) {
CHECK_NE(arena.get(), nullptr);
auto spine = auto spine =
CallSpine::Create(std::move(client_initial_metadata), event_engine, CallSpine::Create(std::move(client_initial_metadata), event_engine,
std::move(arena), legacy_context); std::move(arena), legacy_context);

@ -266,7 +266,7 @@ class CallSpine final : public CallSpineInterface, public Party {
RefCountedPtr<Arena> arena, grpc_call_context_element* legacy_context) { RefCountedPtr<Arena> arena, grpc_call_context_element* legacy_context) {
return RefCountedPtr<CallSpine>( return RefCountedPtr<CallSpine>(
arena->New<CallSpine>(std::move(client_initial_metadata), event_engine, arena->New<CallSpine>(std::move(client_initial_metadata), event_engine,
std::move(arena), legacy_context)); arena, legacy_context));
} }
~CallSpine() override { ~CallSpine() override {
@ -373,8 +373,8 @@ class CallSpine final : public CallSpineInterface, public Party {
call_filters_(std::move(client_initial_metadata)), call_filters_(std::move(client_initial_metadata)),
event_engine_(event_engine) { event_engine_(event_engine) {
if (legacy_context == nullptr) { if (legacy_context == nullptr) {
legacy_context_ = static_cast<grpc_call_context_element*>( legacy_context_ = static_cast<grpc_call_context_element*>(arena_->Alloc(
arena->Alloc(sizeof(grpc_call_context_element) * GRPC_CONTEXT_COUNT)); sizeof(grpc_call_context_element) * GRPC_CONTEXT_COUNT));
memset(legacy_context_, 0, memset(legacy_context_, 0,
sizeof(grpc_call_context_element) * GRPC_CONTEXT_COUNT); sizeof(grpc_call_context_element) * GRPC_CONTEXT_COUNT);
legacy_context_is_owned_ = true; legacy_context_is_owned_ = true;
@ -405,10 +405,11 @@ class CallSpine final : public CallSpineInterface, public Party {
} }
void PartyOver() override { void PartyOver() override {
auto arena = arena_;
{ {
ScopedContext context(this); ScopedContext context(this);
CancelRemainingParticipants(); CancelRemainingParticipants();
arena_->DestroyManagedNewObjects(); arena->DestroyManagedNewObjects();
} }
this->~CallSpine(); this->~CallSpine();
} }

Loading…
Cancel
Save