Method: Socket::AncillaryData#initialize
- Defined in:
- ancdata.c
#Socket::AncillaryData.new(family, cmsg_level, cmsg_type, cmsg_data) ⇒ Object
family should be an integer, a string or a symbol.
-
Socket::AF_INET, “AF_INET”, “INET”, :AF_INET, :INET
-
Socket::AF_UNIX, “AF_UNIX”, “UNIX”, :AF_UNIX, :UNIX
-
etc.
cmsg_level should be an integer, a string or a symbol.
-
Socket::SOL_SOCKET, “SOL_SOCKET”, “SOCKET”, :SOL_SOCKET and :SOCKET
-
Socket::IPPROTO_IP, “IP” and :IP
-
Socket::IPPROTO_IPV6, “IPV6” and :IPV6
-
Socket::IPPROTO_TCP, “TCP” and :TCP
-
etc.
cmsg_type should be an integer, a string or a symbol. If a string/symbol is specified, it is interpreted depend on cmsg_level.
-
Socket::SCM_RIGHTS, “SCM_RIGHTS”, “RIGHTS”, :SCM_RIGHTS, :RIGHTS for SOL_SOCKET
-
Socket::IP_RECVTTL, “RECVTTL” and :RECVTTL for IPPROTO_IP
-
Socket::IPV6_PKTINFO, “PKTINFO” and :PKTINFO for IPPROTO_IPV6
-
etc.
cmsg_data should be a string.
p Socket::AncillaryData.new(:INET, :TCP, :NODELAY, "")
#=> #<Socket::AncillaryData: INET TCP NODELAY "">
p Socket::AncillaryData.new(:INET6, :IPV6, :PKTINFO, "")
#=> #<Socket::AncillaryData: INET6 IPV6 PKTINFO "">
74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'ancdata.c', line 74
static VALUE
ancillary_initialize(VALUE self, VALUE vfamily, VALUE vlevel, VALUE vtype, VALUE data)
{
int family = rsock_family_arg(vfamily);
int level = rsock_level_arg(family, vlevel);
int type = rsock_cmsg_type_arg(family, level, vtype);
StringValue(data);
rb_ivar_set(self, rb_intern("family"), INT2NUM(family));
rb_ivar_set(self, rb_intern("level"), INT2NUM(level));
rb_ivar_set(self, rb_intern("type"), INT2NUM(type));
rb_ivar_set(self, rb_intern("data"), data);
return self;
}
|