mysqlresultsetpacket.java

来自「mysql集群」· Java 代码 · 共 101 行

JAVA
101
字号
package com.meidusa.amoeba.aladdin.io;

import java.util.ArrayList;
import java.util.List;

import com.meidusa.amoeba.mysql.net.packet.EOFPacket;
import com.meidusa.amoeba.mysql.net.packet.FieldPacket;
import com.meidusa.amoeba.mysql.net.packet.ResultSetHeaderPacket;
import com.meidusa.amoeba.mysql.net.packet.RowDataPacket;
import com.meidusa.amoeba.net.Connection;
import com.meidusa.amoeba.net.packet.AbstractPacketBuffer;
import com.meidusa.amoeba.net.packet.PacketBuffer;

/**
 * 
 * @author struct
 *
 */
public class MysqlResultSetPacket extends ErrorResultPacket {
	
	public ResultSetHeaderPacket resulthead;
	public FieldPacket[] fieldPackets;
	private List<RowDataPacket> rowList;
	private boolean isPrepared;
	
	public boolean isPrepared() {
		return isPrepared;
	}

	public void setPrepared(boolean isPrepared) {
		this.isPrepared = isPrepared;
	}

	private byte[] content;
	
	public void setContent(byte[] content) {
		this.content = content;
	}

	public MysqlResultSetPacket(String query){
		
	}
	
	public synchronized void addRowDataPacket(RowDataPacket row){
		if(rowList == null){
			rowList = new ArrayList<RowDataPacket>();
		}
		rowList.add(row);
	}
	
	/* (non-Javadoc)
	 * @see com.meidusa.amoeba.aladdin.io.ResultPacket#wirteToConnection(com.meidusa.amoeba.net.Connection)
	 */
	public void wirteToConnection(Connection conn){
		if(isError()){
			super.wirteToConnection(conn);
			return;
		}
		if(content != null){
			conn.postMessage(content);
			return;
		}
		
		PacketBuffer buffer = new AbstractPacketBuffer(2048);
		byte paketId = 1;
		resulthead.packetId = paketId++;
		
		//write header bytes
		AbstractPacketBuffer.appendBufferToWrite(resulthead.toByteBuffer(conn).array(),buffer,conn,false);
		
		//write fields bytes
		if(fieldPackets != null){
			for(int i=0;i<fieldPackets.length;i++){
				fieldPackets[i].packetId = paketId++;
				AbstractPacketBuffer.appendBufferToWrite(fieldPackets[i].toByteBuffer(conn).array(),buffer,conn,false);
			}
		}
		
		//write eof bytes
		EOFPacket eof = new EOFPacket();
		eof.serverStatus = 2;
		eof.warningCount = 0;
		eof.packetId = paketId++;
		AbstractPacketBuffer.appendBufferToWrite(eof.toByteBuffer(conn).array(),buffer,conn,false);
		
		if(rowList != null && rowList.size()>0){
			//write rows bytes
			for(RowDataPacket row : rowList){
				row.packetId = paketId++;
				AbstractPacketBuffer.appendBufferToWrite(row.toByteBuffer(conn).array(),buffer,conn,false);
			}
			
		}
		
		//write eof bytes
		eof.packetId = paketId++;
		AbstractPacketBuffer.appendBufferToWrite(eof.toByteBuffer(conn).array(),buffer,conn,true);
	}
	
}

⌨️ 快捷键说明

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