DeviceReadBuffer Class Reference

#include <DeviceReadBuffer.h>

List of all members.


Detailed Description

Buffers reads from device files.

This allows us to read the device regularly even in the presence of long blocking conditions on writing to disk or accessing the database.

Definition at line 31 of file DeviceReadBuffer.h.


Public Member Functions

 DeviceReadBuffer (ReaderPausedCB *callback, bool use_poll=true)
 ~DeviceReadBuffer ()
bool Setup (const QString &streamName, int streamfd)
void Start (void)
void Reset (const QString &streamName, int streamfd)
void Stop (void)
void SetRequestPause (bool request)
bool IsPaused (void) const
bool WaitForUnpause (int timeout)
bool IsErrored (void) const
bool IsEOF (void) const
bool IsRunning (void) const
uint Read (unsigned char *buf, uint count)
 Try to Read count bytes from into buffer.

Private Member Functions

void fill_ringbuffer (void)
void SetPaused (bool)
void IncrWritePointer (uint len)
void IncrReadPointer (uint len)
bool HandlePausing (void)
bool Poll (void) const
uint WaitForUnused (uint bytes_needed) const
uint WaitForUsed (uint bytes_needed) const
bool IsPauseRequested (void) const
bool IsOpen (void) const
uint GetUnused (void) const
uint GetUsed (void) const
uint GetContiguousUnused (void) const
bool CheckForErrors (ssize_t read_len, uint &err_cnt)
void ReportStats (void)

Static Private Member Functions

static void * boot_ringbuffer (void *)

Private Attributes

QString videodevice
int _stream_fd
ReaderPausedCBreaderPausedCB
pthread_t thread
QMutex lock
bool run
bool running
bool eof
bool error
bool request_pause
bool paused
bool using_poll
size_t size
size_t used
size_t dev_read_size
size_t min_read
unsigned char * buffer
unsigned char * readPtr
unsigned char * writePtr
unsigned char * endPtr
QWaitCondition pauseWait
QWaitCondition unpauseWait
size_t max_used
size_t avg_used
size_t avg_cnt
MythTimer lastReport

Constructor & Destructor Documentation

DeviceReadBuffer::DeviceReadBuffer ( ReaderPausedCB callback,
bool  use_poll = true 
)

Definition at line 19 of file DeviceReadBuffer.cpp.

DeviceReadBuffer::~DeviceReadBuffer (  ) 

Definition at line 41 of file DeviceReadBuffer.cpp.


Member Function Documentation

bool DeviceReadBuffer::Setup ( const QString &  streamName,
int  streamfd 
)

Definition at line 47 of file DeviceReadBuffer.cpp.

Referenced by DVBStreamHandler::RunTS().

void DeviceReadBuffer::Start ( void   ) 

Definition at line 90 of file DeviceReadBuffer.cpp.

Referenced by DVBStreamHandler::RunTS().

void DeviceReadBuffer::Reset ( const QString &  streamName,
int  streamfd 
)

Definition at line 105 of file DeviceReadBuffer.cpp.

Referenced by HandlePausing().

void DeviceReadBuffer::Stop ( void   ) 

Definition at line 117 of file DeviceReadBuffer.cpp.

Referenced by DVBStreamHandler::RunTS(), and DVBStreamHandler::Stop().

void DeviceReadBuffer::SetRequestPause ( bool  request  ) 

Definition at line 133 of file DeviceReadBuffer.cpp.

Referenced by Start().

bool DeviceReadBuffer::IsPaused ( void   )  const

Definition at line 150 of file DeviceReadBuffer.cpp.

Referenced by HandlePausing(), and WaitForUnpause().

bool DeviceReadBuffer::WaitForUnpause ( int  timeout  ) 

Definition at line 156 of file DeviceReadBuffer.cpp.

bool DeviceReadBuffer::IsErrored ( void   )  const [inline]

Definition at line 47 of file DeviceReadBuffer.h.

Referenced by DVBStreamHandler::RunTS().

bool DeviceReadBuffer::IsEOF ( void   )  const [inline]

Definition at line 48 of file DeviceReadBuffer.h.

Referenced by DVBStreamHandler::RunTS().

bool DeviceReadBuffer::IsRunning ( void   )  const

Definition at line 169 of file DeviceReadBuffer.cpp.

Referenced by DVBStreamHandler::RunTS(), and Stop().

uint DeviceReadBuffer::Read ( unsigned char *  buf,
uint  count 
)

Try to Read count bytes from into buffer.

Parameters:
buf Buffer to put data in
count Number of bytes to attempt to read
Returns:
number of bytes actually read

Definition at line 390 of file DeviceReadBuffer.cpp.

Referenced by DVBStreamHandler::RunTS().

void * DeviceReadBuffer::boot_ringbuffer ( void *  arg  )  [static, private]

Definition at line 214 of file DeviceReadBuffer.cpp.

Referenced by Start().

void DeviceReadBuffer::fill_ringbuffer ( void   )  [private]

Definition at line 220 of file DeviceReadBuffer.cpp.

void DeviceReadBuffer::SetPaused ( bool  val  )  [private]

Definition at line 139 of file DeviceReadBuffer.cpp.

Referenced by HandlePausing().

void DeviceReadBuffer::IncrWritePointer ( uint  len  )  [private]

Definition at line 193 of file DeviceReadBuffer.cpp.

Referenced by fill_ringbuffer().

void DeviceReadBuffer::IncrReadPointer ( uint  len  )  [private]

Definition at line 205 of file DeviceReadBuffer.cpp.

Referenced by Read().

bool DeviceReadBuffer::HandlePausing ( void   )  [private]

Definition at line 268 of file DeviceReadBuffer.cpp.

Referenced by fill_ringbuffer().

