 bbfd9ce136
			
		
	
	bbfd9ce136
	
	
	
		
			
			Using the same implementation of the Backend and SessionCommand classes in both schemarouter and readwritesplit will prevent duplication of code. This commit only splits the generic parts of the class to a Backend class which the schemarouter then extends. The session commands for both routers are similar so they require no special handling.
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| /*
 | |
|  * Copyright (c) 2016 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: 2020-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 "schemarouter.hh"
 | |
| 
 | |
| #include <set>
 | |
| #include <string>
 | |
| 
 | |
| #include <maxscale/router.hh>
 | |
| #include <maxscale/pcre2.h>
 | |
| 
 | |
| #include "schemaroutersession.hh"
 | |
| 
 | |
| namespace schemarouter
 | |
| {
 | |
| 
 | |
| class SchemaRouterSession;
 | |
| 
 | |
| /**
 | |
|  * The per instance data for the router.
 | |
|  */
 | |
| class SchemaRouter: public mxs::Router<SchemaRouter, SchemaRouterSession>
 | |
| {
 | |
| public:
 | |
|     ~SchemaRouter();
 | |
|     static SchemaRouter* create(SERVICE* pService, char** pzOptions);
 | |
|     SchemaRouterSession* newSession(MXS_SESSION* pSession);
 | |
|     void diagnostics(DCB* pDcb);
 | |
|     json_t* diagnostics_json() const;
 | |
|     uint64_t getCapabilities();
 | |
| 
 | |
| private:
 | |
|     friend class SchemaRouterSession;
 | |
| 
 | |
|     /** Internal functions */
 | |
|     SchemaRouter(SERVICE *service, Config& config);
 | |
| 
 | |
|     /** Member variables */
 | |
|     Config                m_config;        /*< expanded config info from SERVICE */
 | |
|     ShardManager          m_shard_manager; /*< Shard maps hashed by user name */
 | |
|     SERVICE*              m_service;       /*< Pointer to service */
 | |
|     SPINLOCK              m_lock;          /*< Lock for the instance data */
 | |
|     Stats                 m_stats;         /*< Statistics for this router */
 | |
| };
 | |
| 
 | |
| } |