Method: Netlink::Socket#recvmsg
- Defined in:
- lib/netlink/socket.rb
#recvmsg(maxmesglen = nil, flags = 0) ⇒ Array(String, Addrinfo, Integer, NlMsgHdr)
Receive a message
103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/netlink/socket.rb', line 103 def recvmsg(maxmesglen=nil, flags=0) maxmesglen ||= @default_buffer_size maxlen = maxmesglen + NlMsgHdr::SIZE mesg, sender_ai, = @socket.recvmsg(maxlen, flags) hdr = NlMsgHdr.from_string(mesg.slice!(0, NlMsgHdr::SIZE)) if hdr.type == NLMSG_ERROR mesg = NlMsgError.from_string(mesg) raise Error, "Error #{mesg.error_code} for message with seq #{mesg.orig_header.seq} from pid #{mesg.orig_header.pid}" unless mesg.ack? end mesg = mesg[0, maxmesglen] if mesg.is_a?(String) [mesg, Addrinfo.new(sender_ai.to_sockaddr), hdr] end |