From 50ee6adb5b0ae0590e3703e82b168193165aeb56 Mon Sep 17 00:00:00 2001 From: Yaroslav Dmytrotsa Date: Tue, 23 Jun 2015 20:02:09 +0300 Subject: [PATCH] implement EthereumListenerAdapter for Block / Transaction filter. --- .../android/jsonrpc/JsonRpcServer.java | 2 +- .../android/jsonrpc/filter/FilterManager.java | 26 ++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/ethereumj-core-android/src/main/java/org/ethereum/android/jsonrpc/JsonRpcServer.java b/ethereumj-core-android/src/main/java/org/ethereum/android/jsonrpc/JsonRpcServer.java index c46cf2b3..8e2beac9 100644 --- a/ethereumj-core-android/src/main/java/org/ethereum/android/jsonrpc/JsonRpcServer.java +++ b/ethereumj-core-android/src/main/java/org/ethereum/android/jsonrpc/JsonRpcServer.java @@ -113,7 +113,7 @@ public final class JsonRpcServer { this.dispatcher.register(new shh_getFilterChanges(this.ethereum)); this.dispatcher.register(new shh_getMessages(this.ethereum)); - FilterManager.getInstance(); + ethereum.addListener(FilterManager.getInstance()); org.ethereum.android.jsonrpc.whisper.FilterManager.getInstance(); } diff --git a/ethereumj-core-android/src/main/java/org/ethereum/android/jsonrpc/filter/FilterManager.java b/ethereumj-core-android/src/main/java/org/ethereum/android/jsonrpc/filter/FilterManager.java index ba95d74c..53f1c15b 100644 --- a/ethereumj-core-android/src/main/java/org/ethereum/android/jsonrpc/filter/FilterManager.java +++ b/ethereumj-core-android/src/main/java/org/ethereum/android/jsonrpc/filter/FilterManager.java @@ -2,19 +2,21 @@ package org.ethereum.android.jsonrpc.filter; import net.minidev.json.JSONArray; +import org.ethereum.core.Block; +import org.ethereum.core.Transaction; +import org.ethereum.core.TransactionReceipt; import org.ethereum.facade.Ethereum; +import org.ethereum.listener.EthereumListenerAdapter; import java.util.Hashtable; +import java.util.List; import java.util.Map; +import java.util.Set; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.TimeUnit; -/* -This class must receive notification from -core about new log, Block, Transaction. Right now I not see the way todo that. -TODO: ask advice from Roman about how to send notification to this class. -*/ -public class FilterManager { +public class FilterManager extends EthereumListenerAdapter { protected static FilterManager instance = null; @@ -49,7 +51,19 @@ public class FilterManager { }, TimeUnit.MINUTES.toMillis(1)); } - public void processEvent(Object data) { + @Override + public void onBlock(Block block, List receipts) { + processEvent(block); + } + + @Override + public void onPendingTransactionsReceived(Set transactions) { + for(Transaction tx : transactions) { + processEvent(tx); + } + } + + private void processEvent(Object data) { synchronized (filters) { for (Map.Entry item : filters.entrySet()) { item.getValue().processEvent(data);