Class PriorityProcessor<K,​V,​T>

  • All Implemented Interfaces:
    ExternalizableLite, PortableObject, PriorityTask, InvocableMap.EntryProcessor<K,​V,​T>, Serializable

    public class PriorityProcessor<K,​V,​T>
    extends AbstractPriorityTask
    implements InvocableMap.EntryProcessor<K,​V,​T>, ExternalizableLite, PortableObject
    PriorityProcessor is used to explicitly control the scheduling priority and timeouts for execution of EntryProcessor-based methods.

    For example, let's assume that there is a cache that belongs to a partitioned cache service configured with a task-timeout of 5 seconds. Also assume that there is a particular PreloadRequest processor that could take much longer to complete due to a large amount of database related processing. Then we could override the default task timeout value by using the PriorityProcessor as follows:

       PreloadRequest     procStandard = PreloadRequest.INSTANCE;
       PriorityProcessor  procPriority = new PriorityProcessor(procStandard);
       procPriority.setExecutionTimeoutMillis(PriorityTask.TIMEOUT_NONE);
       cache.processAll(setKeys, procPriority);
     

    This is an advanced feature which should be used judiciously.

    Since:
    Coherence 3.3
    Author:
    gg 2007.03.20
    See Also:
    Serialized Form
    • Constructor Detail

      • PriorityProcessor

        public PriorityProcessor()
        Default constructor (necessary for the ExternalizableLite interface).
      • PriorityProcessor

        public PriorityProcessor​(InvocableMap.EntryProcessor<K,​V,​T> processor)
        Construct a PriorityProcessor.
        Parameters:
        processor - the processor wrapped by this PriorityProcessor
    • Method Detail

      • processAll

        public Map<K,​T> processAll​(Set<? extends InvocableMap.Entry<K,​V>> setEntries)
        Process a Set of InvocableMap.Entry objects. This method is semantically equivalent to:
           Map mapResults = new ListMap();
           for (Iterator iter = setEntries.iterator(); iter.hasNext(); )
               {
               Entry entry = (Entry) iter.next();
               mapResults.put(entry.getKey(), process(entry));
               }
           return mapResults;
         

        Note: if processAll() call throws an exception, only the entries that were removed from the setEntries would be considered successfully processed and the corresponding changes made to the underlying Map; changes made to the remaining entries or any other entries obtained from BackingMapContext.getBackingMapEntry(java.lang.Object) will not be processed.

        Specified by:
        processAll in interface InvocableMap.EntryProcessor<K,​V,​T>
        Parameters:
        setEntries - a Set of InvocableMap.Entry objects to process
        Returns:
        a Map containing the results of the processing, up to one entry for each InvocableMap.Entry that was processed, keyed by the keys of the Map that were processed, with a corresponding value being the result of the processing for each key
      • getProcessor

        public InvocableMap.EntryProcessor<K,​V,​T> getProcessor()
        Obtain the underlying processor.
        Returns:
        the processor wrapped by this PriorityProcessor
      • toString

        public String toString()
        Return a human-readable description for this PriorityProcessor.
        Overrides:
        toString in class Object
        Returns:
        a String description of the PriorityProcessor
      • readExternal

        public void readExternal​(PofReader in)
                          throws IOException
        Restore the contents of a user type instance by reading its state using the specified PofReader object.

        The AbstractPriorityTask implementation reserves property indexes 0 - 9.

        The PriorityProcessor implementation reserves property index 10.

        Specified by:
        readExternal in interface PortableObject
        Overrides:
        readExternal in class AbstractPriorityTask
        Parameters:
        in - the PofReader from which to read the object's state
        Throws:
        IOException - if an I/O error occurs
      • writeExternal

        public void writeExternal​(PofWriter out)
                           throws IOException
        Save the contents of a POF user type instance by writing its state using the specified PofWriter object.

        The AbstractPriorityTask implementation reserves property indexes 0 - 9.

        The PriorityProcessor implementation reserves property index 10.

        Specified by:
        writeExternal in interface PortableObject
        Overrides:
        writeExternal in class AbstractPriorityTask
        Parameters:
        out - the PofWriter to which to write the object's state
        Throws:
        IOException - if an I/O error occurs