1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2019 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 #include "IProfilingConnection.hpp" 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 #pragma once 11*89c4ff92SAndroid Build Coastguard Worker 12*89c4ff92SAndroid Build Coastguard Worker namespace arm 13*89c4ff92SAndroid Build Coastguard Worker { 14*89c4ff92SAndroid Build Coastguard Worker namespace pipe 15*89c4ff92SAndroid Build Coastguard Worker { 16*89c4ff92SAndroid Build Coastguard Worker 17*89c4ff92SAndroid Build Coastguard Worker class SocketProfilingConnection : public IProfilingConnection 18*89c4ff92SAndroid Build Coastguard Worker { 19*89c4ff92SAndroid Build Coastguard Worker public: 20*89c4ff92SAndroid Build Coastguard Worker SocketProfilingConnection(); 21*89c4ff92SAndroid Build Coastguard Worker bool IsOpen() const final; 22*89c4ff92SAndroid Build Coastguard Worker void Close() final; 23*89c4ff92SAndroid Build Coastguard Worker bool WritePacket(const unsigned char* buffer, uint32_t length) final; 24*89c4ff92SAndroid Build Coastguard Worker arm::pipe::Packet ReadPacket(uint32_t timeout) final; 25*89c4ff92SAndroid Build Coastguard Worker 26*89c4ff92SAndroid Build Coastguard Worker private: 27*89c4ff92SAndroid Build Coastguard Worker 28*89c4ff92SAndroid Build Coastguard Worker // Read a full packet from the socket. 29*89c4ff92SAndroid Build Coastguard Worker arm::pipe::Packet ReceivePacket(); 30*89c4ff92SAndroid Build Coastguard Worker 31*89c4ff92SAndroid Build Coastguard Worker #ifndef __APPLE__ 32*89c4ff92SAndroid Build Coastguard Worker // To indicate we want to use an abstract UDS ensure the first character of the address is 0. 33*89c4ff92SAndroid Build Coastguard Worker const char* m_GatorNamespace = "\0gatord_namespace"; 34*89c4ff92SAndroid Build Coastguard Worker #else 35*89c4ff92SAndroid Build Coastguard Worker // MACOSX does not support abstract UDS 36*89c4ff92SAndroid Build Coastguard Worker const char* m_GatorNamespace = "/tmp/gatord_namespace"; 37*89c4ff92SAndroid Build Coastguard Worker #endif 38*89c4ff92SAndroid Build Coastguard Worker #if !defined(ARMNN_DISABLE_SOCKETS) 39*89c4ff92SAndroid Build Coastguard Worker arm::pipe::PollFd m_Socket[1]{}; 40*89c4ff92SAndroid Build Coastguard Worker #endif 41*89c4ff92SAndroid Build Coastguard Worker }; 42*89c4ff92SAndroid Build Coastguard Worker 43*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe 44*89c4ff92SAndroid Build Coastguard Worker } // namespace arm 45