v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
60
attic/unneeded/StarFifo.hpp
Normal file
60
attic/unneeded/StarFifo.hpp
Normal file
|
@ -0,0 +1,60 @@
|
|||
#ifndef STAR_FIFO_HPP
|
||||
#define STAR_FIFO_HPP
|
||||
|
||||
#include "StarIODevice.hpp"
|
||||
#include "StarThread.hpp"
|
||||
|
||||
namespace Star {
|
||||
|
||||
STAR_EXCEPTION(FifoClosedException, DeviceClosedException);
|
||||
|
||||
STAR_CLASS(Fifo);
|
||||
|
||||
// First in first out IODevice. Bytes written to the device can be read from
|
||||
// it first byte in, first byte out. If it set to blocking, then reads that
|
||||
// read past the end of the available bytes -- or writes that go over the
|
||||
// available buffer size -- will block until write is called, or the device is
|
||||
// closed.
|
||||
//
|
||||
// A paired set of Fifos work just like a single Fifo, except each Fifo writes
|
||||
// to the other and reads from the other.
|
||||
class Fifo : public IODevice {
|
||||
public:
|
||||
// If either one of the paired Fifo objects is destroyed, the other one will
|
||||
// immediately be marked as closed.
|
||||
static pair<FifoPtr, FifoPtr> makePair(bool blocking = false, size_t bufferSize = 1024);
|
||||
|
||||
Fifo(bool blocking = false, size_t bufferSize = 1024);
|
||||
|
||||
// If this is a paired fifo, then this will close both sides.
|
||||
void close() override;
|
||||
|
||||
size_t read(char* data, size_t len) override;
|
||||
size_t write(char const* data, size_t len) override;
|
||||
|
||||
String deviceName() const override;
|
||||
|
||||
private:
|
||||
size_t doWrite(char const* data, size_t len);
|
||||
|
||||
// Disconnects the other side of a paired fifo.
|
||||
void disconnect();
|
||||
|
||||
Mutex m_mutex;
|
||||
ConditionVariable m_condition;
|
||||
|
||||
ByteArray m_buffer;
|
||||
bool m_blocking;
|
||||
size_t m_readPos;
|
||||
size_t m_writePos;
|
||||
|
||||
bool m_writeFull;
|
||||
bool m_readEmpty;
|
||||
|
||||
bool m_isPaired;
|
||||
weak_ptr<Fifo> m_pairedFifo;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue