 10216524ab
			
		
	
	10216524ab
	
	
	
		
			
			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.
		
			
				
	
	
		
			51 lines
		
	
	
		
			1017 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1017 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * 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;
 | |
| };
 | |
| 
 | |
| }
 |