diff options
| author | Loris Cro <kappaloris@gmail.com> | 2020-06-20 00:35:08 +0200 |
|---|---|---|
| committer | Loris Cro <kappaloris@gmail.com> | 2020-09-24 22:06:41 +0200 |
| commit | 419aea54cb30b394191778fcc70effaf5181bf33 (patch) | |
| tree | ac929fd736e0f970c78be45402a2bae012b02af9 /lib/std/event/loop.zig | |
| parent | 7fec5b3def36bc73e9e48a777bcca838c4b86770 (diff) | |
| download | zig-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.zig | 21 |
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( |
