Example #1
0
        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}.");
                }
            }
        }
Example #2
0
        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);
        }
Example #3
0
 public void Free()
 {
     Status      = SlaveStatus.Idle;
     RunningTask = null;
 }