blob: 6f88dec8dee92e5958cbd65dc54b3cab4d55e547 [file] [log] [blame]
Chalard Jean8c141bd2018-12-04 20:20:56 +09001/*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
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 */
16
17package android.net;
18
Chalard Jeanf89d7be2018-12-07 23:09:02 +090019import android.net.ipmemorystore.Blob;
20import android.net.ipmemorystore.NetworkAttributesParcelable;
21import android.net.ipmemorystore.IOnBlobRetrievedListener;
22import android.net.ipmemorystore.IOnL2KeyResponseListener;
23import android.net.ipmemorystore.IOnNetworkAttributesRetrieved;
24import android.net.ipmemorystore.IOnSameNetworkResponseListener;
25import android.net.ipmemorystore.IOnStatusListener;
26
Chalard Jean8c141bd2018-12-04 20:20:56 +090027/** {@hide} */
Chalard Jeanf89d7be2018-12-07 23:09:02 +090028oneway interface IIpMemoryStore {
Chalard Jean8c141bd2018-12-04 20:20:56 +090029 /**
Chalard Jeanf89d7be2018-12-07 23:09:02 +090030 * Store network attributes for a given L2 key.
31 * If L2Key is null, choose automatically from the attributes ; passing null is equivalent to
32 * calling findL2Key with the attributes and storing in the returned value.
33 *
34 * @param l2Key The L2 key for the L2 network. Clients that don't know or care about the L2
35 * key and only care about grouping can pass a unique ID here like the ones
36 * generated by {@code java.util.UUID.randomUUID()}, but keep in mind the low
37 * relevance of such a network will lead to it being evicted soon if it's not
38 * refreshed. Use findL2Key to try and find a similar L2Key to these attributes.
39 * @param attributes The attributes for this network.
40 * @param listener A listener that will be invoked to inform of the completion of this call,
41 * or null if the client is not interested in learning about success/failure.
42 * @return (through the listener) The L2 key. This is useful if the L2 key was not specified.
43 * If the call failed, the L2 key will be null.
Chalard Jean8c141bd2018-12-04 20:20:56 +090044 */
Chalard Jeanf89d7be2018-12-07 23:09:02 +090045 void storeNetworkAttributes(String l2Key, in NetworkAttributesParcelable attributes,
46 IOnStatusListener listener);
47
48 /**
49 * Store a binary blob associated with an L2 key and a name.
50 *
51 * @param l2Key The L2 key for this network.
52 * @param clientId The ID of the client.
53 * @param name The name of this data.
54 * @param data The data to store.
55 * @param listener A listener to inform of the completion of this call, or null if the client
56 * is not interested in learning about success/failure.
57 * @return (through the listener) A status to indicate success or failure.
58 */
59 void storeBlob(String l2Key, String clientId, String name, in Blob data,
60 IOnStatusListener listener);
61
62 /**
63 * Returns the best L2 key associated with the attributes.
64 *
65 * This will find a record that would be in the same group as the passed attributes. This is
66 * useful to choose the key for storing a sample or private data when the L2 key is not known.
67 * If multiple records are group-close to these attributes, the closest match is returned.
68 * If multiple records have the same closeness, the one with the smaller (unicode codepoint
69 * order) L2 key is returned.
70 * If no record matches these attributes, null is returned.
71 *
72 * @param attributes The attributes of the network to find.
73 * @param listener The listener that will be invoked to return the answer.
74 * @return (through the listener) The L2 key if one matched, or null.
75 */
76 void findL2Key(in NetworkAttributesParcelable attributes, IOnL2KeyResponseListener listener);
77
78 /**
79 * Returns whether, to the best of the store's ability to tell, the two specified L2 keys point
80 * to the same L3 network. Group-closeness is used to determine this.
81 *
82 * @param l2Key1 The key for the first network.
83 * @param l2Key2 The key for the second network.
84 * @param listener The listener that will be invoked to return the answer.
85 * @return (through the listener) A SameL3NetworkResponse containing the answer and confidence.
86 */
87 void isSameNetwork(String l2Key1, String l2Key2, IOnSameNetworkResponseListener listener);
88
89 /**
90 * Retrieve the network attributes for a key.
91 * If no record is present for this key, this will return null attributes.
92 *
93 * @param l2Key The key of the network to query.
94 * @param listener The listener that will be invoked to return the answer.
95 * @return (through the listener) The network attributes and the L2 key associated with
96 * the query.
97 */
98 void retrieveNetworkAttributes(String l2Key, IOnNetworkAttributesRetrieved listener);
99
100 /**
101 * Retrieve previously stored private data.
102 * If no data was stored for this L2 key and name this will return null.
103 *
104 * @param l2Key The L2 key.
105 * @param clientId The id of the client that stored this data.
106 * @param name The name of the data.
107 * @param listener The listener that will be invoked to return the answer.
108 * @return (through the listener) The private data (or null), with the L2 key
109 * and the name of the data associated with the query.
110 */
111 void retrieveBlob(String l2Key, String clientId, String name,
112 IOnBlobRetrievedListener listener);
Chalard Jean8c141bd2018-12-04 20:20:56 +0900113}