Example #1
0
        protected override void UpdateList(TKey key, ValueNode node)
        {
            var value = node.Value;
            var lNode = node.ListNode;

            if (lNode != null)
            {
                _list.Remove(lNode);
                ReportHit(key, value);
            }
            else
            {
                if (ValueStorage.Count > Capacity)
                {
                    var lastNode = _list.Last;
                    _list.RemoveLast();
                    if (ValueStorage.TryGetValue(lastNode.Value, out var oldNode))
                    {
                        ValueStorage.Remove(lastNode.Value);
                        _slots.Remove(oldNode.Slot);
                        _availableSlots.Enqueue(oldNode.Slot);
                        ReportDelete(lastNode.Value, oldNode.Value);
                    }
                }
                ReportInsert(key, value);
            }
            node.ListNode = _list.AddFirst(key);
        }
 public HomeController(LakeLabDbContext context, ValueStorage vs, DeviceStorage ds, UserManager <AppUser> um)
 {
     _dbContext     = context;
     _valueStorage  = vs;
     _deviceStorage = ds;
     _userManager   = um;
 }
        public void then_fail_if_no_variable()
        {
            IValueStorage       storage = new ValueStorage();
            Tuple <int, double> var2    = storage.Dequeue();

            var2.ShouldBeNull();
        }
 public apiController(LakeLabDbContext context, LoggingDbContext logginContext, ValueStorage vs, DeviceStorage ds)
 {
     _dbContext        = context;
     _loggingDbContext = logginContext;
     _valueStorage     = vs;
     _deviceStorage    = ds;
 }
Example #5
0
 protected override bool OnGetIndex(TKey key, out int index)
 {
     if (ValueStorage.TryGetValue(key, out var node))
     {
         index = node.Slot;
         return(true);
     }
     index = -1;
     return(false);
 }
Example #6
0
         static void Main(string[] args)
         {
             var _var1 = new ValueStorage() { Value = 0 };
             var _var2 = new ValueStorage() { Value = 1 };
             var _var3 = new ValueStorage() { Value = 2 };
 
             var varList = new List<ValueStorage> { _var1, _var2, _var3 };
             for (int i = 0; i < varList.Count; i++)
             {
                 varList[i].Value++;
             }
         }
        public void then_can_add_variable_value()
        {
            IValueStorage storage  = new ValueStorage();
            Variable      variable = new IntegerVariable(16, "Var16");
            double        newValue = 14.54;

            storage.Enqueue(variable.ID, newValue);
            Tuple <int, double> read = storage.Dequeue();

            read.Item1.ShouldEqual(variable.ID);
            read.Item2.ShouldEqual(newValue);
        }
Example #8
0
        public void then_work_with_one_driver_one_experiment()
        {
            Server server = new Server {
                Timer = new RealtimeFixedIntervalTimer {
                    Interval = 20
                }
            };
            ValueStorage storage = new ValueStorage();

            server.ValueStorage = storage;

            IDriver driver = new OneValueTestingDriver
            {
                ValueStorage = storage,
                Timer        = new RealtimeFixedIntervalTimer {
                    Interval = 20
                },
                ValueToPostToVariableStorage = Tuple.Create(1, 3.14),
            };
            Variable var1, var2, var3;

            driver.AddVariable(var1 = new IntegerVariable(1, "Var1"));
            driver.AddVariable(var2 = new IntegerVariable(2, "Var2"));
            driver.AddVariable(var3 = new IntegerVariable(3, "Var3"));

            server.AddDriver(driver);

            Experiment experiment = new Experiment {
                Name = "Exp1"
            };

            experiment.AddVariable(var1);
            experiment.AddVariable(var2);
            experiment.AddVariable(var3);

            server.AddExperiment(experiment);

            server.Start(0);
            experiment.Start(0);

            Thread.Sleep(100);

            server.RequestVariables("Exp1", (values) =>
            {
                values.Count.ShouldEqual(3);
                values[1].ShouldEqual(3.14);
                values[2].ShouldBeNaN();
                values[3].ShouldBeNaN();
                Debug.WriteLine("Done!");
            });

            Thread.Sleep(100);
        }
