Trait xmz_server::messzelle::Messzelle[][src]

pub trait Messzelle: AsAny + Debug + Display {
    fn get_value(&self) -> Option<&(f64, SystemTime)>;
fn get_values(&self) -> Vec<(f64, SystemTime)>;
fn get_messzelle_type(&self) -> MesszelleType;
fn average(&self, minutes: u64) -> Result<f64, MesszelleError>;
fn update(&mut self);
fn shrink_values(&mut self); }

Basis Trait das die Eigenschaften einer Messzelle beschreibt

Jede Messzelle hat einen Direktwert (get_value()) sowie ein Mittelwert (average(minutes)). Der Mittelwert Funktion kann ein Parameter übergeben werden mit dem die Dauer des zu berechnendem Mittelwertes angegeben werden kann.

Required Methods

Aktueller Messzelle Wert und Timestamp der Ermittlung

Jede Messzelle verfügt über ein Liste mit einem oder mehreren Paaren, Messwerten und den Timestamps die bei der Ermittlung dieses Messwertes erstellt werden. Die Implementierung der get_value() Funktion muss den letzten dieser Wertepaare ausgeben. Ist kein Messwert vorhanden wird None zurückgegeben.

Important traits for Vec<u8>

Liefert alle Werte zurück

Jede Messzelle verfügt über ein Liste mit einem oder mehreren Paaren, Messwerten und den Timestamps die bei der Ermittlung dieses Messwertes erstellt werden. Die Implementierung der get_values() Funktion muss alle dieser Wertepaare, in einem Vector zurück geben.

Liefert den Typ der Messzelle

Der Typ der Messzelle kann in der Konfigurationsdatei nur als String angegben werden. Zudem ist der Typ aus den Trait Objekten nicht einfach zu ermitteln. Analog zu den Sensoren ist dieser Memeber eine Art Krückstock.

Mittelwert der letzten min Minuten

Die Implementation dieser Funktion berechnet den Mittelwert aus den Werte.- Zeitstempel- paaren des Messzelles. Sind keine Werte vorhanden wird None zurück gegeben.

Parameters

  • min - Minuten aus denen der Mittelwert berechnet werden soll

Aktuellen Messzellewert ermitteln und speichern.

Die Implementation dieser Funktion muss den aktuellen Messzelle Wert ermitteln (BUS Abfrage, Berechnung bie Simulationssensoren, usw.).

Gleichzeitig muss in dieser Implementation die Länge der Werteliste values angepasst werden. Gemäß den Vorgaben der Funktionsbeschreibung sind nur Werte der letzten Stunde (max. Stundenmittelwert) nötig.

Entfernt alle Wert/Zeistempel Paare die älter als Messzelle::max_values_for_n_minutes sind.

Diese Funktion besteht aus 2 Tests. Der erste Spezialfall tritt ein wenn nur ein Wert/Zeitstempel Paar vorhanden ist. Hier muss getestet werden ob dieses veraltete Daten enthält. Ist dem so werden alle Werte/Zeitstempel gelöscht. Der zweite Test sucht aus der Liste den Index Wert ab dem veraltet Wert/Zeitstempel Paare auftreten. Anschließend wird dieser Index Wert verwendet um den Wert/Zeitstempel Vector an dieser Stelle zu teilen. Altere Werte werden dabei verworfen.

Diese Funktion wird in aller Regel in der Implementierung der update() Funktion aufgerufen.

Implementors