aboutsummaryrefslogtreecommitdiff
path: root/lib/std/event/loop.zig
diff options
context:
space:
mode:
authorLoris Cro <kappaloris@gmail.com>2020-06-20 00:35:08 +0200
committerLoris Cro <kappaloris@gmail.com>2020-09-24 22:06:41 +0200
commit419aea54cb30b394191778fcc70effaf5181bf33 (patch)
treeac929fd736e0f970c78be45402a2bae012b02af9 /lib/std/event/loop.zig
parent7fec5b3def36bc73e9e48a777bcca838c4b86770 (diff)
downloadzig-419aea54cb30b394191778fcc70effaf5181bf33.tar.gz
zig-419aea54cb30b394191778fcc70effaf5181bf33.zip
sendto
Signed-off-by: Loris Cro <kappaloris@gmail.com>
Diffstat (limited to 'lib/std/event/loop.zig')
-rw-r--r--lib/std/event/loop.zig21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/std/event/loop.zig b/lib/std/event/loop.zig
index ae2d2f1499..3a79d36a10 100644
--- a/lib/std/event/loop.zig
+++ b/lib/std/event/loop.zig
@@ -1088,6 +1088,27 @@ pub const Loop = struct {
}
}
+ pub fn sendto(
+ self: *Loop,
+ /// The file descriptor of the sending socket.
+ sockfd: os.fd_t,
+ /// Message to send.
+ buf: []const u8,
+ flags: u32,
+ dest_addr: ?*const os.sockaddr,
+ addrlen: os.socklen_t,
+ ) os.SendError!usize {
+ while (true) {
+ return os.sendto(sockfd, buf, flags, dest_addr, addrlen) catch |err| switch (err) {
+ error.WouldBlock => {
+ self.waitUntilFdWritable(sockfd);
+ continue;
+ },
+ else => return err,
+ };
+ }
+ }
+
/// Performs an async `os.faccessatZ` using a separate thread.
/// `fd` must block and not return EAGAIN.
pub fn faccessatZ(