Example #9
0
        public void then_work_heavy_scenario_single_instances()
        {
            Server server = new Server {
                Timer = new RealtimeFixedIntervalTimer {
                    Interval = 20
                }
            };
            ValueStorage storage = new ValueStorage();

            server.ValueStorage = storage;

            IDriver driver = new AllValuesTestingDriver
            {
                ValueStorage = storage,
                Timer        = new RealtimeFixedIntervalTimer {
                    Interval = 20
                },
                ValueToPost = 3.14
            };
            Experiment experiment = new Experiment {
                Name = "Exp1"
            };

            int varCount = 1000;

            for (int i = 0; i < varCount; i++)
            {
                var variable = new IntegerVariable(i, "Var" + i);
                driver.AddVariable(variable);
                experiment.AddVariable(variable);
            }
            server.AddDriver(driver);
            server.AddExperiment(experiment);

            server.Start(0);
            experiment.Start(0);

            Thread.Sleep(50);

            server.RequestVariables("Exp1", (values) =>
            {
                values.Count.ShouldEqual(varCount);
                for (int i = 0; i < varCount; i++)
                {
                    values[i].ShouldEqual(3.14);
                }
                Debug.WriteLine("Done!");
            });

            Thread.Sleep(100);
        }
Example #10
0
 protected void SendValueToStorage(int varIdx, double value)
 {
     lock (_attendedVariablesLock)
     {
         int count;
         if (_attendedCount.TryGetValue(varIdx, out count))
         {
             if (count > 0)
             {
                 ValueStorage.Enqueue(varIdx, value);
             }
         }
     }
 }
Example #11
0
        public static int GetPublicKeyPadding(ValueStorage storage)
        {
            var keyType = (int)storage.Get(nameof(CiaCertificate.keyType));

            switch (keyType)
            {
            case 0:
                return(0x34);

            case 1:
                return(0x34);

            case 2:
                return(0x3C);

            default:
                throw new InvalidOperationException($"Unsupported key type {keyType}.");
            }
        }
Example #12
0
        public static int GetSignaturePadding(ValueStorage storage)
        {
            var sigType = (int)storage.Get("sigType");

            switch (sigType)
            {
            case 0x010003:
                return(0x3C);

            case 0x010004:
                return(0x3C);

            case 0x010005:
                return(0x40);

            default:
                throw new InvalidOperationException($"Unsupported signature type {sigType:X8}.");
            }
        }
Example #13
0
        private void ReclaimSpace()
        {
            if (ValueStorage.Count <= Capacity)
            {
                return;
            }

            if (_a1InList.Count > Kin)
            {
                var y = _a1InList.Last;
                _a1InList.RemoveLast();
                if (ValueStorage.TryGetValue(y.Value, out var oValue))
                {
                    ValueStorage.Remove(y.Value);
                    _slots.Remove(oValue.Slot);
                    _availableSlots.Enqueue(oValue.Slot);
                    CleanLists(oValue);
                    ReportDelete(y.Value, oValue.Value);
                }
                _a1OutList.AddFirst(y.Value);
                if (_a1OutList.Count >= Kout)
                {
                    _a1OutList.RemoveLast();
                }
            }
            else if (_amList.Last != null)
            {
                var y = _amList.Last;
                _amList.RemoveLast();
                if (ValueStorage.TryGetValue(y.Value, out var oValue))
                {
                    ValueStorage.Remove(y.Value);
                    _slots.Remove(oValue.Slot);
                    _availableSlots.Enqueue(oValue.Slot);
                    CleanLists(oValue);
                    ReportDelete(y.Value, oValue.Value);
                }
            }
        }
