diff --git a/src/controller/meson.build b/src/controller/meson.build index 1be842ab..1c13f0b5 100644 --- a/src/controller/meson.build +++ b/src/controller/meson.build @@ -28,7 +28,11 @@ incdir = include_directories('.', '../include', '../lib', # cc = meson.get_compiler('c') # math_dep = cc.find_library('m', required : false) -controller_deps = [libxce_dep, math_dep] +controller_deps = [ + libxce_dep, + math_dep, + thread_dep +] controller = executable('xce_controller', controller_src, diff --git a/src/scheduler/meson.build b/src/scheduler/meson.build index 81a46bf9..76b5e64f 100644 --- a/src/scheduler/meson.build +++ b/src/scheduler/meson.build @@ -1,10 +1,17 @@ scheduler_srcs = [ 'src/main.c', + 'src/handler.c', ] -incdir = include_directories('src', 'include') +incdir = include_directories('src', + 'include', + '../include', + '../lib') scheduler_deps = [ + libxce_dep, + math_dep, + thread_dep ] scheduler = executable('xce_scheduler', diff --git a/src/scheduler/src/handler.c b/src/scheduler/src/handler.c new file mode 100644 index 00000000..8c5844c1 --- /dev/null +++ b/src/scheduler/src/handler.c @@ -0,0 +1,10 @@ +#include +#include +#include + +#include "controller.capnp.h" +#include "xce/types.h" + +#include "scheduler.h" + +int scheduler_req_handler(xce_request_t* request) { return 0; } diff --git a/src/scheduler/src/main.c b/src/scheduler/src/main.c index 358ccbdd..1beb0971 100644 --- a/src/scheduler/src/main.c +++ b/src/scheduler/src/main.c @@ -1,10 +1,65 @@ +#include #include #include +#include + +#include "client.h" +#include "controller.capnp.h" +#include "xce/types.h" #include "scheduler.h" -int main(int argc, char* argv[]) { - printf("Hello,world!\n"); +extern int scheduler_req_handler(xce_request_t *); + +static int init_config(xce_client_config_t* config) +{ + config->nmasters = 1; + config->masters[0] = "localhost"; + config->master_ports[0] = 9990; + config->from = "xce_scheduler"; + config->key = "keepsecret$"; + + return 0; +} + +static int scheduler_init(xcecli_ctx_t* ctx, xce_client_config_t* config) +{ + int rc = 0; + + rc = xcecli_ctx_init(ctx, config); + if ( rc < 0 ) { + return rc; + } + + xcecli_set_handler(*ctx, scheduler_req_handler); + rc = xcecli_start(*ctx); + if (rc < 0) { + return rc; + } + + rc = xcecli_join(*ctx, HostRole_scheduler, NULL); + if (rc < 0) { + return rc; + } + + return 0; +} + +static void scheduler_fini(xcecli_ctx_t* ctx) { return ; } + +int main(int argc, char* argv[]) +{ + xcecli_ctx_t ctx; + xce_client_config_t config; + + init_config(&config); + scheduler_init(&ctx, &config); + + while (1) { + sleep(1); + } + + scheduler_fini(&ctx); return 0; }