LCOV - code coverage report
Current view: top level - source/common/network - io_socket_error_impl.cc (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 17 50 34.0 %
Date: 2024-01-05 06:35:25 Functions: 4 8 50.0 %

          Line data    Source code
       1             : #include "source/common/network/io_socket_error_impl.h"
       2             : 
       3             : #include "envoy/common/platform.h"
       4             : 
       5             : #include "source/common/common/assert.h"
       6             : #include "source/common/common/utility.h"
       7             : 
       8             : namespace Envoy {
       9             : namespace Network {
      10             : 
      11        1863 : Api::IoError::IoErrorCode IoSocketError::getErrorCode() const { return error_code_; }
      12             : 
      13           0 : std::string IoSocketError::getErrorDetails() const { return errorDetails(errno_); }
      14             : 
      15           0 : Api::IoErrorPtr IoSocketError::getIoSocketInvalidAddressError() {
      16           0 :   return Api::IoError::wrap(
      17           0 :       new IoSocketError(SOCKET_ERROR_NOT_SUP, Api::IoError::IoErrorCode::NoSupport));
      18           0 : }
      19             : 
      20          88 : Api::IoErrorPtr IoSocketError::create(int sys_errno) {
      21          88 :   return Api::IoError::wrap(new IoSocketError(sys_errno));
      22          88 : }
      23             : 
      24           0 : Api::IoErrorPtr IoSocketError::getIoSocketEbadfError() {
      25           0 :   return Api::IoError::wrap(new IoSocketError(SOCKET_ERROR_BADF, Api::IoError::IoErrorCode::BadFd));
      26           0 : }
      27             : 
      28        1690 : Api::IoErrorPtr IoSocketError::getIoSocketEagainError() {
      29        1690 :   static auto* instance = new IoSocketError(SOCKET_ERROR_AGAIN, Api::IoError::IoErrorCode::Again);
      30        1690 :   return Api::IoError::reusedStatic(instance);
      31        1690 : }
      32             : 
      33           0 : Api::IoCallUint64Result IoSocketError::ioResultSocketInvalidAddress() {
      34           0 :   return {0, getIoSocketInvalidAddressError()};
      35           0 : }
      36             : 
      37          88 : Api::IoError::IoErrorCode IoSocketError::errorCodeFromErrno(int sys_errno) {
      38          88 :   switch (sys_errno) {
      39           0 :   case SOCKET_ERROR_AGAIN:
      40           0 :     return IoErrorCode::Again;
      41           0 :   case SOCKET_ERROR_NOT_SUP:
      42           0 :     return IoErrorCode::NoSupport;
      43           0 :   case SOCKET_ERROR_AF_NO_SUP:
      44           0 :     return IoErrorCode::AddressFamilyNoSupport;
      45           0 :   case SOCKET_ERROR_IN_PROGRESS:
      46           0 :     return IoErrorCode::InProgress;
      47           0 :   case SOCKET_ERROR_PERM:
      48           0 :     return IoErrorCode::Permission;
      49           0 :   case SOCKET_ERROR_MSG_SIZE:
      50           0 :     return IoErrorCode::MessageTooBig;
      51           0 :   case SOCKET_ERROR_INTR:
      52           0 :     return IoErrorCode::Interrupt;
      53           0 :   case SOCKET_ERROR_ADDR_NOT_AVAIL:
      54           0 :     return IoErrorCode::AddressNotAvailable;
      55           0 :   case SOCKET_ERROR_BADF:
      56           0 :     return IoErrorCode::BadFd;
      57          55 :   case SOCKET_ERROR_CONNRESET:
      58          55 :     return IoErrorCode::ConnectionReset;
      59           0 :   case SOCKET_ERROR_NETUNREACH:
      60           0 :     return IoErrorCode::NetworkUnreachable;
      61           0 :   case SOCKET_ERROR_INVAL:
      62           0 :     return IoErrorCode::InvalidArgument;
      63          33 :   default:
      64          33 :     ENVOY_LOG_MISC(debug, "Unknown error code {} details {}", sys_errno, errorDetails(sys_errno));
      65          33 :     return IoErrorCode::UnknownError;
      66          88 :   }
      67          88 : }
      68             : 
      69             : } // namespace Network
      70             : } // namespace Envoy

Generated by: LCOV version 1.15