Example #14
0
        protected override void UpdateList(TKey key, ValueNode node)
        {
            var isInAm = node.ListNodeAm != null;
            var isInA1 = node.ListNodeA1 != null;
            var value  = node.Value;

            if (isInAm)
            {
                _amList.Remove(node.ListNodeAm);
                ReportHit(key, value);
                node.ListNodeAm = _amList.AddFirst(key);
            }
            else if (isInA1)
            {
                _a1List.Remove(node.ListNodeA1);
                node.ListNodeA1 = null;
                ReportHit(key, value);
                node.ListNodeAm = _amList.AddFirst(key);
            }
            else
            {
                if (ValueStorage.Count > Capacity)
                {
                    var list  = _a1List.Count >= _threshold ? _a1List : _amList;
                    var oNode = list.Last;
                    if (ValueStorage.TryGetValue(oNode.Value, out var oValue))
                    {
                        ValueStorage.Remove(oNode.Value);
                        list.Remove(oNode);
                        _slots.Remove(oValue.Slot);
                        _availableSlots.Enqueue(oValue.Slot);
                        ReportDelete(oNode.Value, oValue.Value);
                    }
                }
                node.ListNodeA1 = _a1List.AddFirst(key);
                ReportInsert(key, value);
            }
        }
Example #15
0
        public static int GetSectionCount(ValueStorage storage)
        {
            var magic   = (string)storage.Get("magic");
            var version = (int)storage.Get("version");

            switch (magic)
            {
            case "TEX0":
                switch (version)
                {
                case 2:
                    return(2);

                default:
                    return(1);
                }

            case "PLT0":
                return(1);

            default:
                return(0);
            }
        }
Example #16
0
 public void setStorage(ValueStorage storage)
 {
     this.storage = storage;
 }
