NASA World Wind

gov.nasa.worldwind.util
Class BasicNetworkStatus

java.lang.Object
  extended by gov.nasa.worldwind.avlist.AVListImpl
      extended by gov.nasa.worldwind.util.BasicNetworkStatus
All Implemented Interfaces:
AVList, NetworkStatus

public class BasicNetworkStatus
extends AVListImpl
implements NetworkStatus

Basic implementation of NetworkStatus.


Nested Class Summary
protected static class BasicNetworkStatus.HostInfo
           
 
Field Summary
protected static int DEFAULT_ATTEMPT_LIMIT
           
protected static String[] DEFAULT_NETWORK_TEST_SITES
           
protected static long DEFAULT_TRY_AGAIN_INTERVAL
           
protected  ConcurrentHashMap<String,BasicNetworkStatus.HostInfo> hostMap
           
protected  AtomicLong lastAvailableLogTime
           
protected  AtomicLong lastNetworkCheckTime
           
protected  AtomicLong lastNetworkStatusReportTime
           
protected  AtomicBoolean lastNetworkUnavailableResult
           
protected  AtomicLong lastUnavailableLogTime
           
protected static long NETWORK_STATUS_REPORT_INTERVAL
           
 
Fields inherited from interface gov.nasa.worldwind.util.NetworkStatus
HOST_AVAILABLE, HOST_UNAVAILABLE
 
Constructor Summary
BasicNetworkStatus()
           
 
Method Summary
protected  void establishNetworkTestSites()
          Determines and stores the network sites to test for public network connectivity.
 int getAttemptLimit()
          Returns the number of times a host must be logged as unavailable before it is marked unavailable in this class.
 List<String> getNetworkTestSites()
          Returns the server domain names of the sites used to test public network availability.
 long getTryAgainInterval()
          Returns the length of time to wait until a host is marked as not unreachable subsequent to its being marked unreachable.
protected static boolean isHostReachable(String hostName)
          Determine if a host is reachable by attempting to resolve the host name, and then attempting to open a connection.
 boolean isHostUnavailable(URL url)
          Indicates whether the host has been marked as unavailable.
 boolean isNetworkUnavailable()
          Indicates whether a public network can be reached or has been reached in the previous five seconds.
 boolean isNetworkUnavailable(long checkInterval)
          Indicates whether a public network can be reached or has been reached in a specified previous amount of time.
 boolean isOfflineMode()
          Indicates whether World Wind will attempt to connect to the network to retrieve data or for other reasons.
 boolean isWorldWindServerUnavailable()
          Indicates whether the NASA World Wind servers can be reached.
 void logAvailableHost(URL url)
          Log a host as available.
 void logUnavailableHost(URL url)
          Log a host as unavailable.
 void setAttemptLimit(int limit)
          Sets the number of times a host must be logged as unavailable before it is marked unavailable in this class.
 void setNetworkTestSites(List<String> networkTestSites)
          Sets the domain names, e.g., worldwind.arc.nasa.gov, of sites used to determine public network availability.
 void setOfflineMode(boolean offlineMode)
          Indicates whether World Wind should attempt to connect to the network to retrieve data or for other reasons.
 void setTryAgainInterval(long interval)
          Sets the length of time to wait until a host is marked as not unreachable subsequent to its being marked unreachable.
 
Methods inherited from class gov.nasa.worldwind.avlist.AVListImpl
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getBooleanValue, getBooleanValue, getChangeSupport, getDoubleValue, getDoubleValue, getEntries, getIntegerValue, getIntegerValue, getLongValue, getLongValue, getRestorableStateForAVPair, getStringValue, getStringValue, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface gov.nasa.worldwind.avlist.AVList
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
 

Field Detail

DEFAULT_ATTEMPT_LIMIT

protected static final int DEFAULT_ATTEMPT_LIMIT
See Also:
Constant Field Values

DEFAULT_NETWORK_TEST_SITES

protected static final String[] DEFAULT_NETWORK_TEST_SITES

DEFAULT_TRY_AGAIN_INTERVAL

protected static final long DEFAULT_TRY_AGAIN_INTERVAL
See Also:
Constant Field Values

hostMap

protected ConcurrentHashMap<String,BasicNetworkStatus.HostInfo> hostMap

lastAvailableLogTime

protected AtomicLong lastAvailableLogTime

lastNetworkCheckTime

protected AtomicLong lastNetworkCheckTime

lastNetworkStatusReportTime

protected AtomicLong lastNetworkStatusReportTime

lastNetworkUnavailableResult

protected AtomicBoolean lastNetworkUnavailableResult

lastUnavailableLogTime

protected AtomicLong lastUnavailableLogTime

NETWORK_STATUS_REPORT_INTERVAL

protected static final long NETWORK_STATUS_REPORT_INTERVAL
See Also:
Constant Field Values
Constructor Detail

BasicNetworkStatus

public BasicNetworkStatus()
Method Detail

establishNetworkTestSites

