mirror of
https://github.com/debauchee/barrier.git
synced 2024-12-24 11:32:43 +03:00
fee4095624
synergy.cpp and server.cpp into cmd/synergyd as synergyd.cpp. Moved and renamed related files. Moved remaining source files into lib/.... Modified and added makefiles as appropriate. Result is that library files are under lib with each library in its own directory and program files are under cmd with each command in its own directory.
65 lines
1.1 KiB
C++
65 lines
1.1 KiB
C++
#ifndef CSTREAMBUFFER_H
|
|
#define CSTREAMBUFFER_H
|
|
|
|
#include "BasicTypes.h"
|
|
#include "stdlist.h"
|
|
#include "stdvector.h"
|
|
|
|
//! FIFO of bytes
|
|
/*!
|
|
This class maintains a FIFO (first-in, last-out) buffer of bytes.
|
|
*/
|
|
class CStreamBuffer {
|
|
public:
|
|
CStreamBuffer();
|
|
~CStreamBuffer();
|
|
|
|
//! @name manipulators
|
|
//@{
|
|
|
|
//! Read data without removing from buffer
|
|
/*!
|
|
Return a pointer to memory with the next \c n bytes in the buffer
|
|
(which must be <= getSize()). The caller must not modify the returned
|
|
memory nor delete it.
|
|
*/
|
|
const void* peek(UInt32 n);
|
|
|
|
//! Discard data
|
|
/*!
|
|
Discards the next \c n bytes. If \c n >= getSize() then the buffer
|
|
is cleared.
|
|
*/
|
|
void pop(UInt32 n);
|
|
|
|
//! Write data to buffer
|
|
/*!
|
|
Appends \c n bytes from \c data to the buffer.
|
|
*/
|
|
void write(const void* data, UInt32 n);
|
|
|
|
//@}
|
|
//! @name accessors
|
|
//@{
|
|
|
|
//! Get size of buffer
|
|
/*!
|
|
Returns the number of bytes in the buffer.
|
|
*/
|
|
UInt32 getSize() const;
|
|
|
|
//@}
|
|
|
|
private:
|
|
static const UInt32 kChunkSize;
|
|
|
|
typedef std::vector<UInt8> Chunk;
|
|
typedef std::list<Chunk> ChunkList;
|
|
|
|
ChunkList m_chunks;
|
|
UInt32 m_size;
|
|
UInt32 m_headUsed;
|
|
};
|
|
|
|
#endif
|