Beispiel #1
0
 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()
     });
Beispiel #2
0
        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}'");
        }
Beispiel #3
0
        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}'");
        }
Beispiel #4
0
        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}'");
            }
        }
Beispiel #5
0
        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}'");
        }