The internal header directory conflicted with in-source builds causing a build failure. This is fixed by renaming the internal header directory to something other than maxscale. The renaming pointed out a few problems in a couple of source files that appeared to include internal headers when the headers were in fact public headers. Fixed maxctrl in-source builds by making the copying of the sources optional.
		
			
				
	
	
		
			144 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			3.8 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 <maxscale/service.h>
 | 
						|
 | 
						|
MXS_BEGIN_DECLS
 | 
						|
 | 
						|
/**
 | 
						|
 * @file service.h - MaxScale internal service functions
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * Service life cycle management
 | 
						|
 *
 | 
						|
 * These functions should only be called by the MaxScale core.
 | 
						|
 */
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Allocate a new service
 | 
						|
 *
 | 
						|
 * @param name  The service name
 | 
						|
 * @param router The router module this service uses
 | 
						|
 *
 | 
						|
 * @return The newly created service or NULL if an error occurred
 | 
						|
 */
 | 
						|
SERVICE* service_alloc(const char *name, const char *router);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Free the specified service
 | 
						|
 *
 | 
						|
 * @param service The service to free
 | 
						|
 */
 | 
						|
void service_free(SERVICE *service);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Shut all services down
 | 
						|
 *
 | 
						|
 * Turns on the shutdown flag in each service. This should be done as
 | 
						|
 * part of the MaxScale shutdown.
 | 
						|
 */
 | 
						|
void service_shutdown(void);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Destroy all service router and filter instances
 | 
						|
 *
 | 
						|
 * Calls the @c destroyInstance entry point of each service' router and
 | 
						|
 * filters. This should be done after all worker threads have exited.
 | 
						|
 */
 | 
						|
void service_destroy_instances(void);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Launch all services
 | 
						|
 *
 | 
						|
 * Initialize and start all services. This should only be called once by the
 | 
						|
 * main initialization code.
 | 
						|
 *
 | 
						|
 * @return Number of successfully started services
 | 
						|
 */
 | 
						|
int service_launch_all(void);
 | 
						|
 | 
						|
/**
 | 
						|
 * Creating and adding new components to services
 | 
						|
 */
 | 
						|
SERV_LISTENER* serviceCreateListener(SERVICE *service, const char *name,
 | 
						|
                                     const char *protocol, const char *address,
 | 
						|
                                     unsigned short port, const char *authenticator,
 | 
						|
                                     const char *options, SSL_LISTENER *ssl);
 | 
						|
 | 
						|
void serviceRemoveBackend(SERVICE *service, const SERVER *server);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Serialize a service to a file
 | 
						|
 *
 | 
						|
 * This converts @c service into an INI format file.
 | 
						|
 *
 | 
						|
 * NOTE: This does not persist the complete service configuration and requires
 | 
						|
 * that an existing service configuration is in the main configuration file.
 | 
						|
 *
 | 
						|
 * @param service Service to serialize
 | 
						|
 * @return False if the serialization of the service fails, true if it was successful
 | 
						|
 */
 | 
						|
bool service_serialize(const SERVICE *service);
 | 
						|
 | 
						|
/**
 | 
						|
 * Internal utility functions
 | 
						|
 */
 | 
						|
char*    service_get_name(SERVICE* service);
 | 
						|
bool     service_all_services_have_listeners(void);
 | 
						|
int      service_isvalid(SERVICE *service);
 | 
						|
 | 
						|
/**
 | 
						|
 * Check if a service uses @c servers
 | 
						|
 * @param server Server that is queried
 | 
						|
 * @return True if server is used by at least one service
 | 
						|
 */
 | 
						|
bool service_server_in_use(const SERVER *server);
 | 
						|
 | 
						|
/** Update the server weights used by services */
 | 
						|
void service_update_weights();
 | 
						|
 | 
						|
/**
 | 
						|
 * Alteration of the service configuration
 | 
						|
 */
 | 
						|
void  serviceAddRouterOption(SERVICE *service, char *option);
 | 
						|
void  serviceClearRouterOptions(SERVICE *service);
 | 
						|
void  service_update(SERVICE *service, char *router, char *user, char *auth);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Add parameters to a service
 | 
						|
 *
 | 
						|
 * A copy of @c param is added to @c service.
 | 
						|
 *
 | 
						|
 * @param service Service where the parameters are added
 | 
						|
 * @param param Parameters to add
 | 
						|
 */
 | 
						|
void service_add_parameters(SERVICE *service, const MXS_CONFIG_PARAMETER *param);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief Set listener rebinding interval
 | 
						|
 *
 | 
						|
 * @param service Service to configure
 | 
						|
 * @param value String value o
 | 
						|
 */
 | 
						|
void service_set_retry_interval(SERVICE *service, int value);
 | 
						|
 | 
						|
/**
 | 
						|
 * Internal debugging diagnostics
 | 
						|
 */
 | 
						|
void       printService(SERVICE *service);
 | 
						|
void       printAllServices(void);
 | 
						|
 | 
						|
MXS_END_DECLS
 |