Richiama transazioni

Le transazioni di richiamo vengono utilizzate per richiamare uno o più comandi del cluster su un nodo di destinazione. È simile alle chiamate di procedura remota effettuate a un comando definito nel cluster.

In modo simile alle transazioni di scrittura, le transazioni di richiamo supportano le transazioni con e senza timer. Per ulteriori informazioni sulle transazioni a tempo, consulta la sezione Azioni a tempo e non a tempo.

Transazione di richiamo non temporizzata

Sequenza di operazioni di una transazione di chiamata non temporizzata
Figura 1: Transazione di richiamo non temporizzata

Richiama azione di richiesta

Direzione: Initiator -> Target

Analogamente all'Azione di richiesta di lettura e all'Azione di richiesta di scrittura, in questa Azione l'Iniziatore fornisce al Target:

  • Richieste di chiamata: un elenco di percorsi per i comandi del cluster, nonché argomenti facoltativi per i comandi, denominati Campi comando.
  • Richiesta con timer: un flag che indica se questa azione fa parte di una transazione di richiamo con timer.
  • Suppress Response: un flag che indica se l'azione Invoke Response deve essere soppressa.
  • ID interazione: un numero intero utilizzato per abbinare l'azione di richiesta di richiamo all'azione di risposta di richiamo.

Richiama azione di risposta

Direzione: Target -> Initiator

Dopo aver ricevuto l'azione di richiesta di richiamo, il target finalizzerà la transazione con un'azione di risposta di richiamo che contiene:

  • Invoke Responses: un elenco di risposte o stati dei comandi per ogni richiesta di richiamo inviata.
  • ID interazione: un numero intero utilizzato per abbinare l'azione di risposta di richiamo all'azione di richiesta di richiamo.

Limitazioni di chiamata senza limiti di tempo

L'azione Invoke Request può essere un groupcast, ma in questo caso il flag Suppress Response deve essere impostato. Il motivo è che, altrimenti, la rete potrebbe essere inondata da risposte simultanee di ogni membro di un gruppo.

Per attivare questo comportamento, il percorso utilizzato nell'elenco Richieste di chiamata può contenere gruppi e, in alternativa, caratteri jolly, ma solo nel campo Endpoint. Inoltre, se l'azione è di tipo groupcast, questa transazione termina senza risposta.

Transazioni di chiamata con timer

Analogamente alle transazioni di scrittura temporizzate, anche le transazioni di chiamata temporizzate iniziano con l'azione di richiesta temporizzata.

Sequenza di operazioni di una transazione di richiamo temporizzato
Figura 2: transazione di chiamata temporizzata

Azione di richiesta a tempo

Direzione: Initiator -> Target

Un Initiator avvia la Transaction inviando questa Action che contiene:

  • Timeout: il numero di millisecondi per cui questa transazione può rimanere aperta. Durante questo periodo, la prossima azione inviata dall'Initiator verrà considerata valida.

Una volta ricevuta l'azione di richiesta a tempo, il target deve confermare l'azione di richiesta a tempo con un'azione di risposta di stato. Una volta che l'Initiator riceve un'azione Status Response che non segnala errori, invia un'azione Invoke Request.

Richiama azione di richiesta

Come l'azione Richiesta di chiamata descritta in precedenza.

Richiama azione di risposta

Come l'azione di risposta Invoke descritta in precedenza.

Limitazioni di Invoke temporizzato

Tutti i comandi di richiamo possono essere chiamati su un'interazione a tempo. Le azioni Timed Request Action, Invoke Request Action e Invoke Response Action sono solo per Unicast e pertanto non possono essere utilizzate come groupcast nelle transazioni Timed Invoke Transaction.

L'azione Invoke Request supporta l'utilizzo di percorsi con gruppi e caratteri jolly, ma l'azione Invoke Response non supporta l'utilizzo di caratteri jolly.