mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-socket/socket.c: implement accessors in C
This commit is contained in:
@@ -587,8 +587,6 @@ class Socket
|
||||
#def self.linger(family, level, optname, integer)
|
||||
#end
|
||||
|
||||
attr_reader :data, :family, :level, :optname
|
||||
|
||||
def bool
|
||||
@data.unpack('i')[0] != 0
|
||||
end
|
||||
|
||||
@@ -348,6 +348,30 @@ socket_option_init(mrb_state *mrb, mrb_value self)
|
||||
return self;
|
||||
}
|
||||
|
||||
static mrb_value
|
||||
socket_option_family(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
return mrb_iv_get(mrb, self, MRB_IVSYM(family));
|
||||
}
|
||||
|
||||
static mrb_value
|
||||
socket_option_level(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
return mrb_iv_get(mrb, self, MRB_IVSYM(level));
|
||||
}
|
||||
|
||||
static mrb_value
|
||||
socket_option_optname(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
return mrb_iv_get(mrb, self, MRB_IVSYM(optname));
|
||||
}
|
||||
|
||||
static mrb_value
|
||||
socket_option_data(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
return mrb_iv_get(mrb, self, MRB_IVSYM(data));
|
||||
}
|
||||
|
||||
static mrb_value
|
||||
mrb_basicsocket_getsockopt(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
@@ -960,6 +984,10 @@ mrb_mruby_socket_gem_init(mrb_state* mrb)
|
||||
|
||||
option = mrb_define_class_under(mrb, sock, "Option", mrb->object_class);
|
||||
mrb_define_method(mrb, option, "initialize", socket_option_init, MRB_ARGS_REQ(4));
|
||||
mrb_define_method(mrb, option, "family", socket_option_family, MRB_ARGS_REQ(0));
|
||||
mrb_define_method(mrb, option, "level", socket_option_level, MRB_ARGS_REQ(0));
|
||||
mrb_define_method(mrb, option, "optname", socket_option_optname, MRB_ARGS_REQ(0));
|
||||
mrb_define_method(mrb, option, "data", socket_option_data, MRB_ARGS_REQ(0));
|
||||
|
||||
constants = mrb_define_module_under(mrb, sock, "Constants");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user