Snapshot of base part
This commit is contained in:
@@ -1,14 +1,11 @@
|
|||||||
package base.work;
|
package base.work;
|
||||||
|
|
||||||
import java.lang.invoke.MethodHandle;
|
|
||||||
import java.lang.invoke.MethodHandles;
|
|
||||||
import java.lang.invoke.MethodType;
|
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||||
|
|
||||||
import base.exception.worker.ActivateException;
|
import base.exception.worker.ActivateException;
|
||||||
import base.worker.ForegroundListener;
|
|
||||||
import base.worker.BackgroundListener;
|
import base.worker.BackgroundListener;
|
||||||
|
import base.worker.ForegroundListener;
|
||||||
import base.worker.Worker;
|
import base.worker.Worker;
|
||||||
import base.worker.pool.Listener;
|
import base.worker.pool.Listener;
|
||||||
import base.worker.pool.ListenerPool;
|
import base.worker.pool.ListenerPool;
|
||||||
@@ -26,6 +23,7 @@ public abstract class Listen<E> extends Work implements Listener<E> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected Listen(Worker.Type workerType) {
|
protected Listen(Worker.Type workerType) {
|
||||||
|
queue = new ConcurrentLinkedQueue<E>();
|
||||||
this.workerType = workerType;
|
this.workerType = workerType;
|
||||||
switch (workerType) {
|
switch (workerType) {
|
||||||
case DIRECT:
|
case DIRECT:
|
||||||
@@ -37,7 +35,6 @@ public abstract class Listen<E> extends Work implements Listener<E> {
|
|||||||
listener = new BackgroundListener<E>(this);
|
listener = new BackgroundListener<E>(this);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
queue = new ConcurrentLinkedQueue<E>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Listen(Worker worker) {
|
protected Listen(Worker worker) {
|
||||||
@@ -55,6 +52,7 @@ public abstract class Listen<E> extends Work implements Listener<E> {
|
|||||||
if (workerType.equals(Worker.Type.DIRECT)) {
|
if (workerType.equals(Worker.Type.DIRECT)) {
|
||||||
input(element);
|
input(element);
|
||||||
} else {
|
} else {
|
||||||
|
queue.add(element);
|
||||||
listener.add(element);
|
listener.add(element);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,17 +90,7 @@ public abstract class Listen<E> extends Work implements Listener<E> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void input(Object object) {
|
public void input(E element) {
|
||||||
MethodType methodType = MethodType.methodType(void.class, object.getClass());
|
System.err.println(element);
|
||||||
MethodHandles.Lookup lookup = MethodHandles.lookup();
|
|
||||||
MethodHandle methodHandle;
|
|
||||||
try {
|
|
||||||
methodHandle = lookup.findVirtual(getClass(), "input", methodType);
|
|
||||||
methodHandle.invoke(this, object);
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("", e);
|
|
||||||
} catch (Throwable e) {
|
|
||||||
logger.error("", e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,17 +48,17 @@ public abstract class Work implements Control {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void start() {
|
public void start() {
|
||||||
logger.debug("Work: start()");
|
logger.trace("Work: start()");
|
||||||
worker.start();
|
worker.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stop() {
|
public void stop() {
|
||||||
logger.debug("Work: stop()");
|
logger.trace("Work: stop()");
|
||||||
worker.stop();
|
worker.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean active() {
|
public boolean active() {
|
||||||
logger.debug("Work: active()");
|
logger.trace("Work: active()");
|
||||||
return worker.active();
|
return worker.active();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,16 +7,15 @@ public class BackgroundListener<E> extends ThreadWorker implements Listener<E> {
|
|||||||
protected Listen<E> listen;
|
protected Listen<E> listen;
|
||||||
|
|
||||||
public BackgroundListener(Listen<E> listen) {
|
public BackgroundListener(Listen<E> listen) {
|
||||||
super(listen);
|
this(listen, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BackgroundListener(Listen<E> listen, boolean thread) {
|
||||||
|
super(listen, thread);
|
||||||
this.listen = listen;
|
this.listen = listen;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BackgroundListener(Listen<E> listen, boolean start) {
|
|
||||||
super(listen);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void add(E element) {
|
public void add(E element) {
|
||||||
listen.queue.add(element);
|
|
||||||
listen.notify();
|
listen.notify();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public class ThreadWorker extends Worker implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void exit() {
|
public void exit() {
|
||||||
work.stop();
|
|
||||||
run = false;
|
run = false;
|
||||||
|
work.stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ public abstract class Worker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean active() {
|
public boolean active() {
|
||||||
logger.debug("Worker: active()");
|
logger.trace("Worker: active()");
|
||||||
return deactivate || active;
|
return deactivate || active;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ public abstract class Worker {
|
|||||||
|
|
||||||
public void runActivate() {
|
public void runActivate() {
|
||||||
if (activate && !active) {
|
if (activate && !active) {
|
||||||
logger.debug("Worker: runActivate()");
|
logger.trace("Worker: runActivate()");
|
||||||
try {
|
try {
|
||||||
work.activate();
|
work.activate();
|
||||||
active = true;
|
active = true;
|
||||||
@@ -58,7 +58,7 @@ public abstract class Worker {
|
|||||||
|
|
||||||
public void runDeactivate() {
|
public void runDeactivate() {
|
||||||
if (deactivate && active) {
|
if (deactivate && active) {
|
||||||
logger.debug("Worker: runDeactivate()");
|
logger.trace("Worker: runDeactivate()");
|
||||||
try {
|
try {
|
||||||
work.deactivate();
|
work.deactivate();
|
||||||
} catch (DeactivateException e) {
|
} catch (DeactivateException e) {
|
||||||
@@ -72,11 +72,11 @@ public abstract class Worker {
|
|||||||
|
|
||||||
public void runWork() {
|
public void runWork() {
|
||||||
if (active) {
|
if (active) {
|
||||||
logger.debug("Worker: runWork() > work");
|
logger.trace("Worker: runWork() > work");
|
||||||
work.work();
|
work.work();
|
||||||
} else if (run) {
|
} else if (run) {
|
||||||
try {
|
try {
|
||||||
logger.debug("Worker: runWork() > wait");
|
logger.trace("Worker: runWork() > wait");
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
wait();
|
wait();
|
||||||
}
|
}
|
||||||
@@ -103,7 +103,7 @@ public abstract class Worker {
|
|||||||
public abstract void start();
|
public abstract void start();
|
||||||
|
|
||||||
public void stop() {
|
public void stop() {
|
||||||
logger.debug("Worker: stop()");
|
logger.trace("Worker: stop()");
|
||||||
if (active && !activate) {
|
if (active && !activate) {
|
||||||
deactivate = true;
|
deactivate = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ import org.junit.runners.Suite.SuiteClasses;
|
|||||||
TestTcpSocketCommunication.class,
|
TestTcpSocketCommunication.class,
|
||||||
TestTcpChannelCommunication.class,
|
TestTcpChannelCommunication.class,
|
||||||
TestUdpUnicastCommunication.class,
|
TestUdpUnicastCommunication.class,
|
||||||
TestUdpMulticastCommunication.class
|
TestUdpMulticastCommunication.class,
|
||||||
|
TestUdpDuplexCommunication.class
|
||||||
})
|
})
|
||||||
|
|
||||||
public class AllTests {}
|
public class AllTests {}
|
||||||
|
|||||||
Reference in New Issue
Block a user