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

📄 mailmessage.java

📁 nachos操作系统框架
💻 JAVA
字号:
package nachos.network;import nachos.machine.*;/** * A mail message. Includes a packet header, a mail header, and the actual * payload. * * @see	nachos.machine.Packet */public class MailMessage {    /**     * Allocate a new mail message to be sent, using the specified parameters.     *     * @param	dstLink		the destination link address.     * @param	dstPort		the destination port.     * @param	srcLink		the source link address.     * @param	srcPort		the source port.     * @param	contents	the contents of the packet.     */    public MailMessage(int dstLink, int dstPort, int srcLink, int srcPort,		       byte[] contents) throws MalformedPacketException {	// make sure the paramters are valid	if (dstPort < 0 || dstPort >= portLimit ||	    srcPort < 0 || srcPort >= portLimit ||	    contents.length > maxContentsLength)	    throw new MalformedPacketException();	this.dstPort = (byte) dstPort;	this.srcPort = (byte) srcPort;	this.contents = contents;	byte[] packetContents = new byte[headerLength + contents.length];	packetContents[0] = (byte) dstPort;	packetContents[1] = (byte) srcPort;	System.arraycopy(contents, 0, packetContents, headerLength,			 contents.length);	packet = new Packet(dstLink, srcLink, packetContents);    }	    /**     * Allocate a new mail message using the specified packet from the network.     *     * @param	packet	the packet containg the mail message.     */    public MailMessage(Packet packet) throws MalformedPacketException {	this.packet = packet;		// make sure we have a valid header	if (packet.contents.length < headerLength ||	    packet.contents[0] < 0 || packet.contents[0] >= portLimit ||	    packet.contents[1] < 0 || packet.contents[1] >= portLimit)	    throw new MalformedPacketException();	dstPort = packet.contents[0];	srcPort = packet.contents[1];	contents = new byte[packet.contents.length - headerLength];	System.arraycopy(packet.contents, headerLength, contents, 0,			 contents.length);    }    /**     * Return a string representation of the message headers.     */    public String toString() {	return "from (" + packet.srcLink + ":" + srcPort +	    ") to (" + packet.dstLink + ":" + dstPort +	    "), " + contents.length + " bytes";    }        /** This message, as a packet that can be sent through a network link. */    public Packet packet;    /** The port used by this message on the destination machine. */    public int dstPort;    /** The port used by this message on the source machine. */    public int srcPort;    /** The contents of this message, excluding the mail message header. */    public byte[] contents;    /**     * The number of bytes in a mail header. The header is formatted as     * follows:     *     * <table>     * <tr><td>offset</td><td>size</td><td>value</td></tr>     * <tr><td>0</td><td>1</td><td>destination port</td></tr>     * <tr><td>1</td><td>1</td><td>source port</td></tr>     * </table>     */    public static final int headerLength = 2;    /** Maximum payload (real data) that can be included in a single mesage. */    public static final int maxContentsLength =	Packet.maxContentsLength - headerLength;    /**     * The upper limit on mail ports. All ports fall between <tt>0</tt> and     * <tt>portLimit - 1</tt>.     */        public static final int portLimit = 128;}

⌨️ 快捷键说明

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