view src/fdl/test/topology/FDLindaNode.java @ 97:0ea086f0e96f fuchita

main loop modification, for easy meta engine addition. add comments.
author one
date Wed, 26 May 2010 10:49:50 +0900
parents e8b757d7d0af
children 29ed7feebf2a
line wrap: on
line source

package fdl.test.topology;

import java.io.IOException;

import fdl.FDLindaServ;
import fdl.MetaLinda;
import fdl.MetaEngine;

/**
* FDLindaNode
*
* @author Kazuki Akamine
*
* Federated Linda の Topology Node
* 接続する機能までを実装 MetaEngine は外部から提供される
*  
*/

public class FDLindaNode extends FDLindaServ {
	// Fields
	private MetaLinda ml;
	private static int localPort = 10000;
	private static String managerHostName;
	private final static String usageString
		= "Usage: FDLindaNode -manager SERVERNAME";
	
	// Constructor
	public FDLindaNode(int port) throws IOException {
		super(port);
		this.ml = new MetaLinda(tupleSpace, this);
	}
	
	@Override public void mainLoop() {
		me.mainLoop(ml);
	}
	public void setMetaEngine(MetaEngine me) {
		this.me = me; 
	}
	public MetaLinda getMetaLinda() {
		return ml;
	}
	
	// main routine
	public static void main(String[] args) {
		for (int i = 0; i < args.length; i++) {
			if ("-manager".equals(args[i])) {
				managerHostName = args[++i];
			} else {
				System.err.println(usageString);
			}
		}
		try {
			FDLindaNode node = new FDLindaNode(localPort);
			MetaEngine me = new MetaProtocolEngine(node.getMetaLinda(), managerHostName);
			node.setMetaEngine(me);
			node.mainLoop();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}