public static (MonikerIdentifier, ulong, PointInTime) Deconstruct(this DataSourceGetRequest request) { return(request.Id.MonikerCase switch { MonikerId.MonikerOneofCase.Latest => (request.Id.Latest, 0UL, ToPointInTime(DateTimeOffset.Now)), MonikerId.MonikerOneofCase.Version => (request.Id.Version.Id, request.Id.Version.Version, ToPointInTime(DateTimeOffset.Now.Date) /*request.Id.Version.Timestamp*/), _ => throw new NotImplementedException() });
public override async Task Get(DataSourceGetRequest request, IServerStreamWriter <DataSourceGetResponse> responseStream, ServerCallContext context) { var requestUid = Guid.NewGuid().ToString(); // TODO: Bind the UID to the request _logger.LogInformation($"Started processing Get request: '{requestUid}' from '{context.Peer}'"); await Task.Run(async() => { await foreach (var dsgr in _grpcClient.Get(request).ResponseStream.ReadAllAsync()) { await responseStream.WriteAsync(dsgr); } }); _logger.LogInformation($"Finished processing Get request: '{requestUid}' from '{context.Peer}'"); }
public override async Task Get(DataSourceGetRequest request, IServerStreamWriter <DataSourceGetResponse> responseStream, ServerCallContext context) { var requestUid = Guid.NewGuid().ToString(); // TODO: Bind the UID to the request _logger.LogInformation($"Started processing Get request: '{requestUid}' from '{context.Peer}'"); var(id, version, timestamp) = request.Deconstruct(); foreach (var i in Enumerable.Range(0, _rowsInTheResponse)) { var response = GenerateGetResponse(id, version, timestamp, i, _rowsInTheResponse); await responseStream.WriteAsync(response); } _logger.LogInformation($"Finished processing Get request: '{requestUid}' from '{context.Peer}'"); }
public override async Task Get(DataSourceGetRequest request, IServerStreamWriter <DataSourceGetResponse> responseStream, ServerCallContext context) { var requestUid = Guid.NewGuid().ToString(); // TODO: Bind the UID to the request _logger.LogInformation($"Started processing Get request: '{requestUid}' from '{context.Peer}'"); try { var(grainKey, monikerVersionPartId) = request.Id.ToGrainKey(); var result = await Task.Run(() => _orleansClient.GetGrain <ICacheItemGrain>(grainKey).GetAsync(monikerVersionPartId)); if (result.Any()) { foreach (var storedValue in result) { await responseStream.WriteAsync(new DataSourceGetResponse { Success = storedValue }); } } else { await responseStream.WriteAsync(new DataSourceGetResponse { NotFound = request.Id }); } } catch (Exception e) { _logger.LogError($"{e} while processing: '{requestUid}' from '{context.Peer}'"); await responseStream.WriteAsync(new DataSourceGetResponse { Error = new CacheError { Error = new InternalError { StorageError = e.Message } } }); // throw; } finally { _logger.LogInformation($"Finished processing Get request: '{requestUid}' from '{context.Peer}'"); } }
public override async Task Get(DataSourceGetRequest request, IServerStreamWriter <DataSourceGetResponse> responseStream, ServerCallContext context) { var requestUid = Guid.NewGuid().ToString(); // TODO: Bind the UID to the request _logger.LogInformation($"Started processing Get request: '{requestUid}' from '{context.Peer}'"); var(id, version, timestamp) = request.Deconstruct(); var(_, mbpid) = request.Id.ToGrainKey(); var rows = await ReadFileAsync($"{mbpid.Id.Key}/{mbpid.Version}", false); var i = 0; foreach (var row in rows) { var response = GenerateGetResponse(row, id, version, timestamp, i++, rows.Length); await responseStream.WriteAsync(response); } _logger.LogInformation($"Finished processing Get request: '{requestUid}' from '{context.Peer}'"); }