If a connection has not been fully established (i.e. authentication has been completed) then it should not be considered as a connection pool candidate.
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.6 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.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * @file protocol.h
 | 
						|
 *
 | 
						|
 * The protocol module interface definition.
 | 
						|
 */
 | 
						|
 | 
						|
#include <maxscale/cdefs.h>
 | 
						|
#include <maxscale/buffer.h>
 | 
						|
 | 
						|
MXS_BEGIN_DECLS
 | 
						|
 | 
						|
struct dcb;
 | 
						|
struct server;
 | 
						|
struct session;
 | 
						|
 | 
						|
/**
 | 
						|
 * @verbatim
 | 
						|
 * The operations that can be performed on the descriptor
 | 
						|
 *
 | 
						|
 *      read            EPOLLIN handler for the socket
 | 
						|
 *      write           MaxScale data write entry point
 | 
						|
 *      write_ready     EPOLLOUT handler for the socket, indicates
 | 
						|
 *                      that the socket is ready to send more data
 | 
						|
 *      error           EPOLLERR handler for the socket
 | 
						|
 *      hangup          EPOLLHUP handler for the socket
 | 
						|
 *      accept          Accept handler for listener socket only
 | 
						|
 *      connect         Create a connection to the specified server
 | 
						|
 *                      for the session pased in
 | 
						|
 *      close           MaxScale close entry point for the socket
 | 
						|
 *      listen          Create a listener for the protocol
 | 
						|
 *      auth            Authentication entry point
 | 
						|
 *      session         Session handling entry point
 | 
						|
 *      auth_default    Default authenticator name
 | 
						|
 *      connlimit       Maximum connection limit
 | 
						|
 *      established     Whether connection is fully established
 | 
						|
 * @endverbatim
 | 
						|
 *
 | 
						|
 * This forms the "module object" for protocol modules within the gateway.
 | 
						|
 *
 | 
						|
 * @see load_module
 | 
						|
 */
 | 
						|
typedef struct mxs_protocol
 | 
						|
{
 | 
						|
    int32_t (*read)(struct dcb *);
 | 
						|
    int32_t (*write)(struct dcb *, GWBUF *);
 | 
						|
    int32_t (*write_ready)(struct dcb *);
 | 
						|
    int32_t (*error)(struct dcb *);
 | 
						|
    int32_t (*hangup)(struct dcb *);
 | 
						|
    int32_t (*accept)(struct dcb *);
 | 
						|
    int32_t (*connect)(struct dcb *, struct server *, struct session *);
 | 
						|
    int32_t (*close)(struct dcb *);
 | 
						|
    int32_t (*listen)(struct dcb *, char *);
 | 
						|
    int32_t (*auth)(struct dcb *, struct server *, struct session *, GWBUF *);
 | 
						|
    int32_t (*session)(struct dcb *, void *); // TODO: remove this, not used
 | 
						|
    char   *(*auth_default)();
 | 
						|
    int32_t (*connlimit)(struct dcb *, int limit);
 | 
						|
    bool    (*established)(struct dcb *);
 | 
						|
} MXS_PROTOCOL;
 | 
						|
 | 
						|
/**
 | 
						|
 * The MXS_PROTOCOL version data. The following should be updated whenever
 | 
						|
 * the MXS_PROTOCOL structure is changed. See the rules defined in modinfo.h
 | 
						|
 * that define how these numbers should change.
 | 
						|
 */
 | 
						|
#define MXS_PROTOCOL_VERSION      {1, 1, 0}
 | 
						|
 | 
						|
MXS_END_DECLS
 |