예제 #1
0
        private void ActivateSnapshot(ListBox lb)
        {
            int index = lb.SelectedIndex;

            if (index > 0)
            {
                EnvironmentVariableTarget target   = (EnvironmentVariableTarget)lb.Tag;
                EnvironmentSnapshot       snapshot = snapshotManager.GetSnapshot(index, target);
                EnvironmentSnapshot       current  = snapshotManager.GetSnapshot(0, target);
                if (snapshot != null)
                {
                    EnvironmentVariableManager.Begin(snapshot.Target);
                    foreach (var variable in current.Variables)
                    {
                        EnvironmentVariableManager.DeleteEnvironmentVariable(variable.Name, target);
                    }
                    current.Variables.Clear();
                    foreach (var variable in snapshot.Variables)
                    {
                        EnvironmentVariableManager.SetEnvironmentVariable(variable.Name, variable.Value, target);
                        current.Variables.Add(variable.Clone() as EnvironmentVariable);
                    }
                    EnvironmentVariableManager.End(snapshot.Target);
                    lb.SelectedIndex = 0;
                }
            }
        }
예제 #2
0
 private void CreateSnapshot(ListBox lb, string name)
 {
     try
     {
         if (name.Length > 0)
         {
             EnvironmentSnapshot snapshot = new EnvironmentSnapshot(name, (EnvironmentVariableTarget)lb.Tag);
             foreach (DictionaryEntry entry in EnvironmentVariableManager.GetEnvironmentVariables((EnvironmentVariableTarget)lb.Tag))
             {
                 EnvironmentVariable variable = new EnvironmentVariable();
                 variable.Name  = entry.Key.ToString();
                 variable.Value = entry.Value.ToString();
                 snapshot.Variables.Add(variable);
             }
             if (snapshotManager.AppendSnapshot(snapshot))
             {
                 lb.Items.Add(snapshot.Name);
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message, "Error!");
     }
 }
 public void RecordEnvironmentalSnapshot(EnvironmentSnapshot snapshot)
 {
     if (!Temperature.ContainsKey(snapshot.StorageSiteId))
     {
         Temperature.Add(snapshot.StorageSiteId, new List <DataPoint>());
     }
     if (!Humidity.ContainsKey(snapshot.StorageSiteId))
     {
         Humidity.Add(snapshot.StorageSiteId, new List <DataPoint>());
     }
     if (snapshot.Temperature.HasValue)
     {
         Temperature[snapshot.StorageSiteId].Add(new DataPoint()
         {
             Timestamp = snapshot.Timestamp,
             Value     = snapshot.Temperature.Value
         });
     }
     if (snapshot.Humidity.HasValue)
     {
         Humidity[snapshot.StorageSiteId].Add(new DataPoint()
         {
             Timestamp = snapshot.Timestamp,
             Value     = snapshot.Humidity.Value
         });
     }
 }
예제 #4
0
 /// <summary>
 /// Records an environmental snapshot.
 /// </summary>
 /// <param name="snapshot">The snapshot to record.</param>
 public void RecordEnvironmentalSnapshot(EnvironmentSnapshot snapshot)
 {
     using (IDbConnection connection = GetNewConnection())
     {
         connection.Execute("INSERT INTO environment (timestamp, site, temperature, humidity) VALUES (@Timestamp, @StorageSiteId, @Temperature, @Humidity)", snapshot);
     }
 }
예제 #5
0
 static Printf()
 {
     _arguments = new EnvironmentSnapshot();
     _arguments.SymbolTable.Push("s",
                                 new VarSymbol("s", new SymbolType(false, false, SymbolTypeKind.STRING), new Position(0, 0)));
     _arguments.SymbolTable.Push("o",
                                 new VarSymbol("o", new SymbolType(false, false, SymbolTypeKind.INT), new Position(0, 0)));
 }
예제 #6
0
        public FrmEditEnvVar(ref EnvironmentSnapshot snapshot, EnvironmentVariable variable)
        {
            InitializeComponent();
            this.snapshot          = snapshot;
            this.variable          = variable;
            this.MinimumSize       = new Size(327, 439);
            dgvValuesList.TabIndex = 0;
            LoadSettings();
            txtVariableName.CausesValidation = false;
            dgvHandler = new DgvHandler(ref dgvValuesList);

            // set default icon
            dgvValuesList_UserAddedRow(null, null);

            this.txtVariableName.Text = variable.Name;
            this.validator            = new EnvironmentValueValidator();

            if (txtVariableName.Text.Length != 0)
            {
                // Check if we are editing variable
                LoadEnvironmentVariableValues();
            }

            // Set form title
            this.Text = (txtVariableName.Text.Length != 0
                ? "Edit" : "New") + " "
                        + (this.snapshot.Target == EnvironmentVariableTarget.Machine
                ? "System" : "User") + " Variable";

            #region Create DgvHandler Commands
            commandsList = new CommandStack();
            dgvHandler.SetCurrentCell(0);
            editVarNameCommand = new EditVarNameCommand(txtVariableName);
            #endregion DgvHandler Commands

            // disable buttons
            SetBtnState();
            txtVariableName.CausesValidation = true;
            isVarNameChanged = false;

            // Open/Save File dialogs
            openFileDialog.Filter     = FILE_FILTER;
            openFileDialog.DefaultExt = DEFAULT_FILTER_EXTENSION;
            saveFileDialog.Filter     = FILE_FILTER;
            saveFileDialog.DefaultExt = DEFAULT_FILTER_EXTENSION;

            if (EnvironmentVariableManager.IsElevated)
            {
                btnSave.Image = Resources.Save;
            }
            else
            {
                btnSave.Image = Resources.shield_uac;
            }
        }
예제 #7
0
        static Offset <FEnvironmentDescription> Serialise(FlatBufferBuilder b, EnvironmentSnapshot snapshot)
        {
            var actors_offsets = new Offset <FActor> [snapshot.Description.Actors.Values.Count];
            var j = 0;

            foreach (var actor in snapshot.Description.Actors)
            {
                var actuators_offsets = new Offset <FActuator> [actor.Value.Actuators.Values.Count];
                var i = 0;
                foreach (var actuator in actor.Value.Actuators)
                {
                    actuators_offsets[i++] = Serialise(b, actuator.Value, actuator.Key);
                }

                actors_offsets[j++] = Serialise(b,
                                                actuators_offsets,
                                                actor.Value,
                                                actor.Key);
            }

            var actors_vector_offset = FEnvironmentDescription.CreateActorsVector(b, actors_offsets);

            var configurables_offsets = new Offset <FConfigurable> [snapshot.Description.Configurables.Values.Count];
            var k = 0;

            foreach (var configurable in snapshot.Description.Configurables)
            {
                configurables_offsets[k++] = Serialise(b, configurable.Value, configurable.Key);
            }

            var configurables_vector_offset =
                FEnvironmentDescription.CreateConfigurablesVector(b, configurables_offsets);

            var objective_offset = Serialise(b, snapshot.Description);

            var sensors = new Offset <FSensor> [snapshot.Description.Sensors.Values.Count];
            var js      = 0;

            foreach (var sensor in snapshot.Description.Sensors)
            {
                sensors[js++] = Serialise(b, sensor.Key, sensor.Value);
            }

            var sensors_vector = FEnvironmentDescription.CreateSensorsVector(b, sensors);

            FEnvironmentDescription.StartFEnvironmentDescription(b);

            FEnvironmentDescription.AddObjective(b, objective_offset);
            FEnvironmentDescription.AddActors(b, actors_vector_offset);
            FEnvironmentDescription.AddConfigurables(b, configurables_vector_offset);
            FEnvironmentDescription.AddSensors(b, sensors_vector);

            return(FEnvironmentDescription.EndFEnvironmentDescription(b));
        }
예제 #8
0
        /// <summary>
        /// </summary>
        /// <returns></returns>
        public EnvironmentSnapshot[] CollectStates()
        {
            var environments = this._Environments.Values;
            var states       = new EnvironmentSnapshot[environments.Count];
            var i            = 0;

            foreach (var environment in environments)
            {
                states[i++] = environment.Snapshot();
            }

            return(states);
        }
예제 #9
0
 private void dgvSysVariables_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
 {
     if (snapshot != null)
     {
         if (snapshot.Name == "[Current]")
         {
             EnvironmentVariableManager.End(snapshot.Target);
         }
         snapshotManager.SaveSnapshot(ref snapshot);
         FillEnvironmentVariables(dgvSysVariables, snapshot);
         snapshot = null;
     }
 }
예제 #10
0
        private void DeleteSnapshot(ListBox lb)
        {
            int index = lb.SelectedIndex;

            if (index > 0)
            {
                EnvironmentSnapshot snapshot = snapshotManager.GetSnapshot(index, (EnvironmentVariableTarget)lb.Tag, false);
                if (snapshotManager.RemoveSnapshot(snapshot))
                {
                    lb.Items.RemoveAt(index);
                    lb.SelectedIndex = 0;
                }
            }
        }
예제 #11
0
        private void dgvSysVariables_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            if (snapshot == null)
            {
                snapshot = DgvSnapshot(lbSysVariables, dgvSysVariables);
                if (snapshot.Name == "[Current]")
                {
                    EnvironmentVariableManager.Begin(snapshot.Target);
                }
            }
            var variable = snapshot.Variables[e.Row.Index];

            if (snapshot.Name == "[Current]")
            {
                EnvironmentVariableManager.DeleteEnvironmentVariable(variable.Name, snapshot.Target);
            }
            snapshot.Variables.Remove(variable);
        }
예제 #12
0
        private void FillEnvironmentVariables(DataGridView dgv, EnvironmentSnapshot snapshot)
        {
            int currentRowIndex = (dgv.CurrentRow != null ? dgv.CurrentRow.Index : 0);

            dgv.Rows.Clear();
            if (snapshot.Variables.Count == 0)
            {
                return;
            }
            EnvironmentValueValidator validator = new EnvironmentValueValidator();
            int rowIndex = 0;

            foreach (var variable in snapshot.Variables)
            {
                string   key   = variable.Name;
                string   value = variable.Value;
                string[] row   = { key, value };
                rowIndex = dgv.Rows.Add(row);
                if (!validator.Validate(value))
                {
                    dgv.Rows[rowIndex].Cells[0].Style.ForeColor = Color.Red;
                    dgv.Rows[rowIndex].Cells[1].Style.ForeColor = Color.Red;
                }
            }

            dgv.Sort(dgv.Columns[0], ListSortDirection.Ascending);

            try
            {
                dgv.CurrentCell = dgv[0, currentRowIndex];
                dgv.FirstDisplayedScrollingRowIndex = currentRowIndex;
            }
            catch
            {   // if row was deleted this will set it to first one
                // TODO: Implement this by searching for var name in the grid.
                // Catching Exceptions makes program slow
                dgv.CurrentCell = dgv[0, 0];
                dgv.FirstDisplayedScrollingRowIndex = 0;
            }
            int widthCol0 = dgv.Columns[0].Width;

            dgv.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            dgv.Columns[0].Width        = widthCol0;
        }
        /// <summary>
        /// Starts and returns a task that reads environmental data from Kafka.
        /// </summary>
        /// <returns>Returns the new task.</returns>
        private Task StartConsuming()
        {
            return(new TaskFactory().StartNew(() =>
            {
                using (IConsumer <Ignore, string> consumer = new ConsumerBuilder <Ignore, string>(ConsumerConfig).Build())
                {
                    Logger.LogInformation($" + Starting to read environment data from topic `{Topic}`.");
                    consumer.Subscribe(Topic);

                    CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
                    Console.CancelKeyPress += (_, @event) => {
                        @event.Cancel = true;
                        cancellationTokenSource.Cancel();
                    };

                    try
                    {
                        while (true)
                        {
                            try
                            {
                                ConsumeResult <Ignore, string> result = consumer.Consume(cancellationTokenSource.Token);
                                EnvironmentSnapshot snapshot = JsonConvert.DeserializeObject <EnvironmentSnapshot>(result.Message.Value);
                                snapshot.StorageSiteId = StorageSiteId;
                                SnapshotQueue.Enqueue(snapshot);
                                Logger.LogDebug($"Consumed message '{result.Message.Value}' at: '{result.TopicPartitionOffset}'.");
                            }
                            catch (ConsumeException exception)
                            {
                                Logger.LogError($"Error occured: {exception.Error.Reason}");
                            }
                        }
                    }
                    catch (OperationCanceledException)
                    {
                        consumer.Close();
                    }
                    finally
                    {
                        Logger.LogInformation($"Kafka consumer for topic `{Topic}` shut down.");
                    }
                }
            }, TaskCreationOptions.LongRunning));
        }
