uk.ac.starlink.ttools.cone
Class ParallelResultRowSequence

java.lang.Object
  extended by uk.ac.starlink.ttools.cone.ParallelResultRowSequence
All Implemented Interfaces:
RowSequence, ConeQueryRowSequence, ConeResultRowSequence

public class ParallelResultRowSequence
extends Object
implements ConeResultRowSequence

ConeResultRowSequence implementation which uses a fixed number of worker threads to dispatch cone queries in parallel. The result table has the same ordering as if they had been done in sequence.

Since:
18 Jan 2008
Author:
Mark Taylor

Field Summary
static int DEFAULT_MAXPAR
          Default maximum value for the number of threads that should be permitted for a query.
static String MAXPAR_PROP
          Name of system property "service.maxparallel" which may be used to adjust the maximum parallelism.
 
Constructor Summary
ParallelResultRowSequence(ConeQueryRowSequence querySeq, ConeSearcher coneSearcher, ConeErrorPolicy errAct, Coverage coverage, boolean bestOnly, boolean distFilter, String distanceCol, int parallelism)
          Constructor.
 
Method Summary
 void close()
          Indicates that this sequence will not be required any more.
 Object getCell(int icol)
          Returns the contents of a cell in the current row.
 StarTable getConeResult()
          Returns the result of the cone search for the current row of this sequence.
 double getDec()
          Get central declination for the current row's cone search request in degrees.
 long getIndex()
          Get the index in the underlying table to which the current row relates.
static int getMaxParallelism()
          Returns the maximum parallelism value which should permitted in this JVM.
 double getRa()
          Get central right ascension for the current row's cone search request in degrees.
 double getRadius()
          Get search radius for the current row's cone search request in degrees.
 Object[] getRow()
          Returns the contents of the current table row, as an array with the same number of elements as there are columns in this table.
 boolean next()
          Attempts to advances the current row to the next one.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_MAXPAR

public static final int DEFAULT_MAXPAR
Default maximum value for the number of threads that should be permitted for a query.

See Also:
MAXPAR_PROP, getMaxParallelism(), Constant Field Values

MAXPAR_PROP

public static final String MAXPAR_PROP
Name of system property "service.maxparallel" which may be used to adjust the maximum parallelism. Only increase this value with great care since you run the risk of overloading servers and making yourself unpopular with data centres. As a rule, you should only increase this value if you have obtained permission from the data centres whose services on which you will be using the increased parallelism.

See Also:
DEFAULT_MAXPAR, getMaxParallelism(), Constant Field Values
Constructor Detail

ParallelResultRowSequence

public ParallelResultRowSequence(ConeQueryRowSequence querySeq,
                                 ConeSearcher coneSearcher,
                                 ConeErrorPolicy errAct,
                                 Coverage coverage,
                                 boolean bestOnly,
                                 boolean distFilter,
                                 String distanceCol,
                                 int parallelism)
Constructor.

Parameters:
querySeq - sequence providing cone search query parameters
coneSearcher - cone search implementation
errAct - defines action on cone search invocation error
coverage - coverage for results, or null
bestOnly - whether all results or just best are required
distFilter - true to perform post-query filtering on results based on the distance between the query position and the result row position
distanceCol - name of column to hold distance information in output table, or null
parallelism - number of concurrent querying threads
Method Detail

next

public boolean next()
             throws IOException
Description copied from interface: RowSequence
Attempts to advances the current row to the next one. If true is returned the attempt has been successful, and if false is returned there are no more rows in this sequence. Since the initial position of a RowSequence is before the first row, this method must be called before current row data can be accessed using the RowSequence.getCell(int) or RowSequence.getRow() methods.

Specified by:
next in interface RowSequence
Returns:
true iff this sequence has been advanced to the next row
Throws:
IOException - if there is some error

getCell

public Object getCell(int icol)
               throws IOException
Description copied from interface: RowSequence
Returns the contents of a cell in the current row. The class of the returned object should be the same as, or a subclass of, the class returned by getColumnInfo(icol).getContentClass(). An unchecked exception will be thrown if there is no current row (next has not yet been called).

Specified by:
getCell in interface RowSequence
Returns:
the contents of cell icol in the current row
Throws:
IOException - if there is an error reading the data

getRow

public Object[] getRow()
                throws IOException
Description copied from interface: RowSequence
Returns the contents of the current table row, as an array with the same number of elements as there are columns in this table. An unchecked exception will be thrown if there is no current row (next has not yet been called).

Specified by:
getRow in interface RowSequence
Returns:
an array of the objects in each cell in row irow
Throws:
IOException - if there is an error reading the data

getRa

public double getRa()
             throws IOException
Description copied from interface: ConeQueryRowSequence
Get central right ascension for the current row's cone search request in degrees.

Specified by:
getRa in interface ConeQueryRowSequence
Returns:
right ascension
Throws:
IOException

getDec

public double getDec()
              throws IOException
Description copied from interface: ConeQueryRowSequence
Get central declination for the current row's cone search request in degrees.

Specified by:
getDec in interface ConeQueryRowSequence
Returns:
declination
Throws:
IOException

getRadius

public double getRadius()
                 throws IOException
Description copied from interface: ConeQueryRowSequence
Get search radius for the current row's cone search request in degrees.

Specified by:
getRadius in interface ConeQueryRowSequence
Returns:
search radius
Throws:
IOException

getIndex

public long getIndex()
              throws IOException
Description copied from interface: ConeQueryRowSequence
Get the index in the underlying table to which the current row relates. The identity of this underlying table is not specified by this interface, but must be understood by the creator and user of instances. In particular, the return value does not necessarily increment by one for each call to next.

Specified by:
getIndex in interface ConeQueryRowSequence
Returns:
row index
Throws:
IOException

getConeResult

public StarTable getConeResult()
                        throws IOException
Description copied from interface: ConeResultRowSequence
Returns the result of the cone search for the current row of this sequence. The work will typically be done using ConeMatcher.getConeResult(uk.ac.starlink.ttools.cone.ConeSearcher, uk.ac.starlink.ttools.cone.ConeErrorPolicy, boolean, boolean, java.lang.String, double, double, double).

If no records in the cone are found, the return value may either be null or (preferably) an empty table with the correct columns.

Specified by:
getConeResult in interface ConeResultRowSequence
Returns:
table giving rows strictly within the match criteria for the current row of this cone query sequence, or null
Throws:
IOException

close

public void close()
           throws IOException
Description copied from interface: RowSequence
Indicates that this sequence will not be required any more. This should release resources associated with this object. The effect of calling any of the other methods following a close is undefined.

Specified by:
close in interface RowSequence
Throws:
IOException

getMaxParallelism

public static int getMaxParallelism()
Returns the maximum parallelism value which should permitted in this JVM. The purpose of this is to set a limit to the number of concurrent queries that an irresponsible/careless user can hit a server with. The value can be adjusted using the MAXPAR_PROP system property. Note that this method is not used by this class, i.e. the maximum is not imposed here, it should be imposed by calling code.

Returns:
parallelism limit


Copyright © 2015 Central Laboratory of the Research Councils. All Rights Reserved.