* Send file contents to server backend. We could use sendfile(), but to remain
* more portable lets just read/write the darn thing.
*/
-static int fio_client_send_ini(struct fio_client *client, const char *filename)
+static int __fio_client_send_ini(struct fio_client *client, const char *filename)
{
struct stat sb;
char *p, *buf;
return ret;
}
+int fio_client_send_ini(struct fio_client *client, const char *filename)
+{
+ if (__fio_client_send_ini(client, filename)) {
+ remove_client(client);
+ return 1;
+ }
+
+ client->sent_job = 1;
+ return 0;
+}
+
int fio_clients_send_ini(const char *filename)
{
struct fio_client *client;
flist_for_each_safe(entry, tmp, &client_list) {
client = flist_entry(entry, struct fio_client, list);
- if (fio_client_send_ini(client, filename))
- remove_client(client);
-
- client->sent_job = 1;
+ fio_client_send_ini(client, filename);
}
return !nr_clients;
extern int fio_clients_connect(void);
extern int fio_start_client(struct fio_client *);
extern int fio_start_all_clients(void);
+extern int fio_client_send_ini(struct fio_client *, const char *);
extern int fio_clients_send_ini(const char *);
extern int fio_handle_clients(struct client_ops *);
extern int fio_client_add(struct client_ops *, const char *, void **);
static int gfio_server_running;
static const char *gfio_graph_font;
-static void gfio_update_thread_status(char *status_message, double perc);
static void view_log(GtkWidget *w, gpointer data);
#define ARRAYSIZE(x) (sizeof((x)) / (sizeof((x)[0])))
struct thread_options o;
};
+static void gfio_update_thread_status(struct gui_entry *ge, char *status_message, double perc);
+static void gfio_update_thread_status_all(char *status_message, double perc);
+
static struct graph *setup_iops_graph(void)
{
struct graph *g;
sprintf(dst, " - %s", eta_str);
}
- gfio_update_thread_status(output, perc);
+ gfio_update_thread_status(ge, output, perc);
gdk_threads_leave();
}
sprintf(dst, " - %s", eta_str);
}
- gfio_update_thread_status(output, perc);
+ gfio_update_thread_status_all(output, perc);
gdk_threads_leave();
}
gdk_threads_leave();
}
-static void gfio_update_thread_status(char *status_message, double perc)
+static void gfio_update_thread_status(struct gui_entry *ge,
+ char *status_message, double perc)
+{
+ static char message[100];
+ const char *m = message;
+
+ strncpy(message, status_message, sizeof(message) - 1);
+ gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ge->thread_status_pb), m);
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ge->thread_status_pb), perc / 100.0);
+ gtk_widget_queue_draw(main_ui.window);
+}
+
+static void gfio_update_thread_status_all(char *status_message, double perc)
{
struct gui *ui = &main_ui;
static char message[100];
static int send_job_files(struct gui_entry *ge)
{
+ struct gfio_client *gc = ge->client;
int i, ret = 0;
for (i = 0; i < ge->nr_job_files; i++) {
- ret = fio_clients_send_ini(ge->job_files[i]);
+ ret = fio_client_send_ini(gc->client, ge->job_files[i]);
if (ret)
break;