Home | History | Annotate | Download | only in quic
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // This is an interface for all objects that want to be notified that
      6 // the underlying UDP socket is available for writing (not write blocked
      7 // anymore).
      8 
      9 #ifndef NET_QUIC_QUIC_BLOCKED_WRITER_INTERFACE_H_
     10 #define NET_QUIC_QUIC_BLOCKED_WRITER_INTERFACE_H_
     11 
     12 #include "net/base/net_export.h"
     13 
     14 namespace net {
     15 
     16 class NET_EXPORT_PRIVATE QuicBlockedWriterInterface {
     17  public:
     18   virtual ~QuicBlockedWriterInterface() {}
     19 
     20   // Called by the PacketWriter when the underlying socket becomes writable
     21   // so that the BlockedWriter can go ahead and try writing.
     22   virtual void OnCanWrite() = 0;
     23 };
     24 
     25 }  // namespace net
     26 
     27 #if defined(COMPILER_GCC)
     28 namespace BASE_HASH_NAMESPACE {
     29 // Hash pointers as if they were int's, but bring more entropy to the lower
     30 // bits.
     31 template <>
     32 struct hash<net::QuicBlockedWriterInterface*> {
     33   std::size_t operator()(const net::QuicBlockedWriterInterface* ptr) const {
     34     size_t k = reinterpret_cast<size_t>(ptr);
     35     return k + (k >> 6);
     36   }
     37 };
     38 }
     39 #endif
     40 
     41 #endif  // NET_QUIC_QUIC_BLOCKED_WRITER_INTERFACE_H_
     42