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

📄 simplecontact.java

📁 DTNSim2 is a simulator for Delay-Tolerant Networks (DTNs) written in Java. It is based on Sushant Ja
💻 JAVA
字号:
/** * simulator/SimpleContact.java */package implementations;import java.util.ArrayList;import java.util.ListIterator;import simulator.BasicContact;import simulator.BasicEvent;import simulator.Message;import util.CommandStatus;/** *  */public class SimpleContact extends BasicContact{	private boolean hardDownPolicy = false;	protected ArrayList<BasicEvent> deliveryEvents = new ArrayList<BasicEvent>();	protected ArrayList<Message> messagesToDeliver = new ArrayList<Message>();	public SimpleContact()	{	}	public SimpleContact(SimpleContact org)	{		super(org);		hardDownPolicy = org.hardDownPolicy;	}	public void setHardDownPolicy(boolean p)	{		hardDownPolicy = p;	}	public void processEvent(int evType, BasicEvent event)	{		if (!hardDownPolicy				|| (evType != CONTACT_MSG_SENT && evType != CONTACT_MSG_DELIVERED && evType != CONTACT_DOWN))		{			super.processEvent(evType, event);			return;		}		if (evType == CONTACT_MSG_SENT)		{			assert event != null;			Message msg = event.getMessage();			assert msg != null;			assert isUp;			assert messageToSend == msg;			isIdle = true;			messageToSend = null;			BasicEvent e = new BasicEvent(timeToDeliver(msg), this, CONTACT_MSG_DELIVERED, msg);			messagesToDeliver.add(msg);			deliveryEvents.add(e);			scheduleEvent(e);			srcNode.messageSent(msg, this, msg.getLength());			srcNode.contactIdle(this);		}		else if (evType == CONTACT_DOWN)		{			if (!isUp)				return;			super.processEvent(evType, event);			ListIterator<BasicEvent> id = deliveryEvents.listIterator();			while (id.hasNext())			{				cancelEvent(id.next());				id.remove();			}			ListIterator<Message> im = messagesToDeliver.listIterator();			while (im.hasNext())			{				Message msg = im.next();				srcNode.messageDelivered(msg, this, 0);				im.remove();			}		}		else		// MSG_DELIVERED		{			assert evType == CONTACT_MSG_DELIVERED;			assert event != null;			Message msg = event.getMessage();			assert msg != null;			messagesToDeliver.remove(msg);			super.processEvent(evType, event);		}	}	public CommandStatus parseCommandPart(ArrayList<String> part, String path)	{		CommandStatus ret = super.parseCommandPart(part, path);		if (ret != null)			return ret;		if (part.size() == 2)		{			if (part.get(0).equals("down_policy"))			{				String val = part.get(1);				if (val.equals("hard"))				{					hardDownPolicy = true;					return new CommandStatus(CommandStatus.COMMAND_OK);				}				else if (val.equals("soft"))				{					hardDownPolicy = false;					return new CommandStatus(CommandStatus.COMMAND_OK);				}				return new CommandStatus("Invalid contact drop_policy: '" + val + "'.");			}		}		return null;	}}

⌨️ 快捷键说明

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