NightOwl888 commented on code in PR #1170:
URL: https://github.com/apache/lucenenet/pull/1170#discussion_r2310692667


##########
src/Lucene.Net/Support/IO/StreamExtensions.cs:
##########
@@ -210,5 +214,177 @@ public static long ReadInt64(this Stream stream)
                              buff[6] << 16 | buff[7] << 24);
             return (long)((ulong)hi) << 32 | lo;
         }
+
+        //async versions of the above methods
+        public static async Task WriteInt32BigEndianAsync(this Stream output, 
int value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+
+            byte[] buff = new byte[4];
+            buff[0] = (byte)(value >> 24);
+            buff[1] = (byte)(value >> 16);
+            buff[2] = (byte)(value >> 8);
+            buff[3] = (byte)value;
+
+            await output.WriteAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+        }
+
+        public static async Task WriteInt64BigEndianAsync(this Stream output, 
long value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+
+            byte[] buff = new byte[8];
+            buff[0] = (byte)(value >> 56);
+            buff[1] = (byte)(value >> 48);
+            buff[2] = (byte)(value >> 40);
+            buff[3] = (byte)(value >> 32);
+            buff[4] = (byte)(value >> 24);
+            buff[5] = (byte)(value >> 16);
+            buff[6] = (byte)(value >> 8);
+            buff[7] = (byte)value;
+
+            await output.WriteAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+        }
+
+        public static async Task WriteUTFAsync(this Stream output, string 
value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+            if (value is null)
+                throw new ArgumentNullException(nameof(value));
+
+            long utfCount = CountUTFBytes(value);
+            if (utfCount > ushort.MaxValue)
+                throw new EncoderFallbackException("Encoded string too long.");
+
+            byte[] buffer = ArrayPool<byte>.Shared.Rent((int)utfCount + 2);
+            try
+            {
+                int offset = 0;
+                offset = WriteInt16BigEndianToBuffer((int)utfCount, buffer, 
offset);
+                offset = WriteUTFBytesToBuffer(value, (int)utfCount, buffer, 
offset);
+
+                await output.WriteAsync(buffer, 0, offset, 
cancellationToken).ConfigureAwait(false);
+            }
+            finally
+            {
+                ArrayPool<byte>.Shared.Return(buffer);
+            }
+        }
+        public static async Task<int> ReadInt32BigEndianAsync(this Stream 
input, CancellationToken cancellationToken = default)

Review Comment:
   Please port the test(s) from J2N:
   
   
https://github.com/NightOwl888/J2N/blob/main/tests/NUnit/J2N.Tests/IO/TestDataInputStream.cs#L491-L498



##########
src/Lucene.Net/Support/IO/StreamExtensions.cs:
##########
@@ -210,5 +214,177 @@ public static long ReadInt64(this Stream stream)
                              buff[6] << 16 | buff[7] << 24);
             return (long)((ulong)hi) << 32 | lo;
         }
+
+        //async versions of the above methods
+        public static async Task WriteInt32BigEndianAsync(this Stream output, 
int value, CancellationToken cancellationToken = default)

Review Comment:
   Please port the test(s) from J2N:
   
   
https://github.com/NightOwl888/J2N/blob/main/tests/NUnit/J2N.Tests/IO/TestDataOutputStream.cs#L206-L215



##########
src/Lucene.Net/Support/IO/StreamExtensions.cs:
##########
@@ -210,5 +214,177 @@ public static long ReadInt64(this Stream stream)
                              buff[6] << 16 | buff[7] << 24);
             return (long)((ulong)hi) << 32 | lo;
         }
