Commit fbbbcf80 authored by Orvid King's avatar Orvid King Committed by Facebook Github Bot

Add NetworkSocket support to SocketAddress

Summary: The first step on the path

Reviewed By: yfeldblum

Differential Revision: D10355407

fbshipit-source-id: 01eec439ae65484e233d5fe94977643d7ab2ed6d
parent ceebc296
...@@ -33,6 +33,8 @@ ...@@ -33,6 +33,8 @@
#include <folly/Exception.h> #include <folly/Exception.h>
#include <folly/Format.h> #include <folly/Format.h>
#include <folly/hash/Hash.h> #include <folly/hash/Hash.h>
#include <folly/net/NetOps.h>
#include <folly/net/NetworkSocket.h>
namespace { namespace {
...@@ -241,11 +243,19 @@ void SocketAddress::setFromPath(StringPiece path) { ...@@ -241,11 +243,19 @@ void SocketAddress::setFromPath(StringPiece path) {
} }
void SocketAddress::setFromPeerAddress(int socket) { void SocketAddress::setFromPeerAddress(int socket) {
setFromSocket(socket, getpeername); setFromPeerAddress(NetworkSocket::fromFd(socket));
}
void SocketAddress::setFromPeerAddress(NetworkSocket socket) {
setFromSocket(socket, netops::getpeername);
} }
void SocketAddress::setFromLocalAddress(int socket) { void SocketAddress::setFromLocalAddress(int socket) {
setFromSocket(socket, getsockname); setFromLocalAddress(NetworkSocket::fromFd(socket));
}
void SocketAddress::setFromLocalAddress(NetworkSocket socket) {
setFromSocket(socket, netops::getsockname);
} }
void SocketAddress::setFromSockaddr(const struct sockaddr* address) { void SocketAddress::setFromSockaddr(const struct sockaddr* address) {
...@@ -645,8 +655,8 @@ void SocketAddress::setFromLocalAddr(const struct addrinfo* info) { ...@@ -645,8 +655,8 @@ void SocketAddress::setFromLocalAddr(const struct addrinfo* info) {
} }
void SocketAddress::setFromSocket( void SocketAddress::setFromSocket(
int socket, NetworkSocket socket,
int (*fn)(int, struct sockaddr*, socklen_t*)) { int (*fn)(NetworkSocket, struct sockaddr*, socklen_t*)) {
// Try to put the address into a local storage buffer. // Try to put the address into a local storage buffer.
sockaddr_storage tmp_sock; sockaddr_storage tmp_sock;
socklen_t addrLen = sizeof(tmp_sock); socklen_t addrLen = sizeof(tmp_sock);
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <folly/IPAddress.h> #include <folly/IPAddress.h>
#include <folly/Portability.h> #include <folly/Portability.h>
#include <folly/Range.h> #include <folly/Range.h>
#include <folly/net/NetworkSocket.h>
#include <folly/portability/Sockets.h> #include <folly/portability/Sockets.h>
namespace folly { namespace folly {
...@@ -325,6 +326,7 @@ class SocketAddress { ...@@ -325,6 +326,7 @@ class SocketAddress {
* Raises std::system_error on error. * Raises std::system_error on error.
*/ */
void setFromPeerAddress(int socket); void setFromPeerAddress(int socket);
void setFromPeerAddress(NetworkSocket socket);
/** /**
* Initialize this SocketAddress from a socket's local address. * Initialize this SocketAddress from a socket's local address.
...@@ -332,6 +334,7 @@ class SocketAddress { ...@@ -332,6 +334,7 @@ class SocketAddress {
* Raises std::system_error on error. * Raises std::system_error on error.
*/ */
void setFromLocalAddress(int socket); void setFromLocalAddress(int socket);
void setFromLocalAddress(NetworkSocket socket);
/** /**
* Initialize this folly::SocketAddress from a struct sockaddr. * Initialize this folly::SocketAddress from a struct sockaddr.
...@@ -580,7 +583,9 @@ class SocketAddress { ...@@ -580,7 +583,9 @@ class SocketAddress {
struct addrinfo* getAddrInfo(const char* host, const char* port, int flags); struct addrinfo* getAddrInfo(const char* host, const char* port, int flags);
void setFromAddrInfo(const struct addrinfo* results); void setFromAddrInfo(const struct addrinfo* results);
void setFromLocalAddr(const struct addrinfo* results); void setFromLocalAddr(const struct addrinfo* results);
void setFromSocket(int socket, int (*fn)(int, struct sockaddr*, socklen_t*)); void setFromSocket(
NetworkSocket socket,
int (*fn)(NetworkSocket, struct sockaddr*, socklen_t*));
std::string getIpString(int flags) const; std::string getIpString(int flags) const;
void getIpString(char* buf, size_t buflen, int flags) const; void getIpString(char* buf, size_t buflen, int flags) const;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment