Implementing add list of urls to NodeConnect
This commit is contained in:
parent
5a58cf5579
commit
c29830da9b
2 changed files with 67 additions and 0 deletions
|
@ -13,7 +13,13 @@ import de.bitsharesmunich.graphenej.interfaces.WitnessResponseListener;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class NodeConnection {
|
public class NodeConnection {
|
||||||
|
/**
|
||||||
|
* List of URLs of the nodes
|
||||||
|
*/
|
||||||
private List<String> mUrlList;
|
private List<String> mUrlList;
|
||||||
|
/**
|
||||||
|
* Index of the current node from the list
|
||||||
|
*/
|
||||||
private int mUrlIndex;
|
private int mUrlIndex;
|
||||||
private WebsocketWorkerThread mThread;
|
private WebsocketWorkerThread mThread;
|
||||||
private SubscriptionMessagesHub mMessagesHub;
|
private SubscriptionMessagesHub mMessagesHub;
|
||||||
|
@ -21,6 +27,9 @@ public class NodeConnection {
|
||||||
|
|
||||||
private static NodeConnection instance;
|
private static NodeConnection instance;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ger the instance of the NodeConnection which is inteded to be used as a Singleton.
|
||||||
|
*/
|
||||||
public static NodeConnection getInstance(){
|
public static NodeConnection getInstance(){
|
||||||
if(instance == null){
|
if(instance == null){
|
||||||
instance = new NodeConnection();
|
instance = new NodeConnection();
|
||||||
|
@ -32,14 +41,38 @@ public class NodeConnection {
|
||||||
this.mUrlList = new ArrayList<>();
|
this.mUrlList = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a websocket URL node that will be added to the list used at node hop scheme.
|
||||||
|
*
|
||||||
|
* @param url: URL of the node
|
||||||
|
*/
|
||||||
public void addNodeUrl(String url){
|
public void addNodeUrl(String url){
|
||||||
this.mUrlList.add(url);
|
this.mUrlList.add(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a list of websocket URL nodes that will be added to the current list and
|
||||||
|
* be used at node hop scheme.
|
||||||
|
*
|
||||||
|
* @param urlList: List of URLs of the nodes
|
||||||
|
*/
|
||||||
|
public void addNodeUrls(List<String> urlList){
|
||||||
|
List<String> newList = new ArrayList<String>(mUrlList);
|
||||||
|
newList.addAll(urlList);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of websocket URL nodes.
|
||||||
|
*
|
||||||
|
* @return List of URLs of the nodes
|
||||||
|
*/
|
||||||
public List<String> getNodeUrls(){
|
public List<String> getNodeUrls(){
|
||||||
return this.mUrlList;
|
return this.mUrlList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear list of websocket URL nodes.
|
||||||
|
*/
|
||||||
public void clearNodeList(){
|
public void clearNodeList(){
|
||||||
this.mUrlList.clear();
|
this.mUrlList.clear();
|
||||||
}
|
}
|
||||||
|
@ -60,6 +93,9 @@ public class NodeConnection {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the API Handler to the node.
|
||||||
|
*/
|
||||||
public void addRequestHandler(BaseGrapheneHandler handler) throws RepeatedRequestIdException {
|
public void addRequestHandler(BaseGrapheneHandler handler) throws RepeatedRequestIdException {
|
||||||
handler.setRequestId(requestCounter);
|
handler.setRequestId(requestCounter);
|
||||||
requestCounter++;
|
requestCounter++;
|
||||||
|
|
|
@ -14,6 +14,7 @@ import de.bitsharesmunich.graphenej.api.GetAccountByName;
|
||||||
import de.bitsharesmunich.graphenej.api.GetAllAssetHolders;
|
import de.bitsharesmunich.graphenej.api.GetAllAssetHolders;
|
||||||
import de.bitsharesmunich.graphenej.api.GetBlockHeader;
|
import de.bitsharesmunich.graphenej.api.GetBlockHeader;
|
||||||
import de.bitsharesmunich.graphenej.api.GetKeyReferences;
|
import de.bitsharesmunich.graphenej.api.GetKeyReferences;
|
||||||
|
import de.bitsharesmunich.graphenej.api.GetLimitOrders;
|
||||||
import de.bitsharesmunich.graphenej.errors.RepeatedRequestIdException;
|
import de.bitsharesmunich.graphenej.errors.RepeatedRequestIdException;
|
||||||
import de.bitsharesmunich.graphenej.errors.MalformedAddressException;
|
import de.bitsharesmunich.graphenej.errors.MalformedAddressException;
|
||||||
import de.bitsharesmunich.graphenej.interfaces.WitnessResponseListener;
|
import de.bitsharesmunich.graphenej.interfaces.WitnessResponseListener;
|
||||||
|
@ -27,6 +28,9 @@ import de.bitsharesmunich.graphenej.Address;
|
||||||
*/
|
*/
|
||||||
public class NodeConnectionTest {
|
public class NodeConnectionTest {
|
||||||
private String BLOCK_PAY_DE = System.getenv("OPENLEDGER_EU");
|
private String BLOCK_PAY_DE = System.getenv("OPENLEDGER_EU");
|
||||||
|
private String NODE_URL_1 = System.getenv("NODE_URL_1");
|
||||||
|
private String NODE_URL_2 = System.getenv("NODE_URL_2");
|
||||||
|
private String NODE_URL_3 = System.getenv("NODE_URL_3");
|
||||||
private String ACCOUNT_ID = System.getenv("ACCOUNT_ID");
|
private String ACCOUNT_ID = System.getenv("ACCOUNT_ID");
|
||||||
private String ACCOUNT_NAME = System.getenv("ACCOUNT_NAME");
|
private String ACCOUNT_NAME = System.getenv("ACCOUNT_NAME");
|
||||||
private long BlOCK_TEST_NUMBER = Long.parseLong(System.getenv("BlOCK_TEST_NUMBER"));
|
private long BlOCK_TEST_NUMBER = Long.parseLong(System.getenv("BlOCK_TEST_NUMBER"));
|
||||||
|
@ -88,6 +92,33 @@ public class NodeConnectionTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNodeHopFeature(){
|
||||||
|
nodeConnection = NodeConnection.getInstance();
|
||||||
|
nodeConnection.addNodeUrl(NODE_URL_1);
|
||||||
|
//Test adding a "sublist"
|
||||||
|
ArrayList<String> urlList = new ArrayList<String>(){{
|
||||||
|
add(NODE_URL_1);
|
||||||
|
add(NODE_URL_2);
|
||||||
|
}};
|
||||||
|
nodeConnection.addNodeUrl(BLOCK_PAY_DE);
|
||||||
|
|
||||||
|
nodeConnection.connect("", "", true, mErrorListener);
|
||||||
|
|
||||||
|
Timer timer = new Timer();
|
||||||
|
timer.schedule(subscribeTask, 5000);
|
||||||
|
timer.schedule(releaseTask, 30000);
|
||||||
|
|
||||||
|
try{
|
||||||
|
// Holding this thread while we get update notifications
|
||||||
|
synchronized (this){
|
||||||
|
wait();
|
||||||
|
}
|
||||||
|
}catch(InterruptedException e){
|
||||||
|
System.out.println("InterruptedException. Msg: "+e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetAccountBalancesRequest(){
|
public void testGetAccountBalancesRequest(){
|
||||||
nodeConnection = NodeConnection.getInstance();
|
nodeConnection = NodeConnection.getInstance();
|
||||||
|
|
Loading…
Reference in a new issue