• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jbaldwin / libcoro / 14010016254

22 Mar 2025 03:38PM UTC coverage: 83.961%. First build
14010016254

Pull #297

github

web-flow
Merge 9fea175a4 into c298be096
Pull Request #297: Add condition_variable

131 of 195 new or added lines in 8 files covered. (67.18%)

1539 of 1833 relevant lines covered (83.96%)

3808084.26 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

51.72
/src/facade.cpp
1
#include "coro/facade.hpp"
2
#include <atomic>
3
#include <memory>
4

5
static std::atomic<coro::facade*> s_facade = {nullptr};
6

7
#ifdef LIBCORO_FEATURE_NETWORKING
8
coro::io_scheduler::options coro::facade::s_io_scheduler_options;
9
#else
10
coro::thread_pool::options coro::facade::s_thread_pool_options;
11
#endif
12

13
coro::facade* coro::facade::instance()
6✔
14
{
15
    auto* result = s_facade.load(std::memory_order::acquire);
6✔
16
    if (!result)
6✔
17
    {
18
        auto ptr = std::make_unique<facade>();
1✔
19
        if (s_facade.compare_exchange_strong(result, ptr.get(), std::memory_order::release, std::memory_order::acquire))
1✔
20
            result = ptr.release();
1✔
21
    }
1✔
22
    return result;
6✔
23
}
24

25
coro::facade::facade()
1✔
26
{
27
#ifdef LIBCORO_FEATURE_NETWORKING
28
    m_io_scheduler = io_scheduler::make_shared(s_io_scheduler_options);
1✔
29
#else
30
    m_thread_pool = std::make_shared<thread_pool>(s_thread_pool_options);
31
#endif
32
}
1✔
33

NEW
34
bool coro::facade::spawn(coro::task<void>&& task) noexcept
×
35
{
36
#ifdef LIBCORO_FEATURE_NETWORKING
NEW
37
    return m_io_scheduler->spawn(std::move(task));
×
38
#else
39
    return m_thread_pool->spawn(std::move(task));
40
#endif
41
}
42

NEW
43
bool coro::facade::resume(std::coroutine_handle<> handle)
×
44
{
45
#ifdef LIBCORO_FEATURE_NETWORKING
NEW
46
    return m_io_scheduler->resume(handle);
×
47
#else
48
    return m_thread_pool->resume(handle);
49
#endif
50
}
51

NEW
52
std::size_t coro::facade::size()
×
53
{
54
#ifdef LIBCORO_FEATURE_NETWORKING
NEW
55
    return m_io_scheduler->size();
×
56
#else
57
    return m_thread_pool->size();
58
#endif
59
}
60

NEW
61
bool coro::facade::empty()
×
62
{
63
#ifdef LIBCORO_FEATURE_NETWORKING
NEW
64
    return m_io_scheduler->empty();
×
65
#else
66
    return m_thread_pool->empty();
67
#endif
68
}
69

NEW
70
void coro::facade::shutdown()
×
71
{
72
#ifdef LIBCORO_FEATURE_NETWORKING
NEW
73
    m_io_scheduler->shutdown();
×
74
#else
75
    m_thread_pool->shutdown();
76
#endif
NEW
77
}
×
78

79
#ifdef LIBCORO_FEATURE_NETWORKING
80
auto coro::facade::schedule() -> coro::io_scheduler::schedule_operation
83✔
81
{
82
    return m_io_scheduler->schedule();
83✔
83
}
84
#else
85
auto coro::facade::schedule() -> coro::thread_pool::operation
86
{
87
    return m_thread_pool->schedule();
88
}
89
#endif
90

91
#ifdef LIBCORO_FEATURE_NETWORKING
92

NEW
93
void coro::facade::set_io_scheduler_options(io_scheduler::options io_scheduler_options)
×
94
{
NEW
95
    s_io_scheduler_options = io_scheduler_options;
×
NEW
96
}
×
97

98
std::shared_ptr<coro::io_scheduler> coro::facade::get_io_scheduler()
5✔
99
{
100
    return m_io_scheduler;
5✔
101
}
102

103
#else
104

105
void coro::facade::set_thread_pool_options(thread_pool::options thread_pool_options)
106
{
107
    s_thread_pool_options = thread_pool_options;
108
}
109

110
std::shared_ptr<coro::thread_pool> coro::facade::get_thread_pool()
111
{
112
    return m_thread_pool;
113
}
114

115
#endif
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc