good morning!!!!

Skip to content
Snippets Groups Projects
Commit d2bc57cd authored by Jeffrey Wilcke's avatar Jeffrey Wilcke
Browse files

PoC reactor pattern

parent d65b4cd0
No related branches found
No related tags found
No related merge requests found
package ethutil package ethutil
import ( import (
"fmt"
"math/big" "math/big"
"testing" "testing"
) )
func TestCommon(t *testing.T) { func TestCommon(t *testing.T) {
fmt.Println(CurrencyToString(BigPow(10, 19))) ether := CurrencyToString(BigPow(10, 19))
fmt.Println(CurrencyToString(BigPow(10, 16))) finney := CurrencyToString(BigPow(10, 16))
fmt.Println(CurrencyToString(BigPow(10, 13))) szabo := CurrencyToString(BigPow(10, 13))
fmt.Println(CurrencyToString(BigPow(10, 10))) vito := CurrencyToString(BigPow(10, 10))
fmt.Println(CurrencyToString(BigPow(10, 7))) turing := CurrencyToString(BigPow(10, 7))
fmt.Println(CurrencyToString(BigPow(10, 4))) eins := CurrencyToString(BigPow(10, 4))
fmt.Println(CurrencyToString(big.NewInt(10))) wei := CurrencyToString(big.NewInt(10))
if ether != "10 Ether" {
t.Error("Got", ether)
}
if finney != "10 Finney" {
t.Error("Got", finney)
}
if szabo != "10 Szabo" {
t.Error("Got", szabo)
}
if vito != "10 Vito" {
t.Error("Got", vito)
}
if turing != "10 Turing" {
t.Error("Got", turing)
}
if eins != "10 Eins" {
t.Error("Got", eins)
}
if wei != "10 Wei" {
t.Error("Got", wei)
}
} }
...@@ -13,6 +13,9 @@ type ReactorEvent struct { ...@@ -13,6 +13,9 @@ type ReactorEvent struct {
// Post the specified reactor resource on the channels // Post the specified reactor resource on the channels
// currently subscribed // currently subscribed
func (e *ReactorEvent) Post(react React) { func (e *ReactorEvent) Post(react React) {
e.mut.Lock()
defer e.mut.Unlock()
for _, ch := range e.chans { for _, ch := range e.chans {
go func(ch chan React) { go func(ch chan React) {
ch <- react ch <- react
...@@ -22,11 +25,17 @@ func (e *ReactorEvent) Post(react React) { ...@@ -22,11 +25,17 @@ func (e *ReactorEvent) Post(react React) {
// Add a subscriber to this event // Add a subscriber to this event
func (e *ReactorEvent) Add(ch chan React) { func (e *ReactorEvent) Add(ch chan React) {
e.mut.Lock()
defer e.mut.Unlock()
e.chans = append(e.chans, ch) e.chans = append(e.chans, ch)
} }
// Remove a subscriber // Remove a subscriber
func (e *ReactorEvent) Remove(ch chan React) { func (e *ReactorEvent) Remove(ch chan React) {
e.mut.Lock()
defer e.mut.Unlock()
for i, c := range e.chans { for i, c := range e.chans {
if c == ch { if c == ch {
e.chans = append(e.chans[:i], e.chans[i+1:]...) e.chans = append(e.chans[:i], e.chans[i+1:]...)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment