Browse Source

emsc http improved

[email protected] 8 years ago
parent
commit
2642527323

+ 6 - 2
oxygine/src/HttpRequestTask.cpp

@@ -35,6 +35,7 @@ namespace oxygine
 
     HttpRequestTask::HttpRequestTask() :
         _cacheEnabled(true),
+        _progressOnWrite(true),
         _continueDownload(false),
         _expectedContentSize(0),
         _receivedContentSize(0),
@@ -173,11 +174,11 @@ namespace oxygine
     }
 
     void HttpRequestTask::dispatchProgress(size_t delta, size_t loaded, size_t total)
-    {        
+    {
         ProgressEvent event(delta, loaded, total, !_firstTimeProgressDispatched);
         _firstTimeProgressDispatched = true;
 
-        dispatchEvent(&event);        
+        dispatchEvent(&event);
     }
 
     void HttpRequestTask::asyncProgress(size_t delta, size_t loaded, size_t total)
@@ -259,6 +260,9 @@ namespace oxygine
             _response.insert(_response.end(), p, p + size);
         }
 
+        if (!_progressOnWrite)
+            return;
+
         _receivedContentSize += size;
         asyncProgress(size, _receivedContentSize, _expectedContentSize);
     }

+ 2 - 1
oxygine/src/HttpRequestTask.h

@@ -31,7 +31,7 @@ namespace oxygine
         {
         public:
             enum {EVENT = PROGRESS};
-            ProgressEvent(size_t Delta, size_t Loaded, size_t Total, bool First) : Event(PROGRESS), delta(Delta), loaded(Loaded), total(Total), first(First){};
+            ProgressEvent(size_t Delta, size_t Loaded, size_t Total, bool First) : Event(PROGRESS), delta(Delta), loaded(Loaded), total(Total), first(First) {};
 
             size_t delta;
             size_t loaded;
@@ -94,6 +94,7 @@ namespace oxygine
         bool _writeFileError;
         bool _cacheEnabled;
         bool _firstTimeProgressDispatched;
+        bool _progressOnWrite;
 
         bool _progressDispatched;
         unsigned int _progressDeltaDelayed;

+ 1 - 1
oxygine/src/TextField.h

@@ -14,7 +14,7 @@ namespace oxygine
         static void setDefaultFont(ResFont*);
         static ResFont* getDefaultFont();
 
-        enum {EVENT_REBUILD = sysEventID('T','F','r') };
+        enum {EVENT_REBUILD = sysEventID('T', 'F', 'r') };
 
         DECLARE_COPYCLONE_NEW(TextField);
         TextField();

+ 8 - 7
oxygine/src/core/STDFileSystem.cpp

@@ -172,18 +172,18 @@ namespace oxygine
 
 
 #ifdef OXYGINE_EDITOR
-        int remove_directory(const char *path){return -1;}
+        int remove_directory(const char* path) {return -1;}
 #else
-        int remove_directory(const char *path)
+        int remove_directory(const char* path)
         {
 #ifndef WIN32
-            DIR *d = opendir(path);
+            DIR* d = opendir(path);
             size_t path_len = strlen(path);
             int r = -1;
 
             if (d)
             {
-                struct dirent *p;
+                struct dirent* p;
 
                 r = 0;
 
@@ -239,7 +239,7 @@ namespace oxygine
             hFile = ::FindFirstFile(strPattern.c_str(), &FileInformation);
             if (hFile == INVALID_HANDLE_VALUE)
                 return -1;
-            
+
             do
             {
                 if (FileInformation.cFileName[0] != '.')
@@ -256,7 +256,8 @@ namespace oxygine
                         DeleteFile(strFilePath.c_str());
                     }
                 }
-            } while (::FindNextFile(hFile, &FileInformation) == TRUE);
+            }
+            while (::FindNextFile(hFile, &FileInformation) == TRUE);
 
             // Close handle
             ::FindClose(hFile);
@@ -368,7 +369,7 @@ namespace oxygine
         FileSystem::status STDFileSystem::_deleteDirectory(const char* path)
         {
             char buff[512];
-            _getFullPath(path, buff);           
+            _getFullPath(path, buff);
 
             return remove_directory(buff) != -1 ? status_ok : status_error;
         }

+ 10 - 5
oxygine/src/core/curl/HttpRequestCurlTask.cpp

@@ -174,21 +174,26 @@ namespace oxygine
         if (s > 255)//ignore unknown headers
             return s;
 
+        char buff[512];
+        int i = 0;
+        for (; i < s; ++i)
+            buff[i] = tolower(d[i]);
+        buff[i] = 0;
 
         int contentLength = 0;
-        if (sscanf(d, "Content-Length: %d", &contentLength) == 1)
-        {            
-            _expectedContentSize = contentLength;            
+        if (sscanf(buff, "content-length: %d", &contentLength) == 1)
+        {
+            _expectedContentSize = contentLength;
         }
 
         int responseCode = 0;
         char ver[32];
-        if (sscanf(d, "HTTP/%s %d ", ver, &responseCode) == 2)
+        if (sscanf(buff, "http/%s %d ", ver, &responseCode) == 2)
         {
             _responseCode = responseCode;
         }
 
-        if (d[0] == '\r' && d[1] == '\n')
+        if (buff[0] == '\r' && buff[1] == '\n')
         {
             gotHeaders();
         }

+ 5 - 0
oxygine/src/core/emscripten/HttpRequestEmscriptenTask.cpp

@@ -19,6 +19,11 @@ namespace oxygine
     {
     }
 
+    HttpRequestEmscriptenTask::HttpRequestEmscriptenTask()
+    {
+        _progressOnWrite = false;//manual send
+    }
+
     void HttpRequestEmscriptenTask::_onload(void* data, unsigned size)
     {
         _responseCode = 200;

+ 1 - 0
oxygine/src/core/emscripten/HttpRequestEmscriptenTask.h

@@ -7,6 +7,7 @@ namespace oxygine
     class HttpRequestEmscriptenTask: public HttpRequestTask
     {
     public:
+        HttpRequestEmscriptenTask();
 
     private:
         /*

+ 20 - 0
oxygine/src/core/file.cpp

@@ -245,6 +245,26 @@ namespace oxygine
             return _nfs.makeDirectory(path.c_str()) == FileSystem::status_ok;
         }
 
+        void makeDirectories(const std::string& path_)
+        {
+            std::string path = path::normalize(path_);
+
+            std::string folder;
+            std::string str = path;
+            do
+            {
+                size_t pos = str.find('/');
+                if (pos == str.npos)
+                    break;
+
+                folder += str.substr(0, pos) + "/";
+                makeDirectory(folder.c_str());
+                str = str.substr(pos + 1, str.size() - pos);
+
+            }
+            while (1);
+        }
+
         void deleteDirectory(const std::string& path)
         {
             _nfs.deleteDirectory(path.c_str());

+ 1 - 0
oxygine/src/core/file.h

@@ -92,6 +92,7 @@ namespace oxygine
 
         /**Makes directory. Not recursive*/
         bool makeDirectory(const std::string& path);
+        void makeDirectories(const std::string& path);
 
         /**Deletes empty directory*/
         void deleteDirectory(const std::string& path);