Class BlockingListeningRowSet

  • All Implemented Interfaces:
    Comparable<RowSet>, RowSet

    public class BlockingListeningRowSet
    extends Object
    implements Comparable<RowSet>, RowSet
    Contains a buffer of rows. Getting rows from the buffer or putting rows in the buffer is synchronized to allow concurrent use of multiple Threads. This class also monitors the idle state of a RowSet
    Since:
    23-12-2010
    Author:
    Matt
    • Field Detail

      • originStepName

        protected volatile String originStepName
      • destinationStepName

        protected volatile String destinationStepName
      • destinationStepCopy

        protected AtomicInteger destinationStepCopy
      • remoteSlaveServerName

        protected volatile String remoteSlaveServerName
    • Constructor Detail

      • BlockingListeningRowSet

        public BlockingListeningRowSet​(int maxSize)
        Create new non-blocking-queue with maxSize capacity.
        Parameters:
        maxSize -
    • Method Detail

      • putRow

        public boolean putRow​(RowMetaInterface rowMeta,
                              Object[] rowData)
        Description copied from interface: RowSet
        Offer a row of data to this rowset providing for the description (metadata) of the row. If the buffer is full, wait (block) for a small period of time.
        Specified by:
        putRow in interface RowSet
        Parameters:
        rowMeta - The description of the row data
        rowData - the row of data
        Returns:
        true if the row was successfully added to the rowset and false if this buffer was full.
      • putRowWait

        public boolean putRowWait​(RowMetaInterface rowMeta,
                                  Object[] rowData,
                                  long time,
                                  TimeUnit tu)
        Description copied from interface: RowSet
        Offer a row of data to this rowset providing for the description (metadata) of the row. If the buffer is full, wait (block) for a period of time defined in this call.
        Specified by:
        putRowWait in interface RowSet
        Parameters:
        rowMeta - The description of the row data
        rowData - the row of data
        time - The number of units of time
        tu - The unit of time to use
        Returns:
        true if the row was successfully added to the rowset and false if this buffer was full.
      • getRow

        public Object[] getRow()
        Description copied from interface: RowSet
        Get a row from the input buffer, it blocks for a short period until a new row becomes available. Otherwise, it returns null.
        Specified by:
        getRow in interface RowSet
        Returns:
        a row of data or null if no row is available.
      • getRowImmediate

        public Object[] getRowImmediate()
        Description copied from interface: RowSet
        Get the first row in the list immediately.
        Specified by:
        getRowImmediate in interface RowSet
        Returns:
        a row of data or null if no row is available.
      • getRowWait

        public Object[] getRowWait​(long timeout,
                                   TimeUnit tu)
        Description copied from interface: RowSet
        get the first row in the list immediately if it is available or wait until timeout
        Specified by:
        getRowWait in interface RowSet
        Returns:
        a row of data or null if no row is available.
      • size

        public int size()
        Specified by:
        size in interface RowSet
        Returns:
        Return the size (or max capacity) of the RowSet
      • isBlocking

        public boolean isBlocking()
        By default we don't report blocking, only for monitored transformations.
        Specified by:
        isBlocking in interface RowSet
        Returns:
        true if this row set is blocking.
      • clear

        public void clear()
        Description copied from interface: RowSet
        Clear this rowset: remove all rows and remove the "done" flag.
        Specified by:
        clear in interface RowSet
      • compareTo

        public int compareTo​(RowSet rowSet)
        Compares using the target steps and copy, not the source. That way, re-partitioning is always done in the same way.
        Specified by:
        compareTo in interface Comparable<RowSet>
      • equals

        public boolean equals​(org.pentaho.di.core.BaseRowSet rowSet)
      • setDone

        public void setDone()
        Specified by:
        setDone in interface RowSet
      • isDone

        public boolean isDone()
        Specified by:
        isDone in interface RowSet
        Returns:
        Returns true if there is no more input and vice versa
      • getOriginStepName

        public String getOriginStepName()
        Specified by:
        getOriginStepName in interface RowSet
        Returns:
        Returns the originStepName.
      • getOriginStepCopy

        public int getOriginStepCopy()
        Specified by:
        getOriginStepCopy in interface RowSet
        Returns:
        Returns the originStepCopy.
      • getDestinationStepCopy

        public int getDestinationStepCopy()
        Specified by:
        getDestinationStepCopy in interface RowSet
        Returns:
        Returns the destinationStepCopy.
      • setThreadNameFromToCopy

        public void setThreadNameFromToCopy​(String from,
                                            int fromCopy,
                                            String to,
                                            int toCopy)
        Description copied from interface: RowSet
        This method is used only in Trans.java when created RowSet at line 333. Don't need any synchronization on this method
        Specified by:
        setThreadNameFromToCopy in interface RowSet
      • setRemoteSlaveServerName

        public void setRemoteSlaveServerName​(String remoteSlaveServerName)
        Specified by:
        setRemoteSlaveServerName in interface RowSet
        Parameters:
        remoteSlaveServerName - the remote slave server to set