2016-03-21 01:01:17 +00:00
|
|
|
// bin/syndicatec compiler/demo-bankaccount.js | node
|
2016-03-18 21:00:51 +00:00
|
|
|
|
|
|
|
var Syndicate = require('./src/main.js');
|
|
|
|
|
|
|
|
assertion type account(balance);
|
2016-05-12 01:05:40 +00:00
|
|
|
message type deposit(amount);
|
2016-03-18 21:00:51 +00:00
|
|
|
|
2016-04-07 07:42:54 +00:00
|
|
|
ground dataspace {
|
2017-02-16 19:38:56 +00:00
|
|
|
spawn {
|
2016-08-07 19:33:09 +00:00
|
|
|
field this.balance = 0;
|
2016-08-25 12:12:32 +00:00
|
|
|
assert account(this.balance);
|
|
|
|
dataflow {
|
|
|
|
console.log("Balance inside account is", this.balance);
|
|
|
|
}
|
|
|
|
on message deposit($amount) {
|
|
|
|
this.balance += amount;
|
2016-03-18 21:00:51 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-02-16 19:38:56 +00:00
|
|
|
spawn {
|
2016-08-25 12:12:32 +00:00
|
|
|
on asserted account($balance) {
|
|
|
|
console.log("Balance is now", balance);
|
2016-03-18 21:00:51 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-02-16 19:38:56 +00:00
|
|
|
spawn {
|
2016-08-25 12:12:32 +00:00
|
|
|
on start {
|
|
|
|
console.log("Waiting for account.");
|
|
|
|
}
|
|
|
|
stop on asserted Syndicate.observe(deposit(_)) {
|
|
|
|
console.log("Account became ready.");
|
|
|
|
:: deposit(+100);
|
|
|
|
:: deposit(-30);
|
2016-03-18 21:00:51 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|