Uploaded image for project: 'Mesos'
  1. Mesos
  2. MESOS-1916

Create utility class for storing sockaddr

    XMLWordPrintableJSON

Details

    • Task
    • Status: Resolved
    • Minor
    • Resolution: Won't Fix
    • None
    • None
    • libprocess
    • None

    Description

      // Convenience struct for when you need a |struct sockaddr|.
      struct SockaddrStorage {
        SockaddrStorage() : addr_len(sizeof(addr_storage)),
                            addr(reinterpret_cast<struct sockaddr*>(&addr_storage)) {}
        SockaddrStorage(const SockaddrStorage& other);
        void operator=(const SockaddrStorage& other);
      
        struct sockaddr_storage addr_storage;
        socklen_t addr_len;
        struct sockaddr* const addr;
      };
      SockaddrStorage::SockaddrStorage(const SockaddrStorage& other)
          : addr_len(other.addr_len),
            addr(reinterpret_cast<struct sockaddr*>(&addr_storage)) {
        memcpy(addr, other.addr, addr_len);
      }
      
      void SockaddrStorage::operator=(const SockaddrStorage& other) {
        addr_len = other.addr_len;
        // addr is already set to &this->addr_storage by default ctor.
        memcpy(addr, other.addr, addr_len);
      }
      

      (shamelessly borrowed from http://src.chromium.org/svn/trunk/src/net/base/net_util.h/cc)

      Attachments

        Issue Links

          Activity

            People

              evelinad Evelina Dumitrescu
              dhamon Dominic Hamon
              Dominic Hamon Dominic Hamon
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: