Skip to content

Commit 4f0e5e3

Browse files
committed
update all async
1 parent 62dda3e commit 4f0e5e3

File tree

1 file changed

+50
-1
lines changed

1 file changed

+50
-1
lines changed

src/Client/OrchestrationServiceClientShim/ShimDurableEntityClient.cs

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ public override AsyncPageable<EntityMetadata> GetAllEntitiesAsync(EntityQuery? f
6161

6262
/// <inheritdoc/>
6363
public override AsyncPageable<EntityMetadata<T>> GetAllEntitiesAsync<T>(EntityQuery? filter = null)
64-
=> this.GetAllEntitiesAsync(this.Convert<T>, filter);
64+
=> this.SupportsAsyncSerialization
65+
? this.GetAllEntitiesAsync(this.Convert<T>, filter)
66+
: this.GetAllEntitiesAsync(this.ConvertSync<T>, filter);
6567

6668
/// <inheritdoc/>
6769
public override async Task<EntityMetadata?> GetEntityAsync(
@@ -139,6 +141,39 @@ AsyncPageable<TMetadata> GetAllEntitiesAsync<TMetadata>(
139141
});
140142
}
141143

144+
AsyncPageable<TMetadata> GetAllEntitiesAsync<TMetadata>(
145+
Func<EntityBackendQueries.EntityMetadata, Task<TMetadata>> selectAsync,
146+
EntityQuery? filter)
147+
where TMetadata : notnull
148+
{
149+
bool includeState = filter?.IncludeState ?? true;
150+
bool includeTransient = filter?.IncludeTransient ?? false;
151+
string startsWith = filter?.InstanceIdStartsWith ?? string.Empty;
152+
DateTime? lastModifiedFrom = filter?.LastModifiedFrom?.UtcDateTime;
153+
DateTime? lastModifiedTo = filter?.LastModifiedTo?.UtcDateTime;
154+
155+
return Pageable.Create(async (continuation, size, cancellation) =>
156+
{
157+
continuation ??= filter?.ContinuationToken;
158+
size ??= filter?.PageSize;
159+
EntityBackendQueries.EntityQueryResult result = await this.Queries.QueryEntitiesAsync(
160+
new EntityBackendQueries.EntityQuery()
161+
{
162+
InstanceIdStartsWith = startsWith,
163+
LastModifiedFrom = lastModifiedFrom,
164+
LastModifiedTo = lastModifiedTo,
165+
IncludeTransient = includeTransient,
166+
IncludeState = includeState,
167+
ContinuationToken = continuation,
168+
PageSize = size,
169+
},
170+
cancellation);
171+
172+
TMetadata[] items = await Task.WhenAll(result.Results.Select(selectAsync));
173+
return new Page<TMetadata>(items, result.ContinuationToken);
174+
});
175+
}
176+
142177
async Task<EntityMetadata<T>> Convert<T>(EntityBackendQueries.EntityMetadata metadata)
143178
{
144179
T? state = this.SupportsAsyncSerialization
@@ -155,6 +190,20 @@ async Task<EntityMetadata<T>> Convert<T>(EntityBackendQueries.EntityMetadata met
155190
};
156191
}
157192

193+
EntityMetadata<T> ConvertSync<T>(EntityBackendQueries.EntityMetadata metadata)
194+
{
195+
T? state = this.Converter.Deserialize<T>(metadata.SerializedState);
196+
197+
return new(
198+
metadata.EntityId.ConvertFromCore(),
199+
state)
200+
{
201+
LastModifiedTime = metadata.LastModifiedTime,
202+
BacklogQueueSize = metadata.BacklogQueueSize,
203+
LockedBy = metadata.LockedBy,
204+
};
205+
}
206+
158207
async Task<EntityMetadata<T>?> Convert<T>(EntityBackendQueries.EntityMetadata? metadata)
159208
{
160209
if (metadata is null)

0 commit comments

Comments
 (0)