[email protected] 8 years ago
parent
commit
564db42f5d

+ 8 - 4
oxygine/src/AsyncTask.cpp

@@ -16,14 +16,18 @@ namespace oxygine
 
 
     void AsyncTask::run()
     void AsyncTask::run()
     {
     {
-        _prerun();
-        log::messageln("AsyncTask::run %d - %s", getObjectID(), typeid(*this).name());
-
         OX_ASSERT(_status == status_not_started);
         OX_ASSERT(_status == status_not_started);
         _status = status_inprogress;
         _status = status_inprogress;
+
+        bool ok = _prerun();
+        log::messageln("AsyncTask::run %d - %s", getObjectID(), typeid(*this).name());
+                
         sync([ = ]()
         sync([ = ]()
         {
         {
-            _run();
+            if (ok)
+                _run();
+            else
+                _error();
         });
         });
     }
     }
 
 

+ 1 - 1
oxygine/src/AsyncTask.h

@@ -56,7 +56,7 @@ namespace oxygine
 
 
         bool _mainThreadSync;
         bool _mainThreadSync;
 
 
-        virtual void _prerun() {}
+        virtual bool _prerun() { return true; }
         virtual void _run() = 0;
         virtual void _run() = 0;
         virtual void _onError() {}
         virtual void _onError() {}
         virtual void _onComplete() {}
         virtual void _onComplete() {}

+ 8 - 1
oxygine/src/HttpRequestTask.cpp

@@ -116,7 +116,7 @@ namespace oxygine
         return _fname;
         return _fname;
     }
     }
 
 
-    void HttpRequestTask::_prerun()
+    bool HttpRequestTask::_prerun()
     {
     {
         _suitableResponse = false;
         _suitableResponse = false;
         _receivedContentSize = 0;
         _receivedContentSize = 0;
@@ -131,6 +131,12 @@ namespace oxygine
         {
         {
             const char* mode = _continueDownload ? "ab" : "wb";
             const char* mode = _continueDownload ? "ab" : "wb";
             _fhandle = file::open(_fname, mode, ep_ignore_error);
             _fhandle = file::open(_fname, mode, ep_ignore_error);
+            OX_ASSERT(_fhandle);
+
+            if (!_fhandle)
+            {
+                return false;
+            }
 
 
             if (_continueDownload)
             if (_continueDownload)
             {
             {
@@ -144,6 +150,7 @@ namespace oxygine
                 _receivedContentSize = size;
                 _receivedContentSize = size;
             }
             }
         }
         }
+        return true;
     }
     }
 
 
     void HttpRequestTask::dispatchProgress(int delta, int loaded, int total)
     void HttpRequestTask::dispatchProgress(int delta, int loaded, int total)

+ 1 - 1
oxygine/src/HttpRequestTask.h

@@ -61,7 +61,7 @@ namespace oxygine
         void setSuccessOnAnyResponseCode(bool en);
         void setSuccessOnAnyResponseCode(bool en);
 
 
     protected:
     protected:
-        void _prerun() override;
+        bool _prerun() override;
         void _onError() override;
         void _onError() override;
         void _onComplete() override;
         void _onComplete() override;
         void _dispatchComplete() override;
         void _dispatchComplete() override;