view src/main/java/alice/datasegment/DataSegment.java @ 505:63b18091374c dispose

bug fix
author sugi
date Fri, 02 Jan 2015 15:43:41 +0900
parents 1b32ea1263f3
children b7d02ea79850
line wrap: on
line source

package alice.datasegment;

import java.util.concurrent.ConcurrentHashMap;

import alice.daemon.IncomingTcpConnection;

public class DataSegment {

    private static DataSegment dataSegment = new DataSegment();
    private LocalDataSegmentManager local = new LocalDataSegmentManager();
    private ConcurrentHashMap<String, DataSegmentManager> dataSegmentManagers = new ConcurrentHashMap<String, DataSegmentManager>(); //TODO Over Head
    private ConcurrentHashMap<String, IncomingTcpConnection> acceptHash = new ConcurrentHashMap<String, IncomingTcpConnection>();

    private DataSegment() {
        dataSegmentManagers.put("local", local);
    }

    public static DataSegmentManager get(String key) {
        return dataSegment.dataSegmentManagers.get(key);
    }

    public static LocalDataSegmentManager getLocal() {
        return dataSegment.local;
    }

    public static void register(String key, DataSegmentManager manager) {
        dataSegment.dataSegmentManagers.put(key, manager);
    }

    public static RemoteDataSegmentManager connect(String connectionKey, String reverseKey, String hostName, int port) {
        RemoteDataSegmentManager manager = new RemoteDataSegmentManager(connectionKey, reverseKey, hostName, port);
        register(connectionKey, manager);
        return manager;
    }

    public static MulticastDataSegmentManager connectMulticast(String connectionKey ,String MCSTADDR, int port, String nis){
        MulticastDataSegmentManager manager = new MulticastDataSegmentManager(connectionKey ,MCSTADDR,  port, nis);
        register(connectionKey, manager);
        return manager;
    }

    public static void setAccept(String key, IncomingTcpConnection incoming) {
        dataSegment.acceptHash.put(key, incoming);
    }

    public static IncomingTcpConnection getAccept(String key) {
        return dataSegment.acceptHash.get(key);
    }

    public static void remove(String key){
        dataSegment.dataSegmentManagers.remove(key);
    }

    public static boolean contains(String key){
        return dataSegment.dataSegmentManagers.containsKey(key);
    }
}