Package io.tus.java.client
Class TusExecutor
- java.lang.Object
-
- io.tus.java.client.TusExecutor
-
public abstract class TusExecutor extends java.lang.Object
TusExecutor is a wrapper class which you can build around your uploading mechanism and any exception thrown by it will be caught and may result in a retry. This way you can easily add retrying functionality to your application with defined delays between them. This can be achieved by extending TusExecutor and implementing the abstract makeAttempt() method:TusExecutor executor = new TusExecutor() { {@literal @}Override protected void makeAttempt() throws ProtocolException, IOException { TusUploader uploader = client.resumeOrCreateUpload(upload); while(uploader.uploadChunk() > -1) {} uploader.finish(); } }; executor.makeAttempts();
makeAttempt()
method which should then retrieve anTusUploader
usingTusClient.resumeOrCreateUpload(TusUpload)
and then invokeTusUploader.uploadChunk()
as long as possible without catchingProtocolException
s orIOException
s as this is taken over by this class. The current attempt can be interrupted usingThread.interrupt()
which will cause themakeAttempts()
method to returnfalse
immediately.
-
-
Constructor Summary
Constructors Constructor Description TusExecutor()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description int[]
getDelays()
Get the delays which will be used for waiting before attempting retries.protected abstract void
makeAttempt()
This method must be implemented by the specific caller.boolean
makeAttempts()
This method is basically just calling themakeAttempt()
method which should then retrieve anTusUploader
usingTusClient.resumeOrCreateUpload(TusUpload)
and then invokeTusUploader.uploadChunk()
as long as possible without catchingProtocolException
s orIOException
s as this is taken over by this class.void
setDelays(int[] delays)
Set the delays at which TusExecutor will issue a retry ifmakeAttempt()
throws an exception.
-
-
-
Method Detail
-
setDelays
public void setDelays(int[] delays)
Set the delays at which TusExecutor will issue a retry ifmakeAttempt()
throws an exception. If the methods call fails for the first time it will waitdelays[0]
ms before calling it again. If this second calls also does not return normallydelays[1]
ms will be waited on so on. It totaldelays.length
retries may be issued, resulting in up todelays.length + 1
calls tomakeAttempt()
. The default delays are set to 500ms, 1s, 2s and 3s.- Parameters:
delays
- The desired delay values to be used- See Also:
getDelays()
-
getDelays
public int[] getDelays()
Get the delays which will be used for waiting before attempting retries.- Returns:
- The dalys previously set
- See Also:
setDelays(int[])
-
makeAttempts
public boolean makeAttempts() throws ProtocolException, java.io.IOException
This method is basically just calling themakeAttempt()
method which should then retrieve anTusUploader
usingTusClient.resumeOrCreateUpload(TusUpload)
and then invokeTusUploader.uploadChunk()
as long as possible without catchingProtocolException
s orIOException
s as this is taken over by this class. The current attempt can be interrupted usingThread.interrupt()
which will cause the method to returnfalse
immediately.- Returns:
true
if themakeAttempt()
method returned normally andfalse
if the thread was interrupted while sleeping until the next attempt.- Throws:
ProtocolException
java.io.IOException
-
makeAttempt
protected abstract void makeAttempt() throws ProtocolException, java.io.IOException
This method must be implemented by the specific caller. It will be invoked once or multiple times by themakeAttempts()
method. A proper implementation should retrieve anTusUploader
usingTusClient.resumeOrCreateUpload(TusUpload)
and then invokeTusUploader.uploadChunk()
as long as possible without catchingProtocolException
s orIOException
s as this is taken over by this class.- Throws:
ProtocolException
java.io.IOException
-
-