+
+        //async versions of the above methods
+        public static async Task WriteInt32BigEndianAsync(this Stream output, 
int value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+
+            byte[] buff = new byte[4];
+            buff[0] = (byte)(value >> 24);
+            buff[1] = (byte)(value >> 16);
+            buff[2] = (byte)(value >> 8);
+            buff[3] = (byte)value;
+
+            await output.WriteAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+        }
+
+        public static async Task WriteInt64BigEndianAsync(this Stream output, 
long value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+
+            byte[] buff = new byte[8];
+            buff[0] = (byte)(value >> 56);
+            buff[1] = (byte)(value >> 48);
+            buff[2] = (byte)(value >> 40);
+            buff[3] = (byte)(value >> 32);
+            buff[4] = (byte)(value >> 24);
+            buff[5] = (byte)(value >> 16);
+            buff[6] = (byte)(value >> 8);
+            buff[7] = (byte)value;
+
+            await output.WriteAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+        }
+
+        public static async Task WriteUTFAsync(this Stream output, string 
value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+            if (value is null)
+                throw new ArgumentNullException(nameof(value));
+
+            long utfCount = CountUTFBytes(value);
+            if (utfCount > ushort.MaxValue)
+                throw new EncoderFallbackException("Encoded string too long.");
+
+            byte[] buffer = ArrayPool<byte>.Shared.Rent((int)utfCount + 2);
+            try
+            {
+                int offset = 0;
+                offset = WriteInt16BigEndianToBuffer((int)utfCount, buffer, 
offset);
+                offset = WriteUTFBytesToBuffer(value, (int)utfCount, buffer, 
offset);
+
+                await output.WriteAsync(buffer, 0, offset, 
cancellationToken).ConfigureAwait(false);
+            }
+            finally
+            {
+                ArrayPool<byte>.Shared.Return(buffer);
+            }
+        }
+        public static async Task<int> ReadInt32BigEndianAsync(this Stream 
input, CancellationToken cancellationToken = default)
+        {
+            if (input is null)
+                throw new ArgumentNullException(nameof(input));
+
+            byte[] buff = new byte[4];
+            int read = await input.ReadAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+            if (read < buff.Length) throw new EndOfStreamException();
+
+            return (buff[0] << 24) | (buff[1] << 16) | (buff[2] << 8) | 
buff[3];
+        }
+
+        public static async Task<long> ReadInt64BigEndianAsync(this Stream 
input, CancellationToken cancellationToken = default)
+        {
+            if (input is null)
+                throw new ArgumentNullException(nameof(input));
+
+            byte[] buff = new byte[8];
+            int read = await input.ReadAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+            if (read < buff.Length) throw new EndOfStreamException();
+
+            return ((long)buff[0] << 56) |
+                   ((long)buff[1] << 48) |
+                   ((long)buff[2] << 40) |
+                   ((long)buff[3] << 32) |
+                   ((long)buff[4] << 24) |
+                   ((long)buff[5] << 16) |
+                   ((long)buff[6] << 8) |
+                   buff[7];
+        }
+
+        public static async Task<string> ReadUTFAsync(this Stream input, 
CancellationToken cancellationToken = default)

Review Comment:
   Please port the test(s) from J2N:
   
   
https://github.com/NightOwl888/J2N/blob/main/tests/NUnit/J2N.Tests/IO/TestDataInputStream.cs#L564-L573



##########
src/Lucene.Net/Support/IO/StreamExtensions.cs:
##########
@@ -210,5 +214,177 @@ public static long ReadInt64(this Stream stream)
                              buff[6] << 16 | buff[7] << 24);
             return (long)((ulong)hi) << 32 | lo;
         }
+
+        //async versions of the above methods
+        public static async Task WriteInt32BigEndianAsync(this Stream output, 
int value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+
+            byte[] buff = new byte[4];
+            buff[0] = (byte)(value >> 24);
+            buff[1] = (byte)(value >> 16);
+            buff[2] = (byte)(value >> 8);
+            buff[3] = (byte)value;
+
+            await output.WriteAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+        }
+
+        public static async Task WriteInt64BigEndianAsync(this Stream output, 
long value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+
+            byte[] buff = new byte[8];
+            buff[0] = (byte)(value >> 56);
+            buff[1] = (byte)(value >> 48);
+            buff[2] = (byte)(value >> 40);
+            buff[3] = (byte)(value >> 32);
+            buff[4] = (byte)(value >> 24);
+            buff[5] = (byte)(value >> 16);
+            buff[6] = (byte)(value >> 8);
+            buff[7] = (byte)value;
+
+            await output.WriteAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+        }
+
+        public static async Task WriteUTFAsync(this Stream output, string 
value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+            if (value is null)
+                throw new ArgumentNullException(nameof(value));
+
+            long utfCount = CountUTFBytes(value);
+            if (utfCount > ushort.MaxValue)
+                throw new EncoderFallbackException("Encoded string too long.");
+
+            byte[] buffer = ArrayPool<byte>.Shared.Rent((int)utfCount + 2);
+            try
+            {
+                int offset = 0;
+                offset = WriteInt16BigEndianToBuffer((int)utfCount, buffer, 
offset);
+                offset = WriteUTFBytesToBuffer(value, (int)utfCount, buffer, 
offset);
+
+                await output.WriteAsync(buffer, 0, offset, 
cancellationToken).ConfigureAwait(false);
+            }
+            finally
+            {
+                ArrayPool<byte>.Shared.Return(buffer);
+            }
+        }
+        public static async Task<int> ReadInt32BigEndianAsync(this Stream 
input, CancellationToken cancellationToken = default)
+        {
+            if (input is null)
+                throw new ArgumentNullException(nameof(input));
+
+            byte[] buff = new byte[4];
+            int read = await input.ReadAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+            if (read < buff.Length) throw new EndOfStreamException();
+
+            return (buff[0] << 24) | (buff[1] << 16) | (buff[2] << 8) | 
buff[3];
+        }
+
+        public static async Task<long> ReadInt64BigEndianAsync(this Stream 
input, CancellationToken cancellationToken = default)

Review Comment:
   Please port the test(s) from J2N:
   
   
https://github.com/NightOwl888/J2N/blob/main/tests/NUnit/J2N.Tests/IO/TestDataInputStream.cs#L516-L523



##########
src/Lucene.Net/Support/IO/StreamExtensions.cs:
##########
@@ -210,5 +214,177 @@ public static long ReadInt64(this Stream stream)
                              buff[6] << 16 | buff[7] << 24);
             return (long)((ulong)hi) << 32 | lo;
         }
+
+        //async versions of the above methods
+        public static async Task WriteInt32BigEndianAsync(this Stream output, 
int value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+
+            byte[] buff = new byte[4];
+            buff[0] = (byte)(value >> 24);
+            buff[1] = (byte)(value >> 16);
+            buff[2] = (byte)(value >> 8);
+            buff[3] = (byte)value;
+
+            await output.WriteAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+        }
+
+        public static async Task WriteInt64BigEndianAsync(this Stream output, 
long value, CancellationToken cancellationToken = default)

Review Comment:
   Please port the test(s) from J2N:
   
   
https://github.com/NightOwl888/J2N/blob/main/tests/NUnit/J2N.Tests/IO/TestDataOutputStream.cs#L220-L229



##########
src/Lucene.Net/Support/IO/StreamExtensions.cs:
##########
@@ -210,5 +214,177 @@ public static long ReadInt64(this Stream stream)
                              buff[6] << 16 | buff[7] << 24);
             return (long)((ulong)hi) << 32 | lo;
         }
+
+        //async versions of the above methods
+        public static async Task WriteInt32BigEndianAsync(this Stream output, 
int value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+
+            byte[] buff = new byte[4];
+            buff[0] = (byte)(value >> 24);
+            buff[1] = (byte)(value >> 16);
+            buff[2] = (byte)(value >> 8);
+            buff[3] = (byte)value;
+
+            await output.WriteAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+        }
+
+        public static async Task WriteInt64BigEndianAsync(this Stream output, 
long value, CancellationToken cancellationToken = default)
+        {
+            if (output is null)
+                throw new ArgumentNullException(nameof(output));
+
+            byte[] buff = new byte[8];
+            buff[0] = (byte)(value >> 56);
+            buff[1] = (byte)(value >> 48);
+            buff[2] = (byte)(value >> 40);
+            buff[3] = (byte)(value >> 32);
+            buff[4] = (byte)(value >> 24);
+            buff[5] = (byte)(value >> 16);
+            buff[6] = (byte)(value >> 8);
+            buff[7] = (byte)value;
+
+            await output.WriteAsync(buff, 0, buff.Length, 
cancellationToken).ConfigureAwait(false);
+        }
+
+        public static async Task WriteUTFAsync(this Stream output, string 
value, CancellationToken cancellationToken = default)

Review Comment:
   Please port the test(s) from J2N:
   
   
https://github.com/NightOwl888/J2N/blob/main/tests/NUnit/J2N.Tests/IO/TestDataOutputStream.cs#L248-L257



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@lucenenet.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to