aboutsummaryrefslogtreecommitdiff
path: root/src/im-sandbox.c
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2022-05-04 12:14:27 +0200
committerThomas White <taw@physics.org>2022-06-02 12:15:38 +0200
commitffd98b770d6dfa7c1bef4b2ae54e0b637f2e7ac3 (patch)
treec4a21baa21da4617b7da671604c51ef2084d7943 /src/im-sandbox.c
parent8e601d452a8b3d022b89e904c0cecee812f2b636 (diff)
indexamajig: Add --asapo-stream
Diffstat (limited to 'src/im-sandbox.c')
-rw-r--r--src/im-sandbox.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/im-sandbox.c b/src/im-sandbox.c
index 8137db9e..8e1e5004 100644
--- a/src/im-sandbox.c
+++ b/src/im-sandbox.c
@@ -112,6 +112,7 @@ struct sandbox
const char *asapo_beamtime;
const char *asapo_group_id;
const char *asapo_source;
+ const char *asapo_stream;
/* Final output */
Stream *stream;
@@ -362,7 +363,8 @@ static int run_work(const struct index_args *iargs, Stream *st,
sb->asapo_token,
sb->asapo_beamtime,
sb->asapo_group_id,
- sb->asapo_source);
+ sb->asapo_source,
+ sb->asapo_stream);
if ( asapostuff == NULL ) {
ERROR("ASAP::O setup failed.\n");
return 1;
@@ -480,13 +482,15 @@ static int run_work(const struct index_args *iargs, Stream *st,
char *filename;
char *event;
+ int finished = 0;
profile_start("asapo-fetch");
pargs.asapo_data = im_asapo_fetch(asapostuff,
&pargs.asapo_data_size,
&pargs.asapo_meta,
&filename,
- &event);
+ &event,
+ &finished);
profile_end("asapo-fetch");
if ( pargs.asapo_data != NULL ) {
ok = 1;
@@ -497,6 +501,11 @@ static int run_work(const struct index_args *iargs, Stream *st,
free(pargs.event);
pargs.filename = filename;
pargs.event = event;
+ } else {
+ if ( finished ) {
+ sb->shared->should_shutdown = 1;
+ allDone = 1;
+ }
}
} else {
@@ -1120,8 +1129,8 @@ int create_sandbox(struct index_args *iargs, int n_proc, char *prefix,
const char *zmq_address, char **zmq_subscriptions,
int n_zmq_subscriptions, const char *zmq_request,
const char *asapo_endpoint, const char *asapo_token,
- const char *asapo_beamtime,
- const char *asapo_group_id, const char *asapo_source,
+ const char *asapo_beamtime, const char *asapo_group_id,
+ const char *asapo_source, const char *asapo_stream,
int timeout, int profile)
{
int i;
@@ -1168,6 +1177,7 @@ int create_sandbox(struct index_args *iargs, int n_proc, char *prefix,
sb->asapo_token = asapo_token;
sb->asapo_beamtime = asapo_beamtime;
sb->asapo_source = asapo_source;
+ sb->asapo_stream = asapo_stream;
} else {
sb->asapo = 0;
}