예제 #14
0
        /// <summary>
        /// </summary>
        /// <param name="b"></param>
        /// <param name="snapshot"></param>
        /// <param name="serialise_individual_observables"></param>
        /// <param name="do_serialise_unobservables"></param>
        /// <param name="do_serialise_aggregated_float_array"></param>
        /// <returns></returns>
        static Offset <FState> SerialiseState(FlatBufferBuilder b,
                                              EnvironmentSnapshot snapshot,
                                              bool do_serialise_unobservables          = false,
                                              bool do_serialise_aggregated_float_array = false,
                                              bool serialise_individual_observables    = false)
        {
            var n = b.CreateString(snapshot.EnvironmentName);

            var observables_vector = _null_vector_offset;

            if (do_serialise_aggregated_float_array)
            {
                observables_vector = FState.CreateObservablesVector(b, snapshot.Observables);
            }

            var unobservables = _null_unobservables_offset;

            if (do_serialise_unobservables)
            {
                var state_unobservables = snapshot.Unobservables;
                if (state_unobservables != null)
                {
                    var bodies = state_unobservables.Bodies;

                    FUnobservables.StartBodiesVector(b, bodies.Length);
                    foreach (var rig in bodies)
                    {
                        var vel = rig.Velocity;
                        var ang = rig.AngularVelocity;
                        FBody.CreateFBody(b,
                                          vel.x,
                                          vel.y,
                                          vel.z,
                                          ang.x,
                                          ang.y,
                                          ang.z);
                    }

                    var bodies_vector = b.EndVector();

                    var poses = state_unobservables.Poses;

                    FUnobservables.StartPosesVector(b, poses.Length);
                    foreach (var tra in poses)
                    {
                        var pos = tra.position;
                        var rot = tra.rotation;
                        FQuaternionTransform.CreateFQuaternionTransform(b,
                                                                        pos.x,
                                                                        pos.y,
                                                                        pos.z,
                                                                        rot.x,
                                                                        rot.y,
                                                                        rot.z,
                                                                        rot.w);
                    }

                    var poses_vector = b.EndVector();

                    FUnobservables.StartFUnobservables(b);
                    FUnobservables.AddPoses(b, poses_vector);
                    FUnobservables.AddBodies(b, bodies_vector);
                    unobservables = FUnobservables.EndFUnobservables(b);
                }
            }

            var description_offset = new Offset <FEnvironmentDescription>();

            if (snapshot.Description != null)
            {
                description_offset = Serialise(b, snapshot);
            }

            var d = new StringOffset();

            if (snapshot.DebugMessage != "")
            {
                d = b.CreateString(snapshot.DebugMessage);
            }

            var t = b.CreateString(snapshot.TerminationReason);

            FState.StartFState(b);
            FState.AddEnvironmentName(b, n);

            FState.AddFrameNumber(b, snapshot.FrameNumber);
            if (do_serialise_aggregated_float_array)
            {
                FState.AddObservables(b, observables_vector);
            }

            if (do_serialise_unobservables)
            {
                FState.AddUnobservables(b, unobservables);
            }

            FState.AddSignal(b, snapshot.Signal);

            FState.AddTerminated(b, snapshot.Terminated);
            FState.AddTerminationReason(b, t);

            if (snapshot.Description != null)
            {
                FState.AddEnvironmentDescription(b, description_offset);
            }

            if (snapshot.DebugMessage != "")
            {
                FState.AddExtraSerialisedMessage(b, d);
            }

            return(FState.EndFState(b));
        }
