mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-04-27 07:33:57 +00:00
Translate pattern observer (9.F)
This commit is contained in:
parent
118bda3ead
commit
dde96818dc
@ -756,4 +756,42 @@ reveal(100, "ilMioSegreto");
|
|||||||
// in base all'orario; si può creare un codice esterno che li pinghi reglarmente
|
// in base all'orario; si può creare un codice esterno che li pinghi reglarmente
|
||||||
// oppure fornire degli incentivi (ether) a qualcun'altro che lo faccia
|
// oppure fornire degli incentivi (ether) a qualcun'altro che lo faccia
|
||||||
|
|
||||||
|
// F. Pattern Observer
|
||||||
|
// Un pattern observer permette di iscriversi come osservatore e
|
||||||
|
// registrare una funzione che verrà chiamata dall'oracle
|
||||||
|
// (N.B. l'oracolo paga perchè sia eseguita quest'azione)
|
||||||
|
// Ci sono alcune somoglianze nella registrazione con Pub/sub
|
||||||
|
|
||||||
|
// Questo è un contratto astratto che importano sia il client che il server
|
||||||
|
// Il client dovrebbe implementarlo
|
||||||
|
contract SomeOracleCallback {
|
||||||
|
function oracleCallback(int _value, uint _time, bytes32 info) external;
|
||||||
|
}
|
||||||
|
|
||||||
|
contract SomeOracle {
|
||||||
|
SomeOracleCallback[] callbacks; // array di tutti gli osservatori iscritti
|
||||||
|
|
||||||
|
// Osservatori iscritti
|
||||||
|
function addSubscriber(SomeOracleCallback a) {
|
||||||
|
callbacks.push(a);
|
||||||
|
}
|
||||||
|
|
||||||
|
function notify(value, time, info) private {
|
||||||
|
for(uint i = 0;i < callbacks.length; i++) {
|
||||||
|
// tutti gli osservatori iscritti dovranno implementare la oracleCallback
|
||||||
|
callbacks[i].oracleCallback(value, time, info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function doSomething() public {
|
||||||
|
// Codice che fa qualcosa
|
||||||
|
|
||||||
|
// Notifica a tutti gli iscritti
|
||||||
|
notify(_value, _time, _info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Il contratto client può aggiungersi agli iscritti (con addSubscriber)
|
||||||
|
// del contratto SomeOracle, importando SomeOracleCallback
|
||||||
|
|
||||||
```
|
```
|
||||||
|
Loading…
Reference in New Issue
Block a user