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 #pragma once 6*89c4ff92SAndroid Build Coastguard Worker 7*89c4ff92SAndroid Build Coastguard Worker #include <sstream> 8*89c4ff92SAndroid Build Coastguard Worker #include <stdexcept> 9*89c4ff92SAndroid Build Coastguard Worker #include <string> 10*89c4ff92SAndroid Build Coastguard Worker 11*89c4ff92SAndroid Build Coastguard Worker #include "NetworkSockets.hpp" 12*89c4ff92SAndroid Build Coastguard Worker 13*89c4ff92SAndroid Build Coastguard Worker namespace arm 14*89c4ff92SAndroid Build Coastguard Worker { 15*89c4ff92SAndroid Build Coastguard Worker 16*89c4ff92SAndroid Build Coastguard Worker namespace pipe 17*89c4ff92SAndroid Build Coastguard Worker { 18*89c4ff92SAndroid Build Coastguard Worker 19*89c4ff92SAndroid Build Coastguard Worker /// Socket Connection Exception for profiling 20*89c4ff92SAndroid Build Coastguard Worker class SocketConnectionException : public std::exception 21*89c4ff92SAndroid Build Coastguard Worker { 22*89c4ff92SAndroid Build Coastguard Worker public: SocketConnectionException(const std::string & message,arm::pipe::Socket socket)23*89c4ff92SAndroid Build Coastguard Worker explicit SocketConnectionException(const std::string& message 24*89c4ff92SAndroid Build Coastguard Worker #if !defined(ARMNN_DISABLE_SOCKETS) 25*89c4ff92SAndroid Build Coastguard Worker , arm::pipe::Socket socket 26*89c4ff92SAndroid Build Coastguard Worker #endif 27*89c4ff92SAndroid Build Coastguard Worker ) 28*89c4ff92SAndroid Build Coastguard Worker : m_Message(message), 29*89c4ff92SAndroid Build Coastguard Worker #if !defined(ARMNN_DISABLE_SOCKETS) 30*89c4ff92SAndroid Build Coastguard Worker m_Socket(socket), 31*89c4ff92SAndroid Build Coastguard Worker #endif 32*89c4ff92SAndroid Build Coastguard Worker m_ErrNo(-1) {}; 33*89c4ff92SAndroid Build Coastguard Worker SocketConnectionException(const std::string & message,arm::pipe::Socket socket,int errNo)34*89c4ff92SAndroid Build Coastguard Worker explicit SocketConnectionException(const std::string& message, 35*89c4ff92SAndroid Build Coastguard Worker #if !defined(ARMNN_DISABLE_SOCKETS) 36*89c4ff92SAndroid Build Coastguard Worker arm::pipe::Socket socket, 37*89c4ff92SAndroid Build Coastguard Worker #endif 38*89c4ff92SAndroid Build Coastguard Worker int errNo) 39*89c4ff92SAndroid Build Coastguard Worker : m_Message(message), 40*89c4ff92SAndroid Build Coastguard Worker #if !defined(ARMNN_DISABLE_SOCKETS) 41*89c4ff92SAndroid Build Coastguard Worker m_Socket(socket), 42*89c4ff92SAndroid Build Coastguard Worker #endif 43*89c4ff92SAndroid Build Coastguard Worker m_ErrNo(errNo) {}; 44*89c4ff92SAndroid Build Coastguard Worker 45*89c4ff92SAndroid Build Coastguard Worker /// @return - Error message of SocketProfilingConnection what() const46*89c4ff92SAndroid Build Coastguard Worker virtual const char* what() const noexcept override 47*89c4ff92SAndroid Build Coastguard Worker { 48*89c4ff92SAndroid Build Coastguard Worker return m_Message.c_str(); 49*89c4ff92SAndroid Build Coastguard Worker } 50*89c4ff92SAndroid Build Coastguard Worker 51*89c4ff92SAndroid Build Coastguard Worker /// @return - Socket File Descriptor of SocketProfilingConnection 52*89c4ff92SAndroid Build Coastguard Worker /// or '-1', an invalid file descriptor 53*89c4ff92SAndroid Build Coastguard Worker #if !defined(ARMNN_DISABLE_SOCKETS) GetSocketFd() const54*89c4ff92SAndroid Build Coastguard Worker arm::pipe::Socket GetSocketFd() const noexcept 55*89c4ff92SAndroid Build Coastguard Worker { 56*89c4ff92SAndroid Build Coastguard Worker return m_Socket; 57*89c4ff92SAndroid Build Coastguard Worker } 58*89c4ff92SAndroid Build Coastguard Worker #endif 59*89c4ff92SAndroid Build Coastguard Worker 60*89c4ff92SAndroid Build Coastguard Worker /// @return - errno of SocketProfilingConnection GetErrorNo() const61*89c4ff92SAndroid Build Coastguard Worker int GetErrorNo() const noexcept 62*89c4ff92SAndroid Build Coastguard Worker { 63*89c4ff92SAndroid Build Coastguard Worker return m_ErrNo; 64*89c4ff92SAndroid Build Coastguard Worker } 65*89c4ff92SAndroid Build Coastguard Worker 66*89c4ff92SAndroid Build Coastguard Worker private: 67*89c4ff92SAndroid Build Coastguard Worker std::string m_Message; 68*89c4ff92SAndroid Build Coastguard Worker #if !defined(ARMNN_DISABLE_SOCKETS) 69*89c4ff92SAndroid Build Coastguard Worker arm::pipe::Socket m_Socket; 70*89c4ff92SAndroid Build Coastguard Worker #endif 71*89c4ff92SAndroid Build Coastguard Worker int m_ErrNo; 72*89c4ff92SAndroid Build Coastguard Worker }; 73*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe 74*89c4ff92SAndroid Build Coastguard Worker } // namespace arm 75