view src/fdl/test/topology/ring/RingTopologyManagerEngine.java @ 80:04bd4ae97e7c

RingTopology is finished.
author one
date Sun, 22 Nov 2009 13:59:05 +0900
parents 4fd2d1094bb9
children c001797f3fdb
line wrap: on
line source

package fdl.test.topology.ring;

import java.io.IOException;
import java.nio.ByteBuffer;
import java.text.SimpleDateFormat;
import java.util.Date;

import fdl.MetaLinda;
import fdl.PSXReply;
import fdl.test.topology.TopologyManagerEngine;

public class RingTopologyManagerEngine extends TopologyManagerEngine {
	private int relayId = 10;

	// Constructor
	public RingTopologyManagerEngine(MetaLinda ml, int nodeNum) {
		super(ml, nodeNum);
	}
	
	public void mainLoop() {
		super.mainLoop();
		startRelay();
		endRelay();
	}
	
	protected void makeTopology() {
		super.makeTopology();
	}
	
	@Override protected void makeConnection() {
		// Ring 状の接続を定義
		for (int i = 0; i < nodes.length; i++) {
			nodes[i].addConnection(nodes[(i+1)%nodes.length]);
		}
	}
	
	private void startRelay() {
		String relayString = "test";
		ByteBuffer data = ByteBuffer.wrap(relayString.getBytes());
		nodes[0].linda.out(relayId, data);
		try {
			nodes[0].linda.sync(1);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	private void endRelay() {
		PSXReply reply;
		reply = manager.in(relayId);
		do {
			try {
				manager.sync(1);
			} catch (IOException e) {
				e.printStackTrace();
			}
		} while (!reply.ready());
		ByteBuffer data = reply.getData();
		String resultData = new String(data.array());
		System.out.println("[DEBUG] RelayTime: " + resultData);
	}

}