blob: ad3b00fdd58bd1b24e670482eb1d720802068729 [file] [log] [blame]
/*
* Copyright 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.telephony;
import android.annotation.IntDef;
import android.os.RemoteException;
import android.telephony.NetworkService.NetworkServiceProvider;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
/**
* Network service callback. Object of this class is passed to NetworkServiceProvider upon
* calling getNetworkRegistrationState, to receive asynchronous feedback from NetworkServiceProvider
* upon onGetNetworkRegistrationStateComplete. It's like a wrapper of INetworkServiceCallback
* because INetworkServiceCallback can't be a parameter type in public APIs.
*
* @hide
*/
public class NetworkServiceCallback {
private static final String mTag = NetworkServiceCallback.class.getSimpleName();
/**
* Result of network requests
* @hide
*/
@Retention(RetentionPolicy.SOURCE)
@IntDef({RESULT_SUCCESS, RESULT_ERROR_UNSUPPORTED, RESULT_ERROR_INVALID_ARG, RESULT_ERROR_BUSY,
RESULT_ERROR_ILLEGAL_STATE, RESULT_ERROR_FAILED})
public @interface Result {}
/** Request is completed successfully */
public static final int RESULT_SUCCESS = 0;
/** Request is not support */
public static final int RESULT_ERROR_UNSUPPORTED = 1;
/** Request contains invalid arguments */
public static final int RESULT_ERROR_INVALID_ARG = 2;
/** Service is busy */
public static final int RESULT_ERROR_BUSY = 3;
/** Request sent in illegal state */
public static final int RESULT_ERROR_ILLEGAL_STATE = 4;
/** Request failed */
public static final int RESULT_ERROR_FAILED = 5;
private final WeakReference<INetworkServiceCallback> mCallback;
/** @hide */
public NetworkServiceCallback(INetworkServiceCallback callback) {
mCallback = new WeakReference<>(callback);
}
/**
* Called to indicate result of
* {@link NetworkServiceProvider#getNetworkRegistrationState(int, NetworkServiceCallback)}
*
* @param result Result status like {@link NetworkServiceCallback#RESULT_SUCCESS} or
* {@link NetworkServiceCallback#RESULT_ERROR_UNSUPPORTED}
* @param state The state information to be returned to callback.
*/
public void onGetNetworkRegistrationStateComplete(int result, NetworkRegistrationState state) {
INetworkServiceCallback callback = mCallback.get();
if (callback != null) {
try {
callback.onGetNetworkRegistrationStateComplete(result, state);
} catch (RemoteException e) {
Rlog.e(mTag, "Failed to onGetNetworkRegistrationStateComplete on the remote");
}
} else {
Rlog.e(mTag, "Weak reference of callback is null.");
}
}
}