#include <grpc/support/port_platform.h>
#include "src/core/ext/filters/client_channel/subchannel_stream_client.h"
#include <inttypes.h>
#include <stdio.h>
#include <string>
#include <utility>
#include <grpc/status.h>
#include <grpc/support/log.h>
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/time_precise.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/status_helper.h"
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/resource_quota/resource_quota.h"
#include "src/core/lib/transport/error_utils.h"
#define SUBCHANNEL_STREAM_INITIAL_CONNECT_BACKOFF_SECONDS …
#define SUBCHANNEL_STREAM_RECONNECT_BACKOFF_MULTIPLIER …
#define SUBCHANNEL_STREAM_RECONNECT_MAX_BACKOFF_SECONDS …
#define SUBCHANNEL_STREAM_RECONNECT_JITTER …
namespace grpc_core {
EventEngine;
SubchannelStreamClient::SubchannelStreamClient(
RefCountedPtr<ConnectedSubchannel> connected_subchannel,
grpc_pollset_set* interested_parties,
std::unique_ptr<CallEventHandler> event_handler, const char* tracer)
: … { … }
SubchannelStreamClient::~SubchannelStreamClient() { … }
void SubchannelStreamClient::Orphan() { … }
void SubchannelStreamClient::StartCall() { … }
void SubchannelStreamClient::StartCallLocked() { … }
void SubchannelStreamClient::StartRetryTimerLocked() { … }
void SubchannelStreamClient::OnRetryTimer() { … }
SubchannelStreamClient::CallState::CallState(
RefCountedPtr<SubchannelStreamClient> health_check_client,
grpc_pollset_set* interested_parties)
: … { … }
SubchannelStreamClient::CallState::~CallState() { … }
void SubchannelStreamClient::CallState::Orphan() { … }
void SubchannelStreamClient::CallState::StartCallLocked() { … }
void SubchannelStreamClient::CallState::StartBatchInCallCombiner(
void* arg, grpc_error_handle ) { … }
void SubchannelStreamClient::CallState::StartBatch(
grpc_transport_stream_op_batch* batch) { … }
void SubchannelStreamClient::CallState::AfterCallStackDestruction(
void* arg, grpc_error_handle ) { … }
void SubchannelStreamClient::CallState::OnCancelComplete(
void* arg, grpc_error_handle ) { … }
void SubchannelStreamClient::CallState::StartCancel(
void* arg, grpc_error_handle ) { … }
void SubchannelStreamClient::CallState::Cancel() { … }
void SubchannelStreamClient::CallState::OnComplete(
void* arg, grpc_error_handle ) { … }
void SubchannelStreamClient::CallState::RecvInitialMetadataReady(
void* arg, grpc_error_handle ) { … }
void SubchannelStreamClient::CallState::RecvMessageReady() { … }
void SubchannelStreamClient::CallState::RecvMessageReady(
void* arg, grpc_error_handle ) { … }
void SubchannelStreamClient::CallState::RecvTrailingMetadataReady(
void* arg, grpc_error_handle error) { … }
void SubchannelStreamClient::CallState::CallEndedLocked(bool retry) { … }
}