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:
50
include/maxscale/mainworker.hh
Normal file
50
include/maxscale/mainworker.hh
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <maxscale/ccdefs.hh>
|
||||
|
||||
#include <maxbase/worker.hh>
|
||||
|
||||
namespace maxscale
|
||||
{
|
||||
|
||||
class MainWorker : public mxb::Worker
|
||||
{
|
||||
MainWorker(const MainWorker&) = delete;
|
||||
MainWorker& operator=(const MainWorker&) = delete;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Construct the main worker.
|
||||
*
|
||||
* @note There can be exactly one instance of @c MainWorker.
|
||||
*/
|
||||
MainWorker();
|
||||
|
||||
~MainWorker();
|
||||
|
||||
/**
|
||||
* Return the main worker.
|
||||
*
|
||||
* @return The main worker.
|
||||
*/
|
||||
static MainWorker& get();
|
||||
|
||||
private:
|
||||
bool pre_run() override;
|
||||
void post_run() override;
|
||||
void epoll_tick() override;
|
||||
};
|
||||
|
||||
}
|
@ -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
65
server/core/mainworker.cc
Normal 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()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user