diff options
author | Eike Stepper | 2008-12-09 19:07:58 +0000 |
---|---|---|
committer | Eike Stepper | 2008-12-09 19:07:58 +0000 |
commit | 76b1f4fdbf0ae38e8503a23aa54503d3ae940b55 (patch) | |
tree | 991233f250223bcc8bf929834f86268646bc43da /plugins/org.eclipse.net4j | |
parent | 96f34f3850eb9fdff6bd10830189b28f9e5cbfc7 (diff) | |
download | cdo-76b1f4fdbf0ae38e8503a23aa54503d3ae940b55.tar.gz cdo-76b1f4fdbf0ae38e8503a23aa54503d3ae940b55.tar.xz cdo-76b1f4fdbf0ae38e8503a23aa54503d3ae940b55.zip |
[258067] Provide RequestWithMonitoring example
https://bugs.eclipse.org/bugs/show_bug.cgi?id=258067
Diffstat (limited to 'plugins/org.eclipse.net4j')
5 files changed, 56 insertions, 25 deletions
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/IndicationWithMonitoring.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/IndicationWithMonitoring.java index 60815771f2..ba2fcf697a 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/IndicationWithMonitoring.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/IndicationWithMonitoring.java @@ -75,6 +75,7 @@ public abstract class IndicationWithMonitoring extends IndicationWithResponse { if (monitor != null) { + monitor.done(); monitor = null; if (monitorFuture != null) { @@ -136,13 +137,14 @@ public abstract class IndicationWithMonitoring extends IndicationWithResponse }); } + monitor.begin(100); indicating(in, monitor.fork(getIndicatingWorkPercent())); } @Override protected final void responding(ExtendedDataOutputStream out) throws Exception { - responding(out, monitor.fork(getRespondingWorkPercent())); + responding(out, monitor.fork(100 - getIndicatingWorkPercent())); } protected abstract void indicating(ExtendedDataInputStream in, OMMonitor monitor) throws Exception; @@ -159,12 +161,7 @@ public abstract class IndicationWithMonitoring extends IndicationWithResponse protected int getIndicatingWorkPercent() { - return 50; - } - - protected int getRespondingWorkPercent() - { - return 50; + return 100; } void setMonitorCanceled() @@ -188,6 +185,10 @@ public abstract class IndicationWithMonitoring extends IndicationWithResponse */ private final class LastAccessMonitor extends Monitor { + public LastAccessMonitor() + { + } + @Override public synchronized void begin(int totalWork) { diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithConfirmation.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithConfirmation.java index cd3633ba1a..734ef09a1b 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithConfirmation.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithConfirmation.java @@ -60,7 +60,7 @@ public abstract class RequestWithConfirmation<RESULT> extends SignalActor { public RESULT call() throws Exception { - return send(); + return doSend(getProtocol().getTimeout()); } }); } @@ -70,7 +70,7 @@ public abstract class RequestWithConfirmation<RESULT> extends SignalActor */ public RESULT send() throws Exception, RemoteException { - return send(getProtocol().getTimeout()); + return doSend(getProtocol().getTimeout()); } /** @@ -78,6 +78,11 @@ public abstract class RequestWithConfirmation<RESULT> extends SignalActor */ public RESULT send(long timeout) throws Exception, RemoteException { + return doSend(timeout); + } + + RESULT doSend(long timeout) throws Exception + { result = null; getProtocol().startSignal(this, timeout); return result; diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithMonitoring.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithMonitoring.java index f786f731d4..7d00d149ea 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithMonitoring.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithMonitoring.java @@ -73,25 +73,28 @@ public abstract class RequestWithMonitoring<RESULT> extends RequestWithConfirmat @Override public Future<RESULT> sendAsync() { - return sendAsync(null); + initMainMonitor(null); + return super.sendAsync(); } - @Override - public RESULT send() throws Exception, RemoteException + public Future<RESULT> sendAsync(OMMonitor monitor) { - return send(null); + initMainMonitor(monitor); + return super.sendAsync(); } @Override - public RESULT send(long timeout) throws Exception, RemoteException + public RESULT send() throws Exception, RemoteException { - return send(timeout, null); + initMainMonitor(null); + return super.send(); } - public Future<RESULT> sendAsync(OMMonitor monitor) + @Override + public RESULT send(long timeout) throws Exception, RemoteException { - initMainMonitor(monitor); - return super.sendAsync(); + initMainMonitor(null); + return super.send(timeout); } public RESULT send(OMMonitor monitor) throws Exception, RemoteException @@ -157,7 +160,14 @@ public abstract class RequestWithMonitoring<RESULT> extends RequestWithConfirmat @Override protected final RESULT confirming(ExtendedDataInputStream in) throws Exception { - return confirming(in, mainMonitor.fork(getConfirmingWorkPercent())); + try + { + return confirming(in, mainMonitor.fork(getConfirmingWorkPercent())); + } + finally + { + mainMonitor.done(); + } } protected abstract void requesting(ExtendedDataOutputStream out, OMMonitor monitor) throws Exception; @@ -197,7 +207,7 @@ public abstract class RequestWithMonitoring<RESULT> extends RequestWithConfirmat */ protected int getRequestingWorkPercent() { - return 25; + return 50; } /** @@ -205,7 +215,7 @@ public abstract class RequestWithMonitoring<RESULT> extends RequestWithConfirmat */ protected int getConfirmingWorkPercent() { - return 25; + return 0; } @Override diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java index 3bc88800ad..968c35c82a 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java @@ -38,7 +38,7 @@ import java.util.Map; /** * @author Eike Stepper */ -public abstract class SignalProtocol<INFRA_STRUCTURE> extends Protocol<INFRA_STRUCTURE> implements +public class SignalProtocol<INFRA_STRUCTURE> extends Protocol<INFRA_STRUCTURE> implements ISignalProtocol<INFRA_STRUCTURE> { /** @@ -76,8 +76,12 @@ public abstract class SignalProtocol<INFRA_STRUCTURE> extends Protocol<INFRA_STR private boolean failingOver; - protected SignalProtocol() + /** + * @since 2.0 + */ + public SignalProtocol(String type) { + super(type); } /** @@ -315,7 +319,10 @@ public abstract class SignalProtocol<INFRA_STRUCTURE> extends Protocol<INFRA_STR * Returns a new signal instance to serve the given signal ID or <code>null</code> if the signal ID is invalid/unknown * for this protocol. */ - protected abstract SignalReactor createSignalReactor(short signalID); + protected SignalReactor createSignalReactor(short signalID) + { + return null; + } synchronized int getNextCorrelationID() { diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Protocol.java b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Protocol.java index 19f5212457..76ab51febf 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Protocol.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Protocol.java @@ -27,6 +27,8 @@ import java.util.concurrent.ExecutorService; */ public abstract class Protocol<INFRA_STRUCTURE> extends Lifecycle implements IProtocol<INFRA_STRUCTURE> { + private String type; + private ExecutorService executorService; private IBufferProvider bufferProvider; @@ -45,8 +47,14 @@ public abstract class Protocol<INFRA_STRUCTURE> extends Lifecycle implements IPr }; }; - public Protocol() + public Protocol(String type) + { + this.type = type; + } + + public final String getType() { + return type; } public ExecutorService getExecutorService() |