#include "quiche/quic/tools/devious_baton.h"
#include <cstdint>
#include <functional>
#include <memory>
#include <string>
#include <utility>
#include "absl/functional/bind_front.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include "quiche/quic/core/crypto/quic_random.h"
#include "quiche/quic/core/quic_types.h"
#include "quiche/common/quiche_data_reader.h"
#include "quiche/common/wire_serialization.h"
#include "quiche/web_transport/complete_buffer_visitor.h"
#include "quiche/web_transport/web_transport.h"
namespace quic {
namespace {
constexpr QuicByteCount kMaxPaddingSize = …;
constexpr char kPaddingData[kMaxPaddingSize] = …;
absl::StatusOr<DeviousBatonValue> Parse(absl::string_view message) { … }
std::string Serialize(DeviousBatonValue value) { … }
class IncomingBidiBatonVisitor : public webtransport::CompleteBufferVisitor { … };
}
void DeviousBatonSessionVisitor::OnSessionReady() { … }
void DeviousBatonSessionVisitor::OnSessionClosed(
webtransport::SessionErrorCode error_code,
const std::string& error_message) { … }
void DeviousBatonSessionVisitor::OnIncomingBidirectionalStreamAvailable() { … }
void DeviousBatonSessionVisitor::OnIncomingUnidirectionalStreamAvailable() { … }
void DeviousBatonSessionVisitor::OnDatagramReceived(
absl::string_view datagram) { … }
void DeviousBatonSessionVisitor::OnCanCreateNewOutgoingBidirectionalStream() { … }
void DeviousBatonSessionVisitor::OnCanCreateNewOutgoingUnidirectionalStream() { … }
quiche::SingleUseCallback<void(std::string)>
DeviousBatonSessionVisitor::CreateResponseCallback(SendFunction send_function) { … }
}