static void connect_clicked(GtkWidget *widget, gpointer data);
static void start_job_clicked(GtkWidget *widget, gpointer data);
+static void send_clicked(GtkWidget *widget, gpointer data);
static struct button_spec {
const char *buttontext;
const int start_insensitive;
} buttonspeclist[] = {
#define CONNECT_BUTTON 0
-#define START_JOB_BUTTON 1
+#define SEND_BUTTON 1
+#define START_JOB_BUTTON 2
{ "Connect", connect_clicked, "Connect to host", 0 },
- { "Start Job",
- start_job_clicked,
+ { "Send", send_clicked, "Send job description to host", 1 },
+ { "Start Job", start_job_clicked,
"Send current fio job to fio server to be executed", 1 },
};
struct graph *iops_graph;
struct graph *bandwidth_graph;
- struct fio_client *client;
+ struct gfio_client *client;
int nr_job_files;
char **job_files;
} ui;
struct gfio_client {
struct gui *ui;
+ struct fio_client *client;
GtkWidget *results_widget;
GtkWidget *disk_util_frame;
GtkWidget *err_entry;
static void gfio_set_connected(struct gui *ui, int connected)
{
if (connected) {
- gtk_widget_set_sensitive(ui->button[START_JOB_BUTTON], 1);
+ gtk_widget_set_sensitive(ui->button[SEND_BUTTON], 1);
ui->connected = 1;
gtk_button_set_label(GTK_BUTTON(ui->button[CONNECT_BUTTON]), "Disconnect");
gtk_widget_set_sensitive(ui->button[CONNECT_BUTTON], 1);
} else {
ui->connected = 0;
gtk_button_set_label(GTK_BUTTON(ui->button[CONNECT_BUTTON]), "Connect");
+ gtk_widget_set_sensitive(ui->button[SEND_BUTTON], 0);
gtk_widget_set_sensitive(ui->button[START_JOB_BUTTON], 0);
gtk_widget_set_sensitive(ui->button[CONNECT_BUTTON], 1);
}
static void gfio_group_stats_op(struct fio_client *client,
struct fio_net_cmd *cmd)
{
- gdk_threads_enter();
- printf("gfio_group_stats_op called\n");
- fio_client_ops.group_stats(client, cmd);
- gdk_threads_leave();
+ /* We're ignoring group stats for now */
}
static gint on_config_drawing_area(GtkWidget *w, GdkEventConfigure *event)
return ret;
}
-static void start_job_thread(struct gui *ui)
-{
- if (send_job_files(ui)) {
- printf("Yeah, I didn't really like those options too much.\n");
- gtk_widget_set_sensitive(ui->button[START_JOB_BUTTON], 1);
- return;
- }
-}
-
static void *server_thread(void *arg)
{
is_backend = 1;
gpointer data)
{
struct gui *ui = data;
+ struct gfio_client *gc = ui->client;
gtk_widget_set_sensitive(ui->button[START_JOB_BUTTON], 0);
- start_job_thread(ui);
+ fio_net_send_simple_cmd(gc->client->fd, FIO_NET_CMD_RUN, 0, NULL);
}
static void file_open(GtkWidget *w, gpointer data);
if (!fio_clients_connect()) {
pthread_create(&ui->t, NULL, job_thread, NULL);
gtk_widget_set_sensitive(ui->button[CONNECT_BUTTON], 0);
+ gtk_widget_set_sensitive(ui->button[SEND_BUTTON], 1);
}
} else {
fio_clients_terminate();
}
}
+static void send_clicked(GtkWidget *widget, gpointer data)
+{
+ struct gui *ui = data;
+
+ if (send_job_files(ui)) {
+ printf("Yeah, I didn't really like those options too much.\n");
+ gtk_widget_set_sensitive(ui->button[START_JOB_BUTTON], 1);
+ }
+
+ gtk_widget_set_sensitive(ui->button[SEND_BUTTON], 0);
+ gtk_widget_set_sensitive(ui->button[START_JOB_BUTTON], 1);
+}
+
static void add_button(struct gui *ui, int i, GtkWidget *buttonbox,
struct button_spec *buttonspec)
{
gc = malloc(sizeof(*gc));
memset(gc, 0, sizeof(*gc));
gc->ui = ui;
+ gc->client = client;
+
+ ui->client = gc;
client->client_data = gc;
}