com.vaadin.terminal.
Interface StreamVariable
All Superinterfaces:
- extends Serializable
public interface StreamVariable
StreamVariable is a special kind of variable whose value is streamed to an
OutputStream
provided by the getOutputStream()
method. E.g.
in web terminals StreamVariable
can be used to send large files from
browsers to the server without consuming large amounts of memory.
Note, writing to the OutputStream
is not synchronized by the terminal
(to avoid stalls in other operations when eg. streaming to a slow network
service or file system). If UI is changed as a side effect of writing to the
output stream, developer must handle synchronization manually.
Since:
6.5
Version:
6.8.18
Author:
Vaadin Ltd.
See Also:
PaintTarget.addVariable(VariableOwner, String, StreamVariable)
Nested Class Summary | |
---|---|
static interface |
StreamVariable.StreamingEndEvent
Event passed to #uploadFinished(StreamingEndEvent) method the
contents have been streamed to StreamVariable successfully. |
static interface |
StreamVariable.StreamingErrorEvent
Event passed to #uploadFailed(StreamingErrorEvent) method when
the streaming ended before the end of the input. |
static interface |
StreamVariable.StreamingEvent
|
static interface |
StreamVariable.StreamingProgressEvent
Event passed to onProgress(StreamingProgressEvent) method during
the streaming progresses. |
static interface |
StreamVariable.StreamingStartEvent
Event passed to #uploadStarted(StreamingStartEvent) method before
the streaming of the content to StreamVariable starts. |
Method Summary | |
---|---|
OutputStream |
getOutputStream()
Invoked by the terminal when a new upload arrives, after streamingStarted(StreamingStartEvent) method has been called. |
boolean |
isInterrupted()
If this method returns true while the content is being streamed the Terminal to stop receiving current upload. |
boolean |
listenProgress()
Whether the #onProgress(long, long) method should be called
during the upload. |
void |
onProgress(StreamVariable.StreamingProgressEvent event)
This method is called by the terminal if listenProgress()
returns true when the streaming starts. |
void |
streamingFailed(StreamVariable.StreamingErrorEvent event)
|
void |
streamingFinished(StreamVariable.StreamingEndEvent event)
|
void |
streamingStarted(StreamVariable.StreamingStartEvent event)
|
Method Detail |
---|
getOutputStream
OutputStream getOutputStream()
- Returns:
- Stream to which the uploaded file should be written.
Invoked by the terminal when a new upload arrives, after
streamingStarted(StreamingStartEvent)
method has been called.
The terminal implementation will write the streamed variable to the
returned output stream.
listenProgress
boolean listenProgress()
- Returns:
- true if this
StreamVariable
wants to by notified during the upload of the progress of streaming. - See Also:
onProgress(StreamingProgressEvent)
Whether the #onProgress(long, long)
method should be called
during the upload.
#onProgress(long, long)
is called in a synchronized block when
the content is being received. This is potentially bit slow, so we are
calling that method only if requested. The value is requested after the
#uploadStarted(StreamingStartEvent)
event, but not after reading
each buffer.
onProgress
void onProgress(StreamVariable.StreamingProgressEvent event)
This method is called by the terminal if listenProgress()
returns true when the streaming starts.
streamingStarted
void streamingStarted(StreamVariable.StreamingStartEvent event)
streamingFinished
void streamingFinished(StreamVariable.StreamingEndEvent event)
streamingFailed
void streamingFailed(StreamVariable.StreamingErrorEvent event)
isInterrupted
boolean isInterrupted()
- Returns:
- true if the streaming should be interrupted as soon as possible.
If this method returns true while the content is being streamed the Terminal to stop receiving current upload.
Note, the usage of this method is not synchronized over the Application instance by the terminal like other methods. The implementation should only return a boolean field and especially not modify UI or implement a synchronization by itself.