package io.craft.atom.rpc;
import io.craft.atom.rpc.spi.RpcApi;
import io.craft.atom.rpc.spi.RpcRegistry;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
/**
* RPC registry
*
* @author mindwind
* @version 1.0, Aug 12, 2014
*/
public class DefaultRpcRegistry implements RpcRegistry {
private Map<String, RpcApi> registry = new ConcurrentHashMap<String, RpcApi>();
@Override
public void register(RpcApi api) {
registry.put(api.getKey(), api);
}
@Override
public void unregister(RpcApi api) {
registry.remove(api.getKey());
}
@Override
public RpcApi lookup(RpcApi api) {
return registry.get(api.getKey());
}
@Override
public Set<RpcApi> apis() {
Set<RpcApi> apis = new TreeSet<RpcApi>(registry.values());
return Collections.unmodifiableSet(apis);
}
}