Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (102)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (322)
Collections:
Other Resources:
Source Code for Connector/J 8.0.31 - Protocol Impl
Where to get the Java source code for Connector/J 8.0 Protocol Impl module?
✍: FYIcenter.com
Java source code files for Connector/J 8.0 Protocol Impl module are:
⏎ com/mysql/cj/protocol/x/ConfinedInputStream.java
/*
* Copyright (c) 2020, Oracle and/or its affiliates.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, version 2.0, as published by the
* Free Software Foundation.
*
* This program is also distributed with certain software (including but not
* limited to OpenSSL) that is licensed under separate terms, as designated in a
* particular file or component or in included license documentation. The
* authors of MySQL hereby grant you an additional permission to link the
* program and your derivative works with the separately licensed software that
* they have included with MySQL.
*
* Without limiting anything contained in the foregoing, this file, which is
* part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
* version 1.0, a copy of which can be found at
* http://oss.oracle.com/licenses/universal-foss-exception.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License, version 2.0,
* for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
package com.mysql.cj.protocol.x;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* An {@link InputStream} wrapper that limits the number of bytes that can be read form the underlying {@link InputStream}.
*/
public class ConfinedInputStream extends FilterInputStream {
private int limit = 0;
private int consumed = 0;
private boolean closed = false;
protected ConfinedInputStream(InputStream in) {
this(in, 0);
}
protected ConfinedInputStream(InputStream in, int lim) {
super(in);
this.limit = lim;
this.consumed = 0;
}
/**
* Returns the number of bytes not yet consumed. Note that this method doen't care about the exact number of bytes that may or may not be available in the
* underlying {@link InputStream}
*
* @return the number of bytes available.
* @see FilterInputStream#available()
*/
@Override
public int available() throws IOException {
ensureOpen();
return this.limit - this.consumed;
}
/**
* Closes this stream and throws away any bytes not consumed from the underlying {@link InputStream}.
*
* @see FilterInputStream#close()
*/
@Override
public void close() throws IOException {
// Just make sure no more bytes are left on the underlying InputStream.
// It's up to the InputStream higher in the chain to close the underlying InputStream.
if (!this.closed) {
dumpLeftovers();
this.closed = true;
}
}
/**
* @see FilterInputStream#read()
*/
@Override
public int read() throws IOException {
ensureOpen();
int read = super.read();
if (read >= 0) {
this.consumed++;
}
return read;
}
/**
* Forwards the read to {@link #read(byte[], int, int)}.
*
* @see FilterInputStream#read(byte[])
*/
@Override
public int read(byte[] b) throws IOException {
ensureOpen();
return read(b, 0, b.length);
}
/**
* Reads bytes from the underlying {@link InputStream} up to the number of bytes defined in this {@link ConfinedInputStream} limit.
*
* @see FilterInputStream#read(byte[], int, int)
*/
@Override
public int read(byte[] b, int off, int len) throws IOException {
ensureOpen();
if (this.consumed >= this.limit) {
return -1;
}
int toRead = Math.min(len, available());
int read = super.read(b, off, toRead);
if (read > 0) {
this.consumed += read;
}
return read;
}
/**
* Resets this {@link ConfinedInputStream} limit so that it can be reused over the same underlying {@link InputStream}.
*
* @param len
* the new length to set.
* @return
* the number of bytes not consumed before reseting the limit.
*/
public int resetLimit(int len) {
int remaining = 0;
try {
remaining = available();
} catch (IOException e) {
// Won't happen.
}
this.limit = len;
this.consumed = 0;
return remaining;
}
/**
* Skips the number bytes not yet consumed from the underlying {@link InputStream}.
*
* @return the number of bytes skipped.
* @throws IOException
* if any of the underlying I/O operations fail.
*/
protected long dumpLeftovers() throws IOException {
long skipped = skip(available());
this.consumed += skipped;
return skipped;
}
/**
* Ensures that this {@link InputStream} wasn't closed yet.
*
* @throws IOException
* if this {@link InputStream} was closed.
*/
private void ensureOpen() throws IOException {
if (this.closed) {
throw new IOException("Stream closed");
}
}
}
⏎ com/mysql/cj/protocol/x/ConfinedInputStream.java
Or download all of them as a single archive file:
File name: mysql-connector-java-protocol-impl-8.0.31.zip File size: 284191 bytes Release date: 2022-09-03 Download
⇒ Source Code for Connector/J 8.0.31 - User API
⇐ Source Code for Connector/J 8.0.31 - Core Impl
2023-05-31, ≈27🔥, 0💬
Popular Posts:
How to download and install JDK (Java Development Kit) 8? If you want to write Java applications, yo...
How to read XML document with DTD validation from socket connections with the socket\DelayedInput.ja.. .
The Java Naming and Directory Interface (JNDI) is part of the Java platform, providing applications ...
Guava is a suite of core and expanded libraries that include utility classes, google's collections, ...
What Is wstx-asl-3.2.8.jar? wstx-asl-3.2.8.jar is JAR file for the ASL component of Woodstox 3.2.8. ...