📄 attachment.java
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -