157 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * This file is distributed as part of the MariaDB Corporation MaxScale.  It is free
 | |
|  * software: you can redistribute it and/or modify it under the terms of the
 | |
|  * GNU General Public License as published by the Free Software Foundation,
 | |
|  * version 2.
 | |
|  *
 | |
|  * This program is distributed in the hope that it will be useful, but WITHOUT
 | |
|  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 | |
|  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 | |
|  * details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU General Public License along with
 | |
|  * this program; if not, write to the Free Software Foundation, Inc., 51
 | |
|  * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 | |
|  *
 | |
|  * Copyright MariaDB Corporation Ab 2013-2014
 | |
|  */
 | |
| #include <stdio.h>
 | |
| #include <router.h>
 | |
| #include <modinfo.h>
 | |
| 
 | |
| static char *version_str = "V1.0.0";
 | |
| 
 | |
| MODULE_INFO 	info = {
 | |
| 	MODULE_API_ROUTER,
 | |
| 	MODULE_IN_DEVELOPMENT,
 | |
| 	ROUTER_VERSION,
 | |
| 	"A test router - not for use in real systems"
 | |
| };
 | |
| 
 | |
| static	ROUTER	*createInstance(SERVICE *service, char **options);
 | |
| static	void	*newSession(ROUTER *instance, SESSION *session);
 | |
| static	void 	closeSession(ROUTER *instance, void *session);
 | |
| static	void 	freeSession(ROUTER *instance, void *session);
 | |
| static	int	routeQuery(ROUTER *instance, void *session, GWBUF *queue);
 | |
| static	void	diagnostic(ROUTER *instance, DCB *dcb);
 | |
| static  uint8_t getCapabilities (ROUTER* inst, void* router_session);
 | |
| 
 | |
| 
 | |
| static ROUTER_OBJECT MyObject = {
 | |
|     createInstance,
 | |
|     newSession,
 | |
|     closeSession,
 | |
|     freeSession,
 | |
|     routeQuery,
 | |
|     diagnostic,
 | |
|     NULL,
 | |
|     NULL,
 | |
|     getCapabilities
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Implementation of the mandatory version entry point
 | |
|  *
 | |
|  * @return version string of the module
 | |
|  */
 | |
| char *
 | |
| version()
 | |
| {
 | |
| 	return version_str;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * The module initialisation routine, called when the module
 | |
|  * is first loaded.
 | |
|  */
 | |
| void
 | |
| ModuleInit()
 | |
| {
 | |
| 
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * The module entry point routine. It is this routine that
 | |
|  * must populate the structure that is referred to as the
 | |
|  * "module object", this is a structure with the set of
 | |
|  * external entry points for this module.
 | |
|  *
 | |
|  * @return The module object
 | |
|  */
 | |
| ROUTER_OBJECT *
 | |
| GetModuleObject()
 | |
| {
 | |
| 	return &MyObject;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Create an instance of the router for a particular service
 | |
|  * within the gateway.
 | |
|  * 
 | |
|  * @param service	The service this router is being create for
 | |
|  * @param options	The options for this query router
 | |
|  *
 | |
|  * @return The instance data for this new instance
 | |
|  */
 | |
| static	ROUTER	*
 | |
| createInstance(SERVICE *service, char **options)
 | |
| {
 | |
| 	return NULL;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Associate a new session with this instance of the router.
 | |
|  *
 | |
|  * @param instance	The router instance data
 | |
|  * @param session	The session itself
 | |
|  * @return Session specific data for this session
 | |
|  */
 | |
| static	void	*
 | |
| newSession(ROUTER *instance, SESSION *session)
 | |
| {
 | |
| 	return NULL;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Close a session with the router, this is the mechanism
 | |
|  * by which a router may cleanup data structure etc.
 | |
|  *
 | |
|  * @param instance	The router instance data
 | |
|  * @param session	The session being closed
 | |
|  */
 | |
| static	void 	
 | |
| closeSession(ROUTER *instance, void *session)
 | |
| {
 | |
| }
 | |
| 
 | |
| static void freeSession(
 | |
|         ROUTER* router_instance,
 | |
|         void*   router_client_session)
 | |
| {
 | |
|         return;
 | |
| }
 | |
| 
 | |
| static	int	
 | |
| routeQuery(ROUTER *instance, void *session, GWBUF *queue)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Diagnostics routine
 | |
|  *
 | |
|  * @param	instance	The router instance
 | |
|  * @param	dcb		The DCB for diagnostic output
 | |
|  */
 | |
| static	void
 | |
| diagnostic(ROUTER *instance, DCB *dcb)
 | |
| {
 | |
| }
 | |
| 
 | |
| static uint8_t getCapabilities(
 | |
|         ROUTER*  inst,
 | |
|         void*    router_session)
 | |
| {
 | |
|         return 0;
 | |
| }
 | 
