diff options
Diffstat (limited to 'src/Bot.zig')
| -rw-r--r-- | src/Bot.zig | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/Bot.zig b/src/Bot.zig index adfafef..8e69579 100644 --- a/src/Bot.zig +++ b/src/Bot.zig | |||
| @@ -136,6 +136,26 @@ fn call( | |||
| 136 | uri: Uri, | 136 | uri: Uri, |
| 137 | data: ?[]const u8, | 137 | data: ?[]const u8, |
| 138 | ) !Parsed(T) { | 138 | ) !Parsed(T) { |
| 139 | var tries: i8 = 0; | ||
| 140 | while (true) : (tries += 1) { | ||
| 141 | if (self.wrappedCall(T, method, uri, data)) |res| { | ||
| 142 | return res; | ||
| 143 | } else |err| { | ||
| 144 | std.log.warn("error when performing call: {}", .{err}); | ||
| 145 | if (tries == 20) { | ||
| 146 | return err; | ||
| 147 | } | ||
| 148 | } | ||
| 149 | } | ||
| 150 | } | ||
| 151 | |||
| 152 | fn wrappedCall( | ||
| 153 | self: *Bot, | ||
| 154 | comptime T: type, | ||
| 155 | comptime method: HttpMethod, | ||
| 156 | uri: Uri, | ||
| 157 | data: ?[]const u8, | ||
| 158 | ) !Parsed(T) { | ||
| 139 | while (true) { | 159 | while (true) { |
| 140 | var request = try self.http_client.open(method, uri, .{ | 160 | var request = try self.http_client.open(method, uri, .{ |
| 141 | .server_header_buffer = &self.server_header_buffer, | 161 | .server_header_buffer = &self.server_header_buffer, |