Skip to content
Snippets Groups Projects
Select Git revision
  • 55a4f51605f9f39df7811d280bb3dc4d1ae7877d
  • develop default protected
  • feature/advection
  • feature/composite-scheme-other-fluxes
  • origin/stage/bouguettaia
  • save_clemence
  • feature/local-dt-fsi
  • feature/variational-hydro
  • feature/gmsh-reader
  • feature/reconstruction
  • feature/kinetic-schemes
  • feature/composite-scheme-sources
  • feature/serraille
  • feature/composite-scheme
  • hyperplastic
  • feature/polynomials
  • feature/gks
  • feature/implicit-solver-o2
  • feature/coupling_module
  • feature/implicit-solver
  • feature/merge-local-dt-fsi
  • v0.5.0 protected
  • v0.4.1 protected
  • v0.4.0 protected
  • v0.3.0 protected
  • v0.2.0 protected
  • v0.1.0 protected
  • Kidder
  • v0.0.4 protected
  • v0.0.3 protected
  • v0.0.2 protected
  • v0 protected
  • v0.0.1 protected
33 results

SchemeModule.cpp

Blame
  • Socket.cpp 6.02 KiB
    #include <utils/Exceptions.hpp>
    #include <utils/Socket.hpp>
    
    #include <utils/Messenger.hpp>
    
    #include <arpa/inet.h>
    #include <cstring>
    #include <iostream>
    #include <netdb.h>
    #include <netinet/in.h>
    #include <stdexcept>
    #include <sys/socket.h>
    #include <unistd.h>
    
    class Socket::Internals
    {
     private:
      int m_socket_fd;
      sockaddr_in m_address;
    
      const bool m_is_server_socket;
    
     public:
      friend Socket createServerSocket(int port_number);
      friend Socket acceptClientSocket(const Socket& server);
      friend Socket connectServerSocket(const std::string& server_name, int port_number);
    
      friend std::ostream&
      operator<<(std::ostream& os, const Socket::Internals& internals)
      {
        // This function's coverage is not performed since it's quite
        // complex to create its various conditions
        //
        // LCOV_EXCL_START
        char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
        if (::getnameinfo(reinterpret_cast<const sockaddr*>(&internals.m_address), sizeof(internals.m_address), hbuf,
                          sizeof(hbuf), sbuf, sizeof(sbuf), NI_NAMEREQD) == 0) {
          os << hbuf << ':' << sbuf;
        } else if (::getnameinfo(reinterpret_cast<const sockaddr*>(&internals.m_address), sizeof(internals.m_address), hbuf,
                                 sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST) == 0) {
          if (std ::string{hbuf} == "0.0.0.0") {
            if (::gethostname(hbuf, NI_MAXHOST) == 0) {
              os << hbuf << ':' << sbuf;
            } else {
              os << "localhost:" << sbuf;
            }
          } else {
            os << hbuf << ':' << sbuf;
          }
        } else {
          os << "<unknown host>";
        }
        // LCOV_EXCL_STOP
        return os;
      }
    
      bool
      isServerSocket() const
      {
        return m_is_server_socket;
      }
    
      int
      portNumber() const
      {
        return ntohs(m_address.sin_port);
      }
    
      int
      fileDescriptor() const