Class DefaultIncomingData<DATATYPE extends Data>

java.lang.Object
com.yahoo.processing.response.DefaultIncomingData<DATATYPE>
All Implemented Interfaces:
IncomingData<DATATYPE>

public class DefaultIncomingData<DATATYPE extends Data> extends Object implements IncomingData<DATATYPE>
The default incoming data implementation
Author:
bratseth
  • Constructor Details

    • DefaultIncomingData

      public DefaultIncomingData()
      Creates an instance which must be assigned an owner after creation
    • DefaultIncomingData

      public DefaultIncomingData(DataList<DATATYPE> owner)
  • Method Details

    • assignOwner

      public final void assignOwner(DataList<DATATYPE> owner)
      Assigns the owner of this. Throws an exception if the owner is already set.
    • getOwner

      public DataList<DATATYPE> getOwner()
      Description copied from interface: IncomingData
      Returns the owner (target DataList) of this. Note that accessing the owner from the thread producing incoming data is generally *not* thread safe.
      Specified by:
      getOwner in interface IncomingData<DATATYPE extends Data>
    • completed

      @Deprecated(forRemoval=true, since="7") public com.google.common.util.concurrent.ListenableFuture<DataList<DATATYPE>> completed()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Specified by:
      completed in interface IncomingData<DATATYPE extends Data>
    • completedFuture

      public CompletableFuture<DataList<DATATYPE>> completedFuture()
      Description copied from interface: IncomingData
      Returns a future in which all the incoming data that will be produced in this is available. Listeners on this are invoked on the thread producing the incoming data (or a thread spawned from it), which in general is separate from the thread using the data list. Hence, listeners on this even cannot in general assume that they may modify the data list or the request.

      The data is not drained into the owner of this by this method. That must be done by the thread using the data list.

      This return the list owning this for convenience.

      Specified by:
      completedFuture in interface IncomingData<DATATYPE extends Data>
    • isComplete

      public boolean isComplete()
      Returns whether the data in this is complete
      Specified by:
      isComplete in interface IncomingData<DATATYPE extends Data>
    • addLast

      public void addLast(DATATYPE data)
      Adds new data and marks this as completed
      Specified by:
      addLast in interface IncomingData<DATATYPE extends Data>
    • add

      public void add(DATATYPE data)
      Adds new data without completing this
      Specified by:
      add in interface IncomingData<DATATYPE extends Data>
    • addLast

      public void addLast(List<DATATYPE> data)
      Adds new data and marks this as completed
      Specified by:
      addLast in interface IncomingData<DATATYPE extends Data>
    • add

      public void add(List<DATATYPE> data)
      Adds new data without completing this
      Specified by:
      add in interface IncomingData<DATATYPE extends Data>
    • markComplete

      public void markComplete()
      Marks this as completed and notify any listeners
      Specified by:
      markComplete in interface IncomingData<DATATYPE extends Data>
    • drain

      public List<DATATYPE> drain()
      Gets and removes all the data currently available in this. The returned list is a modifiable fresh instance owned by the caller.
      Specified by:
      drain in interface IncomingData<DATATYPE extends Data>
    • addNewDataListener

      public void addNewDataListener(Runnable listener, Executor executor)
      Description copied from interface: IncomingData
      Add a listener which will be invoked every time new data is added to this. This listener may be invoked at any time in any thread, any thread synchronization is left to the listener itself
      Specified by:
      addNewDataListener in interface IncomingData<DATATYPE extends Data>
    • toString

      public String toString()
      Overrides:
      toString in class Object