移除fastWrite

This commit is contained in:
redkale
2024-10-08 15:54:51 +08:00
parent 845a1e97ff
commit a542c03e8b
2 changed files with 0 additions and 85 deletions

View File

@@ -83,14 +83,6 @@ public abstract class AsyncConnection implements Channel, AutoCloseable {
private Consumer<AsyncConnection> beforeCloseListener;
// --------------------- clientMode: fast-write-start ---------------------
protected ByteArray fastWriteArray;
protected Queue<Consumer<ByteArray>> fastWriteQueue;
protected CompletionHandler fastWriteHandler;
// --------------------- clientMode: fast-write-end ---------------------
// 用于服务端的Socket, 等同于一直存在的readCompletionHandler
ProtocolCodec protocolCodec;
@@ -213,10 +205,6 @@ public abstract class AsyncConnection implements Channel, AutoCloseable {
return ioWriteThread;
}
public abstract AsyncConnection fastHandler(CompletionHandler handler);
public abstract void fastWrite(Consumer<ByteArray>... consumers);
public abstract boolean isTCP();
public abstract boolean shutdownInput();

View File

@@ -10,12 +10,9 @@ import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.*;
import java.util.*;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.function.Consumer;
import javax.net.ssl.SSLContext;
import org.redkale.util.ByteArray;
import org.redkale.util.ByteBufferWriter;
import org.redkale.util.RedkaleException;
/**
* 详情见: https://redkale.org
@@ -40,13 +37,6 @@ abstract class AsyncNioConnection extends AsyncConnection {
protected CompletionHandler<Integer, ByteBuffer> readCompletionHandler;
protected SelectionKey readKey;
// ------------------------------ fast写操作 ------------------------------------
protected ByteArray fastWriteArray;
protected Queue<Consumer<ByteArray>> fastWriteQueue;
protected CompletionHandler fastWriteHandler;
// -------------------------------- 写操作 --------------------------------------
protected byte[] writeByteTuple1Array;
@@ -168,62 +158,6 @@ abstract class AsyncNioConnection extends AsyncConnection {
doRead(this.ioReadThread.inCurrThread());
}
@Override
public final AsyncConnection fastHandler(CompletionHandler handler) {
if (!clientMode) {
throw new RedkaleException("fast-writer only for client connection");
}
this.fastWriteHandler = Objects.requireNonNull(handler);
this.fastWriteArray = new ByteArray();
this.fastWriteQueue = new ConcurrentLinkedQueue<>();
return this;
}
@Override
public final void fastWrite(Consumer<ByteArray>... consumers) {
if (fastWriteHandler == null) {
throw new RedkaleException("fast-writer handler is null");
}
for (Consumer<ByteArray> c : consumers) {
this.fastWriteQueue.offer(c);
}
this.ioWriteThread.register(this::fastWriteRegister);
}
private void fastWriteRegister(Selector selector) {
try {
if (writeKey == null) {
writeKey = keyFor(selector);
}
if (writeKey == null) {
writeKey = implRegister(selector, SelectionKey.OP_WRITE);
writeKey.attach(this);
} else {
writeKey.interestOps(writeKey.interestOps() | SelectionKey.OP_WRITE);
}
// writeCompletionHandler不赋值会跳过doWrite
this.writeCompletionHandler = this.fastWriteHandler;
} catch (ClosedChannelException e) {
e.printStackTrace();
this.fastWriteQueue.clear();
handleWrite(0, e);
}
}
private void fastWritePrepare() {
ByteArray array = this.fastWriteArray.clear();
Consumer<ByteArray> func;
while ((func = fastWriteQueue.poll()) != null) {
func.accept(array);
}
this.writePending = true;
this.writeCompletionHandler = this.fastWriteHandler;
this.writeAttachment = null;
this.writeByteTuple1Array = array.content();
this.writeByteTuple1Offset = array.offset();
this.writeByteTuple1Length = array.length();
}
@Override
public void write(
byte[] headerContent,
@@ -366,10 +300,6 @@ abstract class AsyncNioConnection extends AsyncConnection {
boolean hasRemain = true;
boolean writeCompleted = true;
boolean error = false;
// fastWrite
if (clientMode && fastWriteArray != null && writeByteBuffer == null && writeByteBuffers == null) {
fastWritePrepare();
}
int batchOffset = writeBuffersOffset;
int batchLength = writeBuffersLength;
while (hasRemain) { // 必须要将buffer写完为止
@@ -406,9 +336,6 @@ abstract class AsyncNioConnection extends AsyncConnection {
this.writeByteTuple2Offset = 0;
this.writeByteTuple2Length = 0;
}
if (this.fastWriteArray != null) {
this.fastWriteArray.clear();
}
}
int writeCount;
if (writeByteBuffer != null) {