summaryrefslogtreecommitdiff
path: root/chromium/net/quic/quic_packet_writer.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/quic/quic_packet_writer.h')
-rw-r--r--chromium/net/quic/quic_packet_writer.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/chromium/net/quic/quic_packet_writer.h b/chromium/net/quic/quic_packet_writer.h
new file mode 100644
index 00000000000..5df30c8fa14
--- /dev/null
+++ b/chromium/net/quic/quic_packet_writer.h
@@ -0,0 +1,41 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_QUIC_QUIC_PACKET_WRITER_H_
+#define NET_QUIC_QUIC_PACKET_WRITER_H_
+
+#include "net/base/ip_endpoint.h"
+#include "net/quic/quic_protocol.h"
+
+namespace net {
+
+class QuicBlockedWriterInterface;
+struct WriteResult;
+
+// An interface between writers and the entity managing the
+// socket (in our case the QuicDispatcher). This allows the Dispatcher to
+// control writes, and manage any writers who end up write blocked.
+class NET_EXPORT_PRIVATE QuicPacketWriter {
+ public:
+ virtual ~QuicPacketWriter() {}
+
+ // Sends the packet out to the peer. If the write succeeded, the result's
+ // status is WRITE_STATUS_OK and bytes_written is populated. If the write
+ // failed, the result's status is WRITE_STATUS_BLOCKED or WRITE_STATUS_ERROR
+ // and error_code is populated.
+ virtual WriteResult WritePacket(
+ const char* buffer, size_t buf_len,
+ const net::IPAddressNumber& self_address,
+ const net::IPEndPoint& peer_address,
+ QuicBlockedWriterInterface* blocked_writer) = 0;
+
+ // Returns true if the writer buffers and subsequently rewrites data
+ // when an attempt to write results in the underlying socket becoming
+ // write blocked.
+ virtual bool IsWriteBlockedDataBuffered() const = 0;
+};
+
+} // namespace net
+
+#endif // NET_QUIC_QUIC_PACKET_WRITER_H_