TestRpcQueue.java
package eu.javaexperience.rpc.external_lang.java;
import eu.javaexperience.reflect.Mirror;
import eu.javaexperience.rpc.bidirectional.BidirectionalRpcDefaultProtocol;
import eu.javaexperience.rpc.javaclient.JavaRpcClientTools;
import eu.javaexperience.rpc.javaclient.JavaRpcParallelClient;
import eu.javaexperience.text.StringTools;
public class TestRpcQueue
{
public interface QueueStorageExampleApi
{
public String sessionTryGetOrNull();
public String staticPeek();
public void staticClear();
public void sessionAdd(String a);
public String sessionPeek();
public String staticGetValuable();
public void staticAdd(String a);
public String sessionGetValuable();
public String[] sessionGetAll();
public String[] staticGetAll();
public void sessionClear();
public String staticTryGetOrNull();
}
public static void main(String[] args) throws Throwable
{
JavaRpcParallelClient cli = JavaRpcClientTools.createClientWithIpPort("127.0.0.1", 3000, BidirectionalRpcDefaultProtocol.DEFAULT_PROTOCOL_HANDLER_WITH_CLASS);
cli.getServerEventMediator().addEventListener((o)->System.out.println("Unhandled package: "+o.getImpl()));
QueueStorageExampleApi api = cli.createApiObject(QueueStorageExampleApi.class, "QueueStorageExampleApi");
for(int i=0;i<30;++i)
{
startPopThread(cli);
startAddThread(api);
}
}
protected static void startAddThread(QueueStorageExampleApi api)
{
new Thread()
{
@Override
public void run()
{
while(true)
{
try
{
Thread.sleep(500);
}
catch (InterruptedException e)
{
Mirror.propagateAnyway(e);
}
api.staticAdd(StringTools.randomString(10));
}
}
}.start();
}
protected static void startPopThread(JavaRpcParallelClient cli)
{
new Thread()
{
public void run()
{
while(true)
{
QueueStorageExampleApi api = cli.createApiObject(QueueStorageExampleApi.class, "QueueStorageExampleApi");
try
{
Thread.sleep(500);
}
catch (InterruptedException e)
{
Mirror.propagateAnyway(e);
}
String val = api.staticTryGetOrNull();
//if(null != val)
{
System.out.println("Pop value: "+val);
}
}
};
}.start();
}
}