# AbstractTraceSink

Artifact: [androidx.tracing:tracing](https://developer.android.com/jetpack/androidx/releases/tracing) [View Source](https://cs.android.com/search?q=file:androidx/tracing/AbstractTraceSink.kt+class:androidx.tracing.AbstractTraceSink) Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

*** ** * ** ***

Android/JVM
- android

  ```
  abstract class AbstractTraceSink : AutoCloseable
  ```
Known direct subclasses [InMemoryRingBufferTraceSink](https://developer.android.com/reference/kotlin/androidx/tracing/wire/InMemoryRingBufferTraceSink), [TraceSink](https://developer.android.com/reference/kotlin/androidx/tracing/wire/TraceSink)

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/tracing/wire/InMemoryRingBufferTraceSink` | A `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink` that stores `https://developer.android.com/reference/kotlin/androidx/tracing/TraceEvent`s in a fixed-size ring buffer to minimize allocations. |
| `https://developer.android.com/reference/kotlin/androidx/tracing/wire/TraceSink` | The trace sink that writes `https://lysine.dev/okio/3.x/okio/okio/-buffered-sink/index.html`, to a new file per trace session. |

*** ** * ** ***

Receives `https://developer.android.com/reference/kotlin/androidx/tracing/PooledTracePacketArray`s from `https://developer.android.com/reference/kotlin/androidx/tracing/Track`s and asynchronously serializes them to a file or buffer, depending on implementation.

Note that while serialized trace events are typically written as Perfetto TracePacket protos so that they may be read by [ui.perfetto.dev](https://ui.perfetto.dev/) and queried with the corresponding `TraceProcessor` tools, the final serialization format is up to the AbstractTraceSink's implementation.

## Summary

| ### Public constructors |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink#AbstractTraceSink()()` | android |

| ### Public functions |
|---|---|---|
| `abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink#close()()` Close the `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink`, completing any enqueued writes. | android |
| `abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink#enqueue(androidx.tracing.PooledTracePacketArray)(pooledPacketArray: https://developer.android.com/reference/kotlin/androidx/tracing/PooledTracePacketArray)` Enqueue a `https://developer.android.com/reference/kotlin/androidx/tracing/PooledTracePacketArray` to be written to the trace. | android |
| `abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink#flush()()` Flush any enqueued trace events to the `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink`. | android |
| `abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink#onDroppedTraceEvent()()` Called when the `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink` cannot keep up with incoming trace events from `https://developer.android.com/reference/kotlin/androidx/tracing/Track`s. | android |

## Public constructors

### AbstractTraceSink

android Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
AbstractTraceSink()
```

## Public functions

### close

android Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
abstract fun close(): Unit
```

Close the `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink`, completing any enqueued writes.

This function may be called from any thread.

### enqueue

android Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
abstract fun enqueue(pooledPacketArray: PooledTracePacketArray): Unit
```

Enqueue a `https://developer.android.com/reference/kotlin/androidx/tracing/PooledTracePacketArray` to be written to the trace.

This function may be called from any thread.

### flush

android Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
abstract fun flush(): Unit
```

Flush any enqueued trace events to the `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink`.

If the trace sink writes to persistent storage, this forces any buffered events to be written immediately. For in-memory sinks, this is typically a no-op because they do not have an underlying persistent storage destination by default.

This function may be called from any thread.

### onDroppedTraceEvent

android Added in [2.0.5](https://developer.android.com/jetpack/androidx/releases/tracing#2.0.5)

```
abstract fun onDroppedTraceEvent(): Unit
```

Called when the `https://developer.android.com/reference/kotlin/androidx/tracing/AbstractTraceSink` cannot keep up with incoming trace events from `https://developer.android.com/reference/kotlin/androidx/tracing/Track`s.

This function may be called from any thread.