Skip to content

Commit 05d5589

Browse files
committed
feat: Added support for RPC PROXY
We also added some TODO comments here to check later...
1 parent 6ce838f commit 05d5589

File tree

8 files changed

+198
-8
lines changed

8 files changed

+198
-8
lines changed

src/main/java/com/nerox/client/Tfprotocol.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ public void ndateCommand() {
138138
* */
139139
public void echoCommand(String value) {
140140
this.getProtoHandler().echoCallback(
141-
this.easyreum.getBuilder().build("ECHO",value).translate()
141+
this.easyreum.getBuilder().build("ECHO", value).translate()
142142
.getBuilder().buildStatusInfo().getMessage());
143143
}
144144
/**
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.nerox.client.callbacks;
2+
3+
import com.nerox.client.misc.StatusInfo;
4+
import com.nerox.client.modules.XSRPCProxy;
5+
6+
public interface IXSRPCProxyCallback extends ISuperCallback<XSRPCProxy>{
7+
void startRPCProxyCallback(StatusInfo si);
8+
void receivePayload(StatusInfo si);
9+
}

src/main/java/com/nerox/client/connection/Client.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ public void setSocket(Socket socket) {
138138

139139
@Override
140140
protected void finalize() throws Throwable {
141-
super.finalize();
141+
super.finalize(); // TODO This needs further research
142142
this.stopConnection();
143143
}
144144
}

src/main/java/com/nerox/client/misc/TCPTimeouts.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.nerox.client.callbacks.ISuperCallback;
44

5-
public class TCPTimeouts {
5+
public class TCPTimeouts { // TODO This class needs to be reviewed as seems like is not usefull at all
66

77
private int connectTimeout = 120 * 1000; //2 minutos de espera
88
private int connectRetry = 3; //Intentos de reconexión
Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,61 @@
11
package com.nerox.client.modules;
22

3-
import com.nerox.client.Tfprotocol;
3+
import java.io.InputStream;
4+
import java.lang.reflect.Method;
5+
46
import com.nerox.client.TfprotocolSuper;
57
import com.nerox.client.callbacks.IXSRPCProxyCallback;
8+
import com.nerox.client.misc.StatusInfo;
9+
610

711
public class XSRPCProxy extends TfprotocolSuper<IXSRPCProxyCallback>{
8-
public boolean startCommand(){
9-
super.getProtoHandler().startRPCProxyCallback(
12+
13+
public XSRPCProxy(String ipServer, int portServer, String publicKey,
14+
String hash, int len, String protocol, IXSRPCProxyCallback protoHandler) {
15+
super(ipServer, portServer, publicKey, hash, len, protocol, protoHandler);
16+
}
17+
18+
public XSRPCProxy(String proxy, String ipServer, int portServer, String publicKey,
19+
String hash, int len, String protocol, IXSRPCProxyCallback protoHandler) {
20+
super(proxy, ipServer, portServer, publicKey, hash, len, protocol, protoHandler);
21+
}
22+
23+
public XSRPCProxy(TfprotocolSuper tfprotocol, IXSRPCProxyCallback protoHandler) {
24+
this.setProtoHandler(protoHandler);
25+
this.easyreum = tfprotocol.getConHandler();
26+
}
27+
28+
public XSRPCProxy(String ipServer, int portServer, InputStream publicKey,
29+
String hash, int len, String protocol,
30+
IXSRPCProxyCallback protoHandler){
31+
super(ipServer, portServer, publicKey, hash, len, protocol, protoHandler);
32+
}
33+
34+
public void startCommand(){
35+
this.getProtoHandler().startRPCProxyCallback(
1036
this.easyreum.getBuilder().build("XS_RPCPROXY").translate()
1137
.getBuilder().buildStatusInfo()
1238
);
1339
}
14-
40+
public boolean sendHashCommand(String hash){
41+
this.easyreum.getBuilder().build(hash).send();
42+
this.easyreum.receiveHeader();
43+
return this.easyreum.getHeader() == 0;
44+
}
45+
public int sendPayload(String payload){
46+
return this.sendPayload(payload.getBytes());
47+
}
48+
public int sendPayload(byte[] payload){
49+
this.easyreum.getBuilder().build(payload).send();
50+
this.easyreum.getBuilder().build(0).sendJust();
51+
do{
52+
this.getProtoHandler().receivePayload(this.easyreum.receive().getBuilder().buildStatusInfo());
53+
}while(this.easyreum.getHeader() > 0);
54+
this.easyreum.receiveHeader();
55+
return this.easyreum.getHeader();
56+
}
57+
58+
public void exitCommand(){
59+
this.easyreum.getBuilder().build(-1).sendJust();
60+
}
1561
}

src/test/java/com/nerox/client/AppTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ private String joinPaths(String ...paths){
6161
}
6262
return sb.toString();
6363
}
64-
@Test
64+
65+
//@Test
6566
public void runAllTests(){
6667
this.tfprotocolDoesConnect();
6768
//this.loginCommand();

src/test/java/com/nerox/client/Callback.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.nerox.client;
22
import com.nerox.client.callbacks.ITfprotocolCallback;
3+
import com.nerox.client.callbacks.IXSRPCProxyCallback;;
34
import com.nerox.client.misc.StatusInfo;
45
import com.nerox.client.misc.StatusServer;
6+
import com.nerox.client.modules.XSRPCProxy;
57
import com.nerox.client.misc.FileStat;
68

79
public class Callback implements ITfprotocolCallback{
@@ -181,3 +183,36 @@ public void issecfsCallback(StatusInfo statusInfo){
181183
this.statusServer(statusInfo);
182184
}
183185
}
186+
187+
class RPCProxyCallback implements IXSRPCProxyCallback{
188+
@Override
189+
public void statusServer(StatusInfo status) {
190+
System.out.println("------------------------------");
191+
System.out.println(status.getStatus());
192+
System.out.println(status.getMessage());
193+
System.out.println(status.getPayload()!=null ?new String(status.getPayload()):"");
194+
System.out.println(status.getCode());
195+
System.out.println("------------------------------");
196+
}
197+
@Override
198+
public void responseServerCallback(StatusInfo status) {
199+
// TODO Auto-generated method stub
200+
this.statusServer(status);
201+
}
202+
203+
@Override
204+
public void instanceTfProtocol(XSRPCProxy instance) {
205+
// TODO Auto-generated method stub
206+
}
207+
208+
@Override
209+
public void startRPCProxyCallback(StatusInfo si) {
210+
// TODO Auto-generated method stub
211+
this.statusServer(si);
212+
}
213+
@Override
214+
public void receivePayload(StatusInfo si) {
215+
// TODO Auto-generated method stub
216+
this.statusServer(si);
217+
}
218+
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package com.nerox.client;
2+
3+
import static org.junit.Assert.assertTrue;
4+
5+
import java.io.FileInputStream;
6+
import java.io.FileNotFoundException;
7+
import java.nio.ByteBuffer;
8+
import java.util.Arrays;
9+
10+
import com.nerox.client.keepalives.UDPKeepAlive;
11+
import com.nerox.client.modules.XSRPCProxy;
12+
import org.junit.Test;
13+
14+
/**
15+
* Unit test for simple App.
16+
*/
17+
public class RPCProxyTest {
18+
RPCProxyCallback callback;
19+
XSRPCProxy proxy;
20+
public RPCProxyTest(){
21+
this.callback = new RPCProxyCallback();
22+
// Get current path
23+
String path = System.getProperty("basedir");
24+
try{
25+
FileInputStream fis = new FileInputStream(this.joinPaths(path, "src/test/files/PublicKey.pem"));
26+
this.proxy = new XSRPCProxy(
27+
"localhost",
28+
10345,
29+
fis,
30+
"testhash",
31+
36,
32+
"0.0",
33+
this.callback);
34+
}catch(FileNotFoundException ignored){
35+
assertTrue("File not found", false);
36+
}
37+
this.proxy.connect();
38+
}
39+
/**
40+
* Rigorous Test :-)
41+
*/
42+
private String normalizePath(String path){
43+
return this.normalizePath(path, "/");
44+
}
45+
46+
private String normalizePath(String path, String usingSeparator){
47+
String sep = System.getProperty("file.separator");
48+
return path.replace(usingSeparator, sep);
49+
}
50+
/**
51+
* Join N paths togethers normalizing them with the system separators
52+
**/
53+
private String joinPaths(String ...paths){
54+
StringBuilder sb = new StringBuilder();
55+
String sep = System.getProperty("file.separator");
56+
for(String path : paths){
57+
String rpath = normalizePath(path);
58+
if (!rpath.endsWith(sep))
59+
sb.append(sep);
60+
sb.append(rpath);
61+
}
62+
return sb.toString();
63+
}
64+
65+
@Test
66+
public void runAllTests(){
67+
this.proxyDoesConnect();
68+
this.testMainProtocol();
69+
this.startRPCProxy();
70+
this.testSendHash();
71+
this.testSendData();
72+
this.testExitCommand();
73+
this.testMainProtocol();
74+
}
75+
76+
public void proxyDoesConnect()
77+
{
78+
assertTrue(this.proxy.isConnect());
79+
assertTrue("Status Info is not OK", this.proxy.easyreum.getBuilder().isStatusInfoOk());
80+
}
81+
public void startRPCProxy(){
82+
this.proxy.startCommand();
83+
assertTrue("Status Info is not OK", this.proxy.easyreum.getBuilder().isStatusInfoOk());
84+
}
85+
public void testSendHash(){
86+
assertTrue("Status Info is not OK", this.proxy.sendHashCommand("test"));
87+
}
88+
public void testSendData(){
89+
assertTrue("Status Info is not OK", this.proxy.sendPayload("Hola mundo") == 0);
90+
}
91+
public void testExitCommand(){
92+
this.proxy.exitCommand();
93+
// No unit test for this as not confirmation is given
94+
}
95+
public void testMainProtocol(){
96+
new Tfprotocol(this.proxy, new Callback()).echoCommand("hola mundo");
97+
assertTrue("Status Info is not OK", this.proxy.easyreum.getHeader() >= 0);
98+
}
99+
}

0 commit comments

Comments
 (0)