private static UsageLimitMessage UsageLimitMessageThrowsException(ReadingMessage request) { var result = new UsageLimitMessage() { CustomerId = request.CustomerId, MobileNumber = request.MobileNumber }; if (request.DataUsage < MaxDataUsage && request.ReadingTime.ToDateTime().ToUniversalTime() == DateTime.UtcNow) { result.ContinueUsage = ContinueService.Yes; result.RemainingData = 0; } else if (Math.Abs(request.DataUsage - MaxDataUsage) < tolerance && request.ReadingTime.ToDateTime().ToUniversalTime() == DateTime.UtcNow) { result.ContinueUsage = ContinueService.No; result.RemainingData = 0; } else { var additionalInfo = new Metadata() { new Metadata.Entry("Time", DateTime.UtcNow.ToString(CultureInfo.InvariantCulture)), new Metadata.Entry("exception_cause", "Data usage exceeded."), }; throw new RpcException(new Status(StatusCode.Cancelled, "Data usage has reached at the peak, Can not continue the data usage."), additionalInfo); } return(result); }
public Task<ReadingMessage> GetReadings(int customerId) { var readingMessage = new ReadingMessage { CustomerId = customerId, ReadingTime = Timestamp.FromDateTime(DateTime.UtcNow), ReadingValue = new Random().Next(10000) }; return Task.FromResult(readingMessage); }
public Task <ReadingMessage> Generate(int customerId) { var reading = new ReadingMessage() { CustomerId = customerId, ReadingValue = new Random().Next(10000), ReadingTime = Timestamp.FromDateTime(DateTime.UtcNow) }; return(Task.FromResult(reading)); }
public Task <ReadingMessage> Generate(int customerId) { var reading = new ReadingMessage { CustomerId = customerId, ReadingValue = new Random().Next(1000), ReadingTime = Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(DateTime.UtcNow) }; return(Task.FromResult(reading)); }
public static Task <ReadingMessage> GetMessage() { var reading = new ReadingMessage() { CustomerId = 1, DataUsage = 1000 + new Random().Next(512), ReadingTime = Timestamp.FromDateTime(DateTime.UtcNow), MobileNumber = "9766676869" }; return(Task.FromResult(reading)); }
public override Task <UsageLimitMessage> UpdateUsage(ReadingMessage request, ServerCallContext context) { try { var result = UsageLimitMessageThrowsException(request); return(Task.FromResult(result)); } catch (Exception e) { _logger.LogError(e.Message); throw; } }
private static UsageLimitMessage UsageLimitMessage(ReadingMessage request) { var result = new UsageLimitMessage() { CustomerId = request.CustomerId, MobileNumber = request.MobileNumber }; if (request.DataUsage <= MaxDataUsage && request.ReadingTime.ToDateTime().ToUniversalTime() == DateTime.UtcNow) { result.ContinueUsage = ContinueService.Yes; result.RemainingData = 0; } else { result.ContinueUsage = ContinueService.No; result.RemainingData = 0; } return(result); }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var counter = 0; var customerId = _configuration.GetValue <int>("Service:CustomerId"); while (!stoppingToken.IsCancellationRequested) { counter++; //if (counter % 10 == 0) //{ // Console.WriteLine("Sending Diagnostics"); // var stream = Client.SendDiagnostics(); // for (int i = 0; i < 5; i++) // { // var readingRes = await _factory.Generate(customerId); // await stream.RequestStream.WriteAsync(readingRes); // } // await stream.RequestStream.CompleteAsync(); //} _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); var pkt = new ReadingPacket() { Successful = ReadingStatus.Success, Notes = "This is our test" }; var reading = new ReadingMessage(); reading.CustomerId = customerId; reading.ReadingValue = 10000; reading.ReadingTime = Timestamp.FromDateTime(DateTime.UtcNow); for (int i = 0; i < 5; i++) { pkt.Readings.Add(await _factory.Generate(customerId)); } try { //if (!NeedsLogin() || await GenerateToken()) //{ // var headers = new Metadata(); // headers.Add("Authorization", $"Bearer {_token}"); var result = await Client.AddReadingAsync(pkt); // headers: headers); if (result.Successful == ReadingStatus.Success) { _logger.LogInformation("Successfully sent"); } else { _logger.LogInformation("Failed to send"); } //} } catch (RpcException ex) { if (ex.StatusCode == StatusCode.OutOfRange) { _logger.LogError($"{ex.Trailers}"); } _logger.LogError($"Exception Thrown: {ex}"); } await Task.Delay(_configuration.GetValue <int>("Service:DelayInterval"), stoppingToken); } }
public ReadMessageService(ReadingMessage readingMessage) { ReadingMessage = readingMessage; }