org.springframework.core.io.buffer.DataBuffer#writePosition ( )源码实例Demo

下面列出了org.springframework.core.io.buffer.DataBuffer#writePosition ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: spring-analysis-note   文件: StringDecoder.java
/**
 * Find the given delimiter in the given data buffer.
 * @return the index of the delimiter, or -1 if not found.
 */
private static int indexOf(DataBuffer buffer, byte[] delimiter) {
	for (int i = buffer.readPosition(); i < buffer.writePosition(); i++) {
		int bufferPos = i;
		int delimiterPos = 0;
		while (delimiterPos < delimiter.length) {
			if (buffer.getByte(bufferPos) != delimiter[delimiterPos]) {
				break;
			}
			else {
				bufferPos++;
				boolean endOfBuffer = bufferPos == buffer.writePosition();
				boolean endOfDelimiter = delimiterPos == delimiter.length - 1;
				if (endOfBuffer && !endOfDelimiter) {
					return -1;
				}
			}
			delimiterPos++;
		}
		if (delimiterPos == delimiter.length) {
			return i - buffer.readPosition();
		}
	}
	return -1;
}
 
源代码2 项目: java-technology-stack   文件: StringDecoder.java
/**
 * Find the given delimiter in the given data buffer.
 * @return the index of the delimiter, or -1 if not found.
 */
private static int indexOf(DataBuffer dataBuffer, byte[] delimiter) {
	for (int i = dataBuffer.readPosition(); i < dataBuffer.writePosition(); i++) {
		int dataBufferPos = i;
		int delimiterPos = 0;
		while (delimiterPos < delimiter.length) {
			if (dataBuffer.getByte(dataBufferPos) != delimiter[delimiterPos]) {
				break;
			}
			else {
				dataBufferPos++;
				if (dataBufferPos == dataBuffer.writePosition() &&
						delimiterPos != delimiter.length - 1) {
					return -1;
				}
			}
			delimiterPos++;
		}
		if (delimiterPos == delimiter.length) {
			return i - dataBuffer.readPosition();
		}
	}
	return -1;
}
 
@Override
protected DataBuffer readFromInputStream() throws IOException {
	boolean release = true;
	int capacity = this.bufferSize;
	DataBuffer dataBuffer = this.factory.allocateBuffer(capacity);
	try {
		ByteBuffer byteBuffer = dataBuffer.asByteBuffer(0, capacity);
		ServletRequest request = getNativeRequest();
		int read = ((CoyoteInputStream) request.getInputStream()).read(byteBuffer);
		logBytesRead(read);
		if (read > 0) {
			dataBuffer.writePosition(read);
			release = false;
			return dataBuffer;
		}
		else if (read == -1) {
			return EOF_BUFFER;
		}
		else {
			return null;
		}
	}
	finally {
		if (release) {
			DataBufferUtils.release(dataBuffer);
		}
	}
}
 
private static String toString(DataBuffer dataBuffer) {
	byte[] bytes = new byte[dataBuffer.readableByteCount()];
	int j = 0;
	for (int i = dataBuffer.readPosition(); i < dataBuffer.writePosition(); i++) {
		bytes[j++] = dataBuffer.getByte(i);
	}
	return toString(bytes);
}
 
@Override
protected DataBuffer readFromInputStream() throws IOException {
	boolean release = true;
	int capacity = this.bufferSize;
	DataBuffer dataBuffer = this.factory.allocateBuffer(capacity);
	try {
		ByteBuffer byteBuffer = dataBuffer.asByteBuffer(0, capacity);
		ServletRequest request = getNativeRequest();
		int read = ((CoyoteInputStream) request.getInputStream()).read(byteBuffer);
		logBytesRead(read);
		if (read > 0) {
			dataBuffer.writePosition(read);
			release = false;
			return dataBuffer;
		}
		else if (read == -1) {
			return EOF_BUFFER;
		}
		else {
			return null;
		}
	}
	finally {
		if (release) {
			DataBufferUtils.release(dataBuffer);
		}
	}
}