feat: add a timeout to synchronous calls
This commit is contained in:
parent
0c785f20bf
commit
cead8672b5
1 changed files with 4 additions and 4 deletions
|
@ -71,8 +71,8 @@ fn Pid(comptime own: Ownership) type {
|
||||||
return self.send_raw(message.fmt(m));
|
return self.send_raw(message.fmt(m));
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn call(self: Self, a: std.mem.Allocator, request: anytype) error{ OutOfMemory, ThespianSpawnFailed }!message {
|
pub fn call(self: Self, a: std.mem.Allocator, timeout_ns: u64, request: anytype) error{ OutOfMemory, ThespianSpawnFailed, Timeout }!message {
|
||||||
return CallContext.call(a, self.ref(), message.fmt(request));
|
return CallContext.call(a, self.ref(), timeout_ns, message.fmt(request));
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn forward_error(self: Self, e: anyerror) result {
|
pub fn forward_error(self: Self, e: anyerror) result {
|
||||||
|
@ -697,7 +697,7 @@ const CallContext = struct {
|
||||||
const Self = @This();
|
const Self = @This();
|
||||||
const ReceiverT = Receiver(*Self);
|
const ReceiverT = Receiver(*Self);
|
||||||
|
|
||||||
pub fn call(a: std.mem.Allocator, to: pid_ref, request: message) error{ OutOfMemory, ThespianSpawnFailed }!message {
|
pub fn call(a: std.mem.Allocator, to: pid_ref, timeout_ns: u64, request: message) error{ OutOfMemory, ThespianSpawnFailed, Timeout }!message {
|
||||||
var self: Self = undefined;
|
var self: Self = undefined;
|
||||||
const rec = ReceiverT.init(receive_, &self);
|
const rec = ReceiverT.init(receive_, &self);
|
||||||
|
|
||||||
|
@ -715,7 +715,7 @@ const CallContext = struct {
|
||||||
const proc = try spawn_link(a, &self, start, @typeName(Self));
|
const proc = try spawn_link(a, &self, start, @typeName(Self));
|
||||||
defer proc.deinit();
|
defer proc.deinit();
|
||||||
|
|
||||||
self.cond.wait(&self.mut);
|
try self.cond.timedWait(&self.mut, timeout_ns);
|
||||||
|
|
||||||
return self.response orelse .{};
|
return self.response orelse .{};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue