
fr.lteconsulting.hexa.revrpc.server.RevRPCServices Maven / Gradle / Ivy
The newest version!
package fr.lteconsulting.hexa.revrpc.server;
import java.util.HashMap;
import fr.lteconsulting.hexa.revrpc.server.CallSerializer.SerializedCallReceiver;
public class RevRPCServices
{
public interface Callback
{
void newCall( JSONObject json );
}
private Callback callback;
public RevRPCServices( Callback callback )
{
this.callback = callback;
}
public T queryInterface( String serviceName, Class serviceInterface )
{
RevRPCService svc = services.get( serviceName );
if( svc == null )
{
svc = new RevRPCService( serviceName );
services.put( serviceName, svc );
}
T proxy = svc.serializer.queryBroadcastInterface( serviceInterface );
return proxy;
}
HashMap services = new HashMap();
class RevRPCService
{
public RevRPCService( String serviceName )
{
this.serviceName = serviceName;
}
String serviceName;
CallSerializer serializer = new CallSerializer( new SerializedCallReceiver()
{
public void newCall( Class> proxiedInterface, JSONObject obj )
{
JSONObject serviceCall = new JSONObject();
serviceCall.put( "service", serviceName );
serviceCall.put( "interface", proxiedInterface.getCanonicalName() );
serviceCall.put( "value", obj );
callback.newCall( serviceCall );
}
} );
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy