public void StatusChanger(string slaveMac, SlaveStatus slaveStatus) { var device = Devices.FirstOrDefault(x => x.Key == slaveMac); if (device.Key != null) { device.Value.Slave.Status = slaveStatus; Devices.AddOrUpdate(slaveMac, device.Value, (key, oldVal) => device.Value); _logger.Info($"Status of device with MAC {slaveMac} has been updated to {slaveStatus}"); } else { var sensor = Sensors.FirstOrDefault(x => x.Key == slaveMac); if (sensor.Key != null) { sensor.Value.Slave.Status = slaveStatus; Sensors.AddOrUpdate(slaveMac, sensor.Value, (key, oldVal) => sensor.Value); _logger.Info($"Status of sensor with MAC {slaveMac} has been updated to {slaveStatus}"); } else { _logger.Info($"Can't find device or sensor with MAC: {slaveMac}."); } } }
public void SendTask(Task task) { Status = SlaveStatus.Running; RunningTask = task; task.Assignee = this; NetOutgoingMessage outMsg = server.CreateMessage(); outMsg.Write("prgm"); outMsg.Write(task.Arguments.Count); if (task.Arguments.Count > 0) { foreach (var arg in task.Arguments.OrderBy(k => k.Key).Select(k => k.Value)) { object value = arg.GetValue(); Type type = arg.GetValueType(); outMsg.Write(type.Name); if (type == typeof(int)) { outMsg.Write((int)value); } else if (type == typeof(string)) { outMsg.Write((string)value); } else if (type == typeof(bool)) { outMsg.Write((bool)value); } } } outMsg.Write(File.ReadAllText(task.CodePath)); outMsg.Write(task.CodePath); server.SendMessage(outMsg, Connection, NetDeliveryMethod.ReliableOrdered); }
public void Free() { Status = SlaveStatus.Idle; RunningTask = null; }