1/*
2    Copyright (C) 2012 Samsung Electronics
3
4    This library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Library General Public
6    License as published by the Free Software Foundation; either
7    version 2 of the License, or (at your option) any later version.
8
9    This library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Library General Public License for more details.
13
14    You should have received a copy of the GNU Library General Public License
15    along with this library; see the file COPYING.LIB.  If not, write to
16    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17    Boston, MA 02110-1301, USA.
18 */
19
20#include "config.h"
21#include "WorkQueue.h"
22
23#include <DispatchQueueEfl.h>
24#include <DispatchQueueWorkItemEfl.h>
25
26void WorkQueue::platformInitialize(const char* name, QOS)
27{
28    m_dispatchQueue = DispatchQueue::create(name);
29}
30
31void WorkQueue::platformInvalidate()
32{
33    RefPtr<DispatchQueue> dispatchQueue = m_dispatchQueue.release();
34    dispatchQueue->stopThread();
35}
36
37void WorkQueue::registerSocketEventHandler(int fileDescriptor, std::function<void ()> function)
38{
39    if (!m_dispatchQueue)
40        return;
41
42    m_dispatchQueue->setSocketEventHandler(fileDescriptor, WTF::move(function));
43}
44
45void WorkQueue::unregisterSocketEventHandler(int fileDescriptor)
46{
47    UNUSED_PARAM(fileDescriptor);
48
49    if (!m_dispatchQueue)
50        return;
51
52    m_dispatchQueue->clearSocketEventHandler();
53}
54
55void WorkQueue::dispatch(std::function<void ()> function)
56{
57    if (!m_dispatchQueue)
58        return;
59
60    m_dispatchQueue->dispatch(WorkItem::create(this, WTF::move(function)));
61}
62
63void WorkQueue::dispatchAfter(std::chrono::nanoseconds duration, std::function<void ()> function)
64{
65    if (!m_dispatchQueue)
66        return;
67
68    m_dispatchQueue->dispatch(TimerWorkItem::create(this, WTF::move(function), duration));
69}
70