本文整理了Java中java.nio.ByteBuffer.flip()
方法的一些代码示例,展示了ByteBuffer.flip()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ByteBuffer.flip()
方法的具体详情如下:
包路径:java.nio.ByteBuffer
类名称:ByteBuffer
方法名:flip
暂无
代码示例来源:origin: google/guava
/**
* Flips the buffer output buffer so we can start reading bytes from it. If we are starting to
* drain because there was overflow, and there aren't actually any characters to drain, then the
* overflow must be due to a small output buffer.
*/
private void startDraining(boolean overflow) {
byteBuffer.flip();
if (overflow && byteBuffer.remaining() == 0) {
byteBuffer = ByteBuffer.allocate(byteBuffer.capacity() * 2);
} else {
draining = true;
}
}
代码示例来源:origin: iluwatar/java-design-patterns
/**
* Reads and returns {@link ByteBuffer} from the underlying {@link SocketChannel} represented by
* the <code>key</code>. Due to the fact that there is a dedicated channel for each client
* connection we don't need to store the sender.
*/
@Override
public ByteBuffer read(SelectionKey key) throws IOException {
SocketChannel socketChannel = (SocketChannel) key.channel();
ByteBuffer buffer = ByteBuffer.allocate(1024);
int read = socketChannel.read(buffer);
buffer.flip();
if (read == -1) {
throw new IOException("Socket closed");
}
return buffer;
}
代码示例来源:origin: google/guava
private void munch() {
buffer.flip();
while (buffer.remaining() >= chunkSize) {
// we could limit the buffer to ensure process() does not read more than
// chunkSize number of bytes, but we trust the implementations
process(buffer);
}
buffer.compact(); // preserve any remaining data that do not make a full chunk
}
}
代码示例来源:origin: apache/incubator-druid
@Override
public void decompress(ByteBuffer in, int numBytes, ByteBuffer out)
{
final ByteBuffer copyBuffer = in.duplicate();
copyBuffer.limit(copyBuffer.position() + numBytes);
out.put(copyBuffer).flip();
in.position(in.position() + numBytes);
}
代码示例来源:origin: runelite/runelite
private void ensureRemaining(int remaining)
{
while (remaining > buffer.remaining())
{
int newCapacity = buffer.capacity() * 2;
ByteBuffer old = buffer;
old.flip();
buffer = ByteBuffer.allocate(newCapacity);
buffer.put(old);
}
}
代码示例来源:origin: apache/kafka
/**
* Check if the given ByteBuffer capacity
* @param existingBuffer ByteBuffer capacity to check
* @param newLength new length for the ByteBuffer.
* returns ByteBuffer
*/
public static ByteBuffer ensureCapacity(ByteBuffer existingBuffer, int newLength) {
if (newLength > existingBuffer.capacity()) {
ByteBuffer newBuffer = ByteBuffer.allocate(newLength);
existingBuffer.flip();
newBuffer.put(existingBuffer);
return newBuffer;
}
return existingBuffer;
}
代码示例来源:origin: google/ExoPlayer
@Override
public void queueInput(ByteBuffer inputBuffer) {
Assertions.checkState(outputChannels != null);
int position = inputBuffer.position();
int limit = inputBuffer.limit();
int frameCount = (limit - position) / (2 * channelCount);
int outputSize = frameCount * outputChannels.length * 2;
if (buffer.capacity() < outputSize) {
buffer = ByteBuffer.allocateDirect(outputSize).order(ByteOrder.nativeOrder());
} else {
buffer.clear();
}
while (position < limit) {
for (int channelIndex : outputChannels) {
buffer.putShort(inputBuffer.getShort(position + 2 * channelIndex));
}
position += channelCount * 2;
}
inputBuffer.position(limit);
buffer.flip();
outputBuffer = buffer;
}
代码示例来源:origin: google/ExoPlayer
@Override
public void queueInput(ByteBuffer buffer) {
int remaining = buffer.remaining();
if (remaining == 0) {
return;
}
audioBufferSink.handleBuffer(buffer.asReadOnlyBuffer());
if (this.buffer.capacity() < remaining) {
this.buffer = ByteBuffer.allocateDirect(remaining).order(ByteOrder.nativeOrder());
} else {
this.buffer.clear();
}
this.buffer.put(buffer);
this.buffer.flip();
outputBuffer = this.buffer;
}
代码示例来源:origin: neo4j/neo4j
@Override
public void write( int b ) throws IOException
{
buffer.clear();
buffer.put( (byte) b );
buffer.flip();
channel.write( buffer );
}
代码示例来源:origin: jersey/jersey
void append(ByteBuffer b) {
if (buffer == null) {
buffer = ByteBuffer.allocate(b.remaining());
buffer.flip();
}
int newSize = buffer.limit() + b.remaining();
buffer = Utils.appendBuffers(buffer, b, newSize, 50);
}
}
代码示例来源:origin: android-hacker/VirtualXposed
private void flushBytes() throws IOException {
int position;
if ((position = mBytes.position()) > 0) {
mBytes.flip();
mOutputStream.write(mBytes.array(), 0, position);
mBytes.clear();
}
}
代码示例来源:origin: redisson/redisson
private void expand(int expandSize) {
snapshot();
ByteBuffer newBuff = (buffer.isDirect()
? ByteBuffer.allocateDirect(buffer.capacity() + expandSize)
: ByteBuffer.allocate(buffer.capacity() + expandSize));
buffer.flip();
newBuff.put(buffer);
buffer = newBuff;
reset();
}
代码示例来源:origin: libgdx/libgdx
void setup (byte[] pcm, int channels, int sampleRate) {
int bytes = pcm.length - (pcm.length % (channels > 1 ? 4 : 2));
int samples = bytes / (2 * channels);
duration = samples / (float)sampleRate;
ByteBuffer buffer = ByteBuffer.allocateDirect(bytes);
buffer.order(ByteOrder.nativeOrder());
buffer.put(pcm, 0, bytes);
buffer.flip();
if (bufferID == -1) {
bufferID = alGenBuffers();
alBufferData(bufferID, channels > 1 ? AL_FORMAT_STEREO16 : AL_FORMAT_MONO16, buffer.asShortBuffer(), sampleRate);
}
}
代码示例来源:origin: google/guava
/**
* This is invoked for the last bytes of the input, which are not enough to fill a whole chunk.
* The passed {@code ByteBuffer} is guaranteed to be non-empty.
*
* <p>This implementation simply pads with zeros and delegates to {@link #process(ByteBuffer)}.
*/
protected void processRemaining(ByteBuffer bb) {
bb.position(bb.limit()); // move at the end
bb.limit(chunkSize + 7); // get ready to pad with longs
while (bb.position() < chunkSize) {
bb.putLong(0);
}
bb.limit(chunkSize);
bb.flip();
process(bb);
}
代码示例来源:origin: apache/kafka
@Test
public void testParseUnknownVersion() {
ByteBuffer buffer = ByteBuffer.allocate(32);
buffer.putShort((short) 5);
buffer.putShort(ControlRecordType.ABORT.type);
buffer.putInt(23432); // some field added in version 5
buffer.flip();
ControlRecordType type = ControlRecordType.parse(buffer);
assertEquals(ControlRecordType.ABORT, type);
}
代码示例来源:origin: apache/kylin
@Override
public void run() throws Exception {
ByteBuffer buf = ByteBuffer.allocate(1024 * 1024);
long totalBytes = 0;
for (int i = 0; i < testTimes; i++) {
buf.clear();
newCounter.writeRegisters(buf);
totalBytes += buf.position();
buf.flip();
newCounter.readRegisters(buf);
}
System.out.println("new serialize bytes : " + totalBytes / testTimes + "B");
}
});
代码示例来源:origin: apache/kafka
private void doTestWriteToByteBuffer(ByteBuffer source, ByteBuffer dest) throws IOException {
int numBytes = source.remaining();
int position = source.position();
DataOutputStream out = new DataOutputStream(new ByteBufferOutputStream(dest));
Utils.writeTo(out, source, source.remaining());
dest.flip();
assertEquals(numBytes, dest.remaining());
assertEquals(position, source.position());
assertEquals(source, dest);
}
代码示例来源:origin: apache/kafka
@Test
public void testDirectBuffer() throws IOException {
byte[] compressed = compressedBytes();
ByteBuffer buffer;
buffer = ByteBuffer.allocateDirect(compressed.length);
buffer.put(compressed).flip();
testDecompression(buffer);
int offset = 42;
buffer = ByteBuffer.allocateDirect(compressed.length + offset + 123);
buffer.position(offset);
buffer.put(compressed).flip();
buffer.position(offset);
testDecompression(buffer);
}
代码示例来源:origin: google/ExoPlayer
/**
* Copies remaining bytes from {@code data} to populate a new output buffer from the processor.
*/
private void output(ByteBuffer data) {
prepareForOutput(data.remaining());
buffer.put(data);
buffer.flip();
outputBuffer = buffer;
}
代码示例来源:origin: apache/kafka
private void testWriteByteBuffer(ByteBuffer input) throws IOException {
long value = 234239230L;
input.putLong(value);
input.flip();
ByteBufferOutputStream output = new ByteBufferOutputStream(ByteBuffer.allocate(32));
output.write(input);
assertEquals(8, input.position());
assertEquals(8, output.position());
assertEquals(value, output.buffer().getLong(0));
output.close();
}
内容来源于网络,如有侵权,请联系作者删除!