ardour
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ARDOUR::Worker Class Reference

#include <worker.h>

Public Member Functions

 Worker (Workee *workee, uint32_t ring_size)
 
 ~Worker ()
 
bool schedule (uint32_t size, const void *data)
 
bool respond (uint32_t size, const void *data)
 
void emit_responses ()
 

Private Member Functions

void run ()
 
bool verify_message_completeness (RingBuffer< uint8_t > *rb)
 

Private Attributes

Workee_workee
 
RingBuffer< uint8_t > * _requests
 
RingBuffer< uint8_t > * _responses
 
uint8_t * _response
 
PBD::Semaphore _sem
 
bool _exit
 
Glib::Threads::Thread * _thread
 

Detailed Description

A worker thread for non-realtime tasks scheduled in the audio thread.

Definition at line 55 of file worker.h.

Constructor & Destructor Documentation

ARDOUR::Worker::Worker ( Workee workee,
uint32_t  ring_size 
)

Definition at line 30 of file worker.cc.

ARDOUR::Worker::~Worker ( )

Definition at line 40 of file worker.cc.

Member Function Documentation

void ARDOUR::Worker::emit_responses ( )

Emit any pending responses (audio thread).

Definition at line 102 of file worker.cc.

bool ARDOUR::Worker::respond ( uint32_t  size,
const void *  data 
)

Respond from work (worker thread).

Returns
false on error.

Definition at line 64 of file worker.cc.

void ARDOUR::Worker::run ( )
private

Definition at line 120 of file worker.cc.

bool ARDOUR::Worker::schedule ( uint32_t  size,
const void *  data 
)

Schedule work (audio thread).

Returns
false on error.

Definition at line 48 of file worker.cc.

bool ARDOUR::Worker::verify_message_completeness ( RingBuffer< uint8_t > *  rb)
private

Peek in RB, get size and check if a block of 'size' is available.

Handle the unlikley edge-case, if we're called in between the responder writing 'size' and 'data'.

  @param rb the ringbuffer to check
  @return true if the message is complete, false otherwise

Definition at line 79 of file worker.cc.

Member Data Documentation

bool ARDOUR::Worker::_exit
private

Definition at line 96 of file worker.h.

RingBuffer<uint8_t>* ARDOUR::Worker::_requests
private

Definition at line 92 of file worker.h.

uint8_t* ARDOUR::Worker::_response
private

Definition at line 94 of file worker.h.

RingBuffer<uint8_t>* ARDOUR::Worker::_responses
private

Definition at line 93 of file worker.h.

PBD::Semaphore ARDOUR::Worker::_sem
private

Definition at line 95 of file worker.h.

Glib::Threads::Thread* ARDOUR::Worker::_thread
private

Definition at line 97 of file worker.h.

Workee* ARDOUR::Worker::_workee
private

Definition at line 91 of file worker.h.


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