diff options
author | Finn Williams <Finn.Williams@arm.com> | 2020-04-29 12:00:24 +0100 |
---|---|---|
committer | finn.williams <finn.williams@arm.com> | 2020-04-30 10:09:59 +0000 |
commit | 9937f9359ac4eeefc3535b66eddddd1b4f067c54 (patch) | |
tree | e10ef064afea0ab59198cec63af34f439dcd13a0 /profiling | |
parent | be7e35c5994c379e165fb1b7053301afb5d52e04 (diff) | |
download | armnn-9937f9359ac4eeefc3535b66eddddd1b4f067c54.tar.gz |
IVGCVSW-4732 Move NetworkSockets class needs to profiling/common
Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: Ie1bd73e6c1818277943e70eaf73b4d9a26da4758
Diffstat (limited to 'profiling')
-rw-r--r-- | profiling/common/include/NetworkSockets.hpp | 59 | ||||
-rw-r--r-- | profiling/common/src/NetworkSockets.cpp | 101 | ||||
-rw-r--r-- | profiling/server/src/basePipeServer/BasePipeServer.cpp | 3 | ||||
-rw-r--r-- | profiling/server/src/basePipeServer/BasePipeServer.hpp | 8 | ||||
-rw-r--r-- | profiling/server/src/basePipeServer/ConnectionHandler.hpp | 1 |
5 files changed, 166 insertions, 6 deletions
diff --git a/profiling/common/include/NetworkSockets.hpp b/profiling/common/include/NetworkSockets.hpp new file mode 100644 index 0000000000..b9e58aac1d --- /dev/null +++ b/profiling/common/include/NetworkSockets.hpp @@ -0,0 +1,59 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +// This file (along with its corresponding .cpp) defines a very thin platform abstraction layer for the use of +// networking sockets. Thankfully the underlying APIs on Windows and Linux are very similar so not much conversion +// is needed (typically just forwarding the parameters to a differently named function). +// Some of the APIs are in fact completely identical and so no forwarding function is needed. + +#pragma once + +#if defined(__unix__) +#include <poll.h> +#include <sys/ioctl.h> +#include <sys/socket.h> +#include <sys/un.h> +#elif defined(_MSC_VER) +#include <winsock2.h> +#include <afunix.h> +#endif + +namespace armnnUtils +{ +namespace Sockets +{ + +#if defined(__unix__) + +using Socket = int; +using PollFd = pollfd; + +#elif defined(_MSC_VER) + +using Socket = SOCKET; +using PollFd = WSAPOLLFD; +#define SOCK_CLOEXEC 0 + +#endif + +/// Performs any required one-time setup. +bool Initialize(); + +int Close(Socket s); + +bool SetNonBlocking(Socket s); + +long Write(Socket s, const void* buf, size_t len); + +long Read(Socket s, void* buf, size_t len); + +int Ioctl(Socket s, unsigned long int cmd, void* arg); + +int Poll(PollFd* fds, nfds_t numFds, int timeout); + +Socket Accept(Socket s, sockaddr* addr, socklen_t* addrlen, int flags); + +} +} diff --git a/profiling/common/src/NetworkSockets.cpp b/profiling/common/src/NetworkSockets.cpp new file mode 100644 index 0000000000..8ce5f197c1 --- /dev/null +++ b/profiling/common/src/NetworkSockets.cpp @@ -0,0 +1,101 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "common/include/NetworkSockets.hpp" + +#if defined(__unix__) +#include <unistd.h> +#include <fcntl.h> +#endif + +namespace armnnUtils +{ +namespace Sockets +{ + +bool Initialize() +{ +#if defined(__unix__) + return true; +#elif defined(_MSC_VER) + WSADATA wsaData; + return WSAStartup(MAKEWORD(2, 2), &wsaData) == 0; +#endif +} + +int Close(Socket s) +{ +#if defined(__unix__) + return close(s); +#elif defined(_MSC_VER) + return closesocket(s); +#endif +} + + +bool SetNonBlocking(Socket s) +{ +#if defined(__unix__) + const int currentFlags = fcntl(s, F_GETFL); + return fcntl(s, F_SETFL, currentFlags | O_NONBLOCK) == 0; +#elif defined(_MSC_VER) + u_long mode = 1; + return ioctlsocket(s, FIONBIO, &mode) == 0; +#endif +} + + +long Write(Socket s, const void* buf, size_t len) +{ +#if defined(__unix__) + return write(s, buf, len); +#elif defined(_MSC_VER) + return send(s, static_cast<const char*>(buf), len, 0); +#endif +} + + +long Read(Socket s, void* buf, size_t len) +{ +#if defined(__unix__) + return read(s, buf, len); +#elif defined(_MSC_VER) + return recv(s, static_cast<char*>(buf), len, 0); +#endif +} + +int Ioctl(Socket s, unsigned long int cmd, void* arg) +{ +#if defined(__ANDROID__) + return ioctl(s, static_cast<int>(cmd), arg); +#elif defined(__unix__) + return ioctl(s, cmd, arg); +#elif defined(_MSC_VER) + return ioctlsocket(s, cmd, static_cast<u_long*>(arg)); +#endif +} + + +int Poll(PollFd* fds, nfds_t numFds, int timeout) +{ +#if defined(__unix__) + return poll(fds, numFds, timeout); +#elif defined(_MSC_VER) + return WSAPoll(fds, numFds, timeout); +#endif +} + + +armnnUtils::Sockets::Socket Accept(Socket s, sockaddr* addr, socklen_t* addrlen, int flags) +{ +#if defined(__unix__) + return accept4(s, addr, addrlen, flags); +#elif defined(_MSC_VER) + return accept(s, addr, reinterpret_cast<int*>(addrlen)); +#endif +} + +} +} diff --git a/profiling/server/src/basePipeServer/BasePipeServer.cpp b/profiling/server/src/basePipeServer/BasePipeServer.cpp index fde5684160..1d5e0b6414 100644 --- a/profiling/server/src/basePipeServer/BasePipeServer.cpp +++ b/profiling/server/src/basePipeServer/BasePipeServer.cpp @@ -3,11 +3,12 @@ // SPDX-License-Identifier: MIT // +#include "BasePipeServer.hpp" + #include <iostream> #include <boost/cast.hpp> #include <vector> #include <iomanip> -#include "BasePipeServer.hpp" using namespace armnnUtils; diff --git a/profiling/server/src/basePipeServer/BasePipeServer.hpp b/profiling/server/src/basePipeServer/BasePipeServer.hpp index a150d76278..c03774e452 100644 --- a/profiling/server/src/basePipeServer/BasePipeServer.hpp +++ b/profiling/server/src/basePipeServer/BasePipeServer.hpp @@ -5,13 +5,13 @@ #pragma once -//#include <NetworkSockets> -#include <string> -#include <atomic> -#include "../../../../src/armnnUtils/NetworkSockets.hpp" +#include "common/include/NetworkSockets.hpp" #include "../../../../src/profiling/Packet.hpp" #include "common/include/SocketConnectionException.hpp" +#include <string> +#include <atomic> + namespace armnnProfiling { diff --git a/profiling/server/src/basePipeServer/ConnectionHandler.hpp b/profiling/server/src/basePipeServer/ConnectionHandler.hpp index e7317dc355..661935b885 100644 --- a/profiling/server/src/basePipeServer/ConnectionHandler.hpp +++ b/profiling/server/src/basePipeServer/ConnectionHandler.hpp @@ -5,7 +5,6 @@ #pragma once -#include "../../../../src/armnnUtils/NetworkSockets.hpp" #include "BasePipeServer.hpp" #include <string> |