All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.android.telephony.ims.stub.SipDelegate Maven / Gradle / Ivy

Go to download

A library jar that provides APIs for Applications written for the Google Android Platform.

There is a newer version: 15-robolectric-12650502
Show newest version
/*
 * Copyright (C) 2020 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.ims.stub;

import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.telephony.ims.DelegateMessageCallback;
import android.telephony.ims.DelegateRegistrationState;
import android.telephony.ims.ImsService;
import android.telephony.ims.SipDelegateConfiguration;
import android.telephony.ims.SipDelegateConnection;
import android.telephony.ims.SipDelegateManager;
import android.telephony.ims.SipMessage;

/**
 * The {@link SipDelegate} is implemented by the {@link ImsService} and allows a privileged
 * IMS application to use this delegate to send SIP messages as well as acknowledge the receipt of
 * incoming SIP messages delivered to the application over the existing IMS registration, allowing
 * for a single IMS registration for multiple IMS applications.
 * 

* Once the SIP delegate is created for that application, * {@link ImsRegistrationImplBase#updateSipDelegateRegistration()} will be called, indicating that * the application is finished setting up SipDelegates and the existing IMS registration may be * modified to include the features managed by these SipDelegates. *

* This SipDelegate will need to notify the remote application of the registration of these features * as well as the associated {@link SipDelegateConfiguration} before the application can start * sending/receiving SIP messages via the transport. See * {@link android.telephony.ims.DelegateStateCallback} for more information. * @hide */ @SystemApi public interface SipDelegate { /** * The framework calls this method when a remote RCS application wishes to send a new outgoing * SIP message. *

* Once sent, this SIP delegate should notify the remote application of the success or * failure using {@link DelegateMessageCallback#onMessageSent(String)} or * {@link DelegateMessageCallback#onMessageSendFailure(String, int)}. * @param message The SIP message to be sent over the operator’s network. * @param configVersion The SipDelegateImsConfiguration version used to construct the * SipMessage. See {@link SipDelegateConfiguration} for more information. If the * version specified here does not match the most recently constructed * {@link SipDelegateConfiguration}, this message should fail validation checks and * {@link DelegateMessageCallback#onMessageSendFailure} should be called with code * {@link SipDelegateManager#MESSAGE_FAILURE_REASON_STALE_IMS_CONFIGURATION}. */ void sendMessage(@NonNull SipMessage message, long configVersion); /** * The remote IMS application has closed a SIP session and the routing resources associated * with the SIP session using the provided Call-ID may now be cleaned up. *

* Typically, a SIP session will be considered closed when all associated dialogs receive a * BYE request. After the session has been closed, the IMS application will call * {@link SipDelegateConnection#cleanupSession(String)} to signal to the framework that * resources can be released. In some cases, the framework will request that the ImsService * close the session due to the open SIP session holding up an event such as applying a * provisioning change or handing over to another transport type. See * {@link DelegateRegistrationState}. * * @param callId The call-ID header value associated with the ongoing SIP Session that the * framework is requesting be cleaned up. */ void cleanupSession(@NonNull String callId); /** * The remote application has received the SIP message and is processing it. * @param viaTransactionId The Transaction ID found in the via header field of the * previously sent {@link SipMessage}. */ void notifyMessageReceived(@NonNull String viaTransactionId); /** * The remote application has either not received the SIP message or there was an error * processing it. * @param viaTransactionId The Transaction ID found in the via header field of the * previously sent {@link SipMessage}. * @param reason The reason why the message was not correctly received. */ void notifyMessageReceiveError(@NonNull String viaTransactionId, @SipDelegateManager.MessageFailureReason int reason); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy