---
title: "ClikaRT::runtime::Executor"
sidebar_label: "Executor"
description: "Drives ONE Model: admits requests, runs its phases (continuous-batched across sessions), and delivers results. The single-node engine (Pipeline is the multi-node ensemble)."
---

<!-- Generated by tools/doxygen2mdx from Doxygen XML. Do not edit. -->

<span class="api-kind api-kind--class">class</span>

**Header:** `ClikaRT/runtime/executor.h`

[`ClikaRT::runtime::Executor`](./Executor.md): drives ONE `Model` node; admits requests, runs its phases (continuous-batched across sessions), and delivers results. This is the single-node engine; a multi-node ensemble is a `Pipeline`. The executor does NOT own the model; keep the `Model` alive for the executor's lifetime. Opaque handle (move-only).

Drives ONE [`Model`](./Model.md): admits requests, runs its phases (continuous-batched across sessions), and delivers results.

The single-node engine ([`Pipeline`](./Pipeline.md) is the multi-node ensemble). Does NOT own the model; keep the [`Model`](./Model.md) alive for the executor's lifetime. Move-only handle; [`shutdown()`](./Executor.md#shutdown) drains in-flight work.

```cpp
auto ex  = ClikaRT::runtime::Executor::create(model);
auto sid = ex.enqueue(std::move(request));
auto out = ex.await(sid);
```

## Static member functions

### create() {#create}

<div class="api-signature">

`static` [`Executor`](./Executor.md) **`create`**([`Model`](./Model.md)`&` `model`, [`ExecConfig`](./ExecConfig.md) `config` `=` `{}`)

</div>

Build an executor bound to `model` (borrowed; must outlive the executor). Uses the built-in continuous batcher + FIFO scheduler, tuned by `config`. `detail::contain` wraps the model's overrides here, in your translation unit, so a throw from one is caught caller-side and fails the session; it never unwinds into the engine.

<div class="api-declared">

Declared in `ClikaRT/runtime/executor.h`, line 42

</div>

## Member functions

### Executor() {#Executor}

<div class="api-signature">

**`Executor`**(`Executor&&` `other`) `noexcept`

</div>

<div class="api-declared">

Declared in `ClikaRT/runtime/executor.h`, line 44

</div>

### operator=() {#operator-assign}

<div class="api-signature">

[`Executor`](./Executor.md)`&` **`operator=`**([`Executor`](./Executor.md)`&&` `other`) `noexcept`

</div>

Move-only handle; the moved-from object is empty.

<div class="api-declared">

Declared in `ClikaRT/runtime/executor.h`, line 46

</div>

### \~Executor() {#Executor-2}

<div class="api-signature">

**`~Executor`**()

</div>

Implicitly shuts down and releases the engine.

<div class="api-declared">

Declared in `ClikaRT/runtime/executor.h`, line 48

</div>

### enqueue() {#enqueue}

<div class="api-signature">

[`SessionId`](./index.md#SessionId) **`enqueue`**([`Request`](./Request.md) `request`)

</div>

Submit a request; returns its session handle. Non-blocking. The request is validated against the model's [`ModelSchema`](./ModelSchema.md) before anything runs: every non-optional input present, each supplied input's dtype, rank and every concrete dim as declared (a spec that declares no dims constrains the dtype alone), and inputs sharing a `dim_names` entry agreeing on that extent; a violation is refused here with [`Status::InvalidArgument`](../../index.md#Status) naming the input. An input the schema does not declare is carried through untouched (the phase body may read it).

<div class="api-declared">

Declared in `ClikaRT/runtime/executor.h`, line 59

</div>

### await() {#await}

<div class="api-signature">

[`Response`](./Response.md) **`await`**([`SessionId`](./index.md#SessionId) `session`)

</div>

Block until `session` completes; return its final response.

<div class="api-declared">

Declared in `ClikaRT/runtime/executor.h`, line 64

</div>

### cancel() {#cancel}

<div class="api-signature">

`void` **`cancel`**([`SessionId`](./index.md#SessionId) `session`)

</div>

Cooperatively cancel an in-flight session.

<div class="api-declared">

Declared in `ClikaRT/runtime/executor.h`, line 68

</div>

### shutdown() {#shutdown}

<div class="api-signature">

`void` **`shutdown`**()

</div>

Drain in-flight work and stop. When [shutdown()](./Executor.md#shutdown) returns, every accepted session has completed and [await()](./Executor.md#await) still returns its result. A later [enqueue()](./Executor.md#enqueue) is refused with an InvalidArgument-status error whose code\_name() is "FAILED\_PRECONDITION".

<div class="api-declared">

Declared in `ClikaRT/runtime/executor.h`, line 75

</div>
