# TransferrableSession

# TransferrableSession

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/com/google/ambient/crossdevice/sessions/TransferrableSession "View this page in Java")

<br />

```
@RequiresApi(value = 26) interface TransferrableSession
```

<br />

Known direct subclasses  
[OriginatingSession](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/OriginatingSession),[ReceivingSession](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/ReceivingSession)  

|---------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------|
| [OriginatingSession](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/OriginatingSession) | Describes a Session that is in the process of being transferred to another device. |
| [ReceivingSession](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/ReceivingSession)     | Describes a Session that is in the process of being transferred to another device. |

*** ** * ** ***

Describes methods that are common to both originating and receiving sides of a Session transfer.

## Summary

|                                                                                                                                                                                                                                                          ### Public functions                                                                                                                                                                                                                                                           ||
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `suspend `[Unit](https://developer.android.com/reference/kotlin/kotlin/Unit)                                                                                                                  | [cancelTransfer](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/TransferrableSession#cancelTransfer())`()` Cancels the transfer.                                                                                                                                                                 |
| [ListenableFuture](https://developer.android.com/reference/kotlin/com/google/common/util/concurrent/ListenableFuture)`<`[Unit](https://developer.android.com/reference/kotlin/kotlin/Unit)`>` | [cancelTransferFuture](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/TransferrableSession#cancelTransferFuture())`()` Java-compatible version of[cancelTransfer](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/TransferrableSession#cancelTransfer()). |
| [SessionRemoteConnection](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/SessionRemoteConnection)                                                     | [getStartupRemoteConnection](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/TransferrableSession#getStartupRemoteConnection())`()` Gets communication channel to send initialization messages back and forth between the originating and receiving device.                                       |

|                                                                                                                                                                                                                                                ### Public properties                                                                                                                                                                                                                                                ||
|---------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [SessionId](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/SessionId) | [sessionId](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/TransferrableSession#sessionId()) [SessionId](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/SessionId)this[TransferrableSession](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/TransferrableSession)belongs to. |

## Public functions

### cancelTransfer

```
suspend fun cancelTransfer(): Unit
```

Cancels the transfer. After this call, all methods will throw[SessionException](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/SessionException)with[HANDLE_INVALIDATED](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/SessionException.Companion#HANDLE_INVALIDATED()).  

|                                                                                                                                        Throws                                                                                                                                        ||
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------|
| `com.google.ambient.crossdevice.sessions.SessionException: `[com.google.ambient.crossdevice.sessions.SessionException](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/SessionException) | if the transfer cannot be cancelled for any reason. |

### cancelTransferFuture

```
fun cancelTransferFuture(): ListenableFuture<Unit>
```

Java-compatible version of[cancelTransfer](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/TransferrableSession#cancelTransfer()).  

### getStartupRemoteConnection

```
fun getStartupRemoteConnection(): SessionRemoteConnection
```

Gets communication channel to send initialization messages back and forth between the originating and receiving device.  

|                                                                                                                                                     Returns                                                                                                                                                      ||
|-------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [SessionRemoteConnection](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/SessionRemoteConnection) | The[SessionRemoteConnection](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/SessionRemoteConnection)relevant to the transfer. |

|                                                                                                                                 Throws                                                                                                                                  ||
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------|
| `com.google.ambient.crossdevice.sessions.SessionException: `[com.google.ambient.crossdevice.sessions.SessionException](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/SessionException) | if this session has already completed. |

## Public properties

### sessionId

```
val sessionId: SessionId
```

[SessionId](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/SessionId)this[TransferrableSession](https://developer.android.com/reference/kotlin/com/google/ambient/crossdevice/sessions/TransferrableSession)belongs to.