next up previous contents
Next: Zusammenfassung der bisherigen Funktionalität Up: Die Global Polling -Komponente Previous: Die C++-Klasse PollingIntervall

Die C++-Klasse dynMOICreation_ofSNMP_Table

Diese Klasse verbindet die beiden oben vorgestellten. So ist sie abgeleitet von der Klasse MOIofSNMP_Table und enthält eine Instanz der Klasse PollingIntervall.

class dynMOICreation_ofSNMP_Table : protected  MOIofSNMP_Table
{
        private:
                PollingIntervall pollInt;
                int actualTime;
                int changes;
                int numberMOIs;
        public:
                dynMOICreation_ofSNMP_Table(char *newIpAddress,
                        char *newOid, char *newNamingAttrOID=NULL,
                        char *newClassOID=NULL,
                        char *newParentInstName=NULL) :
                MOIofSNMP_Table(newOid,newIpAddress,
                        newNamingAttrOID,newClassOID,
                        newParentInstName) 
                {
                        actualTime=0;
                        numberMOIs=0;
                }
                ~dynMOICreation_ofSNMP_Table() { }
                int TestToCreateMOI();
                int CreateMOI();
                int getPollingIntervall();
                int getPollingClass();
};
Die Aufgabe einer Instanz dieser Klasse läßt sich in zwei Kategorien einteilen, entsprechend existieren dafür die beiden Methoden TestToCreateMOI und CreateMOI:
Die Methode TestToCreateMOI bildet zusammen mit einer Instanz der Klasse PollingIntervall (pollInt) die Realisierung der Polling-Strategie. Eine Vorausetzung dafür ist, daß diese Methode regelmäßig aufgerufen wird, wobei dieser konstante Zeitabstand zwischen dem Pollen die bei der Klasse PollingIntervall erwähnte Einheit darstellt. Zum Beispiel kann der Methodenaufruf jede Sekunde, alle zwei Sekunden, usw. erfolgen. Jeder Methodenaufruf wird in der Variable actualTime mitgezählt und stellt somit einen Zeitzähler dar (siehe Codeausschnitt unten). Erreicht dieser Zeitzähler die gerade aktuelle Intervallgröße, muß eine Replikation der SNMP-Tabelle, die dieser Klasse zugrundeliegt (da sie ja von MOIofSNMP_Table abgeleitet ist), erfolgen. Die Replikation wird mit der geerbten Methode updateMOIs ausgelöst. Anschließend muß festgestellt werden, ob OSI-Instanzen kreiert bzw. gelöscht worden sind, um entsprechend das Pollingintervall zu vergrößern oder zu verkleinern. Zuletzt wird der Zeitzähler actualTime auf Null gesetzt, damit die Zeit bis zur nächsten Replikation der SNMP-Tabelle im Gateway nach der aktuellen Intervallgröße neu berechnet werden kann.
int dynMOICreation_ofSNMP_Table :: TestToCreateMOI()
{
        actualTime++; // Zeitzaehler erhoehen = Anzahl der
        // Aufrufe der Methode zaehlen
        if (actualTime==pollInt.getPollingIntervall()) 
                // Pollingintervall abgelaufen ?
        {
                // Falls ja, rufe Methode zur Replikation auf
                numberMOIs = updateMOIs(changes);
                if (changes)
                        // Falls Klassen kreiert bzw. geloescht
                        // wurden, erniedrige die Intervallgroesse
                        pollInt.pollingClassDown(1);
                else
                        // sonst erhoehe die Intervallgroesse
                        pollInt.pollingClassUp(1);
                // setze Zeitzaehler auf 0
                actualTime = 0;
        }
        return(numberMOIs);
}
Die Methode CreateMOI steht unabhängig zu der gerade implementierten Polling-Strategie: Sie ruft ohne Beachtung des Zeitzählers direkt die geerbte Methode updateMOIs auf. Dies wird zur Realisierung der Aktion ,, aktualisiereTabelle`` benötigt. Dort soll ja die explizite, sofortige Replikation der SNMP-Tabelle im Gateway erfolgen.


next up previous contents
Next: Zusammenfassung der bisherigen Funktionalität Up: Die Global Polling -Komponente Previous: Die C++-Klasse PollingIntervall
Copyright Munich Network Management Team