set_message_queue_param — Setzen von Parametern für eine Warteschlange von Nachrichten.
set_message_queue_param( : : QueueHandle, GenParamName, GenParamValue : )
set_message_queue_param setzt Parameter für eine
Warteschlange von Nachrichten oder führt Aktionen auf einer solchen
aus.
GenParamName können mehrere Parameter und Aktionen und in
GenParamValue die korrespondierenden Werte übergeben
werden. Dabei müssen stets die gleiche Anzahl von Parameternamen
und Werten übergeben werden und die Reihenfolge der Werte muss mit
der der Namen übereinstimmen. Die Parameter und Aktionen werden in
der Reihenfolge abgearbeitet, in der sie in einem Tupel dem
Parameter GenParamName übergeben wurden. Dabei kann im
Falle von Aktionsparameter der Effekt eines früheren
Aktionsparameters nicht rückgängig gemacht werden, wenn eine spätere
Aktion fehlschlagen sollte.
Folgende Parameternamen werden unterstützt:
Bricht alle dequeue_message bzw. enqueue_message
Operatoren ab, die in beliebigen Threads warten.
Die abgebrochenen Aufrufe von
dequeue_message bzw. enqueue_message geben den
Fehler H_ERR_MQCNCL zurück. Jeder
weitere zukünftige Aufruf von dequeue_message bzw.
enqueue_message kehrt sofort
mit dem Fehler H_ERR_MQCNCL zurück, unabhängig vom Status der
Warteschlange.
Diese Aktion wird typischerweise verwendet bevor die Warteschlange
aufgeräumt wird. Denn es ist nicht erlaubt die Warteschlange über
clear_message_queue frei zu geben, während sie noch von anderen
Operatoren verwendet wird. Daher ist es in der Regel notwendig,
nach der Aktion 'abort_dequeuing' und
'abort_enqueuing' auf die Beendigung der
Threads zu warten, um sicherzustellen, dass kein Operator das
Warteschlangenobjekt mehr verwenden kann.
Die Aktion wirkt sich jedoch nicht auf die Nachrichtenobjekte aus,
die in der Warteschlange gespeichert sind. Der Effekt, dass auch
alle weiteren Aufruf von dequeue_message bzw.
enqueue_message abgebrochen werden,
kann mit Hilfe der Aktion 'restore_queue' wieder aufgehoben
werden.
Der korrespondierende Parameterwert der Aktion muss den Integerwert 1 haben.
Hebt die Auswirkungen einer vorangegangenen 'abort_dequeuing'
und 'abort_enqueuing'
Aktion wieder auf. Dies bedeutet, dass der nächste Aufruf von
dequeue_message wieder Nachrichtenobjekte aus der
Warteschlange empfangen wird, und dass mittels enqueue_message
wieder neue Nachrichtenobjekte in die Warteschlange gesendet werden
können.
Der korrespondierende Parameterwert der Aktion muss den Integerwert 1 haben.
Leert die Warteschlange. Alle sich in der Warteschlange befindenden Nachrichten werden aus der Warteschlange entfernt und alle damit verbundenen Ressourcen freigegeben, insbesondere die im Nachrichtenobjekt gespeicherten Tupel und Objektdaten.
Der korrespondierende Parameterwert der Aktion muss den Integerwert 1 haben.
Setzt die maximale Anzahl von Nachrichten, die eine Warteschlange
zu einem Zeitpunkt enthalten kann.
Je nach Wert des Einstellung 'wait_on_full' gibt
der Operator enqueue_message
den Wert H_ERR_MQOVL zurück, Wenn die Warteschlange nach
der Operation mehr Nachrichten enthalten würde als das gesetzte
Maximum, oder wartet, dass mehr Platz frei wird.
Das Setzen des Parameters 'max_message_num' hat jedoch keine Auswirkung auf bereits eingereihte Nachrichtenobjekte. D.h. es werden durch diese Aktion keine Nachrichten aus der Warteschlange entfernt.
Der Parameterwert in GenParamValue kann ein positiver
Integerwert oder -1 sein, falls die Größe der Warteschlange
nicht limitiert sein soll (Default). Der String 'infinite'
wird ebenfalls akzeptiert.
Wertevorschläge: -1, 'infinite', 10, 20
Default: -1
Falls für die Warteschlange 'max_message_num' gesetzt ist,
so kann mit diesem Parameter das Verhalten von enqueue_message
eingestellt werden falls die Warteschlange voll ist.
Ist dieser Parameter auf 'false' gesetzt (Standardwert),
dann gibt enqueue_message bei einer vollen Warteschlange
den Wert H_ERR_MQOVL zurück.
Ist dieser Parameter auf 'true' gesetzt, dann wartet
enqueue_message bei einer vollen Warteschlange bis wieder
Platz in der Warteschlange frei wird.
Dies kann durch einen Aufruf von dequeue_message geschehen,
durch ein erhöhen des Wertes von 'max_message_num' oder
durch ein manuelles Leeren der Warteschlange mittels
'flush_queue'.
Falls in einem Aufruf von enqueue_message mehr Nachrichten
in die Warteschlange gestellt werden sollen als mit
'max_message_num' eingestellt, so gibt
enqueue_message unabhängig von der Einstellung von
'wait_on_full' einen Fehler zurück.
Wartende Aufrufe von enqueue_message können auch mittels
'abort_enqueuing' abgebrochen werden.
Werteliste: 'false', 'true'
Default: 'false'
QueueHandle (input_control) message_queue → (handle)
Warteschlangenobjekt.
Parameteranzahl: QueueHandle == 1
Restriktion:
QueueHandle != 0
GenParamName (input_control) string(-array) → (string)
Namen der Parameter oder Aktionen.
Parameteranzahl: GenParamName == GenParamValue
Default: 'max_message_num'
Werteliste: 'abort_dequeuing', 'abort_enqueuing', 'flush_queue', 'max_message_num', 'restore_queue', 'wait_on_full'
GenParamValue (input_control) tuple(-array) → (string / integer / real)
Werte zu den Parameternamen oder Aktionen.
Parameteranzahl: GenParamName == GenParamValue
Default: 1
Wertevorschläge: 1, -1, 'true', 'false'
* abort waiting dequeue_message operators set_message_queue_param (Queue, 'abort_dequeuing', 1) * abort waiting enqueue_message operators (if 'wait_on_full' is set) set_message_queue_param (Queue, 'abort_enqueuing', 1) * * ... wait for the operators to abort * * Restore normal queue operations set_message_queue_param (Queue, 'restore_queue', 1)
Im Erfolgsfall gibt set_message_queue_param den Wert 2 (
H_MSG_TRUE)
zurück. Andernfalls wird eine Fehlerbehandlung durchgeführt.
create_message_queue,
clear_message_queue,
enqueue_message,
dequeue_message,
get_message_queue_param,
create_message,
clear_message,
set_message_tuple,
get_message_tuple,
set_message_obj,
get_message_obj
Foundation