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

📄 channelbuffer.java

📁 在资料浩瀚的互联网中
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        		return i;    }    // 2000-06-05 Fixed    final long readLongLong() {                long l = (this.directBuffer.get() & 0xff)        | ((long) (this.directBuffer.get() & 0xff) << 8)        | ((long) (this.directBuffer.get() & 0xff) << 16)        | ((long) (this.directBuffer.get() & 0xff) << 24)        | ((long) (this.directBuffer.get() & 0xff) << 32)        | ((long) (this.directBuffer.get() & 0xff) << 40)        | ((long) (this.directBuffer.get() & 0xff) << 48)        | ((long) (this.directBuffer.get() & 0xff) << 56);        		//this.directBuffer.position(this.position);        		return l;    }    //    // Read a null-terminated string    //    // To avoid alloc'ing a new byte array, we    // do this by hand, rather than calling getNullTerminatedBytes()    //    final String readString() {                int len = 0;		int maxLen = getBufLength();		int oldPosition = getPosition();				while ((getPosition() < maxLen) && (this.directBuffer.get() != 0) ) {            len++;        }				setPosition(oldPosition);        String s = new String(bufferToArray(), getPosition(), len);                this.directBuffer.position(getPosition() + len + 1); // update cursor                      return s;    }    final String readString(String encoding) throws SQLException {               int len = 0;		int maxLen = getBufLength();		        while ((getPosition() < maxLen) && (this.directBuffer.get() != 0)) {            len++;        }        try {            return new String(bufferToArray(), getPosition(), len, encoding);        } catch (UnsupportedEncodingException uEE) {            throw new SQLException(Messages.getString("ChannelBuffer.0") //$NON-NLS-1$                + encoding + Messages.getString("ChannelBuffer.1"), SQLError.SQL_STATE_ILLEGAL_ARGUMENT); //$NON-NLS-1$        } finally {    		this.directBuffer.position(getPosition() + len + 1); // update cursor        }    }    final int readnBytes() {        int sw = this.directBuffer.get() & 0xff;		//this.directBuffer.position(this.position);		        switch (sw) {        case 1:            return this.directBuffer.get() & 0xff;        case 2:            return this.readInt();        case 3:            return this.readLongInt();        case 4:            return (int) this.readLong();        default:            return 255;        }    }    final void writeByte(byte b) throws SQLException {        ensureCapacity(1);        this.directBuffer.put(b);        this.dirty = true;    }    // Write a byte array    final void writeBytesNoNull(byte[] bytes) throws SQLException {        int len = bytes.length;        ensureCapacity(len);                this.directBuffer.put(bytes, 0, len);        this.dirty = true;    }    // Write a byte array with the given offset and length    final void writeBytesNoNull(byte[] bytes, int offset, int length)        throws SQLException {        ensureCapacity(length);                  this.directBuffer.put(bytes, offset, length);         this.dirty = true;    }        final void writeDouble(double d) throws SQLException {        long l = Double.doubleToLongBits(d);        writeLongLong(l);        this.dirty = true;    }    final void writeFieldLength(long length) throws SQLException {        if (length < 251) {            writeByte((byte) length);        } else if (length < 65536L) {            ensureCapacity(3);            writeByte((byte) 252);            writeInt((int) length);        } else if (length < 16777216L) {            ensureCapacity(4);            writeByte((byte) 253);            writeLongInt((int) length);        } else {            ensureCapacity(9);            writeByte((byte) 254);            writeLongLong(length);        }            }    final void writeFloat(float f) throws SQLException {    	ensureCapacity(4);    	        int i = Float.floatToIntBits(f);        this.directBuffer.put((byte) (i & 0xff));		this.directBuffer.put((byte) (i >>> 8));		this.directBuffer.put((byte) (i >>> 16));		this.directBuffer.put((byte) (i >>> 24));		this.dirty = true;    }    // 2000-06-05 Changed    final void writeInt(int i) throws SQLException {    	ensureCapacity(2);		this.directBuffer.put((byte) (i & 0xff));		this.directBuffer.put((byte) (i >>> 8));		this.dirty = true;    }    //	Write a String using the specified character    // encoding    final void writeLenBytes(byte[] b) throws SQLException {        int len = b.length;        ensureCapacity(len + 9);        writeFieldLength(len);        this.directBuffer.put(b, 0, len);        this.dirty = true;    }    //	Write a String using the specified character    // encoding    final void writeLenString(String s, String encoding, String serverEncoding,     		SingleByteCharsetConverter converter, boolean parserKnowsUnicode)        throws UnsupportedEncodingException, SQLException {        byte[] b = null;               if (converter != null) {            b = converter.toBytes(s);        } else {            b = StringUtils.getBytes(s, encoding, serverEncoding, parserKnowsUnicode);        }        int len = b.length;        ensureCapacity(len + 9);        writeFieldLength(len);        this.directBuffer.put(b, 0, len);              this.dirty = true;    }    // 2000-06-05 Changed    final void writeLong(long i) throws SQLException {    	ensureCapacity(4);    			this.directBuffer.put((byte) (i & 0xff));		this.directBuffer.put((byte) (i >>> 8));		this.directBuffer.put((byte) (i >>> 16));		this.directBuffer.put((byte) (i >>> 24));			this.dirty = true;    }    // 2000-06-05 Changed    final void writeLongInt(int i) throws SQLException {    	ensureCapacity(3);    			this.directBuffer.put((byte) (i & 0xff));		this.directBuffer.put((byte) (i >>> 8));		this.directBuffer.put((byte) (i >>> 16));		this.dirty = true;    }    final void writeLongLong(long i) throws SQLException {    	ensureCapacity(8);    			this.directBuffer.put((byte) (i & 0xff));		this.directBuffer.put((byte) (i >>> 8));		this.directBuffer.put((byte) (i >>> 16));		this.directBuffer.put((byte) (i >>> 24));		this.directBuffer.put((byte) (i >>> 32));		this.directBuffer.put((byte) (i >>> 40));		this.directBuffer.put((byte) (i >>> 48));		this.directBuffer.put((byte) (i >>> 56));		this.dirty = true;    }    // Write null-terminated string    final void writeString(String s) throws SQLException {        ensureCapacity((s.length() * 2) + 1);                writeStringNoNull(s);        this.directBuffer.put((byte) 0);        this.dirty = true;    }    // Write string, with no termination    final void writeStringNoNull(String s) throws SQLException {        int len = s.length();        ensureCapacity(len * 2);          this.directBuffer.put(s.getBytes(), 0, len);              this.dirty = true;    }    // Write a String using the specified character    // encoding    final void writeStringNoNull(String s, String encoding, String serverEncoding,    		boolean parserKnowsUnicode)        throws UnsupportedEncodingException, SQLException {        byte[] b = StringUtils.getBytes(s, encoding, serverEncoding, parserKnowsUnicode);        int len = b.length;        ensureCapacity(len);        this.directBuffer.put(b, 0, len);            this.dirty = true;    }    void setBufLength(int bufLengthToSet) {        this.bufLength = bufLengthToSet;        this.directBuffer.limit(this.bufLength);        this.dirty = true;    }    int getBufLength() {        return this.directBuffer.limit();    }	private byte[] bufferToArray() {		if (!this.dirty) {			return this.asBytes;		} else if (this.directBuffer.hasArray()) {			this.asBytes = this.directBuffer.array();			this.dirty = false;						return this.asBytes;		} else {			int bufferLength = this.directBuffer.limit();						this.asBytes = new byte[bufferLength];						int oldPosition = getPosition();						this.directBuffer.position(0);			this.directBuffer.get(this.asBytes, 0, bufferLength);			this.directBuffer.position(oldPosition);			this.dirty = false;						return this.asBytes;		}	}	int getCapacity() {		return this.directBuffer.capacity();	}	/* (non-Javadoc)	 * @see com.mysql.jdbc.Buffer#getBytes(int, int)	 */	byte[] getBytes(int offset, int len) {		byte[] b = new byte[len];        byte[] nioByteBuffer = bufferToArray();                 try {                	System.arraycopy(nioByteBuffer, offset, b, 0, len);        	//this.position += len; // update cursor			this.directBuffer.position((offset + len));        } catch (ArrayIndexOutOfBoundsException aiobex) {        	throw aiobex;        }		        return b;	}}

⌨️ 快捷键说明

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