Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 2 additions & 32 deletions ext/io/event/selector/epoll.c
Original file line number Diff line number Diff line change
Expand Up @@ -670,19 +670,6 @@ VALUE IO_Event_Selector_EPoll_io_read(VALUE self, VALUE fiber, VALUE io, VALUE b
return rb_ensure(io_read_loop, (VALUE)&io_read_arguments, io_read_ensure, (VALUE)&io_read_arguments);
}

VALUE IO_Event_Selector_EPoll_io_read_compatible(int argc, VALUE *argv, VALUE self)
{
rb_check_arity(argc, 4, 5);

VALUE _offset = SIZET2NUM(0);

if (argc == 5) {
_offset = argv[4];
}

return IO_Event_Selector_EPoll_io_read(self, argv[0], argv[1], argv[2], argv[3], _offset);
}

struct io_write_arguments {
VALUE self;
VALUE fiber;
Expand Down Expand Up @@ -768,19 +755,6 @@ VALUE IO_Event_Selector_EPoll_io_write(VALUE self, VALUE fiber, VALUE io, VALUE
return rb_ensure(io_write_loop, (VALUE)&io_write_arguments, io_write_ensure, (VALUE)&io_write_arguments);
}

VALUE IO_Event_Selector_EPoll_io_write_compatible(int argc, VALUE *argv, VALUE self)
{
rb_check_arity(argc, 4, 5);

VALUE _offset = SIZET2NUM(0);

if (argc == 5) {
_offset = argv[4];
}

return IO_Event_Selector_EPoll_io_write(self, argv[0], argv[1], argv[2], argv[3], _offset);
}

#endif

static
Expand Down Expand Up @@ -1081,13 +1055,9 @@ void Init_IO_Event_Selector_EPoll(VALUE IO_Event_Selector) {
rb_define_method(IO_Event_Selector_EPoll, "io_wait", IO_Event_Selector_EPoll_io_wait, 3);

#ifdef HAVE_RUBY_IO_BUFFER_H
rb_define_method(IO_Event_Selector_EPoll, "io_read", IO_Event_Selector_EPoll_io_read_compatible, -1);
rb_define_method(IO_Event_Selector_EPoll, "io_write", IO_Event_Selector_EPoll_io_write_compatible, -1);
rb_define_method(IO_Event_Selector_EPoll, "io_read", IO_Event_Selector_EPoll_io_read, 5);
rb_define_method(IO_Event_Selector_EPoll, "io_write", IO_Event_Selector_EPoll_io_write, 5);
#endif

// Once compatibility isn't a concern, we can do this:
// rb_define_method(IO_Event_Selector_EPoll, "io_read", IO_Event_Selector_EPoll_io_read, 5);
// rb_define_method(IO_Event_Selector_EPoll, "io_write", IO_Event_Selector_EPoll_io_write, 5);

rb_define_method(IO_Event_Selector_EPoll, "process_wait", IO_Event_Selector_EPoll_process_wait, 3);
}
30 changes: 2 additions & 28 deletions ext/io/event/selector/kqueue.c
Original file line number Diff line number Diff line change
Expand Up @@ -668,19 +668,6 @@ VALUE IO_Event_Selector_KQueue_io_read(VALUE self, VALUE fiber, VALUE io, VALUE
return rb_ensure(io_read_loop, (VALUE)&io_read_arguments, io_read_ensure, (VALUE)&io_read_arguments);
}

static VALUE IO_Event_Selector_KQueue_io_read_compatible(int argc, VALUE *argv, VALUE self)
{
rb_check_arity(argc, 4, 5);

VALUE _offset = SIZET2NUM(0);

if (argc == 5) {
_offset = argv[4];
}

return IO_Event_Selector_KQueue_io_read(self, argv[0], argv[1], argv[2], argv[3], _offset);
}

struct io_write_arguments {
VALUE self;
VALUE fiber;
Expand Down Expand Up @@ -776,19 +763,6 @@ VALUE IO_Event_Selector_KQueue_io_write(VALUE self, VALUE fiber, VALUE io, VALUE
return rb_ensure(io_write_loop, (VALUE)&io_write_arguments, io_write_ensure, (VALUE)&io_write_arguments);
}

static VALUE IO_Event_Selector_KQueue_io_write_compatible(int argc, VALUE *argv, VALUE self)
{
rb_check_arity(argc, 4, 5);

VALUE _offset = SIZET2NUM(0);

if (argc == 5) {
_offset = argv[4];
}

return IO_Event_Selector_KQueue_io_write(self, argv[0], argv[1], argv[2], argv[3], _offset);
}

#endif

static
Expand Down Expand Up @@ -1092,8 +1066,8 @@ void Init_IO_Event_Selector_KQueue(VALUE IO_Event_Selector) {
rb_define_method(IO_Event_Selector_KQueue, "io_wait", IO_Event_Selector_KQueue_io_wait, 3);

#ifdef HAVE_RUBY_IO_BUFFER_H
rb_define_method(IO_Event_Selector_KQueue, "io_read", IO_Event_Selector_KQueue_io_read_compatible, -1);
rb_define_method(IO_Event_Selector_KQueue, "io_write", IO_Event_Selector_KQueue_io_write_compatible, -1);
rb_define_method(IO_Event_Selector_KQueue, "io_read", IO_Event_Selector_KQueue_io_read, 5);
rb_define_method(IO_Event_Selector_KQueue, "io_write", IO_Event_Selector_KQueue_io_write, 5);
#endif

rb_define_method(IO_Event_Selector_KQueue, "process_wait", IO_Event_Selector_KQueue_process_wait, 3);
Expand Down
30 changes: 2 additions & 28 deletions ext/io/event/selector/uring.c
Original file line number Diff line number Diff line change
Expand Up @@ -747,19 +747,6 @@ VALUE IO_Event_Selector_URing_io_read(VALUE self, VALUE fiber, VALUE io, VALUE b
return rb_fiber_scheduler_io_result(total, 0);
}

static VALUE IO_Event_Selector_URing_io_read_compatible(int argc, VALUE *argv, VALUE self)
{
rb_check_arity(argc, 4, 5);

VALUE _offset = SIZET2NUM(0);

if (argc == 5) {
_offset = argv[4];
}

return IO_Event_Selector_URing_io_read(self, argv[0], argv[1], argv[2], argv[3], _offset);
}

VALUE IO_Event_Selector_URing_io_pread(VALUE self, VALUE fiber, VALUE io, VALUE buffer, VALUE _from, VALUE _length, VALUE _offset) {
struct IO_Event_Selector_URing *selector = NULL;
TypedData_Get_Struct(self, struct IO_Event_Selector_URing, &IO_Event_Selector_URing_Type, selector);
Expand Down Expand Up @@ -915,19 +902,6 @@ VALUE IO_Event_Selector_URing_io_write(VALUE self, VALUE fiber, VALUE io, VALUE
return rb_fiber_scheduler_io_result(total, 0);
}

static VALUE IO_Event_Selector_URing_io_write_compatible(int argc, VALUE *argv, VALUE self)
{
rb_check_arity(argc, 4, 5);

VALUE _offset = SIZET2NUM(0);

if (argc == 5) {
_offset = argv[4];
}

return IO_Event_Selector_URing_io_write(self, argv[0], argv[1], argv[2], argv[3], _offset);
}

VALUE IO_Event_Selector_URing_io_pwrite(VALUE self, VALUE fiber, VALUE io, VALUE buffer, VALUE _from, VALUE _length, VALUE _offset) {
struct IO_Event_Selector_URing *selector = NULL;
TypedData_Get_Struct(self, struct IO_Event_Selector_URing, &IO_Event_Selector_URing_Type, selector);
Expand Down Expand Up @@ -1249,8 +1223,8 @@ void Init_IO_Event_Selector_URing(VALUE IO_Event_Selector) {
rb_define_method(IO_Event_Selector_URing, "io_wait", IO_Event_Selector_URing_io_wait, 3);

#ifdef HAVE_RUBY_IO_BUFFER_H
rb_define_method(IO_Event_Selector_URing, "io_read", IO_Event_Selector_URing_io_read_compatible, -1);
rb_define_method(IO_Event_Selector_URing, "io_write", IO_Event_Selector_URing_io_write_compatible, -1);
rb_define_method(IO_Event_Selector_URing, "io_read", IO_Event_Selector_URing_io_read, 5);
rb_define_method(IO_Event_Selector_URing, "io_write", IO_Event_Selector_URing_io_write, 5);
rb_define_method(IO_Event_Selector_URing, "io_pread", IO_Event_Selector_URing_io_pread, 6);
rb_define_method(IO_Event_Selector_URing, "io_pwrite", IO_Event_Selector_URing_io_pwrite, 6);
#endif
Expand Down
8 changes: 4 additions & 4 deletions test/io/event/selector.rb
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,7 @@ def transfer

fiber = Fiber.new do
events << :io_read
offset = selector.io_read(Fiber.current, local, buffer, message.bytesize)
offset = selector.io_read(Fiber.current, local, buffer, message.bytesize, 0)
expect(buffer.get_string(0, offset)).to be == message
end

Expand All @@ -499,7 +499,7 @@ def transfer

fiber = Fiber.new do
events << :io_read
offset = selector.io_read(Fiber.current, local, buffer, message.bytesize)
offset = selector.io_read(Fiber.current, local, buffer, message.bytesize, 0)
expect(buffer.get_string(0, offset)).to be == message
end

Expand All @@ -521,7 +521,7 @@ def transfer
return unless selector.respond_to?(:io_read)

fiber = Fiber.new do
offset = selector.io_read(Fiber.current, local, buffer, message.bytesize)
offset = selector.io_read(Fiber.current, local, buffer, message.bytesize, 0)
expect(buffer.get_string(0, offset)).to be == message
sleep(0.001)
end
Expand Down Expand Up @@ -559,7 +559,7 @@ def transfer
fiber = Fiber.new do
events << :io_write
buffer = IO::Buffer.for(message.dup)
result = selector.io_write(Fiber.current, local, buffer, buffer.size)
result = selector.io_write(Fiber.current, local, buffer, buffer.size, 0)
expect(result).to be == message.bytesize
local.close
end
Expand Down
12 changes: 6 additions & 6 deletions test/io/event/selector/buffered_io.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@

writer = Fiber.new do
buffer = IO::Buffer.new(128)
expect(selector.io_write(Fiber.current, output, buffer, 128)).to be == 128
expect(selector.io_write(Fiber.current, output, buffer, 128, 0)).to be == 128
end

reader = Fiber.new do
buffer = IO::Buffer.new(64)
expect(selector.io_read(Fiber.current, input, buffer, 1)).to be == 64
expect(selector.io_read(Fiber.current, input, buffer, 1, 0)).to be == 64
end

reader.transfer
Expand All @@ -39,7 +39,7 @@
skip_if_ruby_platform(/mswin|mingw|cygwin/)

buffer = IO::Buffer.new(1).slice(0, 0)
expect(selector.io_write(Fiber.current, output, buffer, 0)).to be == 0
expect(selector.io_write(Fiber.current, output, buffer, 0, 0)).to be == 0
end

it "can read and write at the specified offset" do
Expand Down Expand Up @@ -70,7 +70,7 @@

writer = Fiber.new do
buffer = IO::Buffer.new(64)
result = selector.io_write(Fiber.current, input, buffer, 64)
result = selector.io_write(Fiber.current, input, buffer, 64, 0)
expect(result).to be < 0
end

Expand All @@ -88,7 +88,7 @@
output.close

reader = Fiber.new do
result = selector.io_read(Fiber.current, input, buffer, 0)
result = selector.io_read(Fiber.current, input, buffer, 0, 0)
end

reader.transfer
Expand All @@ -109,7 +109,7 @@ def be_again?
result = nil

reader = Fiber.new do
result = selector.io_read(Fiber.current, input, buffer, 0)
result = selector.io_read(Fiber.current, input, buffer, 0, 0)
end

reader.transfer
Expand Down
4 changes: 2 additions & 2 deletions test/io/event/selector/cancellable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
buffer = IO::Buffer.new(64)

10.times do
expect{selector.io_read(Fiber.current, input, buffer, 1)}.to raise_exception(Interrupt)
expect{selector.io_read(Fiber.current, input, buffer, 1, 0)}.to raise_exception(Interrupt)
end
end

Expand All @@ -44,7 +44,7 @@

10.times do
expect{selector.io_wait(Fiber.current, input, IO::READABLE)}.to raise_exception(Interrupt)
selector.io_read(Fiber.current, input, buffer, 1)
selector.io_read(Fiber.current, input, buffer, 1, 0)
end
end

Expand Down
4 changes: 2 additions & 2 deletions test/io/event/selector/file_io.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@
writer = Fiber.new do
buffer = IO::Buffer.new(128)
file.seek(0)
write_result = selector.io_write(Fiber.current, file, buffer, 128)
write_result = selector.io_write(Fiber.current, file, buffer, 128, 0)
end

reader = Fiber.new do
buffer = IO::Buffer.new(64)
file.seek(0)

# The read will return 0 if the data is not written yet:
read_result = selector.io_read(Fiber.current, file, buffer, 0)
read_result = selector.io_read(Fiber.current, file, buffer, 0, 0)
end

writer.transfer
Expand Down
2 changes: 1 addition & 1 deletion test/io/event/selector/write_deadlock.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
# Writer fiber that should hit EAGAIN and wait for WRITABLE
writer = Fiber.new do
buffer = IO::Buffer.for("test" * 64) # 256 bytes
@selector.io_write(Fiber.current, local, buffer, buffer.size)
@selector.io_write(Fiber.current, local, buffer, buffer.size, 0)
write_completed = true
end

Expand Down
Loading