protected PacketStateEnum LogAndReturn(FunctionHandlerContext context, Packet packet, string source, string text) { Log(context, packet, source, text); context.DatabaseContext.SaveChanges(); return(PacketStateEnum.Failed); }
protected void Log(FunctionHandlerContext context, Packet packet, string source, string text) { var entity = new Log(source, text) { PacketID = packet.ID, }; context.DatabaseContext .Logs .Add(entity); }
public sealed override FunctionHandlerResult Handle(FunctionHandlerContext context, Packet packet, ref HubMessageQueue hubMessageQueue) { var items = GetItems(context.ModuleConfiguration, packet); var module = packet.Module; var moduleTemperatureSensors = context.DatabaseContext.TemperatureSensors .AsNoTracking() .Where(i => i.ModuleID == module.ID) .ToDictionary(i => i.Address, i => i); var newSensors = new List <TemperatureSensor>(); foreach (var item in items) { var address = GetAddress(item).ToUpper(); var isAdded = false; TemperatureSensor temperatureSensor; if (moduleTemperatureSensors.ContainsKey(address)) { temperatureSensor = moduleTemperatureSensors[address]; } else { temperatureSensor = new TemperatureSensor(module, address); context.DatabaseContext.TemperatureSensors.Add(temperatureSensor); moduleTemperatureSensors.Add(temperatureSensor.Address, temperatureSensor); newSensors.Add(temperatureSensor); isAdded = true; context.DatabaseContext.SaveChanges(); hubMessageQueue.Enqueue(i => i.NewTemperatureSensor(temperatureSensor.ModuleID, temperatureSensor.ID, temperatureSensor.Address)); } ItemCallback(context, packet, hubMessageQueue, item, temperatureSensor, isAdded); } if (newSensors.Count > 0) { var message = new Message(context.FunctionTypes.Forward[FunctionTypeEnum.OwDS18B20TemperaturePeriodical], true) { ModuleID = module.ID, }; context.DatabaseContext.Messages.Add(message); } context.DatabaseContext.SaveChanges(); OnHandled(context, module, hubMessageQueue, newSensors); return(new FunctionHandlerResult(PacketStateEnum.Handled, newSensors.Count > 0)); }
public abstract FunctionHandlerResult Handle(FunctionHandlerContext context, Packet packet, ref HubMessageQueue hubMessageQueue);
protected virtual void OnHandled(FunctionHandlerContext context, Module module, HubMessageQueue hubMessageQueue, IReadOnlyCollection <TemperatureSensor> newSensors) { }
protected virtual void ItemCallback(FunctionHandlerContext context, Packet packet, HubMessageQueue hubMessageQueue, T item, TemperatureSensor sensor, bool wasSensorCreated) { }