Zeige Ergebnis 1 bis 4 von 4

Thema: Anruf wenn Host nicht erreichbar

  1. #1
    STARFACE User

    Registriert seit
    28.11.2016
    Beiträge
    67

    Standard Anruf wenn Host nicht erreichbar

    Hallo zusammen,

    ich möchte mich an mein erstes Modul mit dem Moduldesigner wagen.
    Programmierkenntnisse mit Hochsprachen sind soweit vorhanden.

    Ziel ist es, dass die Anlage einen internen oder auch externen Anruf tätigt wenn ein Host nicht mehr erreichbar ist.

    Folgende Fragen haben sich beim Design ergeben:
    - Was muss ich machen damit das Modul automatisch gestartet wird?
    - Timer oder While(true) Schleife benutzen? Das Modul soll den Host jede Minute mal abfragen und dann den Anruf tätigen. Wenn der Anruf getätigt wurde, soll der nächste Anruf erst nach 15 Minuten erfolgen, außer wenn der der Host zwischenzeitlich wieder da war.
    --> Wie kann ich den Timer unterbrechen und dann wieder starten?
    --> Wenn ich das mit einer While-Schleife löse (was natürlich einfacher ist), wie kann ich sicherstellen, dass es nicht in einer Endlosschleife endet. Spätestens wenn die Anlage herunter fährt, sollte die Schleife abgebrochen werden.
    (Was würde auf der Anlage eigentlich passieren? Was würde passieren bei 100% cpu? Merkt das die Anlage und bricht das Modul ab?)

    Vielen Dank für ein paar Tipps!

  2. #2
    STARFACE Expert
    Benutzerbild von nucom
    Registriert seit
    11.12.2012
    Ort
    9443 Widnau
    Beiträge
    1.642

    Standard

    Hallo Orange

    - Was muss ich machen damit das Modul automatisch gestartet wird?
    Wenn du im Modul Editor im Tab "Timer" schaust, kannst du dort ModulInterne Timer, oder per GUI-Konfigurierte Timer einer Funktion zuweisen.
    ModulTimer springen nach einem Nesutart automatisch wieder an.

    - Timer oder While(true) Schleife benutzen? Das Modul soll den Host jede Minute mal abfragen und dann den Anruf tätigen. Wenn der Anruf getätigt wurde, soll der nächste Anruf erst nach 15 Minuten erfolgen, außer wenn der der Host zwischenzeitlich wieder da war.
    Du kannst beides Kombinieren, was ich dir aber nicht Empfehlen würde, ist das ganze in eine Endlos While-Schleife zu Stecken.
    Auch wenn es vordergründig nicht zu sehen ist, gibt es im Hintergrund ein Failover, dass eine While Schleife nach [n] Iterationen beendet.

    --> Wie kann ich den Timer unterbrechen und dann wieder starten?
    Du kannst den Timer nicht wirklich unterbrechen, könntest aber einen FLAG setzen.
    Im Experten Modus findest du ein Menü "Variables" mit Set/GetVariableValue
    Dort kannst du Werte in verschiedenen Scopes platzieren. Z.b. Instanzweise, oder Modulweise.



    --> Wenn ich das mit einer While-Schleife löse (was natürlich einfacher ist), wie kann ich sicherstellen, dass es nicht in einer Endlosschleife endet. Spätestens wenn die Anlage herunter fährt, sollte die Schleife abgebrochen werden.
    (Was würde auf der Anlage eigentlich passieren? Was würde passieren bei 100% cpu? Merkt das die Anlage und bricht das Modul ab?)
    Wie gesagt bricht eine While-Schleife irgendwann automatisch ab. Wenn ein Modul die Anlage zu sehr auslasten, wird es nicht automatisch beendet, es sei denn der Tomcat Dienst knickt ein.

    Um ein Modul loszuwerden, welches in einer Endlosschleife Steckt musst du also im Normalfall warten bis es das Limit erreicht, oder die Anlagendienste Neu Starten.

    MfG

    Fabian
    Modulhersteller aus der Schweiz
    __________________________________________________ ________
    STARFACE Excellence Partner: Info | Certified Module Creator Kontakt

  3. #3
    STARFACE User

    Registriert seit
    28.11.2016
    Beiträge
    67

    Standard

    Vielen Dank für deine Antwort! Das hilft mir schon mal sehr weiter!

    Muss ich davor ein synchronize machen bzw. zumindest volatile? Aus meiner Programmierzeit weiß ich noch, da gabs immer wieder Probleme bei solchen Konstrukten.

    Noch eine weitere Sache, muss ich etwas beachten um die anderen Module nicht zu blockieren?
    Muss ich das ganze in einem Thread starten (ich glaube das heißt "fork" auf der Starface), oder werden die Module auf der Firewall selber sowieso in eigenen Threads ausgeführt?

    Was ich noch nicht ganz verstehe mit den anderen Modulen, die werden ja nur bei einem Ereignis wie z.B. einen Anruf gestartet. Mein Modul soll ja eigentlich immer laufen.

  4. #4
    STARFACE Expert
    Benutzerbild von nucom
    Registriert seit
    11.12.2012
    Ort
    9443 Widnau
    Beiträge
    1.642

    Standard

    Hallo Orange

    Muss ich davor ein synchronize machen bzw. zumindest volatile?
    Soweit ich weiss gibt es nur ein synchronize. Ich verwende es nur in ganz wenigen fällen.

    Noch eine weitere Sache, muss ich etwas beachten um die anderen Module nicht zu blockieren?
    Muss ich das ganze in einem Thread starten (ich glaube das heißt "fork" auf der Starface), oder werden die Module auf der Firewall selber sowieso in eigenen Threads ausgeführt?
    Die Module werden alle in eigenen Threads ausgeführt, erhalten aber von der STARFACE einen Context mit allen möglichen Infos.
    Aber Vorsicht! Alles was mit Anrufen interagiert (Z.b. die Call-EntryPoints) Blockieren den Ruf aktiv, bis das Hauptthread der Instanz beendet wird.

    Was ich noch nicht ganz verstehe mit den anderen Modulen, die werden ja nur bei einem Ereignis wie z.B. einen Anruf gestartet. Mein Modul soll ja eigentlich immer laufen.
    Bei Modulen die einen dauerhaften Task haben z.b. um den UserStatus zu überwachen Arbeite ich mit eigenen Background Services.
    Ich habe im Modul einfach einen Timer, welcher einmal in [n] Minuten prüft, ob mein Hintergrundservice noch läuft, und falls nicht startet er ihn.

    Wenn es darum geht mit den Boardmitteln etwas zu überwachen geht das eben nur via Timer.
    Also in deinem Fall z.b. jede Minute eine IP Anpingen, und prüfen, ob diese Antwortet.
    Und falls eine Minute zu gross ist gibt's ja auch die Möglichkeit z.b. alle [n] Sekunden das Modul auszuführen.

    MfG

    Fabian
    Modulhersteller aus der Schweiz
    __________________________________________________ ________
    STARFACE Excellence Partner: Info | Certified Module Creator Kontakt

Ähnliche Themen

  1. UCC-Client zeigt neue AB-Nachrichten nicht an, wenn er bei Anruf geschlossen war.
    Von EMSH im Forum STARFACE Einrichtung & Administration
    Antworten: 0
    Letzter Beitrag: 13.03.2019, 09:26
  2. Antworten: 8
    Letzter Beitrag: 08.05.2017, 11:31
  3. Benutzer Standort B sieht Gruppe nicht wenn Anruf Gruppe Standort A
    Von slu im Forum STARFACE Benutzerfrontend
    Antworten: 2
    Letzter Beitrag: 12.06.2015, 09:33
  4. Antworten: 5
    Letzter Beitrag: 29.03.2015, 13:29
  5. Antworten: 6
    Letzter Beitrag: 30.11.2009, 23:50

Lesezeichen

Forumregeln

  • Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
  • Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
  • Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
  • Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
  •