All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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