func (self *XEth) NewLogFilter(earliest, latest int64, skip, max int, address []string, topics [][]string) int { self.logMu.Lock() defer self.logMu.Unlock() filter := core.NewFilter(self.backend) id := self.filterManager.InstallFilter(filter) self.logQueue[id] = &logQueue{timeout: time.Now()} filter.SetEarliestBlock(earliest) filter.SetLatestBlock(latest) filter.SetSkip(skip) filter.SetMax(max) filter.SetAddress(cAddress(address)) filter.SetTopics(cTopics(topics)) filter.LogsCallback = func(logs state.Logs) { self.logMu.Lock() defer self.logMu.Unlock() if queue := self.logQueue[id]; queue != nil { queue.add(logs...) } } return id }
func (self *XEth) NewFilterString(word string) int { var id int filter := core.NewFilter(self.backend) switch word { case "pending": filter.PendingCallback = func(tx *types.Transaction) { self.logMut.Lock() defer self.logMut.Unlock() self.logs[id].add(&state.Log{}) } case "latest": filter.BlockCallback = func(block *types.Block, logs state.Logs) { self.logMut.Lock() defer self.logMut.Unlock() for _, log := range logs { self.logs[id].add(log) } self.logs[id].add(&state.Log{}) } } id = self.filterManager.InstallFilter(filter) self.logs[id] = &logFilter{timeout: time.Now()} return id }
func (self *XEth) AllLogs(earliest, latest int64, skip, max int, address []string, topics [][]string) state.Logs { filter := core.NewFilter(self.backend) filter.SetEarliestBlock(earliest) filter.SetLatestBlock(latest) filter.SetSkip(skip) filter.SetMax(max) filter.SetAddress(cAddress(address)) filter.SetTopics(cTopics(topics)) return filter.Find() }
func (self *XEth) NewBlockFilter() int { var id int filter := core.NewFilter(self.backend) filter.BlockCallback = func(block *types.Block, logs state.Logs) { self.blockMu.Lock() defer self.blockMu.Unlock() self.blockQueue[id].add(block.Hash()) } id = self.filterManager.InstallFilter(filter) self.blockQueue[id] = &hashQueue{timeout: time.Now()} return id }
func (self *XEth) NewTransactionFilter() int { var id int filter := core.NewFilter(self.backend) filter.TransactionCallback = func(tx *types.Transaction) { self.transactionMu.Lock() defer self.transactionMu.Unlock() self.transactionQueue[id].add(tx.Hash()) } id = self.filterManager.InstallFilter(filter) self.transactionQueue[id] = &hashQueue{timeout: time.Now()} return id }
func (self *XEth) NewTransactionFilter() int { self.transactionMu.Lock() defer self.transactionMu.Unlock() filter := core.NewFilter(self.backend) id := self.filterManager.InstallFilter(filter) self.transactionQueue[id] = &hashQueue{timeout: time.Now()} filter.TransactionCallback = func(tx *types.Transaction) { self.transactionMu.Lock() defer self.transactionMu.Unlock() if queue := self.transactionQueue[id]; queue != nil { queue.add(tx.Hash()) } } return id }
func (self *XEth) RegisterFilter(earliest, latest int64, skip, max int, address []string, topics [][]string) int { var id int filter := core.NewFilter(self.backend) filter.SetEarliestBlock(earliest) filter.SetLatestBlock(latest) filter.SetSkip(skip) filter.SetMax(max) filter.SetAddress(cAddress(address)) filter.SetTopics(cTopics(topics)) filter.LogsCallback = func(logs state.Logs) { self.logMut.Lock() defer self.logMut.Unlock() self.logs[id].add(logs...) } id = self.filterManager.InstallFilter(filter) self.logs[id] = &logFilter{timeout: time.Now()} return id }