mirror of
				https://git.haproxy.org/git/haproxy.git/
				synced 2025-11-04 02:21:03 +01:00 
			
		
		
		
	Several times some users have expressed the non-intuitive aspect of some of our stat/info metrics and suggested to add some help. This patch replaces the char* arrays with an array of name_desc so that we now have some reserved room to store a description with each stat or info field. These descriptions are currently empty and not reported yet.
		
			
				
	
	
		
			125 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * include/proto/stats.h
 | 
						|
 * This file contains definitions of some primitives to dedicated to
 | 
						|
 * statistics output.
 | 
						|
 *
 | 
						|
 * Copyright (C) 2000-2011 Willy Tarreau - w@1wt.eu
 | 
						|
 *
 | 
						|
 * This library is free software; you can redistribute it and/or
 | 
						|
 * modify it under the terms of the GNU Lesser General Public
 | 
						|
 * License as published by the Free Software Foundation, version 2.1
 | 
						|
 * exclusively.
 | 
						|
 *
 | 
						|
 * This library 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
 | 
						|
 * Lesser General Public License for more details.
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU Lesser General Public
 | 
						|
 * License along with this library; if not, write to the Free Software
 | 
						|
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef _PROTO_STATS_H
 | 
						|
#define _PROTO_STATS_H
 | 
						|
 | 
						|
#include <common/config.h>
 | 
						|
#include <types/applet.h>
 | 
						|
#include <types/stream_interface.h>
 | 
						|
#include <types/stats.h>
 | 
						|
 | 
						|
 | 
						|
static inline enum field_format field_format(const struct field *f, int e)
 | 
						|
{
 | 
						|
	return f[e].type & FF_MASK;
 | 
						|
}
 | 
						|
 | 
						|
static inline enum field_origin field_origin(const struct field *f, int e)
 | 
						|
{
 | 
						|
	return f[e].type & FO_MASK;
 | 
						|
}
 | 
						|
 | 
						|
static inline enum field_scope field_scope(const struct field *f, int e)
 | 
						|
{
 | 
						|
	return f[e].type & FS_MASK;
 | 
						|
}
 | 
						|
 | 
						|
static inline enum field_nature field_nature(const struct field *f, int e)
 | 
						|
{
 | 
						|
	return f[e].type & FN_MASK;
 | 
						|
}
 | 
						|
 | 
						|
static inline const char *field_str(const struct field *f, int e)
 | 
						|
{
 | 
						|
	return (field_format(f, e) == FF_STR && f[e].u.str) ? f[e].u.str : "";
 | 
						|
}
 | 
						|
 | 
						|
static inline struct field mkf_s32(uint32_t type, int32_t value)
 | 
						|
{
 | 
						|
	struct field f = { .type = FF_S32 | type, .u.s32 = value };
 | 
						|
	return f;
 | 
						|
}
 | 
						|
 | 
						|
static inline struct field mkf_u32(uint32_t type, uint32_t value)
 | 
						|
{
 | 
						|
	struct field f = { .type = FF_U32 | type, .u.u32 = value };
 | 
						|
	return f;
 | 
						|
}
 | 
						|
 | 
						|
static inline struct field mkf_s64(uint32_t type, int64_t value)
 | 
						|
{
 | 
						|
	struct field f = { .type = FF_S64 | type, .u.s64 = value };
 | 
						|
	return f;
 | 
						|
}
 | 
						|
 | 
						|
static inline struct field mkf_u64(uint32_t type, uint64_t value)
 | 
						|
{
 | 
						|
	struct field f = { .type = FF_U64 | type, .u.u64 = value };
 | 
						|
	return f;
 | 
						|
}
 | 
						|
 | 
						|
static inline struct field mkf_str(uint32_t type, const char *value)
 | 
						|
{
 | 
						|
	struct field f = { .type = FF_STR | type, .u.str = value };
 | 
						|
	return f;
 | 
						|
}
 | 
						|
 | 
						|
static inline struct field mkf_flt(uint32_t type, double value)
 | 
						|
{
 | 
						|
	struct field f = { .type = FF_FLT | type, .u.flt = value };
 | 
						|
	return f;
 | 
						|
}
 | 
						|
 | 
						|
extern const char *stat_status_codes[];
 | 
						|
 | 
						|
/* These two structs contains all field names and descriptions according to
 | 
						|
 * the the number of entries in "enum stat_field" and "enum info_field"
 | 
						|
 */
 | 
						|
extern const struct name_desc stat_fields[];
 | 
						|
extern const struct name_desc info_fields[];
 | 
						|
 | 
						|
int stats_fill_info(struct field *info, int len);
 | 
						|
int stats_fill_fe_stats(struct proxy *px, struct field *stats, int len);
 | 
						|
int stats_fill_li_stats(struct proxy *px, struct listener *l, int flags,
 | 
						|
                        struct field *stats, int len);
 | 
						|
int stats_fill_sv_stats(struct proxy *px, struct server *sv, int flags,
 | 
						|
                        struct field *stats, int len);
 | 
						|
int stats_fill_be_stats(struct proxy *px, int flags, struct field *stats, int len);
 | 
						|
 | 
						|
extern struct applet http_stats_applet;
 | 
						|
 | 
						|
void stats_io_handler(struct stream_interface *si);
 | 
						|
int stats_emit_raw_data_field(struct buffer *out, const struct field *f);
 | 
						|
int stats_emit_typed_data_field(struct buffer *out, const struct field *f);
 | 
						|
int stats_emit_field_tags(struct buffer *out, const struct field *f,
 | 
						|
			  char delim);
 | 
						|
 | 
						|
#endif /* _PROTO_STATS_H */
 | 
						|
 | 
						|
/*
 | 
						|
 * Local variables:
 | 
						|
 *  c-indent-level: 8
 | 
						|
 *  c-basic-offset: 8
 | 
						|
 * End:
 | 
						|
 */
 |