client.h revision 6b79c80c14766df7b0507c4ec679507a315ad61a
1#ifndef CLIENT_H 2#define CLIENT_H 3 4#include <sys/socket.h> 5#include <sys/un.h> 6#include <netinet/in.h> 7#include <arpa/inet.h> 8 9#include "stat.h" 10 11struct fio_net_cmd; 12struct client_ops; 13 14struct fio_client { 15 struct flist_head list; 16 struct flist_head hash_list; 17 struct flist_head arg_list; 18 union { 19 struct sockaddr_in addr; 20 struct sockaddr_in6 addr6; 21 struct sockaddr_un addr_un; 22 }; 23 char *hostname; 24 int port; 25 int fd; 26 unsigned int refs; 27 28 char *name; 29 30 int state; 31 32 int skip_newline; 33 int is_sock; 34 int disk_stats_shown; 35 unsigned int jobs; 36 int error; 37 int ipv6; 38 int sent_job; 39 40 struct flist_head eta_list; 41 struct client_eta *eta_in_flight; 42 43 struct flist_head cmd_list; 44 45 uint16_t argc; 46 char **argv; 47 48 struct client_ops *ops; 49 void *client_data; 50}; 51 52typedef void (*client_text_op_func)(struct fio_client *client, struct fio_net_cmd *cmd); 53typedef void (*client_disk_util_op_func)(struct fio_client *client, struct fio_net_cmd *cmd); 54typedef void (*client_thread_status_op)(struct fio_client *client, struct fio_net_cmd *cmd); 55typedef void (*client_group_stats_op)(struct fio_client *client, struct fio_net_cmd *cmd); 56typedef void (*client_eta_op)(struct jobs_eta *je); 57typedef void (*client_probe_op)(struct fio_client *client, struct fio_net_cmd *cmd); 58typedef void (*client_thread_status_display_op)(char *status_message, double perc); 59typedef void (*client_quit_op)(struct fio_client *); 60typedef void (*client_add_job_op)(struct fio_client *, struct fio_net_cmd *); 61typedef void (*client_timed_out)(struct fio_client *); 62typedef void (*client_stop_op)(struct fio_client *, struct fio_net_cmd *); 63 64struct client_ops { 65 client_text_op_func text_op; 66 client_disk_util_op_func disk_util; 67 client_thread_status_op thread_status; 68 client_group_stats_op group_stats; 69 client_eta_op eta; 70 client_probe_op probe; 71 client_quit_op quit; 72 client_add_job_op add_job; 73 client_timed_out timed_out; 74 client_stop_op stop; 75 int stay_connected; 76}; 77 78extern struct client_ops fio_client_ops; 79 80struct client_eta { 81 struct jobs_eta eta; 82 unsigned int pending; 83}; 84 85extern int fio_handle_client(struct fio_client *); 86extern void fio_client_dec_jobs_eta(struct client_eta *eta, client_eta_op fn); 87extern void fio_client_sum_jobs_eta(struct jobs_eta *dst, struct jobs_eta *je); 88 89enum { 90 Fio_client_ipv4 = 1, 91 Fio_client_ipv6, 92 Fio_client_socket, 93}; 94 95extern int fio_clients_connect(void); 96extern int fio_clients_send_ini(const char *); 97extern int fio_handle_clients(struct client_ops *); 98extern int fio_client_add(struct client_ops *, const char *, void **); 99extern struct fio_client *fio_client_add_explicit(struct client_ops *, const char *, int, int); 100extern void fio_client_add_cmd_option(void *, const char *); 101extern void fio_clients_terminate(void); 102 103#endif 104 105