aboutsummaryrefslogtreecommitdiff
path: root/Src/nu/SpillBuffer.h
blob: 8d5e33daf5894eb7f6fcfc0fe674fcd5cc059f92 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pragma once

class SpillBuffer
{
public:
	SpillBuffer();
	~SpillBuffer();
	bool reserve(size_t bytes);
	void clear();
	void reset();
	size_t write(const void *src, size_t len);
	bool get(void **buffer, size_t *len);
	bool full() const;
	bool empty() const;
	void remove(size_t len); // removes len bytes from the start of the spill buffer
	size_t remaining() const; // how many bytes to fill it up
	size_t length() const; /* buffer length when full */

private:
	volatile size_t spillBufferUsed;
	size_t spillBufferSize;
	char *spillBuffer;
};