protected void establishNetworkTestSites()
Determines and stores the network sites to test for public network connectivity. The sites are drawn from the JVM's gov.nasa.worldwind.avkey.NetworkStatusTestSites property (AVKey.NETWORK_STATUS_TEST_SITES). If that property is not defined, the sites are drawn from the same property in the World Wind or application configuration file. If the sites are not specified there, the set of sites specified in DEFAULT_NETWORK_TEST_SITES are used. To indicate an empty list in the JVM property or configuration file property, specify an empty site list, "".


getAttemptLimit

public int getAttemptLimit()
Returns the number of times a host must be logged as unavailable before it is marked unavailable in this class.

Specified by:
getAttemptLimit in interface NetworkStatus
Returns:
the limit.

getNetworkTestSites

public List<String> getNetworkTestSites()
Returns the server domain names of the sites used to test public network availability.

Specified by:
getNetworkTestSites in interface NetworkStatus
Returns:
the list of sites used to check network status. The list is a copy of the internal list, so changes to it do not affect instances of this class.

getTryAgainInterval

public long getTryAgainInterval()
Returns the length of time to wait until a host is marked as not unreachable subsequent to its being marked unreachable.

Specified by:
getTryAgainInterval in interface NetworkStatus
Returns:
the interval, in milliseconds.

isHostReachable

protected static boolean isHostReachable(String hostName)
Determine if a host is reachable by attempting to resolve the host name, and then attempting to open a connection.

Parameters:
hostName - Name of the host to connect to.
Returns:
true if a the host is reachable, false if the host name cannot be resolved, or if opening a connection to the host fails.

isHostUnavailable

public boolean isHostUnavailable(URL url)
Indicates whether the host has been marked as unavailable. To be marked unavailable a host's attempt count must exceed the specified attempt limit.

Specified by:
isHostUnavailable in interface NetworkStatus
Parameters:
url - a url containing the host to check for availability.
Returns:
true if the host is marked as unavailable, otherwise false.

isNetworkUnavailable

public boolean isNetworkUnavailable()
Indicates whether a public network can be reached or has been reached in the previous five seconds.

Specified by:
isNetworkUnavailable in interface NetworkStatus
Returns:
false if the network can be reached or has been reached in the previous five seconds, otherwise true.

isNetworkUnavailable

public boolean isNetworkUnavailable(long checkInterval)
Indicates whether a public network can be reached or has been reached in a specified previous amount of time.

Specified by:
isNetworkUnavailable in interface NetworkStatus
Parameters:
checkInterval - the number of milliseconds in the past used to determine whether the server was avaialble recently.
Returns:
false if the network can be reached or has been reached in a specified time, otherwise true.

isOfflineMode

public boolean isOfflineMode()
Indicates whether World Wind will attempt to connect to the network to retrieve data or for other reasons.

Specified by:
isOfflineMode in interface NetworkStatus
Returns:
true if World Wind is in off-line mode, false if not.

isWorldWindServerUnavailable

public boolean isWorldWindServerUnavailable()
Indicates whether the NASA World Wind servers can be reached.

Specified by:
isWorldWindServerUnavailable in interface NetworkStatus
Returns:
false if the servers can be reached, otherwise true.

logAvailableHost

public void logAvailableHost(URL url)
Log a host as available. Each invocation causes the host to no longer be marked as unavailable. Its unavailability count is effectively set to 0.

Specified by:
logAvailableHost in interface NetworkStatus
Parameters:
url - a url containing the host to mark as available.

logUnavailableHost

public void logUnavailableHost(URL url)
Log a host as unavailable. Each invocation increments the host's attempt count. When the count equals or exceeds the attempt limit, the host is marked as unavailable.

Specified by:
logUnavailableHost in interface NetworkStatus
Parameters:
url - a url containing the host to mark as unavailable.

setAttemptLimit

public void setAttemptLimit(int limit)
Sets the number of times a host must be logged as unavailable before it is marked unavailable in this class.

Specified by:
setAttemptLimit in interface NetworkStatus
Parameters:
limit - the number of log-unavailability invocations necessary to consider the host unreachable.

setNetworkTestSites

public void setNetworkTestSites(List<String> networkTestSites)
Sets the domain names, e.g., worldwind.arc.nasa.gov, of sites used to determine public network availability.

Specified by:
setNetworkTestSites in interface NetworkStatus
Parameters:
networkTestSites - the list of desired test sites. The list is copied internally, so changes made to the submitted list do not affect instances of this class. May be null, in which case no sites are consulted.

setOfflineMode

public void setOfflineMode(boolean offlineMode)
Indicates whether World Wind should attempt to connect to the network to retrieve data or for other reasons. The default value for this attribute is false, indicating that the network should be used.

Specified by:
setOfflineMode in interface NetworkStatus
Parameters:
offlineMode - true if World Wind should use the network, false otherwise

setTryAgainInterval

public void setTryAgainInterval(long interval)
Sets the length of time to wait until a host is marked as not unreachable subsequent to its being marked unreachable.

Specified by:
setTryAgainInterval in interface NetworkStatus
Parameters:
interval - The length of time, in milliseconds, to wait to unmark a host as unreachable.

NASA World Wind