skorotkov commented on code in PR #11518: URL: https://github.com/apache/ignite/pull/11518#discussion_r1810776896
########## modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryWriterExImpl.java: ########## @@ -1880,6 +1892,72 @@ public void writeFieldIdNoSchemaUpdate(int fieldId) { fieldCnt++; } + /** + * Write byte array from the InputStream with the specified length. + * + * @param in InputStream. + * @param len Length of data in the stream. + * @return Number of bytes written. + */ + public int writeByteArrayFromInputStream(InputStream in, int len) throws IOException { + out.unsafeEnsure(1 + 4 + len); + + return doWriteByteArrayFromInputStream(in, len); + } + + /** + * Write byte array from the InputStream with uknown length. + * + * @param in InputStream. + * @return Number of bytes written or -1 if stream contains more than {@code MAX_ARRAY_SIZE} bytes. + */ + public int writeByteArrayFromInputStream(InputStream in) throws IOException { + out.unsafeEnsure(1 + 4); + + int writtenLen = doWriteByteArrayFromInputStream(in, MAX_ARRAY_SIZE); + + if (writtenLen == MAX_ARRAY_SIZE && in.read() != -1) Review Comment: This is a case when user didn't provide the length of data in the stream via the API. So we accept any actual length <= `MAX_ARRAY_SIZE` and thus need to check that there is no more data in stream if `MAX_ARRAY_SIZE` was achieved. In any case whether here or in `doWriteByteArrayFromInputStream` we still need to do extra `in.read()` to be sure that no more data present in stream. Moreove in the `doWriteByteArrayFromInputStream` it's supposed that we are not allowed to read more bytes (and move stream pointer) to handle case when user does pass the length of data. Or may be I just do not see the obvious solution ? -- 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: notifications-unsubscr...@ignite.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org