11#pragma once
22
33#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
4- # if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC
4+
55#include < memory_tracker.h>
66#include < ngtcp2/ngtcp2.h>
77#include < string>
@@ -51,7 +51,7 @@ class CID final : public MemoryRetainer {
5151
5252 CID (const CID& other);
5353 CID& operator =(const CID& other);
54- CID (CID&&) = delete ;
54+ DISALLOW_MOVE (CID)
5555
5656 struct Hash final {
5757 size_t operator ()(const CID& cid) const ;
@@ -68,14 +68,16 @@ class CID final : public MemoryRetainer {
6868 operator bool () const ;
6969 size_t length () const ;
7070
71+ // Returns a hex-encoded string representation of the CID useful
72+ // for debugging.
7173 std::string ToString () const ;
7274
7375 SET_NO_MEMORY_INFO ()
7476 SET_MEMORY_INFO_NAME (CID)
7577 SET_SELF_SIZE (CID)
7678
7779 template <typename T>
78- using Map = std::unordered_map<CID, T, CID::Hash>;
80+ using Map = std::unordered_map<const CID, T, CID::Hash>;
7981
8082 // A CID::Factory, as the name suggests, is used to create new CIDs.
8183 // Per https://datatracker.ietf.org/doc/draft-ietf-quic-load-balancers/, QUIC
@@ -85,13 +87,13 @@ class CID final : public MemoryRetainer {
8587 // but will allow user code to provide their own CID::Factory implementation.
8688 class Factory ;
8789
88- static CID kInvalid ;
90+ static const CID kInvalid ;
8991
9092 // The default constructor creates an empty, zero-length CID.
9193 // Zero-length CIDs are not usable. We use them as a placeholder
9294 // for a missing or empty CID value. This is public only because
9395 // it is required for the CID::Map implementation. It should not
94- // be used. Use kInvalid instead.
96+ // be used directly . Use kInvalid instead.
9597 CID ();
9698
9799 private:
@@ -107,12 +109,12 @@ class CID::Factory {
107109
108110 // Generate a new CID. The length_hint must be between CID::kMinLength
109111 // and CID::kMaxLength. The implementation can choose to ignore the length.
110- virtual CID Generate (size_t length_hint = CID::kMaxLength ) const = 0;
112+ virtual const CID Generate (size_t length_hint = CID::kMaxLength ) const = 0;
111113
112114 // Generate a new CID into the given ngtcp2_cid. This variation of
113115 // Generate should be used far less commonly.
114- virtual CID GenerateInto (ngtcp2_cid* cid,
115- size_t length_hint = CID::kMaxLength ) const = 0;
116+ virtual const CID GenerateInto (
117+ ngtcp2_cid* cid, size_t length_hint = CID::kMaxLength ) const = 0;
116118
117119 // The default random CID generator instance.
118120 static const Factory& random ();
@@ -123,5 +125,4 @@ class CID::Factory {
123125
124126} // namespace node::quic
125127
126- #endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC
127128#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
0 commit comments