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