aboutsummaryrefslogtreecommitdiff
path: root/src/im-asapo.c
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-07-06 15:15:21 +0200
committerThomas White <taw@physics.org>2022-06-02 12:15:38 +0200
commit45d3a8670da1d40145202ed42129c7cddba18df5 (patch)
tree48297ece6772830025a9063105fec34eb3542725 /src/im-asapo.c
parentb28228b5826235ca917d9f42af7d22f75b38bb13 (diff)
ASAP::O: Group ID stuff
Diffstat (limited to 'src/im-asapo.c')
-rw-r--r--src/im-asapo.c49
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;
}