Class: UringMachine::AsyncOp
- Inherits:
-
Object
- Object
- UringMachine::AsyncOp
- Defined in:
- ext/um/um_async_op_class.c
Instance Method Summary collapse
- #await ⇒ Object
- #cancel ⇒ Object
- #cancelled? ⇒ Boolean
- #done? ⇒ Boolean
- #initialize ⇒ Object constructor
- #join ⇒ Object
- #kind ⇒ Object
- #result ⇒ Object
Constructor Details
#initialize ⇒ Object
41 42 43 44 45 |
# File 'ext/um/um_async_op_class.c', line 41 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
97 98 99 100 101 102 103 104 105 |
# File 'ext/um/um_async_op_class.c', line 97
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
107 108 109 110 111 112 113 114 115 |
# File 'ext/um/um_async_op_class.c', line 107
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? ⇒ Boolean
88 89 90 91 92 93 94 95 |
# File 'ext/um/um_async_op_class.c', line 88
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? ⇒ Boolean
74 75 76 77 78 79 |
# File 'ext/um/um_async_op_class.c', line 74 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
97 98 99 100 101 102 103 104 105 |
# File 'ext/um/um_async_op_class.c', line 97
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
62 63 64 65 66 67 68 69 70 71 72 |
# File 'ext/um/um_async_op_class.c', line 62
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
81 82 83 84 85 86 |
# File 'ext/um/um_async_op_class.c', line 81
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;
}
|