view src/alice/codesegment/OutputDataSegment.java @ 254:2ec10cfa8cc3

refactor
author sugi
date Mon, 01 Jul 2013 20:00:07 +0900
parents 1fd7067f0044
children b4690114a0cd
line wrap: on
line source

package alice.codesegment;

import java.io.IOException;


import org.msgpack.type.Value;
import org.msgpack.type.ValueFactory;

import alice.datasegment.DataSegment;
import alice.datasegment.Receiver;

public class OutputDataSegment {

	/**
	 * for local
	 */

	public void flip(Receiver receiver) {
		receiver.managerKey=null;
		DataSegment.getLocal().putObject(receiver.key, receiver.getObj());
	}

	public void put(String key, String val) {
		DataSegment.getLocal().putObject(key, val);
	}

	public void put(String key, byte[] val) {
		DataSegment.getLocal().putObject(key, val);
	}

	public void put(String key, int val) {
		DataSegment.getLocal().putObject(key, val);
	}

	public <T> void put(String key, T val) {
		DataSegment.getLocal().putObject(key, val);
	}

	public void update(String key, String val) {
		DataSegment.getLocal().updateObject(key, val);
	}

	public void update(String key, byte[] val) {
		DataSegment.getLocal().updateObject(key, val);
	}

	public void update(String key, int val) {
		DataSegment.getLocal().updateObject(key, val);
	}

	public <T> void update(String key, T val) {
		DataSegment.getLocal().updateObject(key, val);
	}


	/**
	 * for remote
	 */

	public void put(String managerKey, String key, Value val) {
		DataSegment.get(managerKey).put(key, val);
	}

	public void put(String managerKey, String key, String val) {
		if (!managerKey.equals("local")){
			DataSegment.get(managerKey).put(key, ValueFactory.createRawValue(val));
		} else {
			put(key, val);
		}

	}

	public void put(String managerKey, String key, byte[] val) {
		if (!managerKey.equals("local")){
			DataSegment.get(managerKey).put(key, ValueFactory.createRawValue(val, true));
		} else {
			put(key, val);
		}
	}

	public void put(String managerKey, String key, int val) {
		if (!managerKey.equals("local")){
			DataSegment.get(managerKey).put(key, ValueFactory.createIntegerValue(val));
		} else {
			put(key, val);
		}
	}

	public <T> void put(String managerKey, String key, T val) {
		if (!managerKey.equals("local")){
			try {
				DataSegment.get(managerKey).put(key, SingletonMessage.getInstance().unconvert(val));
			} catch (IOException e) {
				e.printStackTrace();
			}
		} else {
			put(key, val);
		}
	}

	public void update(String managerKey, String key, Value val) {
		DataSegment.get(managerKey).update(key, val);
	}

	public void update(String managerKey, String key, String val) {
		if (!managerKey.equals("local")){
			DataSegment.get(managerKey).update(key, ValueFactory.createRawValue(val));
		} else {
			update(key, val);
		}
	}

	public void update(String managerKey, String key, byte[] val) {
		if (!managerKey.equals("local")){
			DataSegment.get(managerKey).update(key, ValueFactory.createRawValue(val, true));
		} else {
			update(key, val);
		}
	}

	public void update(String managerKey, String key, int val) {
		if (!managerKey.equals("local")){
			DataSegment.get(managerKey).update(key, ValueFactory.createIntegerValue(val));
		} else {
			update(key, val);
		}
	}

	public <T> void update(String managerKey, String key, T val) {
		if (!managerKey.equals("local")){
			try {
				DataSegment.get(managerKey).update(key, SingletonMessage.getInstance().unconvert(val));
			} catch (IOException e) {
				e.printStackTrace();
			}
		} else {
			update(key, val);
		}
	}

	/**
	 * kill the Alice process after send other messages.
	 * 
	 * @param managerKey
	 */

	public void finish(String managerKey) {
		DataSegment.get(managerKey).finish();
	}

	/**
	 * close socket for RemoteDataSegment after send other messages.
	 * 
	 * @param managerKey
	 */

	public void close(String managerKey) {
		DataSegment.get(managerKey).close();
	}





}