Support datagrams in QuicTransport. gfe-relnote: n/a (no functional change to production code) PiperOrigin-RevId: 288493541 Change-Id: I6d2a791ae062701ad4b9fb650ab267566373675f
diff --git a/quic/tools/quic_transport_simple_server_session.cc b/quic/tools/quic_transport_simple_server_session.cc index 9fe3dfd..49c86e5 100644 --- a/quic/tools/quic_transport_simple_server_session.cc +++ b/quic/tools/quic_transport_simple_server_session.cc
@@ -8,6 +8,7 @@ #include "url/gurl.h" #include "url/origin.h" +#include "net/third_party/quiche/src/quic/core/quic_buffer_allocator.h" #include "net/third_party/quiche/src/quic/core/quic_types.h" #include "net/third_party/quiche/src/quic/core/quic_versions.h" #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" @@ -212,6 +213,18 @@ return false; } +void QuicTransportSimpleServerSession::OnMessageReceived( + quiche::QuicheStringPiece message) { + if (mode_ != ECHO) { + return; + } + QuicUniqueBufferPtr buffer = MakeUniqueBuffer( + connection()->helper()->GetStreamSendBufferAllocator(), message.size()); + memcpy(buffer.get(), message.data(), message.size()); + datagram_queue()->SendOrQueueDatagram( + QuicMemSlice(std::move(buffer), message.size())); +} + void QuicTransportSimpleServerSession::MaybeEchoStreamsBack() { while (!streams_to_echo_back_.empty() && CanOpenNextOutgoingUnidirectionalStream()) {
diff --git a/quic/tools/quic_transport_simple_server_session.h b/quic/tools/quic_transport_simple_server_session.h index a2dd6be..ccdf28b 100644 --- a/quic/tools/quic_transport_simple_server_session.h +++ b/quic/tools/quic_transport_simple_server_session.h
@@ -51,6 +51,7 @@ void OnCanCreateNewOutgoingStream(bool unidirectional) override; bool CheckOrigin(url::Origin origin) override; bool ProcessPath(const GURL& url) override; + void OnMessageReceived(quiche::QuicheStringPiece message) override; void EchoStreamBack(const std::string& data) { streams_to_echo_back_.push_back(data);