view src/main/java/alice/datasegment/DataSegment.java @ 523:145c425db88d dispose

add CompressedLDSM
author Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
date Thu, 09 Apr 2015 18:36:26 +0900
parents b7d02ea79850
children 30a74eee59c7
line wrap: on
line source

package alice.datasegment;

import java.util.concurrent.ConcurrentHashMap;

import alice.daemon.IncomingTcpConnection;
import alice.datasegment.MulticastDataSegmentManager.SocketType;

public class DataSegment {

    private static DataSegment dataSegment = new DataSegment();
    private LocalDataSegmentManager local = new LocalDataSegmentManager();
    private CompressedLocalDataSegmentManager compressedLocal = new CompressedLocalDataSegmentManager();//追加
    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 CompressedLocalDataSegmentManager getCompressedLocal() {//追加
        return dataSegment.compressedLocal;
    }

    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, SocketType type){
        MulticastDataSegmentManager manager = new MulticastDataSegmentManager(connectionKey ,MCSTADDR,  port, nis, type);
        if (type!=SocketType.Receiver)
            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);
    }
}