diff options
| author | Loris Cro <kappaloris@gmail.com> | 2020-06-20 00:45:51 +0200 |
|---|---|---|
| committer | Loris Cro <kappaloris@gmail.com> | 2020-09-24 22:06:41 +0200 |
| commit | c196c27af86f0f10b2f53240a68477391c4b9820 (patch) | |
| tree | 2933eee628b0a106184a0ea9dbb76f063e222921 /lib/std/event/loop.zig | |
| parent | 419aea54cb30b394191778fcc70effaf5181bf33 (diff) | |
| download | zig-c196c27af86f0f10b2f53240a68477391c4b9820.tar.gz zig-c196c27af86f0f10b2f53240a68477391c4b9820.zip | |
recvfrom
Signed-off-by: Loris Cro <kappaloris@gmail.com>
Diffstat (limited to 'lib/std/event/loop.zig')
| -rw-r--r-- | lib/std/event/loop.zig | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/std/event/loop.zig b/lib/std/event/loop.zig index 3a79d36a10..c3bf2495ff 100644 --- a/lib/std/event/loop.zig +++ b/lib/std/event/loop.zig @@ -1109,6 +1109,24 @@ pub const Loop = struct { } } + pub fn recvfrom( + sockfd: os.fd_t, + buf: []u8, + flags: u32, + src_addr: ?*os.sockaddr, + addrlen: ?*os.socklen_t, + ) os.RecvFromError!usize { + while (true) { + return os.recvfrom(sockfd, buf, flags, src_addr, addrlen) catch |err| switch (err) { + error.WouldBlock => { + self.waitUntilFdReadable(sockfd); + continue; + }, + else => return err, + }; + } + } + /// Performs an async `os.faccessatZ` using a separate thread. /// `fd` must block and not return EAGAIN. pub fn faccessatZ( |
