Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2008-12-09 19:07:58 +0000
committerEike Stepper2008-12-09 19:07:58 +0000
commit76b1f4fdbf0ae38e8503a23aa54503d3ae940b55 (patch)
tree991233f250223bcc8bf929834f86268646bc43da /plugins/org.eclipse.net4j
parent96f34f3850eb9fdff6bd10830189b28f9e5cbfc7 (diff)
downloadcdo-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')
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/IndicationWithMonitoring.java15
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithConfirmation.java9
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/RequestWithMonitoring.java34
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java13
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/spi/net4j/Protocol.java10
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()

Back to the top