#if !defined(_CLIENT_H_) #define _CLIENT_H_ 1 #include #include "netio.h" #include "request.h" #include "xce/types.h" #include "xceapi.h" typedef void* xcecli_ctx_t; #define N_MAX_MASTERS (3) typedef struct { int nmasters; char* masters[N_MAX_MASTERS]; int master_ports[N_MAX_MASTERS]; char* from; char* key; } xce_client_config_t; #define xcecli_jobfinish(ctx, finish) xcecli_notify_jobfinish(ctx, finish) extern int xcecli_ctx_init(xcecli_ctx_t*, xce_client_config_t*); extern void xcecli_ctx_fini(xcecli_ctx_t); extern int xcecli_set_handler(xcecli_ctx_t, xce_request_handler_t, void*); extern int xcecli_start(xcecli_ctx_t); extern int xcecli_stop(xcecli_ctx_t); extern int xcecli_wakeup(xcecli_ctx_t, int); extern int xcecli_hello(xcecli_ctx_t, char*); extern int xcecli_nop(xcecli_ctx_t); extern int xcecli_heartbeat(xcecli_ctx_t, int); extern int xcecli_shutdown(xcecli_ctx_t); extern int xcecli_reslist(xcecli_ctx_t, xce_resource_t***); extern int xcecli_join(xcecli_ctx_t, int, hostattrs_t*); extern int xcecli_workerlist(xcecli_ctx_t, xce_worker_t***); extern int xcecli_jobdispatch(xcecli_ctx_t, xce_job_dispatch_t*); extern int xcecli_joblist(xcecli_ctx_t, xce_job_t***); extern int xcecli_clusterconf(xcecli_ctx_t, xce_clusterconf_t**); extern int xcecli_notify_jobfinish(xcecli_ctx_t, xce_jobfinish_t*); extern int xcecli_notify_jobstart(xcecli_ctx_t, job_pidinfo_t*); extern int xcecli_notify_jobfail(xcecli_ctx_t c, job_failinfo_t*); extern int xcecli_notify_jobstop(xcecli_ctx_t, uint64_t); extern int xcecli_notify_jobresume(xcecli_ctx_t, uint64_t); extern int xcecli_notify_jobpostdone(xcecli_ctx_t, uint64_t); extern int xcecli_jobsubmit(xcecli_ctx_t, xce_job_submit_t*, uint64_t*); extern int xcecli_update_resvals(xcecli_ctx_t, int, xce_resval_t**); extern int xcecli_resval(xcecli_ctx_t, char*, char*, xce_resval_t***); extern int xcecli_update_jusage(xcecli_ctx_t, uint64_t, int, int*, int, int*, int, xce_rusage_t**); extern int xcecli_notify(xcecli_ctx_t, xce_notify_data_t*); extern int xcecli_jobctrl(xcecli_ctx_t, xce_jobctrl_t*); extern int xcecli_notify_jobchkpt(xcecli_ctx_t, uint64_t, char*); extern int xcecli_queuectrl(xcecli_ctx_t, xce_queuectrl_t*); extern int xcecli_hostctrl(xcecli_ctx_t, xce_hostctrl_t*); extern int xcecli_runtask(xcecli_ctx_t, xce_taskrun_t*); extern int xcecli_notify_taskstart(xcecli_ctx_t, xce_task_pidinfo_t*); extern int xcecli_notify_taskfail(xcecli_ctx_t, xce_task_failinfo_t*); extern int xcecli_notify_taskfinish(xcecli_ctx_t, xce_task_finish_t*); extern endpoint_t* xcecli_get_my_endpoint(xcecli_ctx_t); extern xce_peerinfo_t* xcecli_get_myinfo(xcecli_ctx_t); extern void xcecli_block_tasks(xcecli_ctx_t); extern void xcecli_unblock_tasks(xcecli_ctx_t); extern int xcecli_set_pend_reason(xcecli_ctx_t, xce_preason_set_t*); extern int xcecli_clear_reason(xcecli_ctx_t, int, uint64_t*); extern int xcecli_jobinfo(xcecli_ctx_t, uint64_t, xce_job_t**); #define xcecli_free_ress(nres, ress) xce_free_ress(nres, ress) #define xcecli_free_workers(nworkers, workers) \ xce_free_workers(nworkers, workers) #define xcecli_free_jobs(njobs, jobs) xce_free_jobs(njobs, jobs) #define xcecli_free_queues(nqueues, queues) xce_free_queues(nqueues, queues) #define xcecli_free_groups(ngroups, groups) xce_free_groups(ngroups, groups) #define xcecli_free_clusterconf(conf) xce_free_clusterconf(conf) #endif