From 2144db427940e1d38b160392c87e4f64620ee749 Mon Sep 17 00:00:00 2001 From: "jerry.l" Date: Wed, 30 Jun 2021 23:16:15 +0800 Subject: [PATCH 1/4] avoid repeat flush when position finish --- src/com/esotericsoftware/kryo/io/OutputChunked.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/com/esotericsoftware/kryo/io/OutputChunked.java b/src/com/esotericsoftware/kryo/io/OutputChunked.java index 5786a9c51..7f80d553a 100644 --- a/src/com/esotericsoftware/kryo/io/OutputChunked.java +++ b/src/com/esotericsoftware/kryo/io/OutputChunked.java @@ -58,8 +58,9 @@ public void flush () throws KryoException { } catch (IOException ex) { throw new KryoException(ex); } + }else{ + super.flush(); } - super.flush(); } private void writeChunkSize () throws IOException { From 00da460d2309f3bfaad46488cd9d86ce472da721 Mon Sep 17 00:00:00 2001 From: "jerry.l" Date: Tue, 6 Jul 2021 11:40:19 +0800 Subject: [PATCH 2/4] format --- .../kryo/io/OutputChunked.java | 227 +++++++++--------- 1 file changed, 120 insertions(+), 107 deletions(-) diff --git a/src/com/esotericsoftware/kryo/io/OutputChunked.java b/src/com/esotericsoftware/kryo/io/OutputChunked.java index 7f80d553a..ad6c77ad0 100644 --- a/src/com/esotericsoftware/kryo/io/OutputChunked.java +++ b/src/com/esotericsoftware/kryo/io/OutputChunked.java @@ -1,107 +1,120 @@ -/* Copyright (c) 2008-2020, Nathan Sweet - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided with the distribution. - * - Neither the name of Esoteric Software nor the names of its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ - -package com.esotericsoftware.kryo.io; - -import static com.esotericsoftware.kryo.util.Util.*; -import static com.esotericsoftware.minlog.Log.*; - -import com.esotericsoftware.kryo.KryoException; - -import java.io.IOException; -import java.io.OutputStream; - -/** An {@link Output} that writes the length before each flush. The length allows the chunks to be skipped when reading. - * @author Nathan Sweet */ -public class OutputChunked extends Output { - /** @see Output#Output() */ - public OutputChunked () { - super(); - } - - /** @see Output#Output(int) */ - public OutputChunked (int bufferSize) { - super(bufferSize); - } - - /** @see Output#Output(OutputStream) */ - public OutputChunked (OutputStream outputStream) { - super(outputStream); - } - - /** @see Output#Output(OutputStream, int) */ - public OutputChunked (OutputStream outputStream, int bufferSize) { - super(outputStream, bufferSize); - } - - public void flush () throws KryoException { - if (position() > 0) { - try { - writeChunkSize(); - super.flush(); - } catch (IOException ex) { - throw new KryoException(ex); - } - }else{ - super.flush(); - } - } - - private void writeChunkSize () throws IOException { - int size = position(); - if (TRACE) trace("kryo", "Write chunk: " + size + pos(size)); - OutputStream outputStream = getOutputStream(); - if ((size & ~0x7F) == 0) { - outputStream.write(size); - return; - } - outputStream.write((size & 0x7F) | 0x80); - size >>>= 7; - if ((size & ~0x7F) == 0) { - outputStream.write(size); - return; - } - outputStream.write((size & 0x7F) | 0x80); - size >>>= 7; - if ((size & ~0x7F) == 0) { - outputStream.write(size); - return; - } - outputStream.write((size & 0x7F) | 0x80); - size >>>= 7; - if ((size & ~0x7F) == 0) { - outputStream.write(size); - return; - } - outputStream.write((size & 0x7F) | 0x80); - size >>>= 7; - outputStream.write(size); - } - - /** Marks the curent written data as the end of a chunk. This chunk can then be skipped when reading. */ - public void endChunk () { - flush(); - if (TRACE) trace("kryo", "End chunk."); - try { - getOutputStream().write(0); // Zero length chunk. - } catch (IOException ex) { - throw new KryoException(ex); - } - } -} +/* Copyright (c) 2008-2020, Nathan Sweet + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the distribution. + * - Neither the name of Esoteric Software nor the names of its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + +package com.esotericsoftware.kryo.io; + +import com.esotericsoftware.kryo.KryoException; + +import java.io.IOException; +import java.io.OutputStream; + +import static com.esotericsoftware.kryo.util.Util.pos; +import static com.esotericsoftware.minlog.Log.*; + +/** + * An {@link Output} that writes the length before each flush. The length allows the chunks to be skipped when reading. + * + * @author Nathan Sweet + */ +public class OutputChunked extends Output { + /** + * @see Output#Output() + */ + public OutputChunked() { + super(); + } + + /** + * @see Output#Output(int) + */ + public OutputChunked(int bufferSize) { + super(bufferSize); + } + + /** + * @see Output#Output(OutputStream) + */ + public OutputChunked(OutputStream outputStream) { + super(outputStream); + } + + /** + * @see Output#Output(OutputStream, int) + */ + public OutputChunked(OutputStream outputStream, int bufferSize) { + super(outputStream, bufferSize); + } + + public void flush() throws KryoException { + if (position() > 0) { + try { + writeChunkSize(); + super.flush(); + } catch (IOException ex) { + throw new KryoException(ex); + } + } else { + super.flush(); + } + } + + private void writeChunkSize() throws IOException { + int size = position(); + if (TRACE) trace("kryo", "Write chunk: " + size + pos(size)); + OutputStream outputStream = getOutputStream(); + if ((size & ~0x7F) == 0) { + outputStream.write(size); + return; + } + outputStream.write((size & 0x7F) | 0x80); + size >>>= 7; + if ((size & ~0x7F) == 0) { + outputStream.write(size); + return; + } + outputStream.write((size & 0x7F) | 0x80); + size >>>= 7; + if ((size & ~0x7F) == 0) { + outputStream.write(size); + return; + } + outputStream.write((size & 0x7F) | 0x80); + size >>>= 7; + if ((size & ~0x7F) == 0) { + outputStream.write(size); + return; + } + outputStream.write((size & 0x7F) | 0x80); + size >>>= 7; + outputStream.write(size); + } + + /** + * Marks the curent written data as the end of a chunk. This chunk can then be skipped when reading. + */ + public void endChunk() { + flush(); + if (TRACE) trace("kryo", "End chunk."); + try { + getOutputStream().write(0); // Zero length chunk. + } catch (IOException ex) { + throw new KryoException(ex); + } + } +} From 47be1a00f1282ff4f047222ccb15888ae41f2856 Mon Sep 17 00:00:00 2001 From: Thomas Heigl Date: Tue, 6 Jul 2021 10:51:06 +0200 Subject: [PATCH 3/4] Formatting --- .../kryo/io/OutputChunked.java | 165 ++++++++---------- 1 file changed, 76 insertions(+), 89 deletions(-) diff --git a/src/com/esotericsoftware/kryo/io/OutputChunked.java b/src/com/esotericsoftware/kryo/io/OutputChunked.java index ad6c77ad0..b58f3aad1 100644 --- a/src/com/esotericsoftware/kryo/io/OutputChunked.java +++ b/src/com/esotericsoftware/kryo/io/OutputChunked.java @@ -1,15 +1,15 @@ /* Copyright (c) 2008-2020, Nathan Sweet * All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following * conditions are met: - * + * * - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided with the distribution. * - Neither the name of Esoteric Software nor the names of its contributors may be used to endorse or promote products derived * from this software without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL @@ -19,102 +19,89 @@ package com.esotericsoftware.kryo.io; +import static com.esotericsoftware.kryo.util.Util.*; +import static com.esotericsoftware.minlog.Log.*; + import com.esotericsoftware.kryo.KryoException; import java.io.IOException; import java.io.OutputStream; -import static com.esotericsoftware.kryo.util.Util.pos; -import static com.esotericsoftware.minlog.Log.*; - -/** - * An {@link Output} that writes the length before each flush. The length allows the chunks to be skipped when reading. - * - * @author Nathan Sweet - */ +/** An {@link Output} that writes the length before each flush. The length allows the chunks to be skipped when reading. + * @author Nathan Sweet */ public class OutputChunked extends Output { - /** - * @see Output#Output() - */ - public OutputChunked() { - super(); - } + /** @see Output#Output() */ + public OutputChunked () { + super(); + } - /** - * @see Output#Output(int) - */ - public OutputChunked(int bufferSize) { - super(bufferSize); - } + /** @see Output#Output(int) */ + public OutputChunked (int bufferSize) { + super(bufferSize); + } - /** - * @see Output#Output(OutputStream) - */ - public OutputChunked(OutputStream outputStream) { - super(outputStream); - } + /** @see Output#Output(OutputStream) */ + public OutputChunked (OutputStream outputStream) { + super(outputStream); + } - /** - * @see Output#Output(OutputStream, int) - */ - public OutputChunked(OutputStream outputStream, int bufferSize) { - super(outputStream, bufferSize); - } + /** @see Output#Output(OutputStream, int) */ + public OutputChunked (OutputStream outputStream, int bufferSize) { + super(outputStream, bufferSize); + } - public void flush() throws KryoException { - if (position() > 0) { - try { - writeChunkSize(); - super.flush(); - } catch (IOException ex) { - throw new KryoException(ex); - } - } else { - super.flush(); - } - } + public void flush () throws KryoException { + if (position() > 0) { + try { + writeChunkSize(); + super.flush(); + } catch (IOException ex) { + throw new KryoException(ex); + } + } else { + super.flush(); + } + } - private void writeChunkSize() throws IOException { - int size = position(); - if (TRACE) trace("kryo", "Write chunk: " + size + pos(size)); - OutputStream outputStream = getOutputStream(); - if ((size & ~0x7F) == 0) { - outputStream.write(size); - return; - } - outputStream.write((size & 0x7F) | 0x80); - size >>>= 7; - if ((size & ~0x7F) == 0) { - outputStream.write(size); - return; - } - outputStream.write((size & 0x7F) | 0x80); - size >>>= 7; - if ((size & ~0x7F) == 0) { - outputStream.write(size); - return; - } - outputStream.write((size & 0x7F) | 0x80); - size >>>= 7; - if ((size & ~0x7F) == 0) { - outputStream.write(size); - return; - } - outputStream.write((size & 0x7F) | 0x80); - size >>>= 7; - outputStream.write(size); - } + private void writeChunkSize () throws IOException { + int size = position(); + if (TRACE) trace("kryo", "Write chunk: " + size + pos(size)); + OutputStream outputStream = getOutputStream(); + if ((size & ~0x7F) == 0) { + outputStream.write(size); + return; + } + outputStream.write((size & 0x7F) | 0x80); + size >>>= 7; + if ((size & ~0x7F) == 0) { + outputStream.write(size); + return; + } + outputStream.write((size & 0x7F) | 0x80); + size >>>= 7; + if ((size & ~0x7F) == 0) { + outputStream.write(size); + return; + } + outputStream.write((size & 0x7F) | 0x80); + size >>>= 7; + if ((size & ~0x7F) == 0) { + outputStream.write(size); + return; + } + outputStream.write((size & 0x7F) | 0x80); + size >>>= 7; + outputStream.write(size); + } - /** - * Marks the curent written data as the end of a chunk. This chunk can then be skipped when reading. - */ - public void endChunk() { - flush(); - if (TRACE) trace("kryo", "End chunk."); - try { - getOutputStream().write(0); // Zero length chunk. - } catch (IOException ex) { - throw new KryoException(ex); - } - } + /** Marks the curent written data as the end of a chunk. This chunk can then be skipped when reading. */ + public void endChunk () { + flush(); + if (TRACE) trace("kryo", "End chunk."); + try { + getOutputStream().write(0); // Zero length chunk. + } catch (IOException ex) { + throw new KryoException(ex); + } + } } From 0c4f854ee9d9ca0b0c21ad51005908bc34cd6331 Mon Sep 17 00:00:00 2001 From: Thomas Heigl Date: Tue, 6 Jul 2021 10:58:52 +0200 Subject: [PATCH 4/4] Formatting --- src/com/esotericsoftware/kryo/io/OutputChunked.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/esotericsoftware/kryo/io/OutputChunked.java b/src/com/esotericsoftware/kryo/io/OutputChunked.java index b58f3aad1..74d912c77 100644 --- a/src/com/esotericsoftware/kryo/io/OutputChunked.java +++ b/src/com/esotericsoftware/kryo/io/OutputChunked.java @@ -94,7 +94,7 @@ private void writeChunkSize () throws IOException { outputStream.write(size); } - /** Marks the curent written data as the end of a chunk. This chunk can then be skipped when reading. */ + /** Marks the current written data as the end of a chunk. This chunk can then be skipped when reading. */ public void endChunk () { flush(); if (TRACE) trace("kryo", "End chunk.");