Expose interface for writing single values into coral::fixed_buffer
This commit is contained in:
parent
2b1a34d5e2
commit
cf8124eb20
|
@ -55,11 +55,26 @@ export namespace coral {
|
||||||
return this->filled == capacity;
|
return this->filled == capacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to write the single value `data` into the buffer, returning `true` if
|
||||||
|
* successful, otherwise `false` if the buffer is full.
|
||||||
|
*/
|
||||||
|
bool put(u8 data) {
|
||||||
|
if (this->is_full()) return false;
|
||||||
|
|
||||||
|
this->filled += 1;
|
||||||
|
this->data[this->write_index] = data;
|
||||||
|
this->write_index = (this->write_index + 1) % capacity;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads whatever data is in the buffer into `data`, returning the number of bytes read
|
* Reads whatever data is in the buffer into `data`, returning the number of bytes read
|
||||||
* from the buffer.
|
* from the buffer.
|
||||||
*/
|
*/
|
||||||
expected<usize, io_error> read(slice<u8> const & data) override {
|
expected<usize, io_error> read(slice<u8> const & data) override {
|
||||||
|
|
||||||
slice const readable_data{this->data, min(this->filled, data.length)};
|
slice const readable_data{this->data, min(this->filled, data.length)};
|
||||||
|
|
||||||
this->filled -= readable_data.length;
|
this->filled -= readable_data.length;
|
||||||
|
|
Loading…
Reference in New Issue