Loading...
Searching...
No Matches
global.cpp
Go to the documentation of this file.
1/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/*
3 * Copyright (c) 2014-2024, Regents of the University of California,
4 * Arizona Board of Regents,
5 * Colorado State University,
6 * University Pierre & Marie Curie, Sorbonne University,
7 * Washington University in St. Louis,
8 * Beijing Institute of Technology,
9 * The University of Memphis.
10 *
11 * This file is part of NFD (Named Data Networking Forwarding Daemon).
12 * See AUTHORS.md for complete list of NFD authors and contributors.
13 *
14 * NFD is free software: you can redistribute it and/or modify it under the terms
15 * of the GNU General Public License as published by the Free Software Foundation,
16 * either version 3 of the License, or (at your option) any later version.
17 *
18 * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
19 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
20 * PURPOSE. See the GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License along with
23 * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
24 */
25
26#include "common/global.hpp"
27
28namespace nfd {
29
30static thread_local std::unique_ptr<boost::asio::io_context> g_ioCtx;
31static thread_local std::unique_ptr<ndn::Scheduler> g_scheduler;
32static boost::asio::io_context* g_mainIoCtx = nullptr;
33static boost::asio::io_context* g_ribIoCtx = nullptr;
34
35boost::asio::io_context&
37{
38 if (g_ioCtx == nullptr) {
39 g_ioCtx = std::make_unique<boost::asio::io_context>();
40 }
41 return *g_ioCtx;
42}
43
44ndn::Scheduler&
46{
47 if (g_scheduler == nullptr) {
48 g_scheduler = std::make_unique<ndn::Scheduler>(getGlobalIoService());
49 }
50 return *g_scheduler;
51}
52
53#ifdef NFD_WITH_TESTS
54void
55resetGlobalIoService()
56{
57 g_scheduler.reset();
58 g_ioCtx.reset();
59}
60#endif
61
62boost::asio::io_context&
64{
65 BOOST_ASSERT(g_mainIoCtx != nullptr);
66 return *g_mainIoCtx;
67}
68
69boost::asio::io_context&
71{
72 BOOST_ASSERT(g_ribIoCtx != nullptr);
73 return *g_ribIoCtx;
74}
75
76void
77setMainIoService(boost::asio::io_context* mainIo)
78{
79 g_mainIoCtx = mainIo;
80}
81
82void
83setRibIoService(boost::asio::io_context* ribIo)
84{
85 g_ribIoCtx = ribIo;
86}
87
88} // namespace nfd
-status-http-server
Definition common.hpp:71
ndn::Scheduler & getScheduler()
Returns the global Scheduler instance for the calling thread.
Definition global.cpp:45
void setMainIoService(boost::asio::io_context *mainIo)
Definition global.cpp:77
boost::asio::io_context & getRibIoService()
Definition global.cpp:70
static boost::asio::io_context * g_ribIoCtx
Definition global.cpp:33
void setRibIoService(boost::asio::io_context *ribIo)
Definition global.cpp:83
static boost::asio::io_context * g_mainIoCtx
Definition global.cpp:32
static thread_local std::unique_ptr< boost::asio::io_context > g_ioCtx
Definition global.cpp:30
boost::asio::io_context & getMainIoService()
Definition global.cpp:63
boost::asio::io_context & getGlobalIoService()
Returns the global io_context instance for the calling thread.
Definition global.cpp:36
static thread_local std::unique_ptr< ndn::Scheduler > g_scheduler
Definition global.cpp:31