#include <grpc/support/port_platform.h>
#include "src/core/ext/filters/message_size/message_size_filter.h"
#include <initializer_list>
#include <new>
#include "absl/status/status.h"
#include "absl/strings/str_format.h"
#include <grpc/grpc.h>
#include <grpc/status.h>
#include <grpc/support/log.h>
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/status_helper.h"
#include "src/core/lib/iomgr/call_combiner.h"
#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/service_config/service_config_call_data.h"
#include "src/core/lib/slice/slice_buffer.h"
#include "src/core/lib/surface/channel_init.h"
#include "src/core/lib/surface/channel_stack_type.h"
#include "src/core/lib/transport/transport.h"
static void recv_message_ready(void* user_data, grpc_error_handle error);
static void recv_trailing_metadata_ready(void* user_data,
grpc_error_handle error);
namespace grpc_core {
const MessageSizeParsedConfig* MessageSizeParsedConfig::GetFromCallContext(
const grpc_call_context_element* context,
size_t service_config_parser_index) { … }
MessageSizeParsedConfig MessageSizeParsedConfig::GetFromChannelArgs(
const ChannelArgs& channel_args) { … }
absl::optional<uint32_t> GetMaxRecvSizeFromChannelArgs(
const ChannelArgs& args) { … }
absl::optional<uint32_t> GetMaxSendSizeFromChannelArgs(
const ChannelArgs& args) { … }
const JsonLoaderInterface* MessageSizeParsedConfig::JsonLoader(
const JsonArgs&) { … }
std::unique_ptr<ServiceConfigParser::ParsedConfig>
MessageSizeParser::ParsePerMethodParams(const ChannelArgs& ,
const Json& json,
ValidationErrors* errors) { … }
void MessageSizeParser::Register(CoreConfiguration::Builder* builder) { … }
size_t MessageSizeParser::ParserIndex() { … }
}
namespace {
struct channel_data { … };
struct call_data { … };
}
static void recv_message_ready(void* user_data, grpc_error_handle error) { … }
static void recv_trailing_metadata_ready(void* user_data,
grpc_error_handle error) { … }
static void message_size_start_transport_stream_op_batch(
grpc_call_element* elem, grpc_transport_stream_op_batch* op) { … }
static grpc_error_handle message_size_init_call_elem(
grpc_call_element* elem, const grpc_call_element_args* args) { … }
static void message_size_destroy_call_elem(
grpc_call_element* elem, const grpc_call_final_info* ,
grpc_closure* ) { … }
static grpc_error_handle message_size_init_channel_elem(
grpc_channel_element* elem, grpc_channel_element_args* args) { … }
static void message_size_destroy_channel_elem(grpc_channel_element* elem) { … }
const grpc_channel_filter grpc_message_size_filter = …;
static bool maybe_add_message_size_filter_subchannel(
grpc_core::ChannelStackBuilder* builder) { … }
static bool maybe_add_message_size_filter(
grpc_core::ChannelStackBuilder* builder) { … }
namespace grpc_core {
void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder) { … }
}