Snapshot of base part

This commit is contained in:
2016-06-20 11:11:57 +01:00
parent 84f3da2941
commit 1317047268
6 changed files with 365 additions and 377 deletions

View File

@@ -1,14 +1,11 @@
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.concurrent.ConcurrentLinkedQueue;
import base.exception.worker.ActivateException;
import base.worker.ForegroundListener;
import base.worker.BackgroundListener;
import base.worker.ForegroundListener;
import base.worker.Worker;
import base.worker.pool.Listener;
import base.worker.pool.ListenerPool;
@@ -26,6 +23,7 @@ public abstract class Listen<E> extends Work implements Listener<E> {
}
protected Listen(Worker.Type workerType) {
queue = new ConcurrentLinkedQueue<E>();
this.workerType = workerType;
switch (workerType) {
case DIRECT:
@@ -37,7 +35,6 @@ public abstract class Listen<E> extends Work implements Listener<E> {
listener = new BackgroundListener<E>(this);
break;
}
queue = new ConcurrentLinkedQueue<E>();
}
protected Listen(Worker worker) {
@@ -55,6 +52,7 @@ public abstract class Listen<E> extends Work implements Listener<E> {
if (workerType.equals(Worker.Type.DIRECT)) {
input(element);
} else {
queue.add(element);
listener.add(element);
}
}
@@ -92,17 +90,7 @@ public abstract class Listen<E> extends Work implements Listener<E> {
}
}
public void input(Object object) {
MethodType methodType = MethodType.methodType(void.class, object.getClass());
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);
}
public void input(E element) {
System.err.println(element);
}
}

View File

@@ -48,17 +48,17 @@ public abstract class Work implements Control {
}
public void start() {
logger.debug("Work: start()");
logger.trace("Work: start()");
worker.start();
}
public void stop() {
logger.debug("Work: stop()");
logger.trace("Work: stop()");
worker.stop();
}
public boolean active() {
logger.debug("Work: active()");
logger.trace("Work: active()");
return worker.active();
}

View File

@@ -7,16 +7,15 @@ public class BackgroundListener<E> extends ThreadWorker implements Listener<E> {
protected 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;
}
public BackgroundListener(Listen<E> listen, boolean start) {
super(listen);
}
public void add(E element) {
listen.queue.add(element);
listen.notify();
}
}

View File

@@ -39,7 +39,7 @@ public class ThreadWorker extends Worker implements Runnable {
}
public void exit() {
work.stop();
run = false;
work.stop();
}
}

View File

@@ -29,7 +29,7 @@ public abstract class Worker {
}
public boolean active() {
logger.debug("Worker: active()");
logger.trace("Worker: active()");
return deactivate || active;
}
@@ -44,7 +44,7 @@ public abstract class Worker {
public void runActivate() {
if (activate && !active) {
logger.debug("Worker: runActivate()");
logger.trace("Worker: runActivate()");
try {
work.activate();
active = true;
@@ -58,7 +58,7 @@ public abstract class Worker {
public void runDeactivate() {
if (deactivate && active) {
logger.debug("Worker: runDeactivate()");
logger.trace("Worker: runDeactivate()");
try {
work.deactivate();
} catch (DeactivateException e) {
@@ -72,11 +72,11 @@ public abstract class Worker {
public void runWork() {
if (active) {
logger.debug("Worker: runWork() > work");
logger.trace("Worker: runWork() > work");
work.work();
} else if (run) {
try {
logger.debug("Worker: runWork() > wait");
logger.trace("Worker: runWork() > wait");
synchronized (this) {
wait();
}
@@ -103,7 +103,7 @@ public abstract class Worker {
public abstract void start();
public void stop() {
logger.debug("Worker: stop()");
logger.trace("Worker: stop()");
if (active && !activate) {
deactivate = true;
}

View File

@@ -9,7 +9,8 @@ import org.junit.runners.Suite.SuiteClasses;
TestTcpSocketCommunication.class,
TestTcpChannelCommunication.class,
TestUdpUnicastCommunication.class,
TestUdpMulticastCommunication.class
TestUdpMulticastCommunication.class,
TestUdpDuplexCommunication.class
})
public class AllTests {}