#include "config.h"
#include "WorkQueue.h"
#include <DispatchQueueEfl.h>
#include <DispatchQueueWorkItemEfl.h>
void WorkQueue::platformInitialize(const char* name, QOS)
{
m_dispatchQueue = DispatchQueue::create(name);
}
void WorkQueue::platformInvalidate()
{
RefPtr<DispatchQueue> dispatchQueue = m_dispatchQueue.release();
dispatchQueue->stopThread();
}
void WorkQueue::registerSocketEventHandler(int fileDescriptor, std::function<void ()> function)
{
if (!m_dispatchQueue)
return;
m_dispatchQueue->setSocketEventHandler(fileDescriptor, WTF::move(function));
}
void WorkQueue::unregisterSocketEventHandler(int fileDescriptor)
{
UNUSED_PARAM(fileDescriptor);
if (!m_dispatchQueue)
return;
m_dispatchQueue->clearSocketEventHandler();
}
void WorkQueue::dispatch(std::function<void ()> function)
{
if (!m_dispatchQueue)
return;
m_dispatchQueue->dispatch(WorkItem::create(this, WTF::move(function)));
}
void WorkQueue::dispatchAfter(std::chrono::nanoseconds duration, std::function<void ()> function)
{
if (!m_dispatchQueue)
return;
m_dispatchQueue->dispatch(TimerWorkItem::create(this, WTF::move(function), duration));
}