⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 idealcontact.java

📁 DTNSim2 is a simulator for Delay-Tolerant Networks (DTNs) written in Java. It is based on Sushant Ja
💻 JAVA
字号:
package implementations;import java.util.ArrayList;import simulator.Contact;import simulator.Message;import simulator.Event;import simulator.BasicEvent;import simulator.Stats;import util.CommandStatus;import util.Verbose;public class IdealContact extends Contact{	private boolean isUp = false;	private boolean isIdle = false;	public IdealContact()	{		super();	}	public IdealContact(IdealContact org)	{		super(org);	}	public double getLatency()	{		return 0;	}	public double getTransferTime(Message msg)	{		return 0;	}	public boolean isUp()	{		return isUp;	}	public boolean isIdle()	{		return isIdle;	}	public boolean sendMessage(Message msg)	{		if (!isUp || !isIdle)			return false;		isIdle = false;		// Delivery will be immediate, but we want to use event anyway, to avoid		// too loong recursions.		BasicEvent e = new BasicEvent(network.getCurrentTime(), this, CONTACT_MSG_SENT, msg);		if (network.vShouldLog(Verbose.DEBUG3))			network.vprint("C_MSG_SENDING: " + msg + " by " + this);		scheduleEvent(e);		return true;	}	public boolean contactUp()	{		if (isUp)			return false;		isUp = true;		isIdle = true;		if (network.vShouldLog(Verbose.NOTIFY))			network.vprint("C_UP: " + this);		dstNode.contactUp(this);		srcNode.contactUp(this);		srcNode.contactIdle(this);		return true;	}	public boolean contactDown()	{		if (!isUp)			return false;		isUp = false;		isIdle = false;		if (network.vShouldLog(Verbose.NOTIFY))			network.vprint("C_DOWN: " + this);		dstNode.contactDown(this);		srcNode.contactDown(this);		return true;	}	public CommandStatus parseCommandPart(ArrayList<String> part, String path)	{		String param = part.get(0);		CommandStatus ok = new CommandStatus(CommandStatus.COMMAND_OK);		if (param.equals("up"))		{			contactUp();			return ok;		}		else if (param.equals("down"))		{			contactDown();			return ok;		}		return null;	}	protected void receiveLocalEvent(Event event)	{		assert event != null;		BasicEvent e = (BasicEvent) event;		Message msg = e.getMessage();		assert msg != null;		if (e.getType() == CONTACT_MSG_SENT)		{			if (isUp)				isIdle = true;			if (network.vShouldLog(Verbose.DEBUG3))				network.vprint("C_MSG_SENT&DELIVERED: " + msg + " by " + this);			statCntEntry.setup(network.getCurrentTime(), Stats.CNT_MSG_SENT, this, msg);			network.stats().notify(statCntEntry);			// SENT should be BEFORE RECEIVED & IDLE			srcNode.messageSent(msg, this, msg.getLength());			dstNode.messageReceived(msg, this, msg.getLength());			if (isIdle)				srcNode.contactIdle(this);			srcNode.messageDelivered(msg, this, msg.getLength());		}		else		{			if (network.vShouldLog(Verbose.CRIT))				network.vprint("EVENT != MSG_SENT in IdealContact!");			assert false;		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -