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

📄 payloademulator.ucjava

📁 High performance DB query
💻 UCJAVA
字号:
/* * @(#)$Id: PayloadEmulator.ucjava,v 1.7 2005/04/27 21:27:46 huebsch Exp $ * * Copyright (c) 2001-2003 Regents of the University of California. * All rights reserved. * * This file is distributed under the terms in the attached BERKELEY-LICENSE * file. If you do not find these files, copies can be found by writing to: * Computer Science Division, Database Group, Universite of California, * 617 Soda Hall #1776, Berkeley, CA 94720-1776. Attention: Berkeley License * * Copyright (c) 2003 Intel Corporation. All rights reserved. * * This file is distributed under the terms in the attached INTEL-LICENSE file. * If you do not find these files, copies can be found by writing to: * Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, * Berkeley, CA, 94704.  Attention:  Intel License Inquiry. */package overlay.location.bamboo;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.nio.ByteBuffer;import bamboo.lss.NioOutputBuffer;import bamboo.lss.NioInputBuffer;import ostore.network.NetworkMessage;import ostore.util.CountBuffer;import ostore.util.OutputBuffer;import ostore.util.InputBuffer;import services.network.Payload;import util.network.serialization.SerializationManager;import util.network.serialization.GenericByteBuffer;import util.network.serialization.DataByteBuffer;/** * Class PayloadEmulator * */public class PayloadEmulator implements Payload {    public static long serialVersionUID =	SerializationManager.getSerialUID(	    "overlay.location.bamboo.PayloadEmulator");    private NetworkMessage item;    /**     * Constructor PayloadEmulator     *     * @param item     */    public PayloadEmulator(NetworkMessage item) {	this.item = item;    }    /**     * Method getItem     * @return     */    public NetworkMessage getItem() {	return item;    }    /**     * Method getSize     * @return     */    public int getSize() {	CountBuffer cb = new CountBuffer();	cb.add(item);	return cb.size();    }    /**     * Method serialize     *     * @param byteBuffer     * @return     */    public long serialize(GenericByteBuffer byteBuffer) {	if (byteBuffer instanceof DataByteBuffer) {	    OutputBuffer ob =		new NioOutputBuffer(((DataByteBuffer) byteBuffer).theBuffer);	    ob.add(item);	} else {	    CountBuffer ob = new CountBuffer();	    ob.add(item);	    int limit = byteBuffer.limit();	    int position = byteBuffer.position();	    int size = ob.size();	    if (position + size >= limit) {		byteBuffer.limit(position + size);	    }	    byteBuffer.position(position + size);	}	return serialVersionUID;    }    /**     * Constructor PayloadEmulator     *     * @param buf     */    public PayloadEmulator(GenericByteBuffer buf) {	deSerialize(((DataByteBuffer) buf).theBuffer);    }    private void deSerialize(ByteBuffer buf) {	try {	    InputBuffer ib = new NioInputBuffer(buf);	    item = (NetworkMessage) ib.nextObject();	} catch (Exception exception) {	    throw new RuntimeException("Deserialize network message failed: "				       + exception.getClass()				       + exception.getMessage());	}    }    private void writeObject(ObjectOutputStream out) throws IOException {	ByteBuffer byteBuffer = ByteBuffer.allocate(getSize());	byteBuffer.position(0);	OutputBuffer ob = new NioOutputBuffer(byteBuffer);	ob.add(item);	int length = byteBuffer.position();	byteBuffer.position(0);	byte[] bytes = new byte[length];	byteBuffer.get(bytes, 0, length);	out.writeInt(length);	out.write(bytes);    }    private void readObject(ObjectInputStream in)	    throws IOException, ClassNotFoundException {	int length = in.readInt();	byte[] bytes = new byte[length];	in.read(bytes, 0, length);	ByteBuffer byteBuffer = ByteBuffer.allocate(length);	byteBuffer.put(bytes, 0, length);	byteBuffer.position(0);	deSerialize(byteBuffer);    }    /**     * Method toString     * @return     */    public String toString() {	return "<PayloadEmulator: Emulating: " + item + ">";    }}

⌨️ 快捷键说明

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