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
 | 
