#include "config.h"
#include "WorkQueue.h"
#include <DispatchQueueEfl.h>
#include <DispatchQueueWorkItemEfl.h>
namespace WTF {
void WorkQueue::platformInitialize(const char* name, Type, 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, WTFMove(function));
}
void WorkQueue::unregisterSocketEventHandler(int fileDescriptor)
{
UNUSED_PARAM(fileDescriptor);
if (!m_dispatchQueue)
return;
m_dispatchQueue->clearSocketEventHandler();
}
void WorkQueue::dispatch(Function<void ()>&& function)
{
if (!m_dispatchQueue)
return;
m_dispatchQueue->dispatch(std::make_unique<WorkItem>(*this, WTFMove(function)));
}
void WorkQueue::dispatchAfter(std::chrono::nanoseconds duration, Function<void ()>&& function)
{
if (!m_dispatchQueue)
return;
m_dispatchQueue->dispatch(TimerWorkItem::create(*this, WTFMove(function), duration));
}
}