#ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FLOW_CONTROL_H
#define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FLOW_CONTROL_H
#include <grpc/support/port_platform.h>
#include <limits.h>
#include <stdint.h>
#include <iosfwd>
#include <string>
#include <utility>
#include "absl/functional/function_ref.h"
#include "absl/status/status.h"
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
#include <grpc/support/log.h>
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/resource_quota/memory_quota.h"
#include "src/core/lib/transport/bdp_estimator.h"
#include "src/core/lib/transport/pid_controller.h"
extern grpc_core::TraceFlag grpc_flowctl_trace;
namespace grpc {
namespace testing {
class TrickledCHTTP2;
}
}
namespace grpc_core {
namespace chttp2 {
static constexpr uint32_t kDefaultWindow = …;
static constexpr uint32_t kDefaultFrameSize = …;
static constexpr int64_t kMaxWindow = …;
static constexpr uint32_t kMinPositiveInitialWindowSize = …;
static constexpr const uint32_t kMaxInitialWindowSize = …;
static constexpr const int64_t kMaxWindowDelta = …;
static constexpr const int kDefaultPreferredRxCryptoFrameSize = …;
static constexpr uint32_t kFrameSize = …;
static constexpr const uint32_t kMinInitialWindowSize = …;
class TransportFlowControl;
class StreamFlowControl;
enum class StallEdge { … };
class GRPC_MUST_USE_RESULT FlowControlAction { … };
std::ostream& operator<<(std::ostream& out, FlowControlAction::Urgency urgency);
std::ostream& operator<<(std::ostream& out, const FlowControlAction& action);
class TransportFlowControl final { … };
class StreamFlowControl final { … };
class TestOnlyTransportTargetWindowEstimatesMocker { … };
extern TestOnlyTransportTargetWindowEstimatesMocker*
g_test_only_transport_target_window_estimates_mocker;
}
}
#endif