summaryrefslogtreecommitdiffstats
path: root/net/base/ip_endpoint.h
diff options
context:
space:
mode:
Diffstat (limited to 'net/base/ip_endpoint.h')
-rw-r--r--net/base/ip_endpoint.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/net/base/ip_endpoint.h b/net/base/ip_endpoint.h
new file mode 100644
index 0000000..66aea71
--- /dev/null
+++ b/net/base/ip_endpoint.h
@@ -0,0 +1,53 @@
+// Copyright (c) 2011 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_BASE_IP_ENDPOINT_H_
+#define NET_BASE_IP_ENDPOINT_H_
+#pragma once
+
+#include "base/basictypes.h"
+#include "net/base/net_util.h"
+
+struct sockaddr;
+
+namespace net {
+
+// An IPEndPoint represents the address of a transport endpoint:
+// * IP address (either v4 or v6)
+// * Port
+class IPEndPoint {
+ public:
+ IPEndPoint();
+ IPEndPoint(const IPAddressNumber& address, int port);
+ IPEndPoint(const IPEndPoint& endpoint);
+
+ const IPAddressNumber& address() const { return address_; }
+ int port() const { return port_; }
+
+ // Convert to a provided sockaddr struct.
+ // |address| is the sockaddr to copy into. Should be at least
+ // sizeof(struct sockaddr_storage) bytes.
+ // |address_length| is an input/output parameter. On input, it is the
+ // size of data in |address| available. On output, it is the size of
+ // the address that was copied into |address|.
+ // Returns true on success, false on failure.
+ bool ToSockaddr(struct sockaddr* address, size_t* address_length) const;
+
+ // Convert from a sockaddr struct.
+ // |address| is the address.
+ // |address_length| is the length of |address|.
+ // Returns true on success, false on failure.
+ bool FromSockAddr(const struct sockaddr* address, size_t address_length);
+
+ bool operator<(const IPEndPoint& that) const;
+ bool operator==(const IPEndPoint& that) const;
+
+ private:
+ IPAddressNumber address_;
+ int port_;
+};
+
+} // namespace net
+
+#endif // NET_BASE_IP_ENDPOINT_H_