generate platform_ops.h from platform_ops.proto, and reduce dependencies
[proto.git] / lib / elect.proto
blob8fb144a27dc7a427af8975f4f5e2a2bac3d43e4d
1 ;; init:     (flip 0.1 'leader 'follower)\r
2 ;; leader:   (flip 0.1 'follower 'leader)\r
3 ;; follower: (if (< leader-grad threshold) (flip 0.1 'leader 'follower))\r
4 \r
5 (def elect ()\r
6   (letfed ((s (flip 0.1 'leader 'follower) \r
7               (mux (= s 'leader)\r
8                   (flip 0.001 'follower 'leader)\r
9                 (mux (> (probe (gradient (= s 'leader)) 0) 400) \r
10                      (flip 0.001 'leader 'follower)\r
11                      'follower))))\r
12     (= s 'leader)))\r