From 9937f9359ac4eeefc3535b66eddddd1b4f067c54 Mon Sep 17 00:00:00 2001 From: Finn Williams Date: Wed, 29 Apr 2020 12:00:24 +0100 Subject: IVGCVSW-4732 Move NetworkSockets class needs to profiling/common Signed-off-by: Finn Williams Change-Id: Ie1bd73e6c1818277943e70eaf73b4d9a26da4758 --- profiling/common/include/NetworkSockets.hpp | 59 +++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 profiling/common/include/NetworkSockets.hpp (limited to 'profiling/common/include/NetworkSockets.hpp') 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 +#include +#include +#include +#elif defined(_MSC_VER) +#include +#include +#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); + +} +} -- cgit v1.2.1