xref: /aosp_15_r20/external/armnn/profiling/common/src/NetworkSockets.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #if !defined(ARMNN_DISABLE_SOCKETS)
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker #include <common/include/NetworkSockets.hpp>
9*89c4ff92SAndroid Build Coastguard Worker 
10*89c4ff92SAndroid Build Coastguard Worker #if defined(__unix__) || defined(__APPLE__)
11*89c4ff92SAndroid Build Coastguard Worker #include <unistd.h>
12*89c4ff92SAndroid Build Coastguard Worker #include <fcntl.h>
13*89c4ff92SAndroid Build Coastguard Worker #endif
14*89c4ff92SAndroid Build Coastguard Worker 
15*89c4ff92SAndroid Build Coastguard Worker #include <common/include/Conversion.hpp>
16*89c4ff92SAndroid Build Coastguard Worker #include <common/include/IgnoreUnused.hpp>
17*89c4ff92SAndroid Build Coastguard Worker #include <common/include/NumericCast.hpp>
18*89c4ff92SAndroid Build Coastguard Worker 
19*89c4ff92SAndroid Build Coastguard Worker namespace arm
20*89c4ff92SAndroid Build Coastguard Worker {
21*89c4ff92SAndroid Build Coastguard Worker namespace pipe
22*89c4ff92SAndroid Build Coastguard Worker {
23*89c4ff92SAndroid Build Coastguard Worker 
Initialize()24*89c4ff92SAndroid Build Coastguard Worker bool Initialize()
25*89c4ff92SAndroid Build Coastguard Worker {
26*89c4ff92SAndroid Build Coastguard Worker #if defined(__unix__) || defined(__APPLE__)
27*89c4ff92SAndroid Build Coastguard Worker     return true;
28*89c4ff92SAndroid Build Coastguard Worker #elif defined(_MSC_VER) || defined(__MINGW32__)
29*89c4ff92SAndroid Build Coastguard Worker     WSADATA wsaData;
30*89c4ff92SAndroid Build Coastguard Worker     return WSAStartup(MAKEWORD(2, 2), &wsaData) == 0;
31*89c4ff92SAndroid Build Coastguard Worker #endif
32*89c4ff92SAndroid Build Coastguard Worker }
33*89c4ff92SAndroid Build Coastguard Worker 
Close(Socket s)34*89c4ff92SAndroid Build Coastguard Worker int Close(Socket s)
35*89c4ff92SAndroid Build Coastguard Worker {
36*89c4ff92SAndroid Build Coastguard Worker #if defined(__unix__) || defined(__APPLE__)
37*89c4ff92SAndroid Build Coastguard Worker     return close(s);
38*89c4ff92SAndroid Build Coastguard Worker #elif defined(_MSC_VER) || defined(__MINGW32__)
39*89c4ff92SAndroid Build Coastguard Worker     return closesocket(s);
40*89c4ff92SAndroid Build Coastguard Worker #endif
41*89c4ff92SAndroid Build Coastguard Worker }
42*89c4ff92SAndroid Build Coastguard Worker 
43*89c4ff92SAndroid Build Coastguard Worker 
SetNonBlocking(Socket s)44*89c4ff92SAndroid Build Coastguard Worker bool SetNonBlocking(Socket s)
45*89c4ff92SAndroid Build Coastguard Worker {
46*89c4ff92SAndroid Build Coastguard Worker #if defined(__unix__) || defined(__APPLE__)
47*89c4ff92SAndroid Build Coastguard Worker     const int currentFlags = fcntl(s, F_GETFL);
48*89c4ff92SAndroid Build Coastguard Worker     return fcntl(s, F_SETFL, currentFlags | O_NONBLOCK) == 0;
49*89c4ff92SAndroid Build Coastguard Worker #elif defined(_MSC_VER)
50*89c4ff92SAndroid Build Coastguard Worker     u_long mode = 1;
51*89c4ff92SAndroid Build Coastguard Worker     return ioctlsocket(s, FIONBIO, &mode) == 0;
52*89c4ff92SAndroid Build Coastguard Worker #elif defined(__MINGW32__)
53*89c4ff92SAndroid Build Coastguard Worker     u_long mode = 1;
54*89c4ff92SAndroid Build Coastguard Worker     return ioctlsocket(s, arm::pipe::numeric_cast<long>(FIONBIO), &mode) == 0;
55*89c4ff92SAndroid Build Coastguard Worker #endif
56*89c4ff92SAndroid Build Coastguard Worker }
57*89c4ff92SAndroid Build Coastguard Worker 
58*89c4ff92SAndroid Build Coastguard Worker 
Write(Socket s,const void * buf,size_t len)59*89c4ff92SAndroid Build Coastguard Worker long Write(Socket s, const void* buf, size_t len)
60*89c4ff92SAndroid Build Coastguard Worker {
61*89c4ff92SAndroid Build Coastguard Worker #if defined(__unix__) || defined(__APPLE__)
62*89c4ff92SAndroid Build Coastguard Worker     return write(s, buf, len);
63*89c4ff92SAndroid Build Coastguard Worker #elif defined(_MSC_VER) || defined(__MINGW32__)
64*89c4ff92SAndroid Build Coastguard Worker     return send(s, static_cast<const char*>(buf), static_cast<int>(len), 0);
65*89c4ff92SAndroid Build Coastguard Worker #endif
66*89c4ff92SAndroid Build Coastguard Worker }
67*89c4ff92SAndroid Build Coastguard Worker 
68*89c4ff92SAndroid Build Coastguard Worker 
Read(Socket s,void * buf,size_t len)69*89c4ff92SAndroid Build Coastguard Worker long Read(Socket s, void* buf, size_t len)
70*89c4ff92SAndroid Build Coastguard Worker {
71*89c4ff92SAndroid Build Coastguard Worker #if defined(__unix__) || defined(__APPLE__)
72*89c4ff92SAndroid Build Coastguard Worker     return read(s, buf, len);
73*89c4ff92SAndroid Build Coastguard Worker #elif defined(_MSC_VER) || defined(__MINGW32__)
74*89c4ff92SAndroid Build Coastguard Worker     return recv(s, static_cast<char*>(buf), static_cast<int>(len), 0);
75*89c4ff92SAndroid Build Coastguard Worker #endif
76*89c4ff92SAndroid Build Coastguard Worker }
77*89c4ff92SAndroid Build Coastguard Worker 
Ioctl(Socket s,unsigned long int cmd,void * arg)78*89c4ff92SAndroid Build Coastguard Worker int Ioctl(Socket s, unsigned long int cmd, void* arg)
79*89c4ff92SAndroid Build Coastguard Worker {
80*89c4ff92SAndroid Build Coastguard Worker #if defined(__unix__) || defined(__APPLE__)
81*89c4ff92SAndroid Build Coastguard Worker     ARM_PIPE_NO_CONVERSION_WARN_BEGIN
82*89c4ff92SAndroid Build Coastguard Worker     return ioctl(s, static_cast<int>(cmd), arg);
83*89c4ff92SAndroid Build Coastguard Worker     ARM_PIPE_NO_CONVERSION_WARN_END
84*89c4ff92SAndroid Build Coastguard Worker #elif defined(_MSC_VER) || defined(__MINGW32__)
85*89c4ff92SAndroid Build Coastguard Worker     ARM_PIPE_NO_CONVERSION_WARN_BEGIN
86*89c4ff92SAndroid Build Coastguard Worker     return ioctlsocket(s, cmd, static_cast<u_long*>(arg));
87*89c4ff92SAndroid Build Coastguard Worker     ARM_PIPE_NO_CONVERSION_WARN_END
88*89c4ff92SAndroid Build Coastguard Worker #endif
89*89c4ff92SAndroid Build Coastguard Worker }
90*89c4ff92SAndroid Build Coastguard Worker 
91*89c4ff92SAndroid Build Coastguard Worker 
Poll(PollFd * fds,nfds_t numFds,int timeout)92*89c4ff92SAndroid Build Coastguard Worker int Poll(PollFd* fds, nfds_t numFds, int timeout)
93*89c4ff92SAndroid Build Coastguard Worker {
94*89c4ff92SAndroid Build Coastguard Worker #if defined(__unix__) || defined(__APPLE__)
95*89c4ff92SAndroid Build Coastguard Worker     return poll(fds, numFds, timeout);
96*89c4ff92SAndroid Build Coastguard Worker #elif defined(_MSC_VER) || defined(__MINGW32__)
97*89c4ff92SAndroid Build Coastguard Worker     return WSAPoll(fds, arm::pipe::numeric_cast<unsigned long>(numFds), timeout);
98*89c4ff92SAndroid Build Coastguard Worker #endif
99*89c4ff92SAndroid Build Coastguard Worker }
100*89c4ff92SAndroid Build Coastguard Worker 
101*89c4ff92SAndroid Build Coastguard Worker 
Accept(Socket s,sockaddr * addr,socklen_t * addrlen,int flags)102*89c4ff92SAndroid Build Coastguard Worker arm::pipe::Socket Accept(Socket s, sockaddr* addr, socklen_t* addrlen, int flags)
103*89c4ff92SAndroid Build Coastguard Worker {
104*89c4ff92SAndroid Build Coastguard Worker #if defined(__unix__)
105*89c4ff92SAndroid Build Coastguard Worker     return accept4(s, addr, addrlen, flags);
106*89c4ff92SAndroid Build Coastguard Worker #elif defined(__APPLE__)
107*89c4ff92SAndroid Build Coastguard Worker     IgnoreUnused(flags);
108*89c4ff92SAndroid Build Coastguard Worker     return accept(s, addr, addrlen);
109*89c4ff92SAndroid Build Coastguard Worker #elif defined(_MSC_VER) || defined(__MINGW32__)
110*89c4ff92SAndroid Build Coastguard Worker     IgnoreUnused(flags);
111*89c4ff92SAndroid Build Coastguard Worker     return accept(s, addr, reinterpret_cast<int*>(addrlen));
112*89c4ff92SAndroid Build Coastguard Worker #endif
113*89c4ff92SAndroid Build Coastguard Worker }
114*89c4ff92SAndroid Build Coastguard Worker 
115*89c4ff92SAndroid Build Coastguard Worker } // pipe
116*89c4ff92SAndroid Build Coastguard Worker } // arm
117*89c4ff92SAndroid Build Coastguard Worker 
118*89c4ff92SAndroid Build Coastguard Worker #endif
119