예제 #1
0
static bool
on_timeout_cmd(void *data)
{
    const char *cmd;
    const char *param;

    cmd = cmds[cur_cmd++];
    param = cmds[cur_cmd++];

    printf("Firing new command: %s %s\n", cmd, param);

    if (!strcmp(cmd, "monitor"))
        sol_platform_add_service_monitor(on_service_changed, param, NULL);
    else if (!strcmp(cmd, "stop-monitor"))
        sol_platform_del_service_monitor(on_service_changed, param, NULL);
    else if (!strcmp(cmd, "start"))
        sol_platform_start_service(param);
    else if (!strcmp(cmd, "stop"))
        sol_platform_stop_service(param);
    else if (!strcmp(cmd, "restart"))
        sol_platform_restart_service(param);
    else if (!strcmp(cmd, "target"))
        sol_platform_set_target(param);

    if (n_cmds - cur_cmd >= 2)
        return true;

    timeout_handle = NULL;
    return false;
}
예제 #2
0
static int
platform_target_process(struct sol_flow_node *node, void *data, uint16_t port,
    uint16_t conn_id, const struct sol_flow_packet *packet)
{
    int r;
    const char *target;

    r = sol_flow_packet_get_string(packet, &target);
    SOL_INT_CHECK(r, < 0, r);

    r = sol_platform_set_target(target);

    if (r < 0) {
        sol_flow_send_error_packet(node, r,
            "Could not change the system target to: %s", target);
    }

    return 0;
}