olin icon indicating copy to clipboard operation
olin copied to clipboard

Sub-descriptors, control descriptors, or another such term

Open Xe opened this issue 5 years ago • 1 comments

A thought: abi.File should be expanded to contain the idea of a "sub-descriptor", "control descriptor" or another such term. This "sub-descriptor" would fulfill the place of ioctl, accept, stat and other more complicated syscalls. Programs could read/write any structured data in plain human-readable text or msgpack.

This would enable things like the following:

const fout = try Resource.open("file:///log.txt");
const fout_meta = try fout.control("meta"); // helper method?
const delta = "mode=0600";
const n = try fout_meta.write(delta.ptr, delta.len);
const l = try Resource.open("tcp://0.0.0.0:90?mode=host");
for {
  const client = try l.control("accept");
  const client_meta = try client.control("meta");
  // read IP address on first line and log?
  // handle request
  client.close();
}

Xe avatar Apr 15 '19 03:04 Xe

"control descriptor" sounds good to me. I'm not sure about the argument in .control("something"). I feel like the platform should multiplex key-value requests written to the control descriptor by itself somehow, and the caller shouldn't really be interested in multiple flavors of control descriptors, unless the surface of the control API is huge, and key collisions are possible.

Pseudocode:

log = open("file:///log.txt")
log_ctl = open_ctl(log)
mode = "mode=0600"
write(log_ctl, mode.ptr, mode.len)

acln0 avatar Apr 15 '19 04:04 acln0