#include <grpc/support/port_platform.h>
#include "src/core/lib/channel/promise_based_filter.h"
#include <algorithm>
#include <initializer_list>
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "absl/base/attributes.h"
#include "absl/functional/function_ref.h"
#include "absl/status/status.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
#include "absl/strings/str_join.h"
#include <grpc/status.h>
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/crash.h"
#include "src/core/lib/gprpp/manual_constructor.h"
#include "src/core/lib/gprpp/status_helper.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/promise/detail/basic_seq.h"
#include "src/core/lib/slice/slice.h"
extern grpc_core::TraceFlag grpc_trace_channel;
namespace grpc_core {
namespace promise_filter_detail {
namespace {
class FakeActivity final : public Activity { … };
absl::Status StatusFromMetadata(const ServerMetadata& md) { … }
}
BaseCallData::BaseCallData(
grpc_call_element* elem, const grpc_call_element_args* args, uint8_t flags,
absl::FunctionRef<Interceptor*()> make_send_interceptor,
absl::FunctionRef<Interceptor*()> make_recv_interceptor)
: … { … }
BaseCallData::~BaseCallData() { … }
void BaseCallData::Orphan() { … }
Waker BaseCallData::MakeNonOwningWaker() { … }
Waker BaseCallData::MakeOwningWaker() { … }
void BaseCallData::Wakeup(void*) { … }
void BaseCallData::Drop(void*) { … }
std::string BaseCallData::LogTag() const { … }
namespace {
uintptr_t* RefCountField(grpc_transport_stream_op_batch* b) { … }
}
BaseCallData::CapturedBatch::CapturedBatch() : … { … }
BaseCallData::CapturedBatch::CapturedBatch(
grpc_transport_stream_op_batch* batch) { … }
BaseCallData::CapturedBatch::~CapturedBatch() { … }
BaseCallData::CapturedBatch::CapturedBatch(const CapturedBatch& rhs)
: … { … }
BaseCallData::CapturedBatch& BaseCallData::CapturedBatch::operator=(
const CapturedBatch& b) { … }
BaseCallData::CapturedBatch::CapturedBatch(CapturedBatch&& rhs) noexcept
: … { … }
BaseCallData::CapturedBatch& BaseCallData::CapturedBatch::operator=(
CapturedBatch&& b) noexcept { … }
void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) { … }
void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) { … }
void BaseCallData::CapturedBatch::CancelWith(grpc_error_handle error,
Flusher* releaser) { … }
BaseCallData::Flusher::Flusher(BaseCallData* call) : … { … }
BaseCallData::Flusher::~Flusher() { … }
const char* BaseCallData::SendMessage::StateString(State state) { … }
void BaseCallData::SendMessage::StartOp(CapturedBatch batch) { … }
template <typename T>
void BaseCallData::SendMessage::GotPipe(T* pipe_end) { … }
bool BaseCallData::SendMessage::IsIdle() const { … }
void BaseCallData::SendMessage::OnComplete(absl::Status status) { … }
void BaseCallData::SendMessage::Done(const ServerMetadata& metadata,
Flusher* flusher) { … }
void BaseCallData::SendMessage::WakeInsideCombiner(Flusher* flusher,
bool allow_push_to_pipe) { … }
const char* BaseCallData::ReceiveMessage::StateString(State state) { … }
void BaseCallData::ReceiveMessage::StartOp(CapturedBatch& batch) { … }
template <typename T>
void BaseCallData::ReceiveMessage::GotPipe(T* pipe_end) { … }
void BaseCallData::ReceiveMessage::OnComplete(absl::Status status) { … }
void BaseCallData::ReceiveMessage::Done(const ServerMetadata& metadata,
Flusher* flusher) { … }
void BaseCallData::ReceiveMessage::WakeInsideCombiner(Flusher* flusher,
bool allow_push_to_pipe) { … }
struct ClientCallData::RecvInitialMetadata final { … };
class ClientCallData::PollContext { … };
ClientCallData::ClientCallData(grpc_call_element* elem,
const grpc_call_element_args* args,
uint8_t flags)
: … { … }
ClientCallData::~ClientCallData() { … }
void ClientCallData::ForceImmediateRepoll() { … }
const char* ClientCallData::StateString(SendInitialState state) { … }
const char* ClientCallData::StateString(RecvTrailingState state) { … }
std::string ClientCallData::DebugString() const { … }
void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) { … }
void ClientCallData::Cancel(grpc_error_handle error, Flusher* flusher) { … }
void ClientCallData::StartPromise(Flusher* flusher) { … }
void ClientCallData::RecvInitialMetadataReady(grpc_error_handle error) { … }
void ClientCallData::HookRecvTrailingMetadata(CapturedBatch batch) { … }
ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
CallArgs call_args) { … }
Poll<ServerMetadataHandle> ClientCallData::PollTrailingMetadata() { … }
void ClientCallData::RecvTrailingMetadataReadyCallback(
void* arg, grpc_error_handle error) { … }
void ClientCallData::RecvTrailingMetadataReady(grpc_error_handle error) { … }
void ClientCallData::SetStatusFromError(grpc_metadata_batch* metadata,
grpc_error_handle error) { … }
void ClientCallData::WakeInsideCombiner(Flusher* flusher) { … }
void ClientCallData::OnWakeup() { … }
struct ServerCallData::SendInitialMetadata { … };
class ServerCallData::PollContext { … };
const char* ServerCallData::StateString(RecvInitialState state) { … }
const char* ServerCallData::StateString(SendTrailingState state) { … }
ServerCallData::ServerCallData(grpc_call_element* elem,
const grpc_call_element_args* args,
uint8_t flags)
: … { … }
ServerCallData::~ServerCallData() { … }
void ServerCallData::ForceImmediateRepoll() { … }
void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) { … }
void ServerCallData::Completed(grpc_error_handle error, Flusher* flusher) { … }
ArenaPromise<ServerMetadataHandle> ServerCallData::MakeNextPromise(
CallArgs call_args) { … }
Poll<ServerMetadataHandle> ServerCallData::PollTrailingMetadata() { … }
void ServerCallData::RecvTrailingMetadataReadyCallback(
void* arg, grpc_error_handle error) { … }
void ServerCallData::RecvTrailingMetadataReady(grpc_error_handle error) { … }
void ServerCallData::RecvInitialMetadataReadyCallback(void* arg,
grpc_error_handle error) { … }
void ServerCallData::RecvInitialMetadataReady(grpc_error_handle error) { … }
std::string ServerCallData::DebugString() const { … }
void ServerCallData::WakeInsideCombiner(Flusher* flusher) { … }
void ServerCallData::OnWakeup() { … }
}
}