summaryrefslogtreecommitdiff
path: root/csharp/src/Ice/Discovery/Locator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'csharp/src/Ice/Discovery/Locator.cs')
-rw-r--r--csharp/src/Ice/Discovery/Locator.cs32
1 files changed, 20 insertions, 12 deletions
diff --git a/csharp/src/Ice/Discovery/Locator.cs b/csharp/src/Ice/Discovery/Locator.cs
index 14673bf24da..8e5fea27bdd 100644
--- a/csharp/src/Ice/Discovery/Locator.cs
+++ b/csharp/src/Ice/Discovery/Locator.cs
@@ -307,7 +307,7 @@ namespace ZeroC.Ice.Discovery
// If the timeout was canceled we delay the completion of the request to give a chance to other
// members of this replica group to reply
return await
- replyServant.WaitForReplicaGroupRepliesAsync(start, _latencyMultiplier).ConfigureAwait(false);
+ replyServant.GetReplicaGroupRepliesAsync(start, _latencyMultiplier).ConfigureAwait(false);
}
// else timeout, so we retry until _retryCount
}
@@ -338,9 +338,7 @@ namespace ZeroC.Ice.Discovery
_replyAdapter.Remove(Identity);
}
- internal void SetEmptyResult() => _completionSource.SetResult(_emptyResult);
-
- internal async Task<TResult> WaitForReplicaGroupRepliesAsync(TimeSpan start, int latencyMultiplier)
+ internal async Task<TResult> GetReplicaGroupRepliesAsync(TimeSpan start, int latencyMultiplier)
{
// This method is called by InvokeAsync after the first reply from a replica group to wait for additional
// replies from the replica group.
@@ -355,6 +353,8 @@ namespace ZeroC.Ice.Discovery
return await Task.ConfigureAwait(false);
}
+ internal void SetEmptyResult() => _completionSource.SetResult(_emptyResult);
+
private protected ReplyServant(TResult emptyResult, ObjectAdapter replyAdapter)
{
// Add servant (this) to object adapter with new UUID identity.
@@ -378,12 +378,12 @@ namespace ZeroC.Ice.Discovery
}
/// <summary>Servant class that implements the Slice interface FindAdapterByIdReply.</summary>
- internal sealed class FindAdapterByIdReply : ReplyServant<IObjectPrx?>, IFindAdapterByIdReply
+ internal sealed class FindAdapterByIdReply : ReplyServant<IObjectPrx?>, IAsyncFindAdapterByIdReply
{
private readonly object _mutex = new();
private readonly HashSet<IObjectPrx> _proxies = new();
- public void FoundAdapterById(
+ public ValueTask FoundAdapterByIdAsync(
string adapterId,
IObjectPrx proxy,
bool isReplicaGroup,
@@ -407,6 +407,7 @@ namespace ZeroC.Ice.Discovery
{
SetResult(proxy);
}
+ return default;
}
internal FindAdapterByIdReply(ObjectAdapter replyAdapter)
@@ -431,10 +432,13 @@ namespace ZeroC.Ice.Discovery
}
/// <summary>Servant class that implements the Slice interface FindObjectByIdReply.</summary>
- internal class FindObjectByIdReply : ReplyServant<IObjectPrx?>, IFindObjectByIdReply
+ internal class FindObjectByIdReply : ReplyServant<IObjectPrx?>, IAsyncFindObjectByIdReply
{
- public void FoundObjectById(Identity id, IObjectPrx proxy, Current current, CancellationToken cancel) =>
+ public ValueTask FoundObjectByIdAsync(Identity id, IObjectPrx proxy, Current current, CancellationToken cancel)
+ {
SetResult(proxy);
+ return default;
+ }
internal FindObjectByIdReply(ObjectAdapter replyAdapter)
: base(emptyResult: null, replyAdapter)
@@ -443,12 +447,12 @@ namespace ZeroC.Ice.Discovery
}
/// <summary>Servant class that implements the Slice interface ResolveAdapterIdReply.</summary>
- internal sealed class ResolveAdapterIdReply : ReplyServant<IReadOnlyList<EndpointData>>, IResolveAdapterIdReply
+ internal sealed class ResolveAdapterIdReply : ReplyServant<IReadOnlyList<EndpointData>>, IAsyncResolveAdapterIdReply
{
private readonly object _mutex = new();
private readonly HashSet<EndpointData> _endpointDataSet = new();
- public void FoundAdapterId(
+ public ValueTask FoundAdapterIdAsync(
EndpointData[] endpoints,
bool isReplicaGroup,
Current current,
@@ -471,6 +475,7 @@ namespace ZeroC.Ice.Discovery
{
SetResult(endpoints);
}
+ return default;
}
internal ResolveAdapterIdReply(ObjectAdapter replyAdapter)
@@ -489,10 +494,13 @@ namespace ZeroC.Ice.Discovery
}
/// <summary>Servant class that implements the Slice interface ResolveWellKnownProxyReply.</summary>
- internal class ResolveWellKnownProxyReply : ReplyServant<string>, IResolveWellKnownProxyReply
+ internal class ResolveWellKnownProxyReply : ReplyServant<string>, IAsyncResolveWellKnownProxyReply
{
- public void FoundWellKnownProxy(string adapterId, Current current, CancellationToken cancel) =>
+ public ValueTask FoundWellKnownProxyAsync(string adapterId, Current current, CancellationToken cancel)
+ {
SetResult(adapterId);
+ return default;
+ }
internal ResolveWellKnownProxyReply(ObjectAdapter replyAdapter)
: base(emptyResult: "", replyAdapter)