bool DeviceReadBuffer::Poll ( void   )  const [private]

Definition at line 288 of file DeviceReadBuffer.cpp.

Referenced by fill_ringbuffer().

uint DeviceReadBuffer::WaitForUnused ( uint  bytes_needed  )  const [private]

Parameters:
needed Number of bytes we want to write
Returns:
bytes available for writing

Definition at line 432 of file DeviceReadBuffer.cpp.

Referenced by fill_ringbuffer().

uint DeviceReadBuffer::WaitForUsed ( uint  bytes_needed  )  const [private]

Parameters:
needed Number of bytes we want to read
Returns:
bytes available for reading

Definition at line 458 of file DeviceReadBuffer.cpp.

Referenced by Read().

bool DeviceReadBuffer::IsPauseRequested ( void   )  const [private]

Definition at line 163 of file DeviceReadBuffer.cpp.

Referenced by HandlePausing(), Poll(), and WaitForUnused().

bool DeviceReadBuffer::IsOpen ( void   )  const [inline, private]

Definition at line 67 of file DeviceReadBuffer.h.

Referenced by fill_ringbuffer(), Poll(), and WaitForUnused().

uint DeviceReadBuffer::GetUnused ( void   )  const [private]

Definition at line 175 of file DeviceReadBuffer.cpp.

Referenced by WaitForUnused().

uint DeviceReadBuffer::GetUsed ( void   )  const [private]

Definition at line 181 of file DeviceReadBuffer.cpp.

Referenced by WaitForUsed().

uint DeviceReadBuffer::GetContiguousUnused ( void   )  const [private]

Definition at line 187 of file DeviceReadBuffer.cpp.

Referenced by WaitForUnused().

bool DeviceReadBuffer::CheckForErrors ( ssize_t  read_len,
uint err_cnt 
) [private]

Definition at line 327 of file DeviceReadBuffer.cpp.

Referenced by fill_ringbuffer().

void DeviceReadBuffer::ReportStats ( void   )  [private]

Definition at line 474 of file DeviceReadBuffer.cpp.

Referenced by Read().


Member Data Documentation

QString DeviceReadBuffer::videodevice [private]

Definition at line 75 of file DeviceReadBuffer.h.

Referenced by HandlePausing(), Reset(), and Setup().

Definition at line 78 of file DeviceReadBuffer.h.

Referenced by HandlePausing().

Definition at line 79 of file DeviceReadBuffer.h.

Referenced by Start(), and Stop().

QMutex DeviceReadBuffer::lock [mutable, private]

Definition at line 83 of file DeviceReadBuffer.h.

Referenced by fill_ringbuffer(), Poll(), Stop(), and WaitForUnused().

Definition at line 84 of file DeviceReadBuffer.h.

Referenced by fill_ringbuffer(), IsRunning(), Start(), and WaitForUsed().

Definition at line 85 of file DeviceReadBuffer.h.

Referenced by CheckForErrors(), IsEOF(), Setup(), and WaitForUsed().

Definition at line 86 of file DeviceReadBuffer.h.

Referenced by CheckForErrors(), IsErrored(), Setup(), and WaitForUsed().

Definition at line 87 of file DeviceReadBuffer.h.

Referenced by IsPauseRequested(), SetRequestPause(), Setup(), and WaitForUsed().

Definition at line 88 of file DeviceReadBuffer.h.

Referenced by IsPaused(), SetPaused(), and Setup().

Definition at line 89 of file DeviceReadBuffer.h.

Referenced by fill_ringbuffer(), and Setup().

size_t DeviceReadBuffer::size [private]

Definition at line 91 of file DeviceReadBuffer.h.

Referenced by GetUnused(), ReportStats(), and Setup().

size_t DeviceReadBuffer::used [private]

Definition at line 93 of file DeviceReadBuffer.h.

Referenced by fill_ringbuffer(), and Setup().

size_t DeviceReadBuffer::min_read [private]

Definition at line 94 of file DeviceReadBuffer.h.

Referenced by Read(), and Setup().

unsigned char* DeviceReadBuffer::buffer [private]

Definition at line 95 of file DeviceReadBuffer.h.

Referenced by IncrReadPointer(), IncrWritePointer(), Reset(), Setup(), and ~DeviceReadBuffer().

unsigned char* DeviceReadBuffer::readPtr [private]

Definition at line 96 of file DeviceReadBuffer.h.

Referenced by IncrReadPointer(), Read(), Reset(), and Setup().

unsigned char* DeviceReadBuffer::writePtr [private]

unsigned char* DeviceReadBuffer::endPtr [private]

QWaitCondition DeviceReadBuffer::pauseWait [private]

Definition at line 100 of file DeviceReadBuffer.h.

Referenced by SetPaused().

QWaitCondition DeviceReadBuffer::unpauseWait [private]

Definition at line 101 of file DeviceReadBuffer.h.

Referenced by SetPaused(), and WaitForUnpause().

size_t DeviceReadBuffer::max_used [private]

Definition at line 104 of file DeviceReadBuffer.h.

Referenced by IncrWritePointer(), ReportStats(), and Setup().

size_t DeviceReadBuffer::avg_used [private]

Definition at line 105 of file DeviceReadBuffer.h.

Referenced by IncrWritePointer(), ReportStats(), and Setup().

size_t DeviceReadBuffer::avg_cnt [private]

Definition at line 106 of file DeviceReadBuffer.h.

Referenced by IncrWritePointer(), ReportStats(), and Setup().

Definition at line 107 of file DeviceReadBuffer.h.

Referenced by ReportStats(), and Setup().


The documentation for this class was generated from the following files:

Generated on Sat Dec 18 05:16:01 2010 for MythTV by  doxygen 1.5.5