view src/alice/datasegment/DataSegment.java @ 56:17f88fd202ae

refactor data segment
author kazz <kazz@cr.ie.u-ryukyu.ac.jp>
date Wed, 08 Feb 2012 14:31:16 +0900
parents 98ab26e09a98
children 7aaadd08288c
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 ConcurrentHashMap<String, DataSegmentManager> dataSegmentManageres = new ConcurrentHashMap<String, DataSegmentManager>();
	private ConcurrentHashMap<String, IncomingTcpConnection> acceptHash = new ConcurrentHashMap<String, IncomingTcpConnection>();
	
	private DataSegment() {
		dataSegmentManageres.put("local", new LocalDataSegmentManager());
	}
	
	public static DataSegmentManager get(String key) {
		return dataSegment.dataSegmentManageres.get(key);
	}
	
	public static void regist(String key, DataSegmentManager manager) {
		dataSegment.dataSegmentManageres.put(key, manager);
	}
	
	public static RemoteDataSegmentManager connect(String connectionKey, String reverseKey, String hostName, int port) {
		RemoteDataSegmentManager manager = new RemoteDataSegmentManager(connectionKey, reverseKey, hostName, port);
		regist(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);
	}
	
}