]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.api.acr/src/org/argeo/api/acr/uuid/AsyncUuidFactory.java
Experiment with package level A2 metadata
[lgpl/argeo-commons.git] / org.argeo.api.acr / src / org / argeo / api / acr / uuid / AsyncUuidFactory.java
1 package org.argeo.api.acr.uuid;
2
3 import java.util.UUID;
4 import java.util.concurrent.CompletionStage;
5 import java.util.concurrent.ForkJoinTask;
6
7 /** A {@link UUID} factory which creates the UUIDs asynchronously. */
8 public interface AsyncUuidFactory extends UuidFactory {
9 /*
10 * TIME-BASED (version 1)
11 */
12 CompletionStage<UUID> requestTimeUUID();
13
14 CompletionStage<UUID> requestTimeUUIDwithMacAddress();
15
16 ForkJoinTask<UUID> futureTimeUUID();
17
18 ForkJoinTask<UUID> futureTimeUUIDwithMacAddress();
19
20 /*
21 * NAME BASED (version 3 and 5)
22 */
23 CompletionStage<UUID> requestNameUUIDv5(UUID namespace, byte[] data);
24
25 CompletionStage<UUID> requestNameUUIDv3(UUID namespace, byte[] data);
26
27 ForkJoinTask<UUID> futureNameUUIDv5(UUID namespace, byte[] data);
28
29 ForkJoinTask<UUID> futureNameUUIDv3(UUID namespace, byte[] data);
30
31 /*
32 * RANDOM (version 4)
33 */
34 CompletionStage<UUID> requestRandomUUIDStrong();
35
36 ForkJoinTask<UUID> futureRandomUUIDStrong();
37
38 /*
39 * DEFAULTS
40 */
41 @Override
42 default UUID randomUUIDStrong() {
43 return futureRandomUUIDStrong().invoke();
44 }
45
46 @Override
47 default UUID timeUUID() {
48 return futureTimeUUID().invoke();
49 }
50
51 @Override
52 default UUID timeUUIDwithMacAddress() {
53 return futureTimeUUIDwithMacAddress().invoke();
54 }
55
56 @Override
57 default UUID nameUUIDv5(UUID namespace, byte[] data) {
58 return futureNameUUIDv5(namespace, data).invoke();
59 }
60
61 @Override
62 default UUID nameUUIDv3(UUID namespace, byte[] data) {
63 return futureNameUUIDv3(namespace, data).invoke();
64 }
65 }