#ifndef CONTROL_CONNECTOR_H #define CONTROL_CONNECTOR_H #include "thread_pool.h" #include "xcecd_utils.h" #include "client.h" #include "xcectx.h" #include "controller.capnp.h" typedef struct { xce_client_config_t* conf; endpoint_t ep; xce_ctx_t ctx; } api_ctx_t; typedef struct controller_connector_ctx_s { void *thread_pool; void *process_manager; char *remote_host; char *virtual_name; void **worker_list; int remote_port; int join_interval; bool running; } controller_connector_ctx_t; extern controller_connector_ctx_t *cc_ctx; typedef struct { int (*job_finished)(xcecd_job_t *job); int (*job_stopped)(uint64_t jobid); int (*job_resumed)(uint64_t jobid); int (*job_start_error)(uint64_t jobid); int (*job_status_error)(uint64_t jobid); int (*job_ckpted)(uint64_t jobid, int status, const char *info); int (*job_remote_start)(uint64_t jobid, const char *hostname, const char *command); bool (*reply_startjob)(xcecd_job_t *job); } cc_callbacks_t; extern void xcecd_process_command(void* arg); int start_controller_connector_thread(task_func_t function, void* arg); int xcecd_join_cluster(hostattrs_t* attrs); bool controller_connector_start(void); bool xcecd_reply_startjob(xcecd_job_t *job); int xcecd_job_finished(xcecd_job_t *job); int xcecd_job_stopped(uint64_t jobid); int xcecd_job_resumed(uint64_t jobid); int checking_connection(); int xcecd_job_start_error(uint64_t jobid); int xcecd_job_status_error(uint64_t jobid); int xcecd_job_ckpted(uint64_t jobid, int status, const char *info); int xcecd_job_remote_start(uint64_t jobid, const char *hostname, const char *command); const cc_callbacks_t* get_cc_callbacks(void); int xcecd_task_fail(uint64_t jobid, int clientidx, int taskidx, int code); int xcecd_jobpost_done(uint64_t jobid); int xcecd_notify_job_fail(uint64_t jobid, int stage, int code); #endif // CONTROL_CONNECTOR_H