remove SHH from light version of JSON_RPC. Now it peroxided.
This commit is contained in:
parent
b76a72f367
commit
c3261a469e
|
@ -10,7 +10,6 @@ import io.netty.channel.ChannelInitializer;
|
||||||
import io.netty.channel.ChannelPipeline;
|
import io.netty.channel.ChannelPipeline;
|
||||||
import io.netty.channel.socket.SocketChannel;
|
import io.netty.channel.socket.SocketChannel;
|
||||||
import io.netty.handler.codec.http.HttpServerCodec;
|
import io.netty.handler.codec.http.HttpServerCodec;
|
||||||
import org.ethereum.android.jsonrpc.light.whisper.FilterManager;
|
|
||||||
import org.ethereum.facade.Ethereum;
|
import org.ethereum.facade.Ethereum;
|
||||||
import com.thetransactioncompany.jsonrpc2.server.*;
|
import com.thetransactioncompany.jsonrpc2.server.*;
|
||||||
import org.ethereum.android.jsonrpc.light.method.*;
|
import org.ethereum.android.jsonrpc.light.method.*;
|
||||||
|
@ -45,21 +44,8 @@ public final class JsonRpcServer extends org.ethereum.android.jsonrpc.JsonRpcSer
|
||||||
this.dispatcher.register(new eth_sign(this.ethereum));
|
this.dispatcher.register(new eth_sign(this.ethereum));
|
||||||
this.dispatcher.register(new eth_sendTransaction(this.ethereum));
|
this.dispatcher.register(new eth_sendTransaction(this.ethereum));
|
||||||
|
|
||||||
this.dispatcher.register(new shh_version(this.ethereum));
|
|
||||||
this.dispatcher.register(new shh_post(this.ethereum));
|
|
||||||
this.dispatcher.register(new shh_newIdentity(this.ethereum));
|
|
||||||
this.dispatcher.register(new shh_hasIdentity(this.ethereum));
|
|
||||||
this.dispatcher.register(new shh_newGroup(this.ethereum));
|
|
||||||
this.dispatcher.register(new shh_addToGroup(this.ethereum));
|
|
||||||
this.dispatcher.register(new shh_newFilter(this.ethereum));
|
|
||||||
this.dispatcher.register(new shh_uninstallFilter(this.ethereum));
|
|
||||||
this.dispatcher.register(new shh_getFilterChanges(this.ethereum));
|
|
||||||
this.dispatcher.register(new shh_getMessages(this.ethereum));
|
|
||||||
|
|
||||||
this.dispatcher.register(new proxy(this.ethereum));
|
this.dispatcher.register(new proxy(this.ethereum));
|
||||||
|
|
||||||
FilterManager.getInstance();
|
|
||||||
|
|
||||||
addRemoteServer("http://139.162.13.89:8545/");
|
addRemoteServer("http://139.162.13.89:8545/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,17 @@ public class proxy extends JsonRpcServerMethod {
|
||||||
proxyMethods.add("eth_getFilterLogs");
|
proxyMethods.add("eth_getFilterLogs");
|
||||||
proxyMethods.add("eth_getLogs");
|
proxyMethods.add("eth_getLogs");
|
||||||
|
|
||||||
|
proxyMethods.add("shh_version");
|
||||||
|
proxyMethods.add("shh_post");
|
||||||
|
proxyMethods.add("shh_newIdentity");
|
||||||
|
proxyMethods.add("shh_hasIdentity");
|
||||||
|
proxyMethods.add("shh_newGroup");
|
||||||
|
proxyMethods.add("shh_addToGroup");
|
||||||
|
proxyMethods.add("shh_newFilter");
|
||||||
|
proxyMethods.add("shh_uninstallFilter");
|
||||||
|
proxyMethods.add("shh_getFilterChanges");
|
||||||
|
proxyMethods.add("shh_getMessages");
|
||||||
|
|
||||||
//TODO: issue methods - they generate transaction but must call them in blockchain.
|
//TODO: issue methods - they generate transaction but must call them in blockchain.
|
||||||
proxyMethods.add("eth_call");
|
proxyMethods.add("eth_call");
|
||||||
proxyMethods.add("eth_estimateGas");
|
proxyMethods.add("eth_estimateGas");
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.method;
|
|
||||||
|
|
||||||
import com.thetransactioncompany.jsonrpc2.*;
|
|
||||||
import com.thetransactioncompany.jsonrpc2.server.*;
|
|
||||||
import org.ethereum.android.jsonrpc.light.JsonRpcServerMethod;
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/*
|
|
||||||
TODO: not present clear specification for this method, also cpp and go version not provide it.
|
|
||||||
*/
|
|
||||||
public class shh_addToGroup extends JsonRpcServerMethod {
|
|
||||||
|
|
||||||
public shh_addToGroup(Ethereum ethereum) {
|
|
||||||
super(ethereum);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JSONRPC2Response worker(JSONRPC2Request req, MessageContext ctx) {
|
|
||||||
|
|
||||||
List<Object> params = req.getPositionalParams();
|
|
||||||
if (params.size() != 1) {
|
|
||||||
return new JSONRPC2Response(JSONRPC2Error.INVALID_PARAMS, req.getID());
|
|
||||||
} else {
|
|
||||||
byte[] identity = jsToAddress((String)params.get(0));
|
|
||||||
|
|
||||||
JSONRPC2Response res = new JSONRPC2Response(JSONRPC2Error.METHOD_NOT_FOUND, req.getID());
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.method;
|
|
||||||
|
|
||||||
import com.thetransactioncompany.jsonrpc2.*;
|
|
||||||
import com.thetransactioncompany.jsonrpc2.server.*;
|
|
||||||
import org.ethereum.android.jsonrpc.light.JsonRpcServerMethod;
|
|
||||||
import org.ethereum.android.jsonrpc.light.whisper.FilterManager;
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class shh_getFilterChanges extends JsonRpcServerMethod {
|
|
||||||
|
|
||||||
public shh_getFilterChanges(Ethereum ethereum) {
|
|
||||||
super(ethereum);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JSONRPC2Response worker(JSONRPC2Request req, MessageContext ctx) {
|
|
||||||
|
|
||||||
List<Object> params = req.getPositionalParams();
|
|
||||||
if (params.size() != 1) {
|
|
||||||
return new JSONRPC2Response(JSONRPC2Error.INVALID_PARAMS, req.getID());
|
|
||||||
} else {
|
|
||||||
int id = jsToInt((String)params.get(0));
|
|
||||||
JSONRPC2Response res = new JSONRPC2Response(FilterManager.getInstance().toJS(id), req.getID());
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.method;
|
|
||||||
|
|
||||||
import com.thetransactioncompany.jsonrpc2.*;
|
|
||||||
import com.thetransactioncompany.jsonrpc2.server.*;
|
|
||||||
import org.ethereum.android.jsonrpc.light.JsonRpcServerMethod;
|
|
||||||
import org.ethereum.android.jsonrpc.light.whisper.FilterManager;
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class shh_getMessages extends JsonRpcServerMethod {
|
|
||||||
|
|
||||||
public shh_getMessages(Ethereum ethereum) {
|
|
||||||
super(ethereum);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JSONRPC2Response worker(JSONRPC2Request req, MessageContext ctx) {
|
|
||||||
|
|
||||||
List<Object> params = req.getPositionalParams();
|
|
||||||
if (params.size() != 1) {
|
|
||||||
return new JSONRPC2Response(JSONRPC2Error.INVALID_PARAMS, req.getID());
|
|
||||||
} else {
|
|
||||||
int id = jsToInt((String)params.get(0));
|
|
||||||
JSONRPC2Response res = new JSONRPC2Response(FilterManager.getInstance().toJSAll(id), req.getID());
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.method;
|
|
||||||
|
|
||||||
import com.thetransactioncompany.jsonrpc2.*;
|
|
||||||
import com.thetransactioncompany.jsonrpc2.server.*;
|
|
||||||
import org.ethereum.android.jsonrpc.light.JsonRpcServerMethod;
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/*
|
|
||||||
TODO: done it when shh will be ready in -core
|
|
||||||
*/
|
|
||||||
public class shh_hasIdentity extends JsonRpcServerMethod {
|
|
||||||
|
|
||||||
public shh_hasIdentity(Ethereum ethereum) {
|
|
||||||
super(ethereum);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JSONRPC2Response worker(JSONRPC2Request req, MessageContext ctx) {
|
|
||||||
|
|
||||||
List<Object> params = req.getPositionalParams();
|
|
||||||
if (params.size() != 1) {
|
|
||||||
return new JSONRPC2Response(JSONRPC2Error.INVALID_PARAMS, req.getID());
|
|
||||||
} else {
|
|
||||||
byte[] identity = jsToAddress((String)params.get(0));
|
|
||||||
|
|
||||||
JSONRPC2Response res = new JSONRPC2Response(JSONRPC2Error.METHOD_NOT_FOUND, req.getID());
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.method;
|
|
||||||
|
|
||||||
import com.thetransactioncompany.jsonrpc2.*;
|
|
||||||
import com.thetransactioncompany.jsonrpc2.server.*;
|
|
||||||
|
|
||||||
import net.minidev.json.JSONObject;
|
|
||||||
|
|
||||||
import org.ethereum.android.jsonrpc.light.JsonRpcServerMethod;
|
|
||||||
import org.ethereum.android.jsonrpc.light.whisper.Filter;
|
|
||||||
import org.ethereum.android.jsonrpc.light.whisper.FilterManager;
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class shh_newFilter extends JsonRpcServerMethod {
|
|
||||||
|
|
||||||
public shh_newFilter(Ethereum ethereum) {
|
|
||||||
super(ethereum);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JSONRPC2Response worker(JSONRPC2Request req, MessageContext ctx) {
|
|
||||||
|
|
||||||
List<Object> params = req.getPositionalParams();
|
|
||||||
if (params.size() != 1) {
|
|
||||||
return new JSONRPC2Response(JSONRPC2Error.INVALID_PARAMS, req.getID());
|
|
||||||
} else {
|
|
||||||
JSONObject obj = (JSONObject)params.get(0);
|
|
||||||
int id = FilterManager.getInstance().addFilter(new Filter(obj));
|
|
||||||
String tmp = "0x" + Integer.toHexString(id);
|
|
||||||
JSONRPC2Response res = new JSONRPC2Response(tmp, req.getID());
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.method;
|
|
||||||
|
|
||||||
import com.thetransactioncompany.jsonrpc2.*;
|
|
||||||
import com.thetransactioncompany.jsonrpc2.server.*;
|
|
||||||
import org.ethereum.android.jsonrpc.light.JsonRpcServerMethod;
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
|
|
||||||
/*
|
|
||||||
TODO: not present clear specification for this method, also cpp and go version not provide it.
|
|
||||||
*/
|
|
||||||
public class shh_newGroup extends JsonRpcServerMethod {
|
|
||||||
|
|
||||||
public shh_newGroup(Ethereum ethereum) {
|
|
||||||
super(ethereum);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JSONRPC2Response worker(JSONRPC2Request req, MessageContext ctx) {
|
|
||||||
|
|
||||||
JSONRPC2Response res = new JSONRPC2Response(JSONRPC2Error.METHOD_NOT_FOUND, req.getID());
|
|
||||||
return res;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.method;
|
|
||||||
|
|
||||||
import com.thetransactioncompany.jsonrpc2.*;
|
|
||||||
import com.thetransactioncompany.jsonrpc2.server.*;
|
|
||||||
import org.ethereum.android.jsonrpc.light.JsonRpcServerMethod;
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
|
|
||||||
/*
|
|
||||||
TODO: done it when shh will be ready in -core
|
|
||||||
*/
|
|
||||||
public class shh_newIdentity extends JsonRpcServerMethod {
|
|
||||||
|
|
||||||
public shh_newIdentity(Ethereum ethereum) {
|
|
||||||
super(ethereum);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JSONRPC2Response worker(JSONRPC2Request req, MessageContext ctx) {
|
|
||||||
|
|
||||||
JSONRPC2Response res = new JSONRPC2Response(JSONRPC2Error.METHOD_NOT_FOUND, req.getID());
|
|
||||||
return res;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.method;
|
|
||||||
|
|
||||||
import com.thetransactioncompany.jsonrpc2.*;
|
|
||||||
import com.thetransactioncompany.jsonrpc2.server.*;
|
|
||||||
|
|
||||||
import net.minidev.json.JSONArray;
|
|
||||||
import net.minidev.json.JSONObject;
|
|
||||||
|
|
||||||
import org.ethereum.android.jsonrpc.light.JsonRpcServerMethod;
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
import org.spongycastle.util.encoders.Hex;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/*
|
|
||||||
TODO: done it when shh will be ready in -core
|
|
||||||
*/
|
|
||||||
public class shh_post extends JsonRpcServerMethod {
|
|
||||||
|
|
||||||
public shh_post (Ethereum ethereum) {
|
|
||||||
super(ethereum);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JSONRPC2Response worker(JSONRPC2Request req, MessageContext ctx) {
|
|
||||||
|
|
||||||
List<Object> params = req.getPositionalParams();
|
|
||||||
if (params.size() != 1) {
|
|
||||||
return new JSONRPC2Response(JSONRPC2Error.INVALID_PARAMS, req.getID());
|
|
||||||
} else {
|
|
||||||
JSONObject obj = (JSONObject)params.get(0);
|
|
||||||
|
|
||||||
byte[] from = null;
|
|
||||||
if (obj.containsKey("from"))
|
|
||||||
from = jsToAddress((String)obj.get("from"));
|
|
||||||
|
|
||||||
byte[] to = null;
|
|
||||||
if (obj.containsKey("to"))
|
|
||||||
to = jsToAddress((String)obj.get("to"));
|
|
||||||
|
|
||||||
ArrayList<byte[]> topics = new ArrayList<>();
|
|
||||||
for (Object item : (JSONArray)obj.get("topics")) {
|
|
||||||
if (item instanceof String) {
|
|
||||||
topics.add(jsToAddress((String)item));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
byte[] payload = jsToAddress((String)obj.get("payload"));
|
|
||||||
|
|
||||||
int priority = jsToInt((String) obj.get("priority"));
|
|
||||||
|
|
||||||
int ttl = jsToInt((String)obj.get("ttl"));
|
|
||||||
|
|
||||||
//TODO: implement after Adrian merge with dev
|
|
||||||
|
|
||||||
JSONRPC2Response res = new JSONRPC2Response(JSONRPC2Error.METHOD_NOT_FOUND, req.getID());
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.method;
|
|
||||||
|
|
||||||
import com.thetransactioncompany.jsonrpc2.*;
|
|
||||||
import com.thetransactioncompany.jsonrpc2.server.*;
|
|
||||||
import org.ethereum.android.jsonrpc.light.JsonRpcServerMethod;
|
|
||||||
import org.ethereum.android.jsonrpc.light.whisper.FilterManager;
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class shh_uninstallFilter extends JsonRpcServerMethod {
|
|
||||||
|
|
||||||
public shh_uninstallFilter(Ethereum ethereum) {
|
|
||||||
super(ethereum);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JSONRPC2Response worker(JSONRPC2Request req, MessageContext ctx) {
|
|
||||||
|
|
||||||
List<Object> params = req.getPositionalParams();
|
|
||||||
if (params.size() != 1) {
|
|
||||||
return new JSONRPC2Response(JSONRPC2Error.INVALID_PARAMS, req.getID());
|
|
||||||
} else {
|
|
||||||
int id = jsToInt((String)params.get(0));
|
|
||||||
JSONRPC2Response res = new JSONRPC2Response(FilterManager.getInstance().uninstallFilter(id), req.getID());
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.method;
|
|
||||||
|
|
||||||
import com.thetransactioncompany.jsonrpc2.*;
|
|
||||||
import com.thetransactioncompany.jsonrpc2.server.*;
|
|
||||||
import org.ethereum.android.jsonrpc.light.JsonRpcServerMethod;
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
import org.ethereum.net.shh.ShhHandler;
|
|
||||||
|
|
||||||
public class shh_version extends JsonRpcServerMethod {
|
|
||||||
|
|
||||||
public shh_version (Ethereum ethereum) {
|
|
||||||
super(ethereum);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected JSONRPC2Response worker(JSONRPC2Request req, MessageContext ctx) {
|
|
||||||
|
|
||||||
String tmp = "" + ShhHandler.VERSION;
|
|
||||||
JSONRPC2Response res = new JSONRPC2Response(tmp, req.getID());
|
|
||||||
return res;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,86 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.whisper;
|
|
||||||
|
|
||||||
import net.minidev.json.JSONArray;
|
|
||||||
import net.minidev.json.JSONObject;
|
|
||||||
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
import org.ethereum.net.shh.ShhMessage;
|
|
||||||
import org.spongycastle.util.encoders.Hex;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
/*
|
|
||||||
TODO: replace ShhMessage with real class when Roman finish Shh.
|
|
||||||
*/
|
|
||||||
public class Filter {
|
|
||||||
protected int id;
|
|
||||||
protected ArrayList<ShhMessage> messages;
|
|
||||||
byte[] to = null;
|
|
||||||
boolean isWildcard = false;
|
|
||||||
ArrayList<ArrayList<byte[]>> or;
|
|
||||||
ArrayList<byte[]> and;
|
|
||||||
int sendID = 0;
|
|
||||||
|
|
||||||
public Filter (JSONObject data) {
|
|
||||||
messages = new ArrayList<ShhMessage>();
|
|
||||||
if (data.containsKey("to")) {
|
|
||||||
to = Hex.decode(((String)data.get("to")).substring(2));
|
|
||||||
}
|
|
||||||
JSONArray topics = (JSONArray)data.get("topics");
|
|
||||||
for (Object item : topics) {
|
|
||||||
if (item == null) {
|
|
||||||
isWildcard = true;
|
|
||||||
}
|
|
||||||
else if (item instanceof JSONArray) {
|
|
||||||
ArrayList<byte[]> tmp = new ArrayList<byte[]>();
|
|
||||||
for (Object ori : (JSONArray)item) {
|
|
||||||
if (ori instanceof String) {
|
|
||||||
tmp.add(Hex.decode(((String)ori).substring(2)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
or.add(tmp);
|
|
||||||
} else if (item instanceof String) {
|
|
||||||
and.add(Hex.decode(((String)item).substring(2)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(int id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void processEvent(Object data) {
|
|
||||||
//TODO: parse incomming data when we will know what comes.
|
|
||||||
}
|
|
||||||
|
|
||||||
public JSONArray toJS() {
|
|
||||||
JSONArray res = new JSONArray();
|
|
||||||
synchronized (messages) {
|
|
||||||
for (int i = sendID; i < messages.size(); i++) {
|
|
||||||
res.add(toJS(messages.get(i)));
|
|
||||||
}
|
|
||||||
sendID = messages.size();
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
public JSONArray toJSAll() {
|
|
||||||
JSONArray res = new JSONArray();
|
|
||||||
synchronized (messages) {
|
|
||||||
for (int i = 0; i < messages.size(); i++) {
|
|
||||||
res.add(toJS(messages.get(i)));
|
|
||||||
}
|
|
||||||
sendID = messages.size();
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
private JSONObject toJS (ShhMessage data) {
|
|
||||||
JSONObject res = new JSONObject();
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,80 +0,0 @@
|
||||||
package org.ethereum.android.jsonrpc.light.whisper;
|
|
||||||
|
|
||||||
import net.minidev.json.JSONArray;
|
|
||||||
|
|
||||||
import org.ethereum.facade.Ethereum;
|
|
||||||
|
|
||||||
import java.util.Hashtable;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Timer;
|
|
||||||
import java.util.TimerTask;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
/*
|
|
||||||
This class must receive notification from -core about new whisper message. Right now I not see the way to do that.
|
|
||||||
TODO: ask advice from Roman about how to send notification to this class.
|
|
||||||
*/
|
|
||||||
public class FilterManager {
|
|
||||||
|
|
||||||
protected static FilterManager instance = null;
|
|
||||||
|
|
||||||
public static FilterManager getInstance() {
|
|
||||||
if (instance == null)
|
|
||||||
instance = new FilterManager();
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Hashtable<Integer, Filter> filters;
|
|
||||||
protected int last_id = 0;
|
|
||||||
|
|
||||||
private FilterManager() {
|
|
||||||
filters = new Hashtable<Integer, Filter>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void processEvent(Object data) {
|
|
||||||
synchronized (filters) {
|
|
||||||
for (Map.Entry<Integer, Filter> item : filters.entrySet()) {
|
|
||||||
item.getValue().processEvent(data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int addFilter(Filter filter) {
|
|
||||||
filter.setId(++last_id);
|
|
||||||
filters.put(filter.getId(), filter);
|
|
||||||
return filter.getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Filter getFilter(int id) {
|
|
||||||
if (filters.containsKey(id)) {
|
|
||||||
return filters.get(id);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean uninstallFilter(int id) {
|
|
||||||
synchronized (filters) {
|
|
||||||
if (!filters.containsKey(id))
|
|
||||||
return false;
|
|
||||||
filters.remove(id);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public JSONArray toJS(int id) {
|
|
||||||
synchronized (filters) {
|
|
||||||
if (!filters.containsKey(id))
|
|
||||||
return null;
|
|
||||||
return filters.get(id).toJS();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public JSONArray toJSAll(int id) {
|
|
||||||
synchronized (filters) {
|
|
||||||
if (!filters.containsKey(id))
|
|
||||||
return null;
|
|
||||||
return filters.get(id).toJSAll();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue