summaryrefslogtreecommitdiff
path: root/chromium/net/third_party/quiche/src/quiche/quic/platform/api/quic_socket_address.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-05-17 17:24:03 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-06-22 07:51:41 +0000
commit774f54339e5db91f785733232d3950366db65d07 (patch)
tree068e1b47bd1af94d77094ed12b604a6b83d9c22a /chromium/net/third_party/quiche/src/quiche/quic/platform/api/quic_socket_address.h
parentf7eaed5286974984ba5f9e3189d8f49d03e99f81 (diff)
downloadqtwebengine-chromium-774f54339e5db91f785733232d3950366db65d07.tar.gz
BASELINE: Update Chromium to 102.0.5005.57
Change-Id: I885f714bb40ee724c28f94ca6bd8dbdb39915158 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/net/third_party/quiche/src/quiche/quic/platform/api/quic_socket_address.h')
-rw-r--r--chromium/net/third_party/quiche/src/quiche/quic/platform/api/quic_socket_address.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/chromium/net/third_party/quiche/src/quiche/quic/platform/api/quic_socket_address.h b/chromium/net/third_party/quiche/src/quiche/quic/platform/api/quic_socket_address.h
new file mode 100644
index 00000000000..9ec97175051
--- /dev/null
+++ b/chromium/net/third_party/quiche/src/quiche/quic/platform/api/quic_socket_address.h
@@ -0,0 +1,63 @@
+// Copyright (c) 2016 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 QUICHE_QUIC_PLATFORM_API_QUIC_SOCKET_ADDRESS_H_
+#define QUICHE_QUIC_PLATFORM_API_QUIC_SOCKET_ADDRESS_H_
+
+#include <string>
+
+#include "quiche/quic/platform/api/quic_export.h"
+#include "quiche/quic/platform/api/quic_ip_address.h"
+
+namespace quic {
+
+// A class representing a socket endpoint address (i.e., IP address plus a
+// port) in QUIC.
+class QUIC_EXPORT_PRIVATE QuicSocketAddress {
+ public:
+ QuicSocketAddress() {}
+ QuicSocketAddress(QuicIpAddress address, uint16_t port);
+ explicit QuicSocketAddress(const struct sockaddr_storage& saddr);
+ explicit QuicSocketAddress(const sockaddr* saddr, socklen_t len);
+ QuicSocketAddress(const QuicSocketAddress& other) = default;
+ QuicSocketAddress& operator=(const QuicSocketAddress& other) = default;
+ QuicSocketAddress& operator=(QuicSocketAddress&& other) = default;
+ QUIC_EXPORT_PRIVATE friend bool operator==(const QuicSocketAddress& lhs,
+ const QuicSocketAddress& rhs);
+ QUIC_EXPORT_PRIVATE friend bool operator!=(const QuicSocketAddress& lhs,
+ const QuicSocketAddress& rhs);
+
+ bool IsInitialized() const;
+ std::string ToString() const;
+ int FromSocket(int fd);
+ QuicSocketAddress Normalized() const;
+
+ QuicIpAddress host() const;
+ uint16_t port() const;
+ sockaddr_storage generic_address() const;
+
+ // Hashes this address to an uint32_t.
+ uint32_t Hash() const;
+
+ private:
+ QuicIpAddress host_;
+ uint16_t port_ = 0;
+};
+
+inline std::ostream& operator<<(std::ostream& os,
+ const QuicSocketAddress address) {
+ os << address.ToString();
+ return os;
+}
+
+class QUIC_EXPORT_PRIVATE QuicSocketAddressHash {
+ public:
+ size_t operator()(QuicSocketAddress const& address) const noexcept {
+ return address.Hash();
+ }
+};
+
+} // namespace quic
+
+#endif // QUICHE_QUIC_PLATFORM_API_QUIC_SOCKET_ADDRESS_H_