public async Task <bool> ContainsAsync(string resourceUriString) { _ = resourceUriString ?? throw new ArgumentNullException(nameof(resourceUriString)); long id = 1; ISigmaAlgebraChain chain = GrainFactory.GetGrain <ISigmaAlgebraChain>(id); if (await chain.ContainsAsync(resourceUriString)) { return(await Task.FromResult(true)); } int cnt = await chain.GetCountAsync(); while (cnt > 0) { id++; chain = GrainFactory.GetGrain <ISigmaAlgebraChain>(id); if (await chain.ContainsAsync(resourceUriString)) { return(await Task.FromResult(true)); } } return(await Task.FromResult(false)); }
public async Task <bool> AddAsync(string resourceUriString) { _ = resourceUriString ?? throw new ArgumentNullException(nameof(resourceUriString)); if (State.Container.Count < 1000 && !State.Container.Contains(resourceUriString)) { State.Container.Add(resourceUriString); return(await Task.FromResult(true)); } long nextId = State.Id; nextId++; ISigmaAlgebraChain nextChain = GrainFactory.GetGrain <ISigmaAlgebraChain>(nextId); while (await nextChain.GetCountAsync() >= 1000) { if (await nextChain.ContainsAsync(resourceUriString)) { return(await Task.FromResult(false)); } nextId++; nextChain = GrainFactory.GetGrain <ISigmaAlgebraChain>(nextId); } if (await nextChain.ContainsAsync(resourceUriString)) { return(await Task.FromResult(false)); } bool result = await nextChain.AddAsync(resourceUriString); return(await Task.FromResult(result)); }