blob: d034261b99df25107760b0849b94c13438f3b02a [file] [log] [blame]
Madan Jampani837a3632016-01-21 16:47:26 -08001/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Madan Jampani837a3632016-01-21 16:47:26 -08003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.store.primitives;
17
18import org.onosproject.store.service.AsyncAtomicCounter;
Jordan Haltermanc955df72017-02-04 20:43:28 -080019import org.onosproject.store.service.AsyncAtomicCounterMap;
Madan Jampani837a3632016-01-21 16:47:26 -080020import org.onosproject.store.service.AsyncAtomicValue;
21import org.onosproject.store.service.AsyncConsistentMap;
Aaron Kruglikov61582a02016-09-06 13:18:58 -070022import org.onosproject.store.service.AsyncConsistentMultimap;
Aaron Kruglikoved88ff62016-08-01 16:02:09 -070023import org.onosproject.store.service.AsyncConsistentTreeMap;
Madan Jampani837a3632016-01-21 16:47:26 -080024import org.onosproject.store.service.AsyncDistributedSet;
Madan Jampani2914e4e2016-09-13 17:48:56 -070025import org.onosproject.store.service.AsyncDocumentTree;
Madan Jampani47b80ba2016-01-31 23:05:55 -080026import org.onosproject.store.service.AsyncLeaderElector;
Madan Jampani837a3632016-01-21 16:47:26 -080027import org.onosproject.store.service.Serializer;
Madan Jampani2914e4e2016-09-13 17:48:56 -070028import org.onosproject.store.service.WorkQueue;
Madan Jampani837a3632016-01-21 16:47:26 -080029
Jordan Haltermanc955df72017-02-04 20:43:28 -080030import java.util.Set;
31
Madan Jampani837a3632016-01-21 16:47:26 -080032/**
33 * Interface for entity that can create instances of different distributed primitives.
34 */
35public interface DistributedPrimitiveCreator {
36
37 /**
38 * Creates a new {@code AsyncConsistentMap}.
39 *
40 * @param name map name
41 * @param serializer serializer to use for serializing/deserializing map entries
42 * @param <K> key type
43 * @param <V> value type
44 * @return map
45 */
46 <K, V> AsyncConsistentMap<K, V> newAsyncConsistentMap(String name, Serializer serializer);
47
48 /**
Aaron Kruglikoved88ff62016-08-01 16:02:09 -070049 * Creates a new {@code AsyncConsistentTreeMap}.
50 *
51 * @param name tree name
52 * @param serializer serializer to use for serializing/deserializing map entries
53 * @param <V> value type
54 * @return distributedTreeMap
55 */
Aaron Kruglikov61582a02016-09-06 13:18:58 -070056 <V> AsyncConsistentTreeMap<V> newAsyncConsistentTreeMap(
57 String name, Serializer serializer);
58
59 /**
60 * Creates a new set backed {@code AsyncConsistentMultimap}.
61 *
62 * @param name multimap name
63 * @param serializer serializer to use for serializing/deserializing
64 * @param <K> key type
65 * @param <V> value type
66 * @return set backed distributedMultimap
67 */
68 <K, V> AsyncConsistentMultimap<K, V> newAsyncConsistentSetMultimap(
69 String name, Serializer serializer);
Aaron Kruglikoved88ff62016-08-01 16:02:09 -070070
71 /**
Jordan Haltermanc955df72017-02-04 20:43:28 -080072 * Creates a new {@code AsyncAtomicCounterMap}.
73 *
74 * @param name counter map name
75 * @param serializer serializer to use for serializing/deserializing keys
76 * @param <K> key type
77 * @return atomic counter map
78 */
79 <K> AsyncAtomicCounterMap<K> newAsyncAtomicCounterMap(
80 String name, Serializer serializer);
81
82 /**
Madan Jampani837a3632016-01-21 16:47:26 -080083 * Creates a new {@code AsyncAtomicCounter}.
84 *
85 * @param name counter name
86 * @return counter
87 */
88 AsyncAtomicCounter newAsyncCounter(String name);
89
90 /**
91 * Creates a new {@code AsyncAtomicValue}.
92 *
93 * @param name value name
94 * @param serializer serializer to use for serializing/deserializing value type
95 * @param <V> value type
96 * @return value
97 */
98 <V> AsyncAtomicValue<V> newAsyncAtomicValue(String name, Serializer serializer);
99
100 /**
Madan Jampani837a3632016-01-21 16:47:26 -0800101 * Creates a new {@code AsyncDistributedSet}.
102 *
103 * @param name set name
104 * @param serializer serializer to use for serializing/deserializing set entries
105 * @param <E> set entry type
106 * @return set
107 */
108 <E> AsyncDistributedSet<E> newAsyncDistributedSet(String name, Serializer serializer);
Madan Jampani47b80ba2016-01-31 23:05:55 -0800109
110 /**
111 * Creates a new {@code AsyncLeaderElector}.
112 *
113 * @param name leader elector name
114 * @return leader elector
115 */
116 AsyncLeaderElector newAsyncLeaderElector(String name);
Madan Jampanie14a09c2016-02-11 10:43:21 -0800117
118 /**
Madan Jampani35708a92016-07-06 10:48:19 -0700119 * Creates a new {@code WorkQueue}.
120 *
Ray Milkeybb23e0b2016-08-02 17:00:21 -0700121 * @param <E> work element type
Madan Jampani35708a92016-07-06 10:48:19 -0700122 * @param name work queue name
123 * @param serializer serializer
124 * @return work queue
125 */
126 <E> WorkQueue<E> newWorkQueue(String name, Serializer serializer);
127
128 /**
Madan Jampani2914e4e2016-09-13 17:48:56 -0700129 * Creates a new {@code AsyncDocumentTree}.
130 *
131 * @param <V> document tree node value type
132 * @param name tree name
133 * @param serializer serializer
134 * @return document tree
135 */
136 <V> AsyncDocumentTree<V> newAsyncDocumentTree(String name, Serializer serializer);
137
138 /**
Madan Jampanie14a09c2016-02-11 10:43:21 -0800139 * Returns the names of all created {@code AsyncConsistentMap} instances.
140 * @return set of {@code AsyncConsistentMap} names
141 */
142 Set<String> getAsyncConsistentMapNames();
143
144 /**
145 * Returns the names of all created {@code AsyncAtomicCounter} instances.
146 * @return set of {@code AsyncAtomicCounter} names
147 */
148 Set<String> getAsyncAtomicCounterNames();
Madan Jampani35708a92016-07-06 10:48:19 -0700149
150 /**
151 * Returns the names of all created {@code WorkQueue} instances.
152 * @return set of {@code WorkQueue} names
153 */
154 Set<String> getWorkQueueNames();
Ray Milkeybb23e0b2016-08-02 17:00:21 -0700155}