Wrapper of NetworkSocketAPI for BSD sockets on POSIX systems
Dependents: BSDInterfaceTests HelloBSDInterface
Revision 5:1af10f9d9404, committed 2016-02-25
- Comitter:
- Christopher Haster
- Date:
- Thu Feb 25 19:10:07 2016 -0600
- Parent:
- 4:28479a7d15ad
- Child:
- 6:363dd62309cf
- Commit message:
- Moved BSDSocket definition into private class in BSDInterface
Changed in this revision
BSDInterface.cpp | Show annotated file Show diff for this revision Revisions of this file |
BSDInterface.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/BSDInterface.cpp Thu Feb 25 19:04:44 2016 -0600 +++ b/BSDInterface.cpp Thu Feb 25 19:10:07 2016 -0600 @@ -99,7 +99,6 @@ return mac_address; } - int32_t BSDInterface::getHostByName(const char *name, char *ip) { struct hostent *host = gethostbyname(name); @@ -111,26 +110,6 @@ return 0; } - -/** BSDSocket class - * Implementation of the SocketInterface for BSD - */ -class BSDSocket : public SocketInterface -{ -public: - BSDSocket(int fd) : fd(fd) {} - - // Implementation of SocketInterface - virtual int32_t open(const char *ip, uint16_t port); - virtual int32_t close(); - - virtual int32_t send(const void *data, uint32_t size); - virtual int32_t recv(void *data, uint32_t size); - - int fd; -}; - - SocketInterface *BSDInterface::createSocket(ns_protocol_t proto) { int type = (proto == NS_UDP) ? SOCK_DGRAM : SOCK_STREAM; @@ -149,8 +128,8 @@ } -// UDP SocketInterface implementation -int32_t BSDSocket::open(const char *ip, uint16_t port) +// BSDSocket implementation +int32_t BSDInterface::BSDSocket::open(const char *ip, uint16_t port) { struct sockaddr_in host; memset(&host, 0, sizeof host); @@ -165,12 +144,12 @@ return 0; } -int32_t BSDSocket::close() +int32_t BSDInterface::BSDSocket::close() { return 0; } -int32_t BSDSocket::send(const void *data, uint32_t size) +int32_t BSDInterface::BSDSocket::send(const void *data, uint32_t size) { if (::send(fd, data, size, 0) < 0) { return NS_ERROR_DEVICE_ERROR; @@ -179,7 +158,7 @@ return 0; } -int32_t BSDSocket::recv(void *data, uint32_t size) +int32_t BSDInterface::BSDSocket::recv(void *data, uint32_t size) { int ret = ::recv(fd, data, size, MSG_DONTWAIT);
--- a/BSDInterface.h Thu Feb 25 19:04:44 2016 -0600 +++ b/BSDInterface.h Thu Feb 25 19:10:07 2016 -0600 @@ -34,6 +34,21 @@ virtual SocketInterface *createSocket(ns_protocol_t proto); virtual void destroySocket(SocketInterface *socket); + +private: + // Implementation of the SocketInterface for BSD + struct BSDSocket : public SocketInterface + { + int fd; + BSDSocket(int fd) : fd(fd) {} + + // Implementation of SocketInterface + virtual int32_t open(const char *ip, uint16_t port); + virtual int32_t close(); + + virtual int32_t send(const void *data, uint32_t size); + virtual int32_t recv(void *data, uint32_t size); + }; };