attachment.java

来自「一个MMORPG手机游戏的服务器端程序源代码」· Java 代码 · 共 87 行

JAVA
87
字号
package zsw_mmorpg.common;import java.nio.ByteBuffer;import java.nio.BufferUnderflowException;import java.nio.ByteOrder;import org.apache.log4j.Logger;/** * Attachment.java * * 缓存 * * @author <a href="mailto:shiwei@raymobile.com">朱世伟</a> * @version 1.0 *//**缓存*/public class Attachment {    public static final int HEADER_SIZE = 12;    private static Logger log = Logger.getLogger("Attachment");    int clientId;    int payloadSize;    public int gameNameHash;    private boolean gotHeader;    public ByteBuffer readBuff;     public byte payload[];    public Attachment (){	payload = new byte[Globals.MAX_EVENT_SIZE];	readBuff = ByteBuffer.allocate(Globals.NET_BUFFER_SIZE);    readBuff.order(ByteOrder.LITTLE_ENDIAN);    }    public boolean eventReady() throws IllegalArgumentException {	if (checkHeader() && checkPayload())	    return true;	else	    return false;    }    public void reset() {	gotHeader = false;    }    private boolean checkHeader() throws IllegalArgumentException {	if (gotHeader) return true;	if (readBuff.remaining() >= HEADER_SIZE) {	    // read the header info//	    clientId = readBuff.getInt();     //没用//	    gameNameHash = readBuff.getInt();//没用	    payloadSize = readBuff.getInt();	    // check bounds on the payload	    if (payloadSize > Globals.MAX_EVENT_SIZE) 		throw new IllegalArgumentException("Header specifies payload size (" + 						   payloadSize + ") greater than MAX_EVENT_SIZE(" + 						   Globals.MAX_EVENT_SIZE + ")");	    gotHeader = true;	    return true;	}	else {	    return false;	}    }    private boolean checkPayload() {	if (readBuff.remaining() >= payloadSize) { 	    try {  		readBuff.get(payload, 0, payloadSize); 	    } 	    catch (BufferUnderflowException bue) { 		log.error("buffer underflow", bue); 	    }	    return true;	}	else {	    return false;	}    }}// Attachment

⌨️ 快捷键说明

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