diff options
Diffstat (limited to 'src/im-asapo.c')
-rw-r--r-- | src/im-asapo.c | 49 |
1 files changed, 42 insertions, 7 deletions
diff --git a/src/im-asapo.c b/src/im-asapo.c index e6061268..4eafd058 100644 --- a/src/im-asapo.c +++ b/src/im-asapo.c @@ -60,10 +60,50 @@ static void show_asapo_error(const char *msg, const AsapoErrorHandle err) } +AsapoStringHandle im_asapo_group_id_from_string(const char *str) +{ + /* FIXME: This function does not yet exist */ + return asapostringhandle_from_string(str); +} + + +AsapoStringHandle im_asapo_make_unique_group_id(const char *endpoint, + const char *token, + const char *beamtime, + const char *path) +{ + AsapoConsumerHandle consumer; + AsapoSourceCredentialsHandle cred; + AsapoStringHandle group_id; + AsapoErrorHandle err = asapo_new_handle(); + + cred = asapo_create_source_credentials(kProcessed, beamtime, "", "", token); + consumer = asapo_create_consumer(endpoint, path, 1, cred, &err); + asapo_free_handle(&cred); + if ( err ) { + show_asapo_error("Cannot create temporary ASAP::O consumer", err); + asapo_free_handle(&consumer); + return NULL; + } + + asapo_consumer_set_timeout(consumer, 1000); + + group_id = asapo_consumer_generate_new_group_id(consumer, &err); + asapo_free_handle(&consumer); + if ( err ) { + show_asapo_error("Cannot create ASAP::O group ID", err); + return NULL; + } + + return group_id; +} + + struct im_asapo *im_asapo_connect(const char *endpoint, const char *token, const char *beamtime, - const char *path) + const char *path, + AsapoStringHandle group_id) { struct im_asapo *a; AsapoSourceCredentialsHandle cred; @@ -83,12 +123,7 @@ struct im_asapo *im_asapo_connect(const char *endpoint, asapo_consumer_set_timeout(a->consumer, 1000); - a->group_id = asapo_consumer_generate_new_group_id(a->consumer, &err); - if ( err ) { - show_asapo_error("Cannot create ASAP::O group ID", err); - free(a); - return NULL; - } + a->group_id = group_id; return a; } |