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; }
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); }
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); }
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); }
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); }
protected void SendValueToStorage(int varIdx, double value) { lock (_attendedVariablesLock) { int count; if (_attendedCount.TryGetValue(varIdx, out count)) { if (count > 0) { ValueStorage.Enqueue(varIdx, value); } } } }
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}."); } }
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}."); } }
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); } } }
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); } }
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); } }
public void setStorage(ValueStorage storage) { this.storage = storage; }
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; }
internal ElementStateProxy(long stateId, ValueStorage <StateDomain.StateKeys, long> stateStorage) { this.stateId = stateId; this.stateStorage = stateStorage; }
public void setStorage(ValueStorage inputStorage) { storage = inputStorage; }