예제 #15
0
        /// <inheritdoc />
        /// <summary>
        /// </summary>
        /// <returns></returns>
        public override EnvironmentSnapshot Snapshot()
        {
            lock (this._Reaction_Lock) {
                var signal = 0f;

                if (this.ObjectiveFunction != null)
                {
                    signal = this.ObjectiveFunction.Evaluate();
                }

                EnvironmentDescription description = null;
                if (this.ReplyWithDescriptionThisStep ||
                    this.SimulationManager.SimulatorConfiguration.AlwaysSerialiseIndividualObservables)
                {
          #if NEODROID_DEBUG
                    if (this.Debugging)
                    {
                        Debug.Log("Describing Environment");
                    }
          #endif

                    var virtual_actors =
                        new SortedDictionary <String, IActor> {
                        { "All", new VirtualActor(this.Actuators) }
                    };

                    description = new EnvironmentDescription(this.ObjectiveFunction,
                                                             virtual_actors,
                                                             this.Configurables,
                                                             this.Sensors,
                                                             this.Displayers);
                }

                this._Observables.Clear();
                foreach (var item in this.Sensors)
                {
                    if (item.Value != null)
                    {
                        if (item.Value.FloatEnumerable != null)
                        {
                            this._Observables.AddRange(item.Value.FloatEnumerable);
                        }
                        else
                        {
              #if NEODROID_DEBUG
                            if (this.Debugging)
                            {
                                Debug.Log($"Sensor with key {item.Key} has a null FloatEnumerable value");
                            }
              #endif
                        }
                    }
                    else
                    {
            #if NEODROID_DEBUG
                        if (this.Debugging)
                        {
                            Debug.Log($"Sensor with key {item.Key} has a null value");
                        }
            #endif
                    }
                }

                var obs = this._Observables.ToArray();

                var time = Time.realtimeSinceStartup - this.LastResetTime;

                var state = new EnvironmentSnapshot(this.Identifier,
                                                    this.StepI,
                                                    time,
                                                    signal,
                                                    this.Terminated,
                                                    ref obs,
                                                    this.LastTerminationReason,
                                                    description);

                if (this.SimulationManager.SimulatorConfiguration.AlwaysSerialiseUnobservables ||
                    this.ReplyWithDescriptionThisStep)
                {
                    state.Unobservables = new Unobservables(ref this._Tracked_Rigid_Bodies, ref this._Poses);
                }

                return(state);
            }
        }