Example #17
0
        static void Main(string[] args)
        {
            //var service = InitializeDatabase();

            Server server = new Server
            {
                Timer = new RealtimeFixedIntervalTimer {
                    Interval = 250
                }
            };


            Uri         uri1 = new Uri(ConfigurationManager.AppSettings["addr"]);
            ServiceHost host = new ServiceHost(typeof(ServerService), uri1);

            host.Open();
            Console.WriteLine("SCADA SecuritySvc listen {0}", uri1.ToString());

            ValueStorage storage = new ValueStorage();

            server.ValueStorage = storage;

            AlarmManager manager = new AlarmManager {
                TimeProvider = new DateTimeProvider()
            };

            manager.Alarms.Add(new Alarm
            {
                AlarmID = 1,
                Sensor  = new RangeAlarmSensor()
                {
                    MaxBound = 190, MinBound = 160
                },
                VariableID = 1
            });


            server.OnVariablesChange += manager.ReceiveVariableValues;

            /*IDriver driver = new DriverModbusRTU
             * {
             *  ValueStorage = storage,
             *  Timer = new RealtimeFixedIntervalTimer { Interval = 250 }
             * };
             * ModbusStationRTU stationRtu = new ModbusStationRTU("Station1", 1,
             *  new SerialComm("COM1", 9600, 8, Parity.None, StopBits.One), true);
             *
             * Variable var1, var2, var3, var4, var5, var6, var7, var8;
             * driver.AddVariable(var1 = new Variable(1, "Out40") { TicksToSample = 2, Driver = driver, DriverConfiguration = new ModbusConfiguration(stationRtu, 64, ModbusTypeData.Coils), VariableSerialize = new BoolVariableSerializer() { PositionAllData = 0, PositionInByte = 0 } });
             * driver.AddVariable(var2 = new Variable(2, "In00") { TicksToSample = 2, Driver = driver, DriverConfiguration = new ModbusConfiguration(stationRtu, 0, ModbusTypeData.Coils) });
             * driver.AddVariable(var3 = new Variable(3, "In02") { TicksToSample = 2, Driver = driver, DriverConfiguration = new ModbusConfiguration(stationRtu, 2, ModbusTypeData.Coils) });
             * driver.AddVariable(var4 = new Variable(4, "In04") { TicksToSample = 2, Driver = driver, DriverConfiguration = new ModbusConfiguration(stationRtu, 4, ModbusTypeData.Coils) });
             * driver.AddVariable(var5 = new Variable(5, "Timer1") { TicksToSample = 2, Driver = driver, DriverConfiguration = new ModbusConfiguration(stationRtu, 20483, ModbusTypeData.Inputs_Registers) });
             * driver.AddVariable(var6 = new Variable(6, "Timer2") { TicksToSample = 2, Driver = driver, DriverConfiguration = new ModbusConfiguration(stationRtu, 20484, ModbusTypeData.Inputs_Registers) });
             * driver.AddVariable(var7 = new Variable(7, "Timer3") { TicksToSample = 2, Driver = driver, DriverConfiguration = new ModbusConfiguration(stationRtu, 20485, ModbusTypeData.Inputs_Registers) });
             * driver.AddVariable(var8 = new Variable(8, "Out46") { TicksToSample = 2, Driver = driver, DriverConfiguration = new ModbusConfiguration(stationRtu, 70, ModbusTypeData.Coils) });
             */IDriver driver = new DriverInt
            {
                ValueStorage = storage,
                Timer        = new RealtimeFixedIntervalTimer {
                    Interval = 250
                }
            };
            Variable var1, var2, var3, var4, var5, var6, var7;

            driver.AddVariable(var1 = new IntegerVariable(1, "Out40")
            {
                TicksToSample = 2, Driver = driver,
            });
            driver.AddVariable(var2 = new IntegerVariable(2, "In00")
            {
                TicksToSample = 1, Driver = driver, LogValues = true, MinValue = 0, MaxValue = 230
            });
            driver.AddVariable(var3 = new IntegerVariable(3, "In02")
            {
                TicksToSample = 1, Driver = driver, LogValues = true, MinValue = 0, MaxValue = 230
            });
            driver.AddVariable(var4 = new IntegerVariable(4, "In04")
            {
                TicksToSample = 1, Driver = driver, LogValues = true, MinValue = 0, MaxValue = 230
            });
            driver.AddVariable(var5 = new IntegerVariable(5, "Timer1")
            {
                TicksToSample = 2, Driver = driver
            });
            driver.AddVariable(var6 = new IntegerVariable(6, "Timer2")
            {
                TicksToSample = 2, Driver = driver
            });
            driver.AddVariable(var7 = new IntegerVariable(7, "Timer3")
            {
                TicksToSample = 2, Driver = driver
            });

            server.AddDriver(driver);

            Experiment experiment = new Experiment {
                Name = "Exp1"
            };

            experiment.AddVariable(var1);
            experiment.AddVariable(var2);
            experiment.AddVariable(var3);
            experiment.AddVariable(var4);
            experiment.AddVariable(var5);
            experiment.AddVariable(var6);
            experiment.AddVariable(var7);
            //experiment.AddVariable(var8);

            server.AddExperiment(experiment);
            //VariableLogger logger = new VariableLogger(new List<Experiment>() { experiment });
            //server.OnVariablesChange += logger.ReceiveVariableValues;



            server.Start(0);
            experiment.Start(0);

            ThreadPool.QueueUserWorkItem(myThead, server);


            Console.Read();
            server.Stop(0);
            Console.Read();
            host.Abort();
            host.Close();
        }
        /***********************************************************************/

        public void setStorage(ValueStorage storageIn)
        {
            this.storage = storageIn;
        }
Example #19
0
 internal ElementStateProxy(long stateId, ValueStorage <StateDomain.StateKeys, long> stateStorage)
 {
     this.stateId      = stateId;
     this.stateStorage = stateStorage;
 }
 public void setStorage(ValueStorage inputStorage)
 {
     storage = inputStorage;
 }