public override Task <RoutingResponse> EnqueueBulkMeasurements(MeasurementData request, ServerCallContext context) { RoutingResponse response; using (this.m_duration.NewTimer()) { this.m_logger.LogDebug("Bulk ingress request with {count} measurements.", request.Measurements.Count); try { var dto = new List <Measurement>(); foreach (var raw in request.Measurements) { var measurement = MeasurementProtobufConverter.Convert(raw); if (MeasurementValidator.Validate(measurement)) { dto.Add(measurement); } } this.m_queue.AddRange(dto); this.m_measurementRequests.Inc(); response = new RoutingResponse { Count = dto.Count, Message = "Messages queued.", ResponseID = ByteString.CopyFrom(Guid.NewGuid().ToByteArray()) }; } catch (FormatException ex) { this.m_logger.LogWarning("Received messages from an invalid sensor. Exception: {exception}", ex); response = new RoutingResponse { Count = 0, Message = "Messages not queued. Invalid sensor ID.", ResponseID = ByteString.CopyFrom(Guid.NewGuid().ToByteArray()) }; } } return(Task.FromResult(response)); }
public JsonResult Add([FromBody] Measurement measurement, [FromHeader] string authorization) { var authorized = GetAuthorization(authorization); if (!authorized.IsAuthorized) { return(Json(new { Status = "Error", Errors = new string[] { authorized.Message } })); } var measurementErrors = MeasurementValidator.GetErrors(measurement); if (measurementErrors != null) { return(Json(new { Status = "Error", Errors = measurementErrors })); } measurement.DateMeasured = DateTime.Now; hubContext.Clients.All.SendAsync("MeasurementAdded", measurement); persistency.Insert(measurement); return(Json(new { Status = "Added", Username = authorized.Username, MeasurementAdded = measurement })); }
public override Task <RoutingResponse> EnqueueMeasurement(Platform.Router.Contracts.DTO.Measurement request, ServerCallContext context) { RoutingResponse response; using (this.m_duration.NewTimer()) { this.m_logger.LogDebug("Received measurement routing request from sensor {sensorId}.", request.SensorID); try { var count = 0; var dto = MeasurementProtobufConverter.Convert(request); if (MeasurementValidator.Validate(dto)) { this.m_queue.Add(dto); this.m_measurementRequests.Inc(); count += 1; } response = new RoutingResponse { Count = count, Message = "Measurements queued.", ResponseID = ByteString.CopyFrom(Guid.NewGuid().ToByteArray()) }; } catch (FormatException) { this.m_logger.LogWarning("Received messages from an invalid sensor (ID): {sensorID}", request.SensorID); response = new RoutingResponse { Count = 0, Message = "Measurements not queued. Invalid sensor ID.", ResponseID = ByteString.CopyFrom(Guid.NewGuid().ToByteArray()) }; } } return(Task.FromResult(response)); }