MXS-2218 Add skeleton MainWorker

First step in the introduction of a MainWorker. When finished, all
routing workers will run in separate threads (currently one runs in
the main thread), and the main worker run in the main thread.

Housekeeper will disappear and to the extent housekeeping tasks are
needed (where applicable they will be changed into delayed calls)
they will be run by the main worker.
This commit is contained in:
Johan Wikman
2018-12-27 13:51:32 +02:00
parent dec9fcc3b8
commit 10216524ab
3 changed files with 116 additions and 0 deletions

View File

@ -19,6 +19,7 @@ add_library(maxscale-common SHARED
listener.cc
load_utils.cc
log.cc
mainworker.cc
mariadb.cc
maxscale_pcre2.cc
misc.cc

65
server/core/mainworker.cc Normal file
View File

@ -0,0 +1,65 @@
/*
* Copyright (c) 2018 MariaDB Corporation Ab
*
* Use of this software is governed by the Business Source License included
* in the LICENSE.TXT file and at www.mariadb.com/bsl11.
*
* Change Date: 2022-01-01
*
* On the date above, in accordance with the Business Source License, use
* of this software will be governed by version 2 or later of the General
* Public License.
*/
#include <maxscale/mainworker.hh>
#include <signal.h>
namespace
{
static struct ThisUnit
{
maxscale::MainWorker* pThis;
} this_unit;
}
namespace maxscale
{
MainWorker::MainWorker()
{
mxb_assert(!this_unit.pThis);
this_unit.pThis = this;
}
MainWorker::~MainWorker()
{
mxb_assert(this_unit.pThis);
this_unit.pThis = nullptr;
}
//static
MainWorker& MainWorker::get()
{
mxb_assert(this_unit.pThis);
return *this_unit.pThis;
}
bool MainWorker::pre_run()
{
return true;
}
void MainWorker::post_run()
{
}
void MainWorker::epoll_tick()
{
}
}