Class BasicNetworkStatus

    • Field Detail

      • DEFAULT_TRY_AGAIN_INTERVAL

        protected static final long DEFAULT_TRY_AGAIN_INTERVAL
        See Also:
        Constant Field Values
      • DEFAULT_ATTEMPT_LIMIT

        protected static final int DEFAULT_ATTEMPT_LIMIT
        See Also:
        Constant Field Values
      • NETWORK_STATUS_REPORT_INTERVAL

        protected static final long NETWORK_STATUS_REPORT_INTERVAL
        See Also:
        Constant Field Values
      • DEFAULT_NETWORK_TEST_SITES

        protected static final java.lang.String[] DEFAULT_NETWORK_TEST_SITES
      • lastUnavailableLogTime

        protected java.util.concurrent.atomic.AtomicLong lastUnavailableLogTime
      • lastAvailableLogTime

        protected java.util.concurrent.atomic.AtomicLong lastAvailableLogTime
      • lastNetworkCheckTime

        protected java.util.concurrent.atomic.AtomicLong lastNetworkCheckTime
      • lastNetworkStatusReportTime

        protected java.util.concurrent.atomic.AtomicLong lastNetworkStatusReportTime
      • lastNetworkUnavailableResult

        protected java.util.concurrent.atomic.AtomicBoolean lastNetworkUnavailableResult
    • 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 WorldWind 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, "".
      • isOfflineMode

        public boolean isOfflineMode()
        Indicates whether WorldWind will attempt to connect to the network to retrieve data or for other reasons.
        Specified by:
        isOfflineMode in interface NetworkStatus
        Returns:
        true if WorldWind is in off-line mode, false if not.
      • setOfflineMode

        public void setOfflineMode​(boolean offlineMode)
        Indicates whether WorldWind 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 WorldWind should use the network, false otherwise
      • 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.
      • 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.
      • 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.
      • 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.
      • getNetworkTestSites

        public java.util.List<java.lang.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.
      • setNetworkTestSites

        public void setNetworkTestSites​(java.util.List<java.lang.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.
      • logUnavailableHost

        public void logUnavailableHost​(java.net.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.
      • logAvailableHost

        public void logAvailableHost​(java.net.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.
      • isHostUnavailable

        public boolean isHostUnavailable​(java.net.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.
      • isWorldWindServerUnavailable

        public boolean isWorldWindServerUnavailable()
        Indicates whether the NASA WorldWind servers can be reached.
        Specified by:
        isWorldWindServerUnavailable in interface NetworkStatus
        Returns:
        false if the servers can be reached, otherwise true.
      • isHostReachable

        protected static boolean isHostReachable​(java.lang.String hostName)
        Determine if a host is reachable by attempting to resolve the host name, and then attempting to open a connection using either https or http.
        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.