JS Filter

This commit is contained in:
obscuren
2014-08-20 13:05:26 +02:00
parent b97ea0e447
commit 55a2f35a64
3 changed files with 53 additions and 8 deletions

View File

@ -1,6 +1,7 @@
package ethpipe
import (
"bytes"
"encoding/json"
"fmt"
"sync/atomic"
@ -119,6 +120,28 @@ func (self *JSPipe) EachStorage(addr string) string {
return string(valuesJson)
}
func (self *JSPipe) ToAscii(str string) string {
padded := ethutil.RightPadBytes([]byte(str), 32)
return "0x" + ethutil.Bytes2Hex(padded)
}
func (self *JSPipe) FromAscii(str string) string {
if ethutil.IsHex(str) {
str = str[2:]
}
return string(bytes.Trim(ethutil.Hex2Bytes(str), "\x00"))
}
func (self *JSPipe) FromNumber(str string) string {
if ethutil.IsHex(str) {
str = str[2:]
}
return ethutil.BigD(ethutil.Hex2Bytes(str)).String()
}
func (self *JSPipe) Transact(key, toStr, valueStr, gasStr, gasPriceStr, codeStr string) (*JSReceipt, error) {
var hash []byte
var contractCreation bool
@ -200,8 +223,7 @@ func (self *JSPipe) Watch(object map[string]interface{}) *JSFilter {
func (self *JSPipe) Messages(object map[string]interface{}) string {
filter := self.Watch(object)
defer filter.Uninstall()
filter.Uninstall()
return filter.Messages()
@ -247,8 +269,8 @@ func (self *JSFilter) Messages() string {
}
func (self *JSFilter) mainLoop() {
blockChan := make(chan ethreact.Event, 1)
messageChan := make(chan ethreact.Event, 1)
blockChan := make(chan ethreact.Event, 5)
messageChan := make(chan ethreact.Event, 5)
// Subscribe to events
reactor := self.eth.Reactor()
reactor.Subscribe("newBlock", blockChan)
@ -267,8 +289,11 @@ out:
case msg := <-messageChan:
if messages, ok := msg.Resource.(ethstate.Messages); ok {
if self.MessageCallback != nil {
println("messages!")
msgs := self.FilterMessages(messages)
self.MessageCallback(msgs)
if len(msgs) > 0 {
self.MessageCallback(msgs)
}
}
}
}