Blame client.h

Packit 8930e1
#ifndef CLIENT_H
Packit 8930e1
#define CLIENT_H
Packit 8930e1
Packit 8930e1
#include <sys/un.h>
Packit 8930e1
#include <netinet/in.h>
Packit 8930e1
#include <arpa/inet.h>
Packit 8930e1
Packit 8930e1
#include "lib/types.h"
Packit 8930e1
#include "stat.h"
Packit 8930e1
Packit 8930e1
struct fio_net_cmd;
Packit 8930e1
Packit 8930e1
enum {
Packit 8930e1
	Client_created		= 0,
Packit 8930e1
	Client_connected	= 1,
Packit 8930e1
	Client_started		= 2,
Packit 8930e1
	Client_running		= 3,
Packit 8930e1
	Client_stopped		= 4,
Packit 8930e1
	Client_exited		= 5,
Packit 8930e1
};
Packit 8930e1
Packit 8930e1
struct client_file {
Packit 8930e1
	char *file;
Packit 8930e1
	bool remote;
Packit 8930e1
};
Packit 8930e1
Packit 8930e1
struct fio_client {
Packit 8930e1
	struct flist_head list;
Packit 8930e1
	struct flist_head hash_list;
Packit 8930e1
	struct flist_head arg_list;
Packit 8930e1
	union {
Packit 8930e1
		struct sockaddr_in addr;
Packit 8930e1
		struct sockaddr_in6 addr6;
Packit 8930e1
		struct sockaddr_un addr_un;
Packit 8930e1
	};
Packit 8930e1
	char *hostname;
Packit 8930e1
	int port;
Packit 8930e1
	int fd;
Packit 8930e1
	unsigned int refs;
Packit 8930e1
	unsigned int last_cmd;
Packit 8930e1
Packit 8930e1
	char *name;
Packit 8930e1
Packit 8930e1
	struct flist_head *opt_lists;
Packit 8930e1
Packit 8930e1
	int state;
Packit 8930e1
Packit 8930e1
	bool skip_newline;
Packit 8930e1
	bool is_sock;
Packit 8930e1
	bool disk_stats_shown;
Packit 8930e1
	unsigned int jobs;
Packit 8930e1
	unsigned int nr_stat;
Packit 8930e1
	int error;
Packit 8930e1
	int signal;
Packit 8930e1
	int ipv6;
Packit 8930e1
	bool sent_job;
Packit 8930e1
	bool did_stat;
Packit 8930e1
	uint32_t type;
Packit 8930e1
Packit 8930e1
	uint32_t thread_number;
Packit 8930e1
	uint32_t groupid;
Packit 8930e1
Packit 8930e1
	struct flist_head eta_list;
Packit 8930e1
	struct client_eta *eta_in_flight;
Packit 8930e1
	unsigned int eta_timeouts;
Packit 8930e1
Packit 8930e1
	struct flist_head cmd_list;
Packit 8930e1
Packit 8930e1
	uint16_t argc;
Packit 8930e1
	char **argv;
Packit 8930e1
Packit 8930e1
	struct client_ops *ops;
Packit 8930e1
	void *client_data;
Packit 8930e1
Packit 8930e1
	struct client_file *files;
Packit 8930e1
	unsigned int nr_files;
Packit 8930e1
Packit 8930e1
	struct buf_output buf;
Packit 8930e1
};
Packit 8930e1
Packit 8930e1
typedef void (client_cmd_op)(struct fio_client *, struct fio_net_cmd *);
Packit 8930e1
typedef void (client_op)(struct fio_client *);
Packit 8930e1
typedef void (client_eta_op)(struct jobs_eta *je);
Packit 8930e1
typedef void (client_timed_out_op)(struct fio_client *);
Packit 8930e1
typedef void (client_jobs_eta_op)(struct fio_client *client, struct jobs_eta *je);
Packit 8930e1
Packit 8930e1
extern struct client_ops fio_client_ops;
Packit 8930e1
Packit 8930e1
struct client_ops {
Packit 8930e1
	client_cmd_op		*text;
Packit 8930e1
	client_cmd_op		*disk_util;
Packit 8930e1
	client_cmd_op		*thread_status;
Packit 8930e1
	client_cmd_op		*group_stats;
Packit 8930e1
	client_jobs_eta_op	*jobs_eta;
Packit 8930e1
	client_eta_op		*eta;
Packit 8930e1
	client_cmd_op		*probe;
Packit 8930e1
	client_cmd_op		*quit;
Packit 8930e1
	client_cmd_op		*add_job;
Packit 8930e1
	client_cmd_op		*update_job;
Packit 8930e1
	client_timed_out_op	*timed_out;
Packit 8930e1
	client_op		*stop;
Packit 8930e1
	client_cmd_op		*start;
Packit 8930e1
	client_cmd_op		*job_start;
Packit 8930e1
	client_timed_out_op	*removed;
Packit 8930e1
Packit 8930e1
	unsigned int eta_msec;
Packit 8930e1
	int stay_connected;
Packit 8930e1
	uint32_t client_type;
Packit 8930e1
};
Packit 8930e1
Packit 8930e1
struct client_eta {
Packit 8930e1
	unsigned int pending;
Packit 8930e1
	struct jobs_eta eta;
Packit 8930e1
};
Packit 8930e1
Packit 8930e1
extern int fio_handle_client(struct fio_client *);
Packit 8930e1
extern void fio_client_sum_jobs_eta(struct jobs_eta *dst, struct jobs_eta *je);
Packit 8930e1
Packit 8930e1
enum {
Packit 8930e1
	Fio_client_ipv4 = 1,
Packit 8930e1
	Fio_client_ipv6,
Packit 8930e1
	Fio_client_socket,
Packit 8930e1
};
Packit 8930e1
Packit 8930e1
extern int fio_client_connect(struct fio_client *);
Packit 8930e1
extern int fio_clients_connect(void);
Packit 8930e1
extern int fio_start_client(struct fio_client *);
Packit 8930e1
extern int fio_start_all_clients(void);
Packit 8930e1
extern int fio_clients_send_ini(const char *);
Packit 8930e1
extern int fio_client_send_ini(struct fio_client *, const char *, bool);
Packit 8930e1
extern int fio_handle_clients(struct client_ops *);
Packit 8930e1
extern int fio_client_add(struct client_ops *, const char *, void **);
Packit 8930e1
extern struct fio_client *fio_client_add_explicit(struct client_ops *, const char *, int, int);
Packit 8930e1
extern void fio_client_add_cmd_option(void *, const char *);
Packit 8930e1
extern int fio_client_add_ini_file(void *, const char *, bool);
Packit 8930e1
extern int fio_client_terminate(struct fio_client *);
Packit 8930e1
extern struct fio_client *fio_get_client(struct fio_client *);
Packit 8930e1
extern void fio_put_client(struct fio_client *);
Packit 8930e1
extern int fio_client_update_options(struct fio_client *, struct thread_options *, uint64_t *);
Packit 8930e1
extern int fio_client_wait_for_reply(struct fio_client *, uint64_t);
Packit 8930e1
extern int fio_clients_send_trigger(const char *);
Packit 8930e1
Packit 8930e1
#define FIO_CLIENT_DEF_ETA_MSEC		900
Packit 8930e1
Packit 8930e1
enum {
Packit 8930e1
	FIO_CLIENT_TYPE_CLI		= 1,
Packit 8930e1
	FIO_CLIENT_TYPE_GUI		= 2,
Packit 8930e1
};
Packit 8930e1
Packit 8930e1
extern int sum_stat_clients;
Packit 8930e1
extern struct thread_stat client_ts;
Packit 8930e1
extern struct group_run_stats client_gs;
Packit 8930e1
Packit 8930e1
#endif
Packit 8930e1