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 + -
显示快捷键?