From f04094e4ec35b9f0fbcde8e8f99394e3bd2cc57d Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Fri, 2 Nov 2018 21:37:45 +0100 Subject: [PATCH] Implement GetBytesReceived() in base class --- include/wx/msw/webrequest_winhttp.h | 4 ---- include/wx/webrequest.h | 8 ++++++-- src/common/webrequest.cpp | 17 ++++++++++++++--- src/msw/webrequest_winhttp.cpp | 4 +--- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/include/wx/msw/webrequest_winhttp.h b/include/wx/msw/webrequest_winhttp.h index edd4e66ffd..cd4c1750f2 100644 --- a/include/wx/msw/webrequest_winhttp.h +++ b/include/wx/msw/webrequest_winhttp.h @@ -79,8 +79,6 @@ public: wxFileOffset GetBytesExpectedToSend() const wxOVERRIDE { return m_dataSize; } - wxFileOffset GetBytesReceived() const wxOVERRIDE { return m_bytesReceived; } - void HandleCallback(DWORD dwInternetStatus, LPVOID lpvStatusInformation, DWORD dwStatusInformationLength); @@ -94,7 +92,6 @@ private: wxScopedPtr m_authChallenge; wxMemoryBuffer m_dataWriteBuffer; wxFileOffset m_dataWritten; - wxFileOffset m_bytesReceived; void SendRequest(); @@ -105,7 +102,6 @@ private: void SetFailedWithLastError(); friend class wxWebAuthChallengeWinHTTP; - friend class wxWebResponseWinHTTP; wxDECLARE_NO_COPY_CLASS(wxWebRequestWinHTTP); }; diff --git a/include/wx/webrequest.h b/include/wx/webrequest.h index 7f40cb9acf..40987cc2a9 100644 --- a/include/wx/webrequest.h +++ b/include/wx/webrequest.h @@ -83,12 +83,14 @@ public: virtual wxFileOffset GetBytesExpectedToSend() const = 0; - virtual wxFileOffset GetBytesReceived() const = 0; + virtual wxFileOffset GetBytesReceived() const; virtual wxFileOffset GetBytesExpectedToReceive() const; void SetState(State state, const wxString& failMsg = ""); + void ReportDataReceived(size_t sizeReceived); + static void SplitParameters(const wxString& s, wxString& value, wxWebRequestHeaderMap& parameters); @@ -108,7 +110,8 @@ protected: m_session(session), m_id(id), m_state(State_Idle), - m_ignoreServerErrorStatus(false) { } + m_ignoreServerErrorStatus(false), + m_bytesReceived(0) { } bool CheckServerStatus(); @@ -119,6 +122,7 @@ private: int m_id; State m_state; bool m_ignoreServerErrorStatus; + wxFileOffset m_bytesReceived; wxCharBuffer m_dataText; void ProcessStateEvent(State state, const wxString& failMsg); diff --git a/src/common/webrequest.cpp b/src/common/webrequest.cpp index 200e00080f..0414eaf146 100644 --- a/src/common/webrequest.cpp +++ b/src/common/webrequest.cpp @@ -102,14 +102,19 @@ void wxWebRequest::SetData(wxSharedPtr dataStream, const wxString SetHeader("Content-Type", contentType); } -wxFileOffset wxWebRequest::GetBytesExpectedToReceive() const +wxFileOffset wxWebRequest::GetBytesReceived() const +{ + return m_bytesReceived;; +} + +wxFileOffset wxWebRequest::GetBytesExpectedToReceive() const { if ( GetResponse() ) return GetResponse()->GetContentLength(); else return -1; -} - +} + void wxWebRequest::SetState(State state, const wxString & failMsg) { // Add a reference while the request is active @@ -122,6 +127,11 @@ void wxWebRequest::SetState(State state, const wxString & failMsg) CallAfter(&wxWebRequest::ProcessStateEvent, state, failMsg); } +void wxWebRequest::ReportDataReceived(size_t sizeReceived) +{ + m_bytesReceived += sizeReceived; +} + // The SplitParamaters implementation is adapted to wxWidgets // from Poco::Net::MessageHeader::splitParameters @@ -335,6 +345,7 @@ void* wxWebResponse::GetDataBuffer(size_t sizeNeeded) void wxWebResponse::ReportDataReceived(size_t sizeReceived) { m_readBuffer.UngetAppendBuf(sizeReceived); + m_request.ReportDataReceived(sizeReceived); if ( m_request.GetStorage() == wxWebRequest::Storage_File ) m_file.Write(m_readBuffer.GetData(), m_readBuffer.GetDataLen()); diff --git a/src/msw/webrequest_winhttp.cpp b/src/msw/webrequest_winhttp.cpp index f7cca43d60..eb7608564c 100644 --- a/src/msw/webrequest_winhttp.cpp +++ b/src/msw/webrequest_winhttp.cpp @@ -147,8 +147,7 @@ wxWebRequestWinHTTP::wxWebRequestWinHTTP(int id, wxWebSessionWinHTTP& session, c m_url(url), m_connect(NULL), m_request(NULL), - m_dataWritten(0), - m_bytesReceived(0) + m_dataWritten(0) { m_headers = session.GetHeaders(); } @@ -407,7 +406,6 @@ bool wxWebResponseWinHTTP::ReadData() bool wxWebResponseWinHTTP::ReportAvailableData(DWORD dataLen) { ReportDataReceived(dataLen); - static_cast(m_request).m_bytesReceived += dataLen; return ReadData(); }