Lade...
 

SendMsg

SendMsg

SendMsg(message)

Parameter: Name einer Message

Stack
Stack Position Beschreibung
Stack(In) Top beliebig
    . . .
Stack(Out) Top Rückgabewerte En
    Rückgabewerte En-1
    . . .
    . . .
    Rückgabewerte E1
    . . .

Die Aktionslisten aller im Moment sichtbaren Windowobjekte, sowie aller geladener Module und jene, die über die .ext getriggert werden (siehe Extern Statement), werden nach der als Parameter angegebenen Message durchsucht, die zugeordneten Anweisungsfolgen sofort ausgeführt, wobei die Empfänger den Stack des Senders sehen (d.h. alle Empfänger sehen den Stack, wie er direkt vor Ausführung der Anweisung SendMsg aussah; ein Empfänger kann nicht feststellen, ob es vor ihm andere Empfänger der Message gab).

SendMsg entfernt alle Einträge vom Stack. Nach Beendigung der Anweisung erscheinen auf dem Stack mit ReturnStack übermittelte Rückgabewerte. Antworten mehrere Empfänger E1, ..., En mit ReturnStack, liegen die Rückgabewerte wie in der oben angegeben Tabelle übereinander. Wenn kein Empfänger mit ReturnStack reagiert, ist der Stack nach SendMsg leer.

Mit SendMsg wird ein mittels Extern-Anweisung beschriebener Modul geladen; die Message wird anschließend zum geladenen Modul gesendet.

In einem Basismodul definierte Messages werden vererbt; die mit der Message verbundenen Aktionen werden getriggert, es sei denn, im abgeleiteten Modul sind Aktionen für die gleiche Message überdefiniert. In diesem Fall führt SendMsg die Aktionen im abgeleiteten Modul aus.
Die durch die überdefinierte Message verdeckte Anweisungsfolge kann mit SendMsg(, SUPER) erreicht werden.

 

SendMsg(STACK)

Stack
Stack Position Beschreibung
Stack(In) Top Message
  Top-1 beliebig
    . . .
Stack(Out) Top Rückgabewerte En
    Rückgabewerte En-1
    . . .
    . . .
    Rückgabewerte E1
    . . .

Die zu sendende Message kann auch auf dem Stack vorgegeben werden:

    Msg(OMEGA)
    (OMEGA) SendMsg(STACK)

Hinweis: Eine Message als Konstante muss in Klammern eingeschlossen werden

 

SendMsg(message, REMOTE)

Stack
Stack Position Beschreibung
Stack(In) Top Name des Empfängers (als Zeichenkette)
Stack(In) Top-1 beliebig
  Top-2  
  Top-3 . . .
Stack(Out) Top Rückgabewerte En
    Rückgabewerte En-1
    . . .
    . . .
    Rückgabewerte E1
    . . .

Die Message wird zu einer anderen ClassiX®-Anwendung gesendet. Zuvor muss per SetDefaultRemoteMessaging der Name der Netzwerkschnittstelle die verwendet werden soll eingestellt werden. Bisher ist nur das Versenden per CORBA implementiert. Der Name des Empfängers besteht laut ClassiX®-Konvention aus dem Computernamen, IP-Adresse, PID, User-ID, Anmeldedatum (und Uhrzeit) und dem/den Name(n) der Datenbank(en), getrennt durch " | ". Beispiel: "HIWI (192.168.1.109) | 2164 | 0 | 2005-3-22 15:29:37 | y:\classix\projects\classix.cxd | y:\classix\projects\classix2.cxd". Der Name kann durch Funktionen des CORBA-Managers (SetProject, SetName) geändert werden.

Vgl. auch die Funktionen EnableDefaultRemoteMessaging, RemoteClients, GetComputerName und GetPID von SystemObject. Siehe auch: Dokumentation zur Corba-Schnittstelle von ClassiX®.

Die Message muss in der Zielanwendung definiert sein, sonst ist die Anweisung wirkungslos oder löst einen Fehler aus.
Wie beim lokalen SendMsg wird der Stack (hier ab Top-1) übertragen. Da die Werte vom Stack an einen anderen Prozess auf einer anderen Maschine übermittelt werden müssen, können nur die in der folgenden Aufzählung genannten Einträge übertragen werden. Andere Einträge auf dem Stack führen zu einem Fehler.
SendMsg(..., REMOTE) kehrt sofort zurück. Rückgabewerte werden ignoriert. Das Programm erhält keine Rückmeldung, ob die Message erfolgreich ausgeliefert wurde oder nicht.

Wird als Empfänger NULL oder eine leere Zeichenkette übergeben so wird angenommen, dass der Stack das Ergebnis eines entfernten synchronen Aufrufes über SendMsg ist (z.b: die CORBA-Schnittstelle SendMsg_CORBA).

SendMsg(..., REMOTE) unterstützt

  • Zeichenkette
  • ganzzahlige Werte
  • persistente Objekte
  • persistent Collections
  • Marker (also [, ], COLOR ... )
  • NULL

 

Analog zur lokalen Form existiert auch

SendMsg(STACK, REMOTE)

Stack
Stack Position Beschreibung
Stack(In) Top Message
Stack(In) Top-1 Name des Empfängers (als Zeichenkette)
  Top-2 beliebig
  Top-3  
  Top-4 . . .
Stack(Out) Top Rückgabewerte En
    Rückgabewerte En-1
    . . .
    . . .
    Rückgabewerte E1
    . . .

 

 

billOfMaterial singleAllocation SendMsg(EDIT_BOM_SINGLE_ALLOCATION)

// Somewhere there is another module, which receives this message and does something with it:

EDIT_BOM_SINGLE_ALLOCATION: // Receive the parameters from stack
                            -> singleAllocation
                            -> billOfMaterial
                            // Start editing
                           
EditObject

 

 

Eine Message kann auch direkt an ein Window-Object oder Modul über SendMsg(..., DIRECT) gesendet werden!

Siehe auch