Skip to main content

io_uring 0.1.1 copy "io_uring: ^0.1.1" to clipboard
io_uring: ^0.1.1 copied to clipboard

A pure-Dart, syscall-level interface to Linux io_uring.

example/io_uring_example.dart

import 'dart:convert';
import 'dart:io';

import 'package:io_uring/io_uring.dart';

void main() {
  if (!Platform.isLinux) {
    stderr.writeln('io_uring is Linux-only; run this example in WSL or Linux.');
    exitCode = 1;
    return;
  }

  final directory = Directory.systemTemp.createTempSync('io_uring_example_');
  final file = File('${directory.path}/hello.txt')
    ..writeAsStringSync('hello from io_uring\n');

  final ring = IoUring(entries: 8);
  final buffer = UringBuffer.allocate(256);
  final fd = Posix.open(file.path);

  try {
    ring.push(
      ReadOp(fd: fd, buffer: buffer.pointer, length: buffer.length),
      userData: 1,
    );
    ring.submitAndWait(1);

    final cqe = ring.waitCqe();
    if (cqe.isError) {
      stderr.writeln('read failed with errno ${cqe.errno}');
      exitCode = 1;
      return;
    }
    stdout.write(utf8.decode(buffer.bytes.sublist(0, cqe.result)));
    stdout.writeln('ring: $ring');
  } finally {
    ring.close();
    buffer.dispose();
    Posix.close(fd);
    directory.deleteSync(recursive: true);
  }
}
0
likes
160
points
551
downloads

Documentation

API reference

Publisher

verified publisherunk404.com

Weekly Downloads

A pure-Dart, syscall-level interface to Linux io_uring.

Repository (GitHub)
View/report issues

Topics

#io #linux #syscalls

License

MIT (license)

More

Packages that depend on io_uring