Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
1a376cf
Make context mockable
svegiraju-microsoft Oct 10, 2024
f51def0
Fix project
svegiraju-microsoft Oct 10, 2024
43d8ee2
Consolidated version of coverlet.msbuild, coverlet.collector, xunit, …
m3nax Jun 26, 2024
3ce4685
Make context mockable
svegiraju-microsoft Oct 10, 2024
d083483
Fix project
svegiraju-microsoft Oct 10, 2024
0653902
Added unit test to prove out concern raised on Discord
WhitWaldo Sep 13, 2024
a7c37ce
Removed unused using
WhitWaldo Sep 19, 2024
2b408c6
Added unit test to validate that headers aren't being stripped off re…
WhitWaldo Oct 7, 2024
8277fc2
Fixed spelling typo
WhitWaldo Oct 7, 2024
53d7a0c
Added fix to handle null return values
WhitWaldo Oct 6, 2024
cf9f1ca
Removed unnecessary null check
WhitWaldo Oct 11, 2024
5dcc4e5
Removed deprecated methods from DaprClient and tests as well as unuse…
WhitWaldo Sep 3, 2024
11b3aec
Removed unused (and invalid) reference
WhitWaldo Sep 3, 2024
c6eb1d8
Removed E2E workflow test as it validated DaprClient and the function…
WhitWaldo Oct 11, 2024
0b89433
Adding instance-based CreateInvokableHttpClient (#1319)
WhitWaldo Oct 14, 2024
d1b6479
Fixed security advisory updates across dependencies (transitive and d…
WhitWaldo Oct 15, 2024
b148bc4
Removes floating classes and introduces Dapr.Common project (#1365)
WhitWaldo Oct 16, 2024
614a92b
Extracted Protos out to common project (#1367)
WhitWaldo Oct 16, 2024
a8e1b79
Improvement of the dotnet-contributing files (#1330)
Shubhdeep02 Oct 16, 2024
d538b26
Support case insensitive cloudevent payloads and forward cloudevent p…
iliaspoli Oct 17, 2024
453da80
Updating actor serialization documentation (#1371)
WhitWaldo Oct 18, 2024
e07a12e
Prioritize retrieval of environment variables from IConfiguration ins…
WhitWaldo Oct 18, 2024
d4f2ff1
cleanup: Removed Serilog nuget from Directory.Packages.props (#1376)
m3nax Oct 22, 2024
01eddad
Removed sample folder (#1375)
m3nax Oct 22, 2024
0b4eeda
Remove unused variables (#1314)
RafaelJCamara Oct 24, 2024
ed86404
Remove unused using statements. (#1313)
RafaelJCamara Oct 24, 2024
d5af95c
Incremental source generator for actors (#1334)
m3nax Oct 28, 2024
03995c7
Add .NET client for Dapr Jobs API (#1384)
WhitWaldo Nov 1, 2024
d1aa92b
Updated prereqs to specify .NET 6 and .NET 8 in v1.15 (#1398)
WhitWaldo Nov 1, 2024
a06605c
Refactor DaprWorkflowClientBuilderFactory and WorkflowRuntimeOptions …
neworange-ruud Nov 4, 2024
c464294
Fix for DI registration not completing as expected (#1386)
WhitWaldo Nov 5, 2024
372d428
Add .NET client for pub/sub support - streaming subscriptions (#1381)
WhitWaldo Nov 5, 2024
a3da0aa
ci: set fail-fast to false (#1405)
mikeee Nov 12, 2024
3cbc50f
Added async operations workflow sample (#1394)
WhitWaldo Nov 12, 2024
c0a5a35
Added workflow example: Fan out/fan in (#1396)
WhitWaldo Nov 13, 2024
33d94a5
Added workflow sample: Sub-workflows (#1395)
WhitWaldo Nov 14, 2024
e04af4e
Added workflow sample: Task chaining (#1387)
WhitWaldo Nov 14, 2024
a972d2f
Added workflow sample: Monitor (#1388)
WhitWaldo Nov 14, 2024
f9c9e23
Added workflow example: External interaction (#1389)
WhitWaldo Nov 18, 2024
105f798
Optional DI lifecycle change (#1408)
WhitWaldo Nov 21, 2024
7933066
Additional lifecycle registration changes (#1410)
WhitWaldo Nov 24, 2024
072c060
Preserve comparer of the original dictionary from ConfigurationProvid…
tomhreb Nov 30, 2024
4ed3480
Update all.sln
WhitWaldo Nov 30, 2024
ed68f28
Bug/476 multiple methods per interface with JSON serialization doesn´…
paule96 Dec 3, 2024
2afde01
Support .NET 9 (#1404)
WhitWaldo Dec 4, 2024
b343ecb
update .net workflow docs to stable (#1418)
hhunter-ms Dec 4, 2024
4ed55b3
FIX: Actor source generator generates invalid code for generic interf…
m3nax Dec 5, 2024
d21a686
Add .NET client for LLM Conversations support (#1382)
WhitWaldo Dec 10, 2024
2fe08c9
Updated protos to latest in dapr/dapr (#1420)
WhitWaldo Dec 11, 2024
1e77e39
Conversation builder consistency changes (#1423)
WhitWaldo Dec 11, 2024
9d36d3e
#906 -Added methods in status API supports for saving and reading bin…
divzi-p Dec 11, 2024
dd06c48
Fixes + unit tests for streaming PubSub implementation (#1415)
WhitWaldo Dec 11, 2024
3dd8019
Fix nulls
svegiraju-microsoft Dec 20, 2024
f188fd1
Merge branch 'master' into users/svegira/make-context-mockable
siri-varma Dec 20, 2024
ce7b2d8
Delete examples/Client/PublishSubscribe/StreamingSubscriptionExample/…
siri-varma Dec 20, 2024
63bad79
Delete examples/AI/ConversationalAI/Properties/launchSettings.json
siri-varma Dec 20, 2024
57c93d2
Delete daprdocs/content/en/dotnet-sdk-docs/dotnet-ai/dotnet-ai-usage.md
siri-varma Dec 20, 2024
dd6b3c3
Update dotnet-jobs-howto.md
siri-varma Dec 20, 2024
e11bf0e
Update dotnet-jobs-howto.md
siri-varma Dec 20, 2024
0684a6c
Update dotnet-workflowclient-usage.md
siri-varma Dec 20, 2024
94763b3
Update dotnet-workflowclient-usage.md
siri-varma Dec 20, 2024
b519b62
fix thing
svegiraju-microsoft Dec 20, 2024
8f27ba7
Update WorkflowActivityContext.cs
siri-varma Dec 20, 2024
096664a
Update WorkflowActivityContext.cs
siri-varma Dec 21, 2024
dbda89d
fix things
svegiraju-microsoft Dec 21, 2024
1c4cc5b
Fix version
svegiraju-microsoft Dec 21, 2024
e3e6b0a
Update Dapr.Workflow.Test.csproj
siri-varma Dec 21, 2024
f32fb8e
fix things
svegiraju-microsoft Dec 21, 2024
b55699c
Delete examples/AI/ConversationalAI/Properties/launchSettings.json
siri-varma Dec 21, 2024
ea4ac28
Delete examples/Client/PublishSubscribe/StreamingSubscriptionExample/…
siri-varma Dec 21, 2024
df7c70c
Update WorkflowActivityContext.cs
siri-varma Dec 28, 2024
3077035
Merge branch 'master' into users/svegira/make-context-mockable
WhitWaldo Dec 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
#906 -Added methods in status API supports for saving and reading bin…
…ary data (#1116)

* Added methods in status API supports for direct storage and reading of byte arrays #906

Signed-off-by: Divya Perumal <divzi.perumal@gmail.com>
Signed-off-by: Divya Perumal <diperuma@microsoft.com>
Signed-off-by: Siri Varma Vegiraju <svegiraju@microsoft.com>
  • Loading branch information
divzi-p authored and svegiraju-microsoft committed Dec 20, 2024
commit 9d36d3e62bad6511a11112c84c86aaa8f227bb56
5 changes: 3 additions & 2 deletions examples/Client/StateManagement/Program.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// ------------------------------------------------------------------------
// ------------------------------------------------------------------------
// Copyright 2021 The Dapr Authors
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
Expand All @@ -24,7 +24,8 @@ class Program
new StateStoreExample(),
new StateStoreTransactionsExample(),
new StateStoreETagsExample(),
new BulkStateExample()
new BulkStateExample(),
new StateStoreBinaryExample()
};

static async Task<int> Main(string[] args)
Expand Down
47 changes: 47 additions & 0 deletions examples/Client/StateManagement/StateStoreBinaryExample.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Text;
using Dapr.Client;
using System.Threading.Tasks;
using System.Threading;
using Google.Protobuf;

namespace Samples.Client
{
public class StateStoreBinaryExample : Example
{

private static readonly string stateKeyName = "binarydata";
private static readonly string storeName = "statestore";

public override string DisplayName => "Using the State Store with binary data";

public override async Task RunAsync(CancellationToken cancellationToken)
{
using var client = new DaprClientBuilder().Build();

var state = "Test Binary Data";
// convert variable in to byte array
var stateBytes = Encoding.UTF8.GetBytes(state);
await client.SaveByteStateAsync(storeName, stateKeyName, stateBytes.AsMemory(), cancellationToken: cancellationToken);
Console.WriteLine("Saved State!");

var responseBytes = await client.GetByteStateAsync(storeName, stateKeyName, cancellationToken: cancellationToken);
var savedState = Encoding.UTF8.GetString(ByteString.CopyFrom(responseBytes.Span).ToByteArray());

if (savedState == null)
{
Console.WriteLine("State not found in store");
}
else
{
Console.WriteLine($"Got State: {savedState}");
}

await client.DeleteStateAsync(storeName, stateKeyName, cancellationToken: cancellationToken);
Console.WriteLine("Deleted State!");
}


}
}
74 changes: 74 additions & 0 deletions src/Dapr.Client/DaprClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -850,6 +850,80 @@ public abstract Task SaveStateAsync<TValue>(
IReadOnlyDictionary<string, string> metadata = default,
CancellationToken cancellationToken = default);


/// <summary>
/// Saves the provided <paramref name="binaryValue" /> associated with the provided <paramref name="key" /> to the Dapr state
/// store
/// </summary>
/// <param name="storeName">The name of the state store.</param>
/// <param name="key">The state key.</param>
/// <param name="binaryValue">The binary data that will be stored in the state store.</param>
/// <param name="stateOptions">Options for performing save state operation.</param>
/// <param name="metadata">A collection of metadata key-value pairs that will be provided to the state store. The valid metadata keys and values are determined by the type of state store used.</param>
/// <param name="cancellationToken">A <see cref="CancellationToken" /> that can be used to cancel the operation.</param>
/// <returns>A <see cref="Task" /> that will complete when the operation has completed.</returns>
public abstract Task SaveByteStateAsync(
string storeName,
string key,
ReadOnlyMemory<byte> binaryValue,
StateOptions stateOptions = default,
IReadOnlyDictionary<string, string> metadata = default,
CancellationToken cancellationToken = default);

/// <summary>
///Saves the provided <paramref name="binaryValue" /> associated with the provided <paramref name="key" /> using the
/// <paramref name="etag"/> to the Dapr state. State store implementation will allow the update only if the attached ETag matches with the latest ETag in the state store.
/// </summary>
/// <param name="storeName">The name of the state store.</param>
/// <param name="key">The state key.</param>
/// <param name="binaryValue">The binary data that will be stored in the state store.</param>
/// <param name="etag">An ETag.</param>
/// <param name="stateOptions">Options for performing save state operation.</param>
/// <param name="metadata">A collection of metadata key-value pairs that will be provided to the state store. The valid metadata keys and values are determined by the type of state store used.</param>
/// <param name="cancellationToken">A <see cref="CancellationToken" /> that can be used to cancel the operation.</param>
/// <returns>A <see cref="Task" /> that will complete when the operation has completed.</returns>
public abstract Task<bool> TrySaveByteStateAsync(
string storeName,
string key,
ReadOnlyMemory<byte> binaryValue,
string etag,
StateOptions stateOptions = default,
IReadOnlyDictionary<string, string> metadata = default,
CancellationToken cancellationToken = default);


/// <summary>
/// Gets the current binary value associated with the <paramref name="key" /> from the Dapr state store.
/// </summary>
/// <param name="storeName">The name of state store to read from.</param>
/// <param name="key">The state key.</param>
/// <param name="consistencyMode">The consistency mode <see cref="ConsistencyMode" />.</param>
/// <param name="metadata">A collection of metadata key-value pairs that will be provided to the state store. The valid metadata keys and values are determined by the type of state store used.</param>
/// <param name="cancellationToken">A <see cref="CancellationToken" /> that can be used to cancel the operation.</param>
/// <returns>A <see cref="Task{T}" /> that will return the value when the operation has completed.</returns>
public abstract Task<ReadOnlyMemory<byte>> GetByteStateAsync(
string storeName,
string key,
ConsistencyMode? consistencyMode = default,
IReadOnlyDictionary<string, string> metadata = default,
CancellationToken cancellationToken = default);

/// <summary>
/// Gets the current binary value associated with the <paramref name="key" /> from the Dapr state store and an ETag.
/// </summary>
/// <param name="storeName">The name of the state store.</param>
/// <param name="key">The state key.</param>
/// <param name="consistencyMode">The consistency mode <see cref="ConsistencyMode" />.</param>
/// <param name="metadata">A collection of metadata key-value pairs that will be provided to the state store. The valid metadata keys and values are determined by the type of state store used.</param>
/// <param name="cancellationToken">A <see cref="CancellationToken" /> that can be used to cancel the operation.</param>
/// <returns>A <see cref="Task{T}" /> that will return the value when the operation has completed. This wraps the read value and an ETag.</returns>
public abstract Task<(ReadOnlyMemory<byte>, string etag)> GetByteStateAndETagAsync(
string storeName,
string key,
ConsistencyMode? consistencyMode = default,
IReadOnlyDictionary<string, string> metadata = default,
CancellationToken cancellationToken = default);

/// <summary>
/// Tries to save the state <paramref name="value" /> associated with the provided <paramref name="key" /> using the
/// <paramref name="etag"/> to the Dapr state. State store implementation will allow the update only if the attached ETag matches with the latest ETag in the state store.
Expand Down
Loading