+ SGPropertyNode_ptr boundary_wind_speed_n;
+ SGPropertyNode_ptr boundary_wind_from_heading_n;
+ SGPropertyNode_ptr boundary_visibility_n;
+ SGPropertyNode_ptr boundary_sea_level_pressure_n;
+ SGPropertyNode_ptr boundary_sea_level_temperature_n;
+ SGPropertyNode_ptr boundary_sea_level_dewpoint_n;
+private:
+
+};
+
+/*
+ * The subsyste to load real world weather
+ */
+class FGMetarFetcher : public SGSubsystem
+{
+public:
+ FGMetarFetcher();
+ virtual ~FGMetarFetcher();
+
+ virtual void init ();
+ virtual void reinit ();
+ virtual void update (double delta_time_sec);
+
+private:
+ friend class MetarThread;
+#if defined(ENABLE_THREADS)
+ /**
+ * FIFO queue which holds a pointer to the metar requests.
+ */
+ SGBlockingQueue <string> request_queue;
+
+ OpenThreads::Thread * metar_thread;
+#endif
+
+ void fetch( const string & id );
+
+ SGPropertyNode_ptr enable_n;
+
+ SGPropertyNode_ptr longitude_n;
+ SGPropertyNode_ptr latitude_n;
+
+ SGPropertyNode_ptr proxy_host_n;
+ SGPropertyNode_ptr proxy_port_n;
+ SGPropertyNode_ptr proxy_auth_n;
+ SGPropertyNode_ptr max_age_n;
+
+ SGPropertyNode_ptr output_n;
+
+ string current_airport_id;
+ double fetch_timer;
+ double search_timer;
+ double error_timer;
+
+ long _stale_count;
+ long _error_count;
+ bool enabled;