edu.sc.seis.fissuresUtil.cache
Class DataCenterRouter

java.lang.Object
  extended by edu.sc.seis.fissuresUtil.cache.DataCenterRouter
All Implemented Interfaces:
edu.iris.Fissures.IfSeismogramDC.DataCenterOperations
Direct Known Subclasses:
HardCodeDataCenterRouter

public class DataCenterRouter
extends java.lang.Object
implements edu.iris.Fissures.IfSeismogramDC.DataCenterOperations

Routes data center requests to the correct datacenter. This allow the calling object to deal with multiple datacenters without keeping track of which networks come from which datacenters. The first datacenter to return data for a particular request is assumed to have satisfied the request. But if no data is returned, then the request propigates to the next datacenter. Created: Wed Jan 22 15:24:39 2003


Field Summary
protected  java.util.HashMap netToDCMap
           
protected  java.util.List unmatchedDCList
           
 
Constructor Summary
DataCenterRouter()
           
 
Method Summary
 void addDataCenter(edu.iris.Fissures.IfNetwork.NetworkAccess[] net, ProxySeismogramDC dc)
           
 void addDataCenter(edu.iris.Fissures.IfNetwork.NetworkAccess net, ProxySeismogramDC dc)
           
 void addDataCenter(edu.iris.Fissures.IfNetwork.NetworkId networkId, ProxySeismogramDC dc)
           
 void addDataCenter(ProxySeismogramDC dc)
           
 void addDataCenter(java.lang.String network_code, ProxySeismogramDC dc)
           
 edu.iris.Fissures.IfSeismogramDC.RequestFilter[] available_data(edu.iris.Fissures.IfSeismogramDC.RequestFilter[] filters)
           
 void cancel_request(java.lang.String a_request)
           
 java.util.List getDataCenter(edu.iris.Fissures.IfNetwork.ChannelId chanId)
           
 java.util.List getDataCenter(edu.iris.Fissures.IfNetwork.NetworkAccess net)
           
 java.util.List getDataCenter(edu.iris.Fissures.IfNetwork.NetworkId networkId)
           
 java.util.List getDataCenter(java.lang.String networkCode)
           
protected  java.util.HashMap makeMap(edu.iris.Fissures.IfSeismogramDC.RequestFilter[] filters)
          Sorts the request filters into Lists indexed by the list of datacenters that support each networkId.
 java.lang.String queue_seismograms(edu.iris.Fissures.IfSeismogramDC.RequestFilter[] a_filterseq)
           
 java.lang.String request_seismograms(edu.iris.Fissures.IfSeismogramDC.RequestFilter[] filters, edu.iris.Fissures.IfSeismogramDC.DataCenterCallBack a_client, boolean long_lived, edu.iris.Fissures.Time expiration_time)
           
 java.lang.String request_status(java.lang.String a_request)
           
 edu.iris.Fissures.IfSeismogramDC.LocalSeismogram[] retrieve_queue(java.lang.String a_request)
           
 edu.iris.Fissures.IfSeismogramDC.LocalSeismogram[] retrieve_seismograms(edu.iris.Fissures.IfSeismogramDC.RequestFilter[] filters)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

netToDCMap

protected java.util.HashMap netToDCMap

unmatchedDCList

protected java.util.List unmatchedDCList
Constructor Detail

DataCenterRouter

public DataCenterRouter()
Method Detail

addDataCenter

public void addDataCenter(ProxySeismogramDC dc)

addDataCenter

public void addDataCenter(edu.iris.Fissures.IfNetwork.NetworkAccess[] net,
                          ProxySeismogramDC dc)

addDataCenter

public void addDataCenter(edu.iris.Fissures.IfNetwork.NetworkAccess net,
                          ProxySeismogramDC dc)

addDataCenter

public void addDataCenter(edu.iris.Fissures.IfNetwork.NetworkId networkId,
                          ProxySeismogramDC dc)

addDataCenter

public void addDataCenter(java.lang.String network_code,
                          ProxySeismogramDC dc)

getDataCenter

public java.util.List getDataCenter(edu.iris.Fissures.IfNetwork.NetworkAccess net)

getDataCenter

public java.util.List getDataCenter(edu.iris.Fissures.IfNetwork.NetworkId networkId)

getDataCenter

public java.util.List getDataCenter(java.lang.String networkCode)

getDataCenter

public java.util.List getDataCenter(edu.iris.Fissures.IfNetwork.ChannelId chanId)

available_data

public edu.iris.Fissures.IfSeismogramDC.RequestFilter[] available_data(edu.iris.Fissures.IfSeismogramDC.RequestFilter[] filters)
Specified by:
available_data in interface edu.iris.Fissures.IfSeismogramDC.DataCenterOperations

request_seismograms

public java.lang.String request_seismograms(edu.iris.Fissures.IfSeismogramDC.RequestFilter[] filters,
                                            edu.iris.Fissures.IfSeismogramDC.DataCenterCallBack a_client,
                                            boolean long_lived,
                                            edu.iris.Fissures.Time expiration_time)
                                     throws edu.iris.Fissures.FissuresException
Specified by:
request_seismograms in interface edu.iris.Fissures.IfSeismogramDC.DataCenterOperations
Throws:
edu.iris.Fissures.FissuresException

retrieve_seismograms

public edu.iris.Fissures.IfSeismogramDC.LocalSeismogram[] retrieve_seismograms(edu.iris.Fissures.IfSeismogramDC.RequestFilter[] filters)
                                                                        throws edu.iris.Fissures.FissuresException
Specified by:
retrieve_seismograms in interface edu.iris.Fissures.IfSeismogramDC.DataCenterOperations
Throws:
edu.iris.Fissures.FissuresException

queue_seismograms

public java.lang.String queue_seismograms(edu.iris.Fissures.IfSeismogramDC.RequestFilter[] a_filterseq)
                                   throws edu.iris.Fissures.FissuresException
Specified by:
queue_seismograms in interface edu.iris.Fissures.IfSeismogramDC.DataCenterOperations
Throws:
edu.iris.Fissures.FissuresException

retrieve_queue

public edu.iris.Fissures.IfSeismogramDC.LocalSeismogram[] retrieve_queue(java.lang.String a_request)
                                                                  throws edu.iris.Fissures.FissuresException
Specified by:
retrieve_queue in interface edu.iris.Fissures.IfSeismogramDC.DataCenterOperations
Throws:
edu.iris.Fissures.FissuresException

cancel_request

public void cancel_request(java.lang.String a_request)
                    throws edu.iris.Fissures.FissuresException
Specified by:
cancel_request in interface edu.iris.Fissures.IfSeismogramDC.DataCenterOperations
Throws:
edu.iris.Fissures.FissuresException

request_status

public java.lang.String request_status(java.lang.String a_request)
                                throws edu.iris.Fissures.FissuresException
Specified by:
request_status in interface edu.iris.Fissures.IfSeismogramDC.DataCenterOperations
Throws:
edu.iris.Fissures.FissuresException

makeMap

protected java.util.HashMap makeMap(edu.iris.Fissures.IfSeismogramDC.RequestFilter[] filters)
Sorts the request filters into Lists indexed by the list of datacenters that support each networkId. So the keys of the map are Lists of DataCenters, all of which support a given network. And the values of the map is a List of RequestFilters that are for the given network.