Class: UringMachine::AsyncOp
- Inherits:
-
Object
- Object
- UringMachine::AsyncOp
- Defined in:
- ext/um/um_async_op_class.c,
ext/um/um_async_op_class.c
Overview
Encapsulates an asynchronous operation. Currently the only asynchronous operation supported is a timeout operation.
Instance Method Summary collapse
- #await ⇒ Object
- #cancel ⇒ Object
- #cancelled? ⇒ Object
- #done? ⇒ Object
- #initialize ⇒ Object constructor
- #join ⇒ Object
- #kind ⇒ Object
- #result ⇒ Object
Constructor Details
#initialize ⇒ Object
48 49 50 51 52 |
# File 'ext/um/um_async_op_class.c', line 48 VALUE AsyncOp_initialize(VALUE self) { struct um_async_op *async_op = AsyncOp_data(self); memset(async_op, 0, sizeof(struct um_async_op)); return self; } |
Instance Method Details
#await ⇒ Object
124 125 126 127 128 129 130 131 132 |
# File 'ext/um/um_async_op_class.c', line 124
VALUE AsyncOp_await(VALUE self) {
struct um_async_op *async_op = AsyncOp_data(self);
raise_on_missing_op(async_op);
if (async_op_is_done(async_op))
return INT2NUM(async_op->op->result.res);
return um_async_op_await(async_op);
}
|
#cancel ⇒ Object
138 139 140 141 142 143 144 145 146 |
# File 'ext/um/um_async_op_class.c', line 138
VALUE AsyncOp_cancel(VALUE self) {
struct um_async_op *async_op = AsyncOp_data(self);
raise_on_missing_op(async_op);
if (!async_op_is_done(async_op))
um_async_op_cancel(async_op);
return self;
}
|
#cancelled? ⇒ Object
111 112 113 114 115 116 117 118 |
# File 'ext/um/um_async_op_class.c', line 111
VALUE AsyncOp_cancelled_p(VALUE self) {
struct um_async_op *async_op = AsyncOp_data(self);
raise_on_missing_op(async_op);
if (!async_op_is_done(async_op)) return Qnil;
return (async_op->op->result.res == -ECANCELED) ? Qtrue : Qfalse;
}
|
#done? ⇒ Object
89 90 91 92 93 94 |
# File 'ext/um/um_async_op_class.c', line 89 VALUE AsyncOp_done_p(VALUE self) { struct um_async_op *async_op = AsyncOp_data(self); raise_on_missing_op(async_op); return async_op_is_done(async_op) ? Qtrue : Qfalse; } |
#join ⇒ Object
124 125 126 127 128 129 130 131 132 |
# File 'ext/um/um_async_op_class.c', line 124
VALUE AsyncOp_await(VALUE self) {
struct um_async_op *async_op = AsyncOp_data(self);
raise_on_missing_op(async_op);
if (async_op_is_done(async_op))
return INT2NUM(async_op->op->result.res);
return um_async_op_await(async_op);
}
|
#kind ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 |
# File 'ext/um/um_async_op_class.c', line 73
VALUE AsyncOp_kind(VALUE self) {
struct um_async_op *async_op = AsyncOp_data(self);
raise_on_missing_op(async_op);
switch(async_op->op->kind) {
case OP_TIMEOUT:
return SYM_timeout;
default:
um_raise_internal_error("Invalid op kind");
}
}
|
#result ⇒ Object
100 101 102 103 104 105 |
# File 'ext/um/um_async_op_class.c', line 100
VALUE AsyncOp_result(VALUE self) {
struct um_async_op *async_op = AsyncOp_data(self);
raise_on_missing_op(async_op);
return async_op_is_done(async_op) ? INT2NUM(async_op->op->result.res) : Qnil;
}
|