JS Filter
This commit is contained in:
parent
b97ea0e447
commit
55a2f35a64
@ -72,8 +72,6 @@ func NewFilterFromMap(object map[string]interface{}, eth EthManager) *Filter {
|
|||||||
filter.altered = makeAltered(object["altered"])
|
filter.altered = makeAltered(object["altered"])
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("ALTERED", filter.altered)
|
|
||||||
|
|
||||||
return filter
|
return filter
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,7 +121,7 @@ func (self *Filter) SetTo(addr [][]byte) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *Filter) AddTo(addr []byte) {
|
func (self *Filter) AddTo(addr []byte) {
|
||||||
self.from = append(self.to, addr)
|
self.to = append(self.to, addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Filter) SetMax(max int) {
|
func (self *Filter) SetMax(max int) {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package ethpipe
|
package ethpipe
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
@ -119,6 +120,28 @@ func (self *JSPipe) EachStorage(addr string) string {
|
|||||||
return string(valuesJson)
|
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) {
|
func (self *JSPipe) Transact(key, toStr, valueStr, gasStr, gasPriceStr, codeStr string) (*JSReceipt, error) {
|
||||||
var hash []byte
|
var hash []byte
|
||||||
var contractCreation bool
|
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 {
|
func (self *JSPipe) Messages(object map[string]interface{}) string {
|
||||||
filter := self.Watch(object)
|
filter := self.Watch(object)
|
||||||
|
filter.Uninstall()
|
||||||
defer filter.Uninstall()
|
|
||||||
|
|
||||||
return filter.Messages()
|
return filter.Messages()
|
||||||
|
|
||||||
@ -247,8 +269,8 @@ func (self *JSFilter) Messages() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *JSFilter) mainLoop() {
|
func (self *JSFilter) mainLoop() {
|
||||||
blockChan := make(chan ethreact.Event, 1)
|
blockChan := make(chan ethreact.Event, 5)
|
||||||
messageChan := make(chan ethreact.Event, 1)
|
messageChan := make(chan ethreact.Event, 5)
|
||||||
// Subscribe to events
|
// Subscribe to events
|
||||||
reactor := self.eth.Reactor()
|
reactor := self.eth.Reactor()
|
||||||
reactor.Subscribe("newBlock", blockChan)
|
reactor.Subscribe("newBlock", blockChan)
|
||||||
@ -267,12 +289,15 @@ out:
|
|||||||
case msg := <-messageChan:
|
case msg := <-messageChan:
|
||||||
if messages, ok := msg.Resource.(ethstate.Messages); ok {
|
if messages, ok := msg.Resource.(ethstate.Messages); ok {
|
||||||
if self.MessageCallback != nil {
|
if self.MessageCallback != nil {
|
||||||
|
println("messages!")
|
||||||
msgs := self.FilterMessages(messages)
|
msgs := self.FilterMessages(messages)
|
||||||
|
if len(msgs) > 0 {
|
||||||
self.MessageCallback(msgs)
|
self.MessageCallback(msgs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *JSFilter) Changed(object interface{}) {
|
func (self *JSFilter) Changed(object interface{}) {
|
||||||
|
@ -173,6 +173,28 @@ func LeftPadBytes(slice []byte, l int) []byte {
|
|||||||
return padded
|
return padded
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func LeftPadString(str string, l int) string {
|
||||||
|
if l < len(str) {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
|
||||||
|
zeros := Bytes2Hex(make([]byte, (l-len(str))/2))
|
||||||
|
|
||||||
|
return zeros + str
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func RightPadString(str string, l int) string {
|
||||||
|
if l < len(str) {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
|
||||||
|
zeros := Bytes2Hex(make([]byte, (l-len(str))/2))
|
||||||
|
|
||||||
|
return str + zeros
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func Address(slice []byte) (addr []byte) {
|
func Address(slice []byte) (addr []byte) {
|
||||||
if len(slice) < 20 {
|
if len(slice) < 20 {
|
||||||
addr = LeftPadBytes(slice, 20)
|
addr = LeftPadBytes(slice, 20)
|
||||||
|
Loading…
Reference in New Issue
Block a user