script-astra/Android/Sdk/sources/android-35/android/telephony/ims/stub/SipDelegate.java
localadmin 4380f00a78 init
2025-01-20 18:15:20 +03:00

100 lines
4.9 KiB
Java
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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.
* <p>
* 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.
* <p>
* 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.
* <p>
* 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 operators 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.
* <p>
* 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);
}