From e99d43b25c8974923e8cca2783ce3664d99d6199 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Wed, 24 Jun 2020 09:25:23 +0800 Subject: [PATCH] --- src/org/redkale/net/AsyncConnection.java | 17 ------- src/org/redkale/net/nio/AbstractLoop.java | 5 ++ .../net/nio/CompletionHandlerRunner.java | 48 +++++++++++++++++++ src/org/redkale/net/nio/NioEventLoop.java | 5 ++ .../net/{IOThread.java => nio/NioThread.java} | 8 ++-- src/org/redkale/net/nio/NioWorkerThread.java | 5 ++ 6 files changed, 68 insertions(+), 20 deletions(-) create mode 100644 src/org/redkale/net/nio/CompletionHandlerRunner.java rename src/org/redkale/net/{IOThread.java => nio/NioThread.java} (82%) diff --git a/src/org/redkale/net/AsyncConnection.java b/src/org/redkale/net/AsyncConnection.java index 5886a1290..c174b1f37 100644 --- a/src/org/redkale/net/AsyncConnection.java +++ b/src/org/redkale/net/AsyncConnection.java @@ -137,40 +137,23 @@ public abstract class AsyncConnection implements AutoCloseable { this.readBuffer = null; return rs; } -// Thread thread = Thread.currentThread(); -// if (thread instanceof IOThread) { -// return ((IOThread) thread).getBufferPool().get(); -// } return bufferSupplier.get(); } public void offerBuffer(ByteBuffer buffer) { if (buffer == null) return; -// Thread thread = Thread.currentThread(); -// if (thread instanceof IOThread) { -// ((IOThread) thread).getBufferPool().accept((ByteBuffer) buffer); -// return; -// } bufferConsumer.accept(buffer); } public void offerBuffer(ByteBuffer... buffers) { if (buffers == null) return; Consumer consumer = this.bufferConsumer; -// Thread thread = Thread.currentThread(); -// if (thread instanceof IOThread) { -// consumer = ((IOThread) thread).getBufferPool(); -// } for (ByteBuffer buffer : buffers) { consumer.accept(buffer); } } public ByteBuffer pollWriteBuffer() { -// Thread thread = Thread.currentThread(); -// if (thread instanceof IOThread) { -// return ((IOThread) thread).getBufferPool().get(); -// } return bufferSupplier.get(); } diff --git a/src/org/redkale/net/nio/AbstractLoop.java b/src/org/redkale/net/nio/AbstractLoop.java index 4c8b7c08f..849930e40 100644 --- a/src/org/redkale/net/nio/AbstractLoop.java +++ b/src/org/redkale/net/nio/AbstractLoop.java @@ -6,8 +6,13 @@ package org.redkale.net.nio; /** + * + *

+ * 详情见: https://redkale.org * * @author zhangjx + * + * @since 2.1.0 */ public abstract class AbstractLoop extends Thread { diff --git a/src/org/redkale/net/nio/CompletionHandlerRunner.java b/src/org/redkale/net/nio/CompletionHandlerRunner.java new file mode 100644 index 000000000..8cbc0e649 --- /dev/null +++ b/src/org/redkale/net/nio/CompletionHandlerRunner.java @@ -0,0 +1,48 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.redkale.net.nio; + +import java.nio.channels.CompletionHandler; +import java.util.concurrent.*; + +/** + * + *

+ * 详情见: https://redkale.org + * + * @author zhangjx + * + * @since 2.1.0 + */ +class CompletionHandlerRunner implements CompletionHandler, Runnable { + + private final CompletionHandler handler; + + private final A attachment; + + ScheduledFuture timeoutFuture; + + public CompletionHandlerRunner(CompletionHandler handler, A attachment) { + this.handler = handler; + this.attachment = attachment; + } + + @Override + public void completed(Integer result, A attach) { + handler.completed(result, attachment); + } + + @Override + public void failed(Throwable exc, A attach) { + handler.failed(exc, attachment); + } + + @Override + public void run() { + handler.failed(new TimeoutException(), attachment); + } + +} diff --git a/src/org/redkale/net/nio/NioEventLoop.java b/src/org/redkale/net/nio/NioEventLoop.java index f63227761..c283b0e69 100644 --- a/src/org/redkale/net/nio/NioEventLoop.java +++ b/src/org/redkale/net/nio/NioEventLoop.java @@ -10,8 +10,13 @@ import java.nio.channels.*; import java.util.*; /** + * + *

+ * 详情见: https://redkale.org * * @author zhangjx + * + * @since 2.1.0 */ public abstract class NioEventLoop extends AbstractLoop { diff --git a/src/org/redkale/net/IOThread.java b/src/org/redkale/net/nio/NioThread.java similarity index 82% rename from src/org/redkale/net/IOThread.java rename to src/org/redkale/net/nio/NioThread.java index 468d6617a..0754758fb 100644 --- a/src/org/redkale/net/IOThread.java +++ b/src/org/redkale/net/nio/NioThread.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package org.redkale.net; +package org.redkale.net.nio; import java.nio.ByteBuffer; import java.util.concurrent.ExecutorService; @@ -16,8 +16,10 @@ import org.redkale.util.*; * 详情见: https://redkale.org * * @author zhangjx + * + * @since 2.1.0 */ -public class IOThread extends Thread { +public class NioThread extends Thread { protected Thread localThread; @@ -25,7 +27,7 @@ public class IOThread extends Thread { protected ObjectPool bufferPool; - public IOThread(ExecutorService executor, ObjectPool bufferPool, Runnable runner) { + public NioThread(ExecutorService executor, ObjectPool bufferPool, Runnable runner) { super(runner); this.executor = executor; this.bufferPool = bufferPool; diff --git a/src/org/redkale/net/nio/NioWorkerThread.java b/src/org/redkale/net/nio/NioWorkerThread.java index 311f337a1..a4b84aca4 100644 --- a/src/org/redkale/net/nio/NioWorkerThread.java +++ b/src/org/redkale/net/nio/NioWorkerThread.java @@ -6,8 +6,13 @@ package org.redkale.net.nio; /** + * + *

+ * 详情见: https://redkale.org * * @author zhangjx + * + * @since 2.1.0 */ public class NioWorkerThread extends NioEventLoop {