BuildXL.Cache.ContentStore.Distributed.NuCache.RedisGlobalStore.RegisterMachineAsync C# (CSharp) Метод

RegisterMachineAsync() публичный Метод

public RegisterMachineAsync ( OperationContext context, MachineLocation machineLocation ) : Task>
context OperationContext
machineLocation MachineLocation
Результат Task>
        public Task<Result<MachineMapping>> RegisterMachineAsync(OperationContext context, MachineLocation machineLocation)
        {
            return context.PerformOperationAsync(Tracer, async () =>
            {
                if (Configuration.DistributedContentConsumerOnly)
                {
                    return Result.Success(new MachineMapping(machineLocation, new MachineId(0)));
                }

                // Get the local machine id
                var machineIdAndIsAdded = await _clusterStateKey.UseNonConcurrentReplicatedHashAsync(
                    context,
                    Configuration.RetryWindow,
                    RedisOperation.StartupGetOrAddLocalMachine,
                    (batch, key) => batch.GetOrAddMachineAsync(key, machineLocation.ToString(), _clock.UtcNow),
                    timeout: Configuration.ClusterRedisOperationTimeout)
                    .ThrowIfFailureAsync();

                Tracer.Debug(context, $"Assigned machine id={machineIdAndIsAdded.machineId}, location={machineLocation}, isAdded={machineIdAndIsAdded.isAdded}.");

                return Result.Success(new MachineMapping(machineLocation, new MachineId(machineIdAndIsAdded.machineId)));
            },
            traceOperationStarted: false,
            extraEndMessage: r =>
            {
                if (r.Succeeded)
                {
                    return $"MachineLocation=[{r.Value.Location}] MachineId=[{r.Value.Id}]";
                }
                else
                {
                    return $"MachineLocation=[{machineLocation}]";
                }
            });
        }