]> git.mxchange.org Git - flightgear.git/commitdiff
Expose HTTP client to Canvas.
authorThomas Geymayer <tomgey@gmail.com>
Tue, 18 Mar 2014 17:35:35 +0000 (18:35 +0100)
committerThomas Geymayer <tomgey@gmail.com>
Tue, 18 Mar 2014 17:35:35 +0000 (18:35 +0100)
src/Canvas/FGCanvasSystemAdapter.cxx
src/Canvas/FGCanvasSystemAdapter.hxx
src/Scripting/NasalHTTP.cxx

index ad774fd438c11bbaa822ff8203c802f7b840b0b4..69ea6c5a4b20b1e5f3ae470fc91a6cb0ac9d8dbf 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <Main/globals.hxx>
 #include <Main/util.hxx>
+#include <Network/HTTPClient.hxx>
 #include <Viewer/renderer.hxx>
 
 #include <osgDB/ReadFile>
@@ -98,4 +99,19 @@ namespace canvas
     return 0;
   }
 
+  //----------------------------------------------------------------------------
+  simgear::HTTP::Client* FGCanvasSystemAdapter::getHTTPClient() const
+  {
+    FGHTTPClient* http =
+      static_cast<FGHTTPClient*>(globals->get_subsystem("http"));
+
+    if( http )
+      return http->client();
+
+    SG_LOG( SG_IO,
+            SG_ALERT,
+            "FGCanvasSystemAdapter: Failed to get HTTP subsystem" );
+    return 0;
+  }
+
 }
index 03ff2df36a71672f5c67f5f196a0306f19740d83..e568302d7613c931460019b9e0954302ff22e976 100644 (file)
@@ -31,6 +31,7 @@ namespace canvas
       virtual void addCamera(osg::Camera* camera) const;
       virtual void removeCamera(osg::Camera* camera) const;
       virtual osg::Image* getImage(const std::string& path) const;
+      virtual simgear::HTTP::Client* getHTTPClient() const;
   };
 }
 
index ae55204acd1f033197ae5b627de56c5e5459aed9..637e3a3ac07b2e7588190c5d83306257bafa856f 100644 (file)
@@ -82,6 +82,7 @@ static naRef f_http_load(const nasal::CallContext& ctx)
 naRef initNasalHTTP(naRef globals, naContext c)
 {
   using simgear::HTTP::Request;
+  typedef Request* (Request::*HTTPCallback)(const Request::Callback&);
   NasalRequest::init("http.Request")
     .member("url", &Request::url)
     .member("method", &Request::method)
@@ -94,9 +95,9 @@ naRef initNasalHTTP(naRef globals, naContext c)
     .member("reason", &Request::responseReason)
     .member("readyState", &Request::readyState)
     .method("abort", static_cast<void (Request::*)()>(&Request::abort))
-    .method("done", &Request::done)
-    .method("fail", &Request::fail)
-    .method("always", &Request::always);
+    .method("done", static_cast<HTTPCallback>(&Request::done))
+    .method("fail", static_cast<HTTPCallback>(&Request::fail))
+    .method("always", static_cast<HTTPCallback>(&Request::always));
 
   using simgear::HTTP::FileRequest;
   NasalFileRequest::init("http.FileRequest")