MaxScale/server/modules/routing/schemarouter/schemarouterinstance.hh
Markus Mäkelä bbfd9ce136 Move Backend and SessionCommand classes to the core
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.
2017-06-22 10:40:16 +03:00

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 */
};
}