in gflog-core/src/main/java/com/epam/deltix/gflog/core/appender/TcpAppender.java [181:225]
protected int doSend(final boolean force) {
int bytesSent = 0;
try {
final int size = offset;
byteBuffer.position(0);
byteBuffer.limit(size);
bytesSent = channel.write(byteBuffer);
if (bytesSent < size && force) {
final long deadline = System.currentTimeMillis() + sendTimeout;
do {
if (System.currentTimeMillis() >= deadline) {
throw new IOException("Send timeout expired: " + sendTimeout);
}
final int sent = channel.write(byteBuffer);
bytesSent += sent;
if (sent == 0) {
LockSupport.parkNanos(1_000_000);
}
} while (bytesSent < size);
}
if (bytesSent > 0) {
final int remaining = size - bytesSent;
if (remaining > 0) {
buffer.putBytes(0, buffer, bytesSent, remaining);
}
offset = remaining;
}
} catch (final Throwable e) {
offset = 0;
disconnect();
LogDebug.warn("can't send messages to: " + host + ":" + port + ". Error: " + e.getMessage());
}
return bytesSent;
}