Skip to main content

Local Storage Agent - C Sharp

Read and write value in local storage.

Logic TypeAvailable
Generic logic✅
Aggregator logic❌

Local Storage​

Unlike a task's session storage, the local storage is implemented in Kubernetes' etcd database and can be accessed by different tasks. Data can stay persistent after executions for a limit amount of time.

The local storage is not meant as the primary way to exchange data across tasks, more like a debugging or testing tool.

Import and Usage​

The agent can be used without using additional namespaces:

public static class Logic
{

public static async Task Run(Context ctx)
{
var data = (await LocalStorageAgent.Get("data"))?.JsonValue;
}

public static async Task HandleError(Context ctx, Exception error)
{
// ... same
}
}

Class Reference​

Type​

  • Public static class LocalStorageAgent

Method: Get Local Value​

public async static Task<StorageValue?> Get(string key) {}
ParameterDescription
keyKey of local data

Returns a StorageValue value from local storage (null if not exist).

Method: Write Local Value​

public async static Task Put(string key, StorageValue value, ulong? timeoutSeconds = null) {}
ParameterDescription
keyKey of local data
valueStorageValue data
timeout(Optional) data persistent time (seconds; default 300, maximum 86400 = 1 day)

Write a StorageValue value into local storage. Overwrite if already exists.

Method: Delete Local Value​

public async static Task Delete(string key) {}
ParameterDescription
keyKey of local data

Delete a value in local storage. Do nothing if not exist.

Sub Class Reference​

StorageValue​

Refer to: StorageValue

Examples​

See the example of session storage agent for more detailed examples (replace LocalStorageAgent to SessionStorageAgent and without the timeout parameter).

Write String Data Into Local Storage​

await LocalStorageAgent.Put(
"data",
StorageValue.FromString("so long, and thanks for all the fish"),
86400 // persistent for 1 day
);

Write JSON Data Into Local Storage​

await LocalStorageAgent.Put(
"data",
StorageValue.FromJson(
new Dictionary<string, object?>()
{
// ...
}
),
86400 // persistent for 1 day
);

// or

/*
- import the following namespace:

using System.Text.Json.Nodes;
*/
await LocalStorageAgent.Put(
"data",
StorageValue.FromJson(
new JsonObject
{
// ...
}
),
86400 // persistent for 1 day
);

Read String Data from Local Storage​

string? data = (await LocalStorageAgent.Get("data"))?.StringValue;

Set a default value if the local data does not exist (returns null):

string data = (await LocalStorageAgent.Get("data"))?.StringValue ?? "default value";

Read Json Data from Local Storage​

Import namespace(s)
using System.Text.Json.Nodes;
JsonNode? data = (await LocalStorageAgent.Get("data"))?.JsonValue;

// get values (null if not found)
string? name = data?["name"]?.GetValue<string>();
int? age = data?["age"]?.GetValue<int>();