RpcFunctionSet.java
package eu.javaexperience.rpc;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
import eu.javaexperience.collection.map.RWLockMap;
import eu.javaexperience.datareprez.DataObject;
import eu.javaexperience.rpc.function.RpcFunctionParameter;
import eu.javaexperience.semantic.references.MayNotNull;
import eu.javaexperience.semantic.references.MayNull;
public class RpcFunctionSet<C extends RpcRequest, P extends RpcFunctionParameter, F extends RpcFunction<C, RpcFunctionParameter>>
{
protected RWLockMap<String, F> functions = new RWLockMap<>(new HashMap<String, F>());
protected @MayNull F findFunction(C ctx, String func)
{
return functions.get(func);
}
protected @MayNotNull Object unservedRequest(C ctx, String functionName, DataObject request)
{
throw new RuntimeException("Method "+functionName+" not found.");
}
public void addFunction(F function)
{
this.functions.put(function.getMethodName(), function);
}
public Set<Entry<String,F>> getMethodSet()
{
return functions.entrySet();
}
}