Comparison

util/dbuffer.lua @ 12802:4a8740e01813

Merge 0.12->trunk
author Kim Alvefur <zash@zash.se>
date Mon, 12 Dec 2022 07:10:54 +0100
parent 12763:d26eefe98d09
child 12975:d10957394a3c
comparison
equal deleted inserted replaced
12801:ebd6b4d8bf04 12802:4a8740e01813
89 end 89 end
90 return nil; 90 return nil;
91 end 91 end
92 92
93 function dbuffer_methods:discard(requested_bytes) 93 function dbuffer_methods:discard(requested_bytes)
94 if requested_bytes > self._length then 94 if self._length == 0 then return true; end
95 return nil; 95 if not requested_bytes or requested_bytes >= self._length then
96 self.front_consumed = 0;
97 self._length = 0;
98 for _ in self.items:consume() do end
99 return true;
96 end 100 end
97 101
98 local chunk, read_bytes = self:read_chunk(requested_bytes); 102 local chunk, read_bytes = self:read_chunk(requested_bytes);
99 if chunk then 103 requested_bytes = requested_bytes - read_bytes;
100 requested_bytes = requested_bytes - read_bytes; 104 if requested_bytes == 0 then -- Already read everything we need
101 if requested_bytes == 0 then -- Already read everything we need 105 return true;
102 return true;
103 end
104 else
105 return nil;
106 end 106 end
107 107
108 while chunk do 108 while chunk do
109 if requested_bytes > 0 then 109 if requested_bytes > 0 then
110 chunk, read_bytes = self:read_chunk(requested_bytes); 110 chunk, read_bytes = self:read_chunk(requested_bytes);