You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2019/03/29 10:45:22 UTC
[ignite] 01/02: IGNITE-11299 Write Fully method added for SSL fix
This is an automated email from the ASF dual-hosted git repository.
dpavlov pushed a commit to branch ignite-2.7.5
in repository https://gitbox.apache.org/repos/asf/ignite.git
commit 9570338cea76c0aed8e3f9fb207b375bc2ebc378
Author: Pavel Voronkin <pv...@gridgain.com>
AuthorDate: Fri Mar 29 13:39:59 2019 +0300
IGNITE-11299 Write Fully method added for SSL fix
---
.../apache/ignite/internal/util/IgniteUtils.java | 25 ++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index aa106f8..846d46b 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -75,6 +75,7 @@ import java.nio.ByteBuffer;
import java.nio.channels.FileLock;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
+import java.nio.channels.SocketChannel;
import java.nio.charset.Charset;
import java.nio.file.DirectoryStream;
import java.nio.file.FileVisitResult;
@@ -10920,4 +10921,28 @@ public abstract class IgniteUtils {
return cnt.get();
}
}
+
+ /**
+ * Safely write buffer fully to blocking socket channel.
+ * Will throw assert if non blocking channel passed.
+ *
+ * @param sockCh WritableByteChannel.
+ * @param buf Buffer.
+ * @throws IOException IOException.
+ */
+ public static void writeFully(SocketChannel sockCh, ByteBuffer buf) throws IOException {
+ int totalWritten = 0;
+
+ assert sockCh.isBlocking() : "SocketChannel should be in blocking mode " + sockCh;
+
+ while (buf.hasRemaining()) {
+ int written = sockCh.write(buf);
+
+ if (written < 0)
+ throw new IOException("Error writing buffer to channel " +
+ "[written = " + written + ", buf " + buf + ", totalWritten = " + totalWritten + "]");
+
+ totalWritten += written;
+ }
+ }
}