LMMS
Loading...
Searching...
No Matches
lmms::Lv2Worker Class Reference

#include <Lv2Worker.h>

Public Member Functions

 Lv2Worker (Semaphore *commonWorkLock, bool threaded)
 ~Lv2Worker ()
void setHandle (LV2_Handle handle)
void setInterface (const LV2_Worker_Interface *newInterface)
LV2_Worker_Schedulefeature ()
void emitResponses ()
void notifyPluginThatRunFinished ()
LV2_Worker_Status scheduleWork (uint32_t size, const void *data)
LV2_Worker_Status respond (uint32_t size, const void *data)

Private Member Functions

void workerFunc ()
std::size_t bufferSize () const
 size of internal buffers

Private Attributes

const bool m_threaded
const LV2_Worker_Interfacem_interface = nullptr
LV2_Handle m_handle = nullptr
LV2_Worker_Schedule m_scheduleFeature
std::thread m_thread
std::vector< char > m_response
 buffer where single requests from m_requests are unpacked
LocklessRingBuffer< char > m_requests
LocklessRingBuffer< char > m_responses
 ringbuffer to queue multiple requests
LocklessRingBufferReader< char > m_requestsReader
LocklessRingBufferReader< char > m_responsesReader
std::atomic< bool > m_exit = false
 Whether the worker function should keep looping.
Semaphore m_sem
Semaphorem_workLock

Detailed Description

Worker container

Constructor & Destructor Documentation

◆ Lv2Worker()

lmms::Lv2Worker::Lv2Worker ( Semaphore * commonWorkLock,
bool threaded )

◆ ~Lv2Worker()

lmms::Lv2Worker::~Lv2Worker ( )

Member Function Documentation

◆ bufferSize()

std::size_t lmms::Lv2Worker::bufferSize ( ) const
private

size of internal buffers

◆ emitResponses()

void lmms::Lv2Worker::emitResponses ( )

◆ feature()

LV2_Worker_Schedule * lmms::Lv2Worker::feature ( )
inline

◆ notifyPluginThatRunFinished()

void lmms::Lv2Worker::notifyPluginThatRunFinished ( )
inline

◆ respond()

LV2_Worker_Status lmms::Lv2Worker::respond ( uint32_t size,
const void * data )

◆ scheduleWork()

LV2_Worker_Status lmms::Lv2Worker::scheduleWork ( uint32_t size,
const void * data )

◆ setHandle()

void lmms::Lv2Worker::setHandle ( LV2_Handle handle)

◆ setInterface()

void lmms::Lv2Worker::setInterface ( const LV2_Worker_Interface * newInterface)

◆ workerFunc()

void lmms::Lv2Worker::workerFunc ( )
private

Member Data Documentation

◆ m_exit

std::atomic<bool> lmms::Lv2Worker::m_exit = false
private

Whether the worker function should keep looping.

◆ m_handle

LV2_Handle lmms::Lv2Worker::m_handle = nullptr
private

◆ m_interface

const LV2_Worker_Interface* lmms::Lv2Worker::m_interface = nullptr
private

◆ m_requests

LocklessRingBuffer<char> lmms::Lv2Worker::m_requests
private

◆ m_requestsReader

LocklessRingBufferReader<char> lmms::Lv2Worker::m_requestsReader
private

◆ m_response

std::vector<char> lmms::Lv2Worker::m_response
private

buffer where single requests from m_requests are unpacked

◆ m_responses

LocklessRingBuffer<char> lmms::Lv2Worker::m_responses
private

ringbuffer to queue multiple requests

◆ m_responsesReader

LocklessRingBufferReader<char> lmms::Lv2Worker::m_responsesReader
private

◆ m_scheduleFeature

LV2_Worker_Schedule lmms::Lv2Worker::m_scheduleFeature
private

◆ m_sem

Semaphore lmms::Lv2Worker::m_sem
private

◆ m_thread

std::thread lmms::Lv2Worker::m_thread
private

◆ m_threaded

const bool lmms::Lv2Worker::m_threaded
private

◆ m_workLock

Semaphore* lmms::Lv2Worker::m_workLock
private

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