2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   42#include "net/un/dgram/Socket.h" 
   44#include "net/phy/dgram/PeerSocket.hpp"  
   45#include "net/un/phy/PhysicalSocket.hpp" 
   47#ifndef DOXYGEN_SHOULD_SKIP_THIS 
   57        : Super
(SOCK_DGRAM
, 0
) {
 
   70            char control[CMSG_SPACE(
sizeof(
int))] = {};
 
   77        msg.msg_control = control_un.control;
 
   78        msg.msg_controllen = 
sizeof(control_un.control);
 
   85        msg.msg_iov[0].iov_base = &ptr;
 
   86        msg.msg_iov[0].iov_len = 1;
 
   88        cmsghdr* cmptr = CMSG_FIRSTHDR(&msg);
 
   89        cmptr->cmsg_level = SOL_SOCKET;
 
   90        cmptr->cmsg_type = SCM_RIGHTS;
 
   91        *
reinterpret_cast<
int*>(CMSG_DATA(cmptr)) = sendfd;
 
   92        cmptr->cmsg_len = CMSG_LEN(
sizeof(
int));
 
  100            char control[CMSG_SPACE(
sizeof(
int))] = {};
 
  104        msg.msg_control = control_un.control;
 
  105        msg.msg_controllen = 
sizeof(control_un.control);
 
  107        msg.msg_name = 
nullptr;
 
  115        msg.msg_iov[0].iov_base = &ptr;
 
  116        msg.msg_iov[0].iov_len = 1;
 
  121            cmsghdr* cmptr = 
nullptr;
 
  123            if ((cmptr = CMSG_FIRSTHDR(&msg)) != 
nullptr && cmptr->cmsg_len == CMSG_LEN(
sizeof(
int))) {
 
  124                if (cmptr->cmsg_level != SOL_SOCKET || cmptr->cmsg_type != SCM_RIGHTS) {
 
  129                    *recvfd = *
reinterpret_cast<
int*>(CMSG_DATA(cmptr));
 
const SockLen & getSockAddrLen() const
const sockaddr & getSockAddr()
ssize_t recvFd(int *recvfd)
ssize_t sendFd(SocketAddress &&destAddress, int sendfd)
ssize_t sendFd(SocketAddress &destAddress, int sendfd)
PhysicalSocket(int type, int protocol)