arg, handler, failed_handler, user_data);
}
+void
+ply_boot_client_tell_daemon_to_progress_pause (ply_boot_client_t *client,
+ ply_boot_client_response_handler_t handler,
+ ply_boot_client_response_handler_t failed_handler,
+ void *user_data)
+{
+ ply_boot_client_queue_request (client, PLY_BOOT_PROTOCOL_REQUEST_TYPE_PROGRESS_PAUSE,
+ NULL, handler, failed_handler, user_data);
+}
+
+void
+ply_boot_client_tell_daemon_to_progress_unpause (ply_boot_client_t *client,
+ ply_boot_client_response_handler_t handler,
+ ply_boot_client_response_handler_t failed_handler,
+ void *user_data)
+{
+ ply_boot_client_queue_request (client, PLY_BOOT_PROTOCOL_REQUEST_TYPE_PROGRESS_UNPAUSE,
+ NULL, handler, failed_handler, user_data);
+}
+
void
ply_boot_client_tell_daemon_about_error (ply_boot_client_t *client,
ply_boot_client_response_handler_t handler,
ply_boot_client_response_handler_t handler,
ply_boot_client_response_handler_t failed_handler,
void *user_data);
-
+void ply_boot_client_tell_daemon_to_progress_pause (ply_boot_client_t *client,
+ ply_boot_client_response_handler_t handler,
+ ply_boot_client_response_handler_t failed_handler,
+ void *user_data);
+void ply_boot_client_tell_daemon_to_progress_unpause (ply_boot_client_t *client,
+ ply_boot_client_response_handler_t handler,
+ ply_boot_client_response_handler_t failed_handler,
+ void *user_data);
void ply_boot_client_disconnect (ply_boot_client_t *client);
void ply_boot_client_attach_to_event_loop (ply_boot_client_t *client,
ply_event_loop_t *loop);
on_failure, key_answer_state);
}
+static void
+on_progress_pause_request (state_t *state,
+ const char *command)
+{
+ ply_boot_client_tell_daemon_to_progress_pause (state->client,
+ (ply_boot_client_response_handler_t)
+ on_success,
+ (ply_boot_client_response_handler_t)
+ on_failure, state);
+}
+
+
+static void
+on_progress_unpause_request (state_t *state,
+ const char *command)
+{
+ ply_boot_client_tell_daemon_to_progress_unpause (state->client,
+ (ply_boot_client_response_handler_t)
+ on_success,
+ (ply_boot_client_response_handler_t)
+ on_failure, state);
+}
+
static void
on_report_error_request (state_t *state,
const char *command)
PLY_COMMAND_OPTION_TYPE_STRING,
NULL);
+ ply_command_parser_add_command (state.command_parser,
+ "progress-pause", "Pause boot progress bar",
+ (ply_command_handler_t)
+ on_progress_pause_request, &state,
+ NULL);
+
+ ply_command_parser_add_command (state.command_parser,
+ "progress-unpause", "Unpause boot progress bar",
+ (ply_command_handler_t)
+ on_progress_unpause_request, &state,
+ NULL);
+
ply_command_parser_add_command (state.command_parser,
"report-error", "Tell boot daemon there were errors during boot",
(ply_command_handler_t)
ply_list_append_data (state->keystroke_triggers, keystroke_trigger);
}
-
static void
on_ignore_keystroke (state_t *state,
const char *keys)
}
}
+static void
+on_progress_pause (state_t *state)
+{
+ ply_progress_pause (state->progress);
+}
+
+static void
+on_progress_unpause (state_t *state)
+{
+ ply_progress_unpause (state->progress);
+}
static void
on_newroot (state_t *state,
(ply_boot_server_ask_question_handler_t) on_ask_question,
(ply_boot_server_watch_for_keystroke_handler_t) on_watch_for_keystroke,
(ply_boot_server_ignore_keystroke_handler_t) on_ignore_keystroke,
+ (ply_boot_server_progress_pause_handler_t) on_progress_pause,
+ (ply_boot_server_progress_unpause_handler_t) on_progress_unpause,
(ply_boot_server_show_splash_handler_t) on_show_splash,
(ply_boot_server_hide_splash_handler_t) on_hide_splash,
(ply_boot_server_newroot_handler_t) on_newroot,
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_QUESTION "W"
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_KEYSTROKE "K"
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_KEYSTROKE_REMOVE "L"
+#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_PROGRESS_PAUSE "A"
+#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_PROGRESS_UNPAUSE "a"
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_SHOW_SPLASH "$"
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_HIDE_SPLASH "H"
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_NEWROOT "R"
#define PLY_BOOT_PROTOCOL_REQUEST_TYPE_ERROR "!"
+
#define PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ACK "\x6"
#define PLY_BOOT_PROTOCOL_RESPONSE_TYPE_NAK "\x15"
#define PLY_BOOT_PROTOCOL_RESPONSE_TYPE_ANSWER "\x2"
ply_boot_server_ask_question_handler_t ask_question_handler;
ply_boot_server_watch_for_keystroke_handler_t watch_for_keystroke_handler;
ply_boot_server_ignore_keystroke_handler_t ignore_keystroke_handler;
+ ply_boot_server_progress_pause_handler_t progress_pause_handler;
+ ply_boot_server_progress_unpause_handler_t progress_unpause_handler;
ply_boot_server_quit_handler_t quit_handler;
void *user_data;
ply_boot_server_ask_question_handler_t ask_question_handler,
ply_boot_server_watch_for_keystroke_handler_t watch_for_keystroke_handler,
ply_boot_server_ignore_keystroke_handler_t ignore_keystroke_handler,
+ ply_boot_server_progress_pause_handler_t progress_pause_handler,
+ ply_boot_server_progress_unpause_handler_t progress_unpause_handler,
ply_boot_server_show_splash_handler_t show_splash_handler,
ply_boot_server_hide_splash_handler_t hide_splash_handler,
ply_boot_server_newroot_handler_t newroot_handler,
server->ask_question_handler = ask_question_handler;
server->watch_for_keystroke_handler = watch_for_keystroke_handler;
server->ignore_keystroke_handler = ignore_keystroke_handler;
+ server->progress_pause_handler = progress_pause_handler;
+ server->progress_unpause_handler = progress_unpause_handler;
server->newroot_handler = newroot_handler;
server->error_handler = error_handler;
server->system_initialized_handler = initialized_handler;
argument,
server);
}
+ else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_PROGRESS_PAUSE) == 0)
+ {
+ if (server->progress_pause_handler != NULL)
+ server->progress_pause_handler (server->user_data,
+ server);
+ }
+ else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_PROGRESS_UNPAUSE) == 0)
+ {
+ if (server->progress_unpause_handler != NULL)
+ server->progress_unpause_handler (server->user_data,
+ server);
+ }
else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_NEWROOT) == 0)
{
if (server->newroot_handler != NULL)
return;
}
+static void
+on_progress_pause (ply_event_loop_t *loop)
+{
+ printf ("got progress pause request\n");
+
+ return;
+}
+
+static void
+on_progress_unpause (ply_event_loop_t *loop)
+{
+ printf ("got progress unpause request\n");
+
+ return;
+}
static void
on_ignore_keystroke (ply_event_loop_t *loop)
(ply_boot_server_ask_question_handler_t) on_ask_question,
(ply_boot_server_watch_for_keystroke_handler_t) on_watch_for_keystroke,
(ply_boot_server_ignore_keystroke_handler_t) on_ignore_keystroke,
+ (ply_boot_server_progress_pause_handler_t) on_progress_pause,
+ (ply_boot_server_progress_unpause_handler_t) on_progress_unpause,
(ply_boot_server_show_splash_handler_t) on_show_splash,
(ply_boot_server_hide_splash_handler_t) on_hide_splash,
(ply_boot_server_newroot_handler_t) on_newroot,
ply_boot_server_t *server);
typedef void (* ply_boot_server_newroot_handler_t) (void *user_data,
- const char *root_dir,
- ply_boot_server_t *server);
+ const char *root_dir,
+ ply_boot_server_t *server);
typedef void (* ply_boot_server_show_splash_handler_t) (void *user_data,
ply_boot_server_t *server);
const char *prompt,
ply_trigger_t *answer,
ply_boot_server_t *server);
-typedef void (* ply_boot_server_question_answer_handler_t) (void *answer_data,
+typedef void (* ply_boot_server_question_answer_handler_t) (void *answer_data,
const char *answer,
ply_boot_server_t *server);
typedef void (* ply_boot_server_ask_question_handler_t) (void *user_data,
const char *prompt,
ply_trigger_t *answer,
ply_boot_server_t *server);
-typedef void (* ply_boot_server_watch_for_keystroke_handler_t) (void *user_data,
+typedef void (* ply_boot_server_watch_for_keystroke_handler_t) (void *user_data,
+ const char *keys,
+ ply_trigger_t *answer,
+ ply_boot_server_t *server);
+typedef void (* ply_boot_server_ignore_keystroke_handler_t) (void *user_data,
const char *keys,
- ply_trigger_t *answer,
ply_boot_server_t *server);
-
-typedef void (* ply_boot_server_ignore_keystroke_handler_t) (void *user_data,
- const char *keys,
+typedef void (* ply_boot_server_progress_pause_handler_t) (void *user_data,
+ ply_boot_server_t *server);
+typedef void (* ply_boot_server_progress_unpause_handler_t) (void *user_data,
ply_boot_server_t *server);
typedef void (* ply_boot_server_system_initialized_handler_t) (void *user_data,
typedef void (* ply_boot_server_error_handler_t) (void *user_data,
ply_boot_server_t *server);
-
typedef void (* ply_boot_server_quit_handler_t) (void *user_data,
bool retain_splash,
ply_boot_server_t *server);
ply_boot_server_ask_question_handler_t ask_question_handler,
ply_boot_server_watch_for_keystroke_handler_t watch_for_keystroke_handler,
ply_boot_server_ignore_keystroke_handler_t ignore_keystroke_handler,
+ ply_boot_server_progress_pause_handler_t on_progress_pause,
+ ply_boot_server_progress_unpause_handler_t on_progress_unpause,
ply_boot_server_show_splash_handler_t show_splash_handler,
ply_boot_server_hide_splash_handler_t hide_splash_handler,
ply_boot_server_newroot_handler_t newroot_handler,