• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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 
17 package com.android.adservices.service.measurement.registration;
18 
19 
20 
21 /** POJO for storing source and trigger fetcher status */
22 public class AsyncFetchStatus {
23     public enum ResponseStatus {
24         UNKNOWN,
25         SUCCESS,
26         SERVER_UNAVAILABLE,
27         NETWORK_ERROR,
28         INVALID_URL,
29         HEADER_SIZE_LIMIT_EXCEEDED
30     }
31 
32     public enum EntityStatus {
33         UNKNOWN,
34         SUCCESS,
35         HEADER_MISSING,
36         HEADER_ERROR,
37         PARSING_ERROR,
38         VALIDATION_ERROR,
39         INVALID_ENROLLMENT,
40         STORAGE_ERROR
41     }
42 
43     private ResponseStatus mResponseStatus;
44 
45     private EntityStatus mEntityStatus;
46 
47     private long mResponseSize;
48 
49     private long mRegistrationDelay;
50 
51     private boolean mIsRedirectError;
52     private int mRetryCount;
53     private boolean mIsRedirectOnly;
54     private boolean mIsPARequest;
55     private int mNumDeletedEntities;
56     private boolean mIsEventLevelEpsilonConfigured;
57     private boolean mIsTriggerAggregatableValueFiltersConfigured;
58     private boolean mIsTriggerFilteringIdConfigured;
59     private boolean mIsTriggerContextIdConfigured;
60 
AsyncFetchStatus()61     public AsyncFetchStatus() {
62         mResponseStatus = ResponseStatus.UNKNOWN;
63         mEntityStatus = EntityStatus.UNKNOWN;
64         mIsRedirectError = false;
65         mResponseSize = 0L;
66         mRegistrationDelay = 0L;
67         mIsPARequest = false;
68         mIsEventLevelEpsilonConfigured = false;
69         mIsTriggerAggregatableValueFiltersConfigured = false;
70         mIsTriggerFilteringIdConfigured = false;
71         mIsTriggerContextIdConfigured = false;
72     }
73 
74     /** Get the status of a communication with an Ad Tech server. */
getResponseStatus()75     public ResponseStatus getResponseStatus() {
76         return mResponseStatus;
77     }
78 
79     /**
80      * Set the status of a communication with an Ad Tech server.
81      *
82      * @param status a {@link ResponseStatus} that is used up the call stack to determine errors in
83      *     the Ad tech server during source and trigger fetching.
84      */
setResponseStatus(ResponseStatus status)85     public void setResponseStatus(ResponseStatus status) {
86         mResponseStatus = status;
87     }
88 
89     /** Get entity status */
getEntityStatus()90     public EntityStatus getEntityStatus() {
91         return mEntityStatus;
92     }
93 
94     /** Set entity status */
setEntityStatus(EntityStatus entityStatus)95     public void setEntityStatus(EntityStatus entityStatus) {
96         mEntityStatus = entityStatus;
97     }
98 
99     /** Get response header size. */
getResponseSize()100     public long getResponseSize() {
101         return mResponseSize;
102     }
103 
104     /** Set response header size. */
setResponseSize(long responseSize)105     public void setResponseSize(long responseSize) {
106         mResponseSize = responseSize;
107     }
108 
109     /** Get registration delay. */
getRegistrationDelay()110     public long getRegistrationDelay() {
111         return mRegistrationDelay;
112     }
113 
114     /** Set registration delay. */
setRegistrationDelay(long registrationDelay)115     public void setRegistrationDelay(long registrationDelay) {
116         mRegistrationDelay = registrationDelay;
117     }
118 
119     /** Get redirect error status. */
isRedirectError()120     public boolean isRedirectError() {
121         return mIsRedirectError;
122     }
123 
124     /** Set redirect error status. */
setRedirectError(boolean isRedirectError)125     public void setRedirectError(boolean isRedirectError) {
126         mIsRedirectError = isRedirectError;
127     }
128 
129     /** Get retry count. */
getRetryCount()130     public int getRetryCount() {
131         return mRetryCount;
132     }
133 
134     /** Set retry count. */
setRetryCount(int retryCount)135     public void setRetryCount(int retryCount) {
136         mRetryCount = retryCount;
137     }
138 
139     /** Get redirect status. */
isRedirectOnly()140     public boolean isRedirectOnly() {
141         return mIsRedirectOnly;
142     }
143 
144     /** Set redirect status. */
setRedirectOnlyStatus(boolean isRedirectOnly)145     public void setRedirectOnlyStatus(boolean isRedirectOnly) {
146         mIsRedirectOnly = isRedirectOnly;
147     }
148 
149     /** Get PA request status. */
isPARequest()150     public boolean isPARequest() {
151         return mIsPARequest;
152     }
153 
154     /** Set PA request status. */
setPARequestStatus(boolean isPARequest)155     public void setPARequestStatus(boolean isPARequest) {
156         mIsPARequest = isPARequest;
157     }
158 
159     /** Set number of entities deleted. */
incrementNumDeletedEntities(int numDeletedEntities)160     public void incrementNumDeletedEntities(int numDeletedEntities) {
161         mNumDeletedEntities += numDeletedEntities;
162     }
163 
164     /** Returns {@code true} if Sources can have epsilon configured. */
isEventLevelEpsilonConfigured()165     public boolean isEventLevelEpsilonConfigured() {
166         return mIsEventLevelEpsilonConfigured;
167     }
168 
169     /** Sets event level epsilon configure status. */
setIsEventLevelEpsilonConfigured(boolean isEventLevelEpsilonConfigured)170     public void setIsEventLevelEpsilonConfigured(boolean isEventLevelEpsilonConfigured) {
171         mIsEventLevelEpsilonConfigured = isEventLevelEpsilonConfigured;
172     }
173 
174     /** Returns {@code true} if Triggers can have filters configured in aggregatable_values. */
isTriggerAggregatableValueFiltersConfigured()175     public boolean isTriggerAggregatableValueFiltersConfigured() {
176         return mIsTriggerAggregatableValueFiltersConfigured;
177     }
178 
179     /** Sets the aggregatable value filters configure status. */
setIsTriggerAggregatableValueFiltersConfigured( boolean isTriggerAggregatableValueFiltersConfigured)180     public void setIsTriggerAggregatableValueFiltersConfigured(
181             boolean isTriggerAggregatableValueFiltersConfigured) {
182         mIsTriggerAggregatableValueFiltersConfigured = isTriggerAggregatableValueFiltersConfigured;
183     }
184 
185     /** Returns {@code true} if Triggers can have filtering_id configured in aggregatable_values. */
isTriggerFilteringIdConfigured()186     public boolean isTriggerFilteringIdConfigured() {
187         return mIsTriggerFilteringIdConfigured;
188     }
189 
190     /** Sets the aggregatable value filtering id configure status. */
setIsTriggerFilteringIdConfigured(boolean isTriggerFilteringIdConfigured)191     public void setIsTriggerFilteringIdConfigured(boolean isTriggerFilteringIdConfigured) {
192         mIsTriggerFilteringIdConfigured = isTriggerFilteringIdConfigured;
193     }
194 
195     /** Returns {@code true} if the trigger has a trigger context ID set. */
isTriggerContextIdConfigured()196     public boolean isTriggerContextIdConfigured() {
197         return mIsTriggerContextIdConfigured;
198     }
199 
200     /** Sets the trigger context ID configure status. */
setIsTriggerContextIdConfigured(boolean isTriggerContextIdConfigured)201     public void setIsTriggerContextIdConfigured(boolean isTriggerContextIdConfigured) {
202         mIsTriggerContextIdConfigured = isTriggerContextIdConfigured;
203     }
204 
205     /** Returns true if request is successful. */
isRequestSuccess()206     public boolean isRequestSuccess() {
207         return mResponseStatus == ResponseStatus.SUCCESS;
208     }
209 
210     /** Returns number of existing entities deleted to accommodate the new registration. */
getNumDeletedEntities()211     public int getNumDeletedEntities() {
212         return mNumDeletedEntities;
213     }
214 
215     /** Returns true if request can be retried. */
canRetry()216     public boolean canRetry() {
217         return mResponseStatus == ResponseStatus.NETWORK_ERROR
218                 || mResponseStatus == ResponseStatus.SERVER_UNAVAILABLE;
219     }
220 }
221