package com.github.yuriyao.FLRMI.FLRMIALImpl;
import java.util.HashMap;
import java.util.Map;
import com.github.yuriyao.FLRMI.FLRMIAL.ServiceCenter;
/**
* 实现服务中心
* 底层就是一个Map, 注册过程就是put进map, 获取服务就是从map中get
*
* @author fengjing.yfj
* @version $Id: ServiceCenterImpl.java, v 0.1 2014年1月27日 下午5:35:41 fengjing.yfj Exp $
*/
public class ServiceCenterImpl implements ServiceCenter {
/** 所有的服务: <PREFIX, <serviceName, serviceObject>> */
private static final Map<String, Map<Object, Object>> services = new HashMap<String, Map<Object, Object>>();
/** 单例 */
private static final ServiceCenterImpl SERVICE_CENTER_IMPL = new ServiceCenterImpl();
/**
* 默认的构造器
*/
private ServiceCenterImpl() {
}
/**
* 创建单例
*
* @return
*/
public static ServiceCenterImpl create() {
return SERVICE_CENTER_IMPL;
}
@Override
public synchronized void registerService(String prefix, Object mark, Object service) {
//创建服务前缀对应map
if (services.get(prefix) == null) {
services.put(prefix, new HashMap<Object, Object>());
}
//保存服务
services.get(prefix).put(mark, service);
}
@Override
public synchronized Object getService(String prefix, Object mark) {
Map<?, ?> map = services.get(prefix);
if (map == null) {
return null;
}
return map.get(mark);
}
@Override
public synchronized void registerServiceIfNotExist(String prefix, Object mark, Object service) {
if (services.get(prefix) != null && services.get(prefix).get(mark) != null) {
registerService(prefix, mark, service);
}
}
@Override
public synchronized void unregister(String prefix) {
services.remove(prefix);
}
@Override
public synchronized void unregister(String prefix, Object mark) {
if (services.get(prefix) != null) {
services.get(prefix).remove(mark);
}
}
}