[haiku-commits] Change in haiku[master]: libbnetapi: BUrlResult is no longer a BArchivable

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 25 Jul 2020 10:06:41 +0000

From leorize <leorize+oss@xxxxxxxxxxx>:

leorize has uploaded this change for review. ( 
https://review.haiku-os.org/c/haiku/+/3082 ;)


Change subject: libbnetapi: BUrlResult is no longer a BArchivable
......................................................................

libbnetapi: BUrlResult is no longer a BArchivable

The switch to make BUrlResult serializable was debuted in
f9e1854f198d4200f21a9cbe29fdfb0fabbe192f with the rationale is that
BHttpRequest auto-redirection might cause the headers to become
obsolete by the time a client process the BMessage received from
BUrlProtocolDispatchingListener.

With the change to BHttpRequest to not notify listeners when
auto-redirection is enabled, this is no longer the case and the
serialization code can go away now. This simplifies BUrlResult and its
subclasses, and gain us some performance for clients using
BUrlProtocolDispatchingListener as the result object no longer has to be
serialized.

Change-Id: I9dd29a8b26fdd9aa8e5bbad8d1728084f136312d
---
M headers/os/net/HttpResult.h
M headers/os/net/UrlProtocolDispatchingListener.h
M headers/os/net/UrlProtocolListener.h
M headers/os/net/UrlResult.h
M headers/os/net/UrlSynchronousRequest.h
M src/add-ons/media/plugins/http_streamer/HTTPMediaIO.cpp
M src/apps/haikudepot/server/WebAppInterface.cpp
M src/apps/haikudepot/util/ToFileUrlProtocolListener.cpp
M src/apps/haikudepot/util/ToFileUrlProtocolListener.h
M src/kits/network/libnetapi/DataRequest.cpp
M src/kits/network/libnetapi/FileRequest.cpp
M src/kits/network/libnetapi/GopherRequest.cpp
M src/kits/network/libnetapi/HttpRequest.cpp
M src/kits/network/libnetapi/HttpResult.cpp
M src/kits/network/libnetapi/UrlProtocolAsynchronousListener.cpp
M src/kits/network/libnetapi/UrlProtocolDispatchingListener.cpp
M src/kits/network/libnetapi/UrlProtocolListener.cpp
M src/kits/network/libnetapi/UrlResult.cpp
M src/kits/network/libnetapi/UrlSynchronousRequest.cpp
M src/tests/kits/net/service/HttpTest.cpp
20 files changed, 24 insertions(+), 136 deletions(-)



  git pull ssh://git.haiku-os.org:22/haiku refs/changes/82/3082/1

diff --git a/headers/os/net/HttpResult.h b/headers/os/net/HttpResult.h
index 9875f99..37cc889 100644
--- a/headers/os/net/HttpResult.h
+++ b/headers/os/net/HttpResult.h
@@ -19,10 +19,9 @@

 class BHttpResult: public BUrlResult {
                        friend class                            BHttpRequest;
-
+
 public:
                                                                                
BHttpResult(const BUrl& url);
-                                                                               
BHttpResult(BMessage*);
                                                                                
BHttpResult(const BHttpResult& other);
                                                                                
~BHttpResult();

@@ -44,12 +43,9 @@

        // Overloaded members
                        BHttpResult&                            operator=(const 
BHttpResult& other);
-
-       virtual status_t                                        
Archive(BMessage*, bool) const;
-       static  BArchivable*                            Instantiate(BMessage*);
 private:
                        BUrl                                            fUrl;
-
+
                        BHttpHeaders                            fHeaders;
                        int32                                           
fStatusCode;
                        BString                                         
fStatusString;
diff --git a/headers/os/net/UrlProtocolDispatchingListener.h 
b/headers/os/net/UrlProtocolDispatchingListener.h
index 0107c2c..29fa46f 100644
--- a/headers/os/net/UrlProtocolDispatchingListener.h
+++ b/headers/os/net/UrlProtocolDispatchingListener.h
@@ -44,8 +44,7 @@
        virtual void                            HostnameResolved(BUrlRequest* 
caller,
                                                                        const 
char* ip);
        virtual void                            ResponseStarted(BUrlRequest* 
caller);
-       virtual void                            HeadersReceived(BUrlRequest* 
caller,
-                                                                       const 
BUrlResult& result);
+       virtual void                            HeadersReceived(BUrlRequest* 
caller);
        virtual void                            DataReceived(BUrlRequest* 
caller,
                                                                        const 
char* data, off_t position,
                                                                        ssize_t 
size);
diff --git a/headers/os/net/UrlProtocolListener.h 
b/headers/os/net/UrlProtocolListener.h
index 1aefd13..9492a5f 100644
--- a/headers/os/net/UrlProtocolListener.h
+++ b/headers/os/net/UrlProtocolListener.h
@@ -32,8 +32,7 @@
        virtual void                            HostnameResolved(BUrlRequest* 
caller,
                                                                        const 
char* ip);
        virtual void                            ResponseStarted(BUrlRequest* 
caller);
-       virtual void                            HeadersReceived(BUrlRequest* 
caller,
-                                                                       const 
BUrlResult& result);
+       virtual void                            HeadersReceived(BUrlRequest* 
caller);
        virtual void                            DataReceived(BUrlRequest* 
caller,
                                                                        const 
char* data, off_t position,
                                                                        ssize_t 
size);
diff --git a/headers/os/net/UrlResult.h b/headers/os/net/UrlResult.h
index a0feb35..cfe96ab 100644
--- a/headers/os/net/UrlResult.h
+++ b/headers/os/net/UrlResult.h
@@ -6,25 +6,19 @@
 #define _B_URL_RESULT_H_


-#include <Archivable.h>
 #include <String.h>


-class BUrlResult: public BArchivable {
+class BUrlResult {
 public:
                                                        BUrlResult();
-                                                       BUrlResult(BMessage*);
        virtual                                 ~BUrlResult();

-       virtual status_t                Archive(BMessage*, bool) const;
-
                        void                    SetContentType(BString 
contentType);
                        void                    SetLength(size_t length);

        virtual BString                 ContentType() const;
-       virtual size_t                  Length() const;
-
-       static  BArchivable*    Instantiate(BMessage*);
+       virtual size_t                  Length() const;

 private:
                        BString                 fContentType;
diff --git a/headers/os/net/UrlSynchronousRequest.h 
b/headers/os/net/UrlSynchronousRequest.h
index 4a7dbfc..ae73736 100644
--- a/headers/os/net/UrlSynchronousRequest.h
+++ b/headers/os/net/UrlSynchronousRequest.h
@@ -24,8 +24,7 @@
        virtual void                            HostnameResolved(BUrlRequest* 
caller,
                                                                        const 
char* ip);
        virtual void                            ResponseStarted(BUrlRequest* 
caller);
-       virtual void                            HeadersReceived(BUrlRequest* 
caller,
-                                                                       const 
BUrlResult& result);
+       virtual void                            HeadersReceived(BUrlRequest* 
caller);
        virtual void                            DataReceived(BUrlRequest* 
caller,
                                                                        const 
char* data, off_t position,
                                                                        ssize_t 
size);
diff --git a/src/add-ons/media/plugins/http_streamer/HTTPMediaIO.cpp 
b/src/add-ons/media/plugins/http_streamer/HTTPMediaIO.cpp
index 1cabcd2..308dac2 100644
--- a/src/add-ons/media/plugins/http_streamer/HTTPMediaIO.cpp
+++ b/src/add-ons/media/plugins/http_streamer/HTTPMediaIO.cpp
@@ -47,7 +47,7 @@
                        fRunning = true;
                }

-               void HeadersReceived(BUrlRequest* request, const BUrlResult& 
result)
+               void HeadersReceived(BUrlRequest* request)
                {
                        fAdapterIO->UpdateSize();
                }
diff --git a/src/apps/haikudepot/server/WebAppInterface.cpp 
b/src/apps/haikudepot/server/WebAppInterface.cpp
index 0a2f35e..dd82090 100644
--- a/src/apps/haikudepot/server/WebAppInterface.cpp
+++ b/src/apps/haikudepot/server/WebAppInterface.cpp
@@ -56,7 +56,7 @@
        {
        }

-       virtual void HeadersReceived(BUrlRequest* caller, const BUrlResult& 
result)
+       virtual void HeadersReceived(BUrlRequest* caller)
        {
        }

diff --git a/src/apps/haikudepot/util/ToFileUrlProtocolListener.cpp 
b/src/apps/haikudepot/util/ToFileUrlProtocolListener.cpp
index 3f75a33..c38e7c3 100644
--- a/src/apps/haikudepot/util/ToFileUrlProtocolListener.cpp
+++ b/src/apps/haikudepot/util/ToFileUrlProtocolListener.cpp
@@ -47,14 +47,14 @@


 void
-ToFileUrlProtocolListener::HeadersReceived(BUrlRequest* caller,
-       const BUrlResult& result)
+ToFileUrlProtocolListener::HeadersReceived(BUrlRequest* caller)
 {

        // check that the status code is success.  Only if it is successful
        // should the payload be streamed to the file.

-       const BHttpResult& httpResult = dynamic_cast<const 
BHttpResult&>(result);
+       const BHttpResult& httpResult = dynamic_cast<const BHttpResult&>(
+               caller->Result());
        int32 statusCode = httpResult.StatusCode();

        if (!BHttpRequest::IsSuccessStatusCode(statusCode)) {
diff --git a/src/apps/haikudepot/util/ToFileUrlProtocolListener.h 
b/src/apps/haikudepot/util/ToFileUrlProtocolListener.h
index a65b29b..a2235b7 100644
--- a/src/apps/haikudepot/util/ToFileUrlProtocolListener.h
+++ b/src/apps/haikudepot/util/ToFileUrlProtocolListener.h
@@ -19,8 +19,7 @@
                        void                            
HostnameResolved(BUrlRequest* caller,
                                                                        const 
char* ip);
                        void                            
ResponseStarted(BUrlRequest* caller);
-                       void                            
HeadersReceived(BUrlRequest* caller,
-                                                                       const 
BUrlResult& result);
+                       void                            
HeadersReceived(BUrlRequest* caller);
                        void                            
DataReceived(BUrlRequest* caller,
                                                                        const 
char* data, off_t position,
                                                                        ssize_t 
size);
diff --git a/src/kits/network/libnetapi/DataRequest.cpp 
b/src/kits/network/libnetapi/DataRequest.cpp
index a9ece68..68aa339 100644
--- a/src/kits/network/libnetapi/DataRequest.cpp
+++ b/src/kits/network/libnetapi/DataRequest.cpp
@@ -118,7 +118,7 @@
        fResult.SetLength(length);

        if (fListener != NULL) {
-               fListener->HeadersReceived(this, fResult);
+               fListener->HeadersReceived(this);
                if (length > 0) {
                        fListener->DataReceived(this, payload, 0, length);
                        fListener->DownloadProgress(this, length, length);
diff --git a/src/kits/network/libnetapi/FileRequest.cpp 
b/src/kits/network/libnetapi/FileRequest.cpp
index 02b0103..f432de9 100644
--- a/src/kits/network/libnetapi/FileRequest.cpp
+++ b/src/kits/network/libnetapi/FileRequest.cpp
@@ -77,7 +77,7 @@
                                return error;
                        fResult.SetLength(size);

-                       fListener->HeadersReceived(this, fResult);
+                       fListener->HeadersReceived(this);

                        ssize_t chunkSize = 0;
                        char chunk[4096];
@@ -120,7 +120,7 @@

        if (fListener != NULL) {
                fListener->ConnectionOpened(this);
-               fListener->HeadersReceived(this, fResult);
+               fListener->HeadersReceived(this);

                // Add a parent directory entry.
                fListener->DataReceived(this, "+/,\t..\r\n", transferredSize, 
8);
diff --git a/src/kits/network/libnetapi/GopherRequest.cpp 
b/src/kits/network/libnetapi/GopherRequest.cpp
index 9e57654..fb5d2cc 100644
--- a/src/kits/network/libnetapi/GopherRequest.cpp
+++ b/src/kits/network/libnetapi/GopherRequest.cpp
@@ -345,7 +345,7 @@
                        // we don't really have headers but well...
                        //! ProtocolHook:HeadersReceived
                        if (fListener != NULL)
-                               fListener->HeadersReceived(this, fResult);
+                               fListener->HeadersReceived(this);
                }

                if (_NeedsParsing())
diff --git a/src/kits/network/libnetapi/HttpRequest.cpp 
b/src/kits/network/libnetapi/HttpRequest.cpp
index bca42ce..93d5cdc 100644
--- a/src/kits/network/libnetapi/HttpRequest.cpp
+++ b/src/kits/network/libnetapi/HttpRequest.cpp
@@ -631,7 +631,7 @@

                                //! ProtocolHook:HeadersReceived
                                if (fListener != NULL && !disableListener)
-                                       fListener->HeadersReceived(this, 
fResult);
+                                       fListener->HeadersReceived(this);


                                if (BString(fHeaders["Transfer-Encoding"]) == 
"chunked")
diff --git a/src/kits/network/libnetapi/HttpResult.cpp 
b/src/kits/network/libnetapi/HttpResult.cpp
index 41aa4fb..a3770ab 100644
--- a/src/kits/network/libnetapi/HttpResult.cpp
+++ b/src/kits/network/libnetapi/HttpResult.cpp
@@ -25,21 +25,6 @@
 }


-BHttpResult::BHttpResult(BMessage* archive)
-       :
-       BUrlResult(archive),
-       fUrl(archive->FindString("http:url")),
-       fHeaders(),
-       fStatusCode(archive->FindInt32("http:statusCode"))
-{
-       fStatusString = archive->FindString("http:statusString");
-
-       BMessage headers;
-       archive->FindMessage("http:headers", &headers);
-       fHeaders.PopulateFromArchive(&headers);
-}
-
-
 BHttpResult::BHttpResult(const BHttpResult& other)
        :
        fUrl(other.fUrl),
@@ -159,32 +144,3 @@

        return *this;
 }
-
-
-status_t
-BHttpResult::Archive(BMessage* target, bool deep) const
-{
-       status_t result = BUrlResult::Archive(target, deep);
-       if (result != B_OK)
-               return result;
-
-       target->AddString("http:url", fUrl);
-       target->AddInt32("http:statusCode", fStatusCode);
-       target->AddString("http:statusString", fStatusString);
-
-       BMessage headers;
-       fHeaders.Archive(&headers);
-       target->AddMessage("http:headers", &headers);
-
-       return B_OK;
-}
-
-
-/*static*/ BArchivable*
-BHttpResult::Instantiate(BMessage* archive)
-{
-       if (!validate_instantiation(archive, "BHttpResult"))
-               return NULL;
-
-       return new BHttpResult(archive);
-}
diff --git a/src/kits/network/libnetapi/UrlProtocolAsynchronousListener.cpp 
b/src/kits/network/libnetapi/UrlProtocolAsynchronousListener.cpp
index 710f0cc..6cd2863 100644
--- a/src/kits/network/libnetapi/UrlProtocolAsynchronousListener.cpp
+++ b/src/kits/network/libnetapi/UrlProtocolAsynchronousListener.cpp
@@ -98,18 +98,7 @@
                        break;

                case B_URL_PROTOCOL_HEADERS_RECEIVED:
-                       {
-                               BMessage archive;
-                               message->FindMessage("url:result", &archive);
-                               BUrlResult* result = dynamic_cast<BUrlResult*>(
-                                       instantiate_object(&archive));
-                               if (result == NULL) {
-                                       debugger("Failed to unarchive 
BUrlResult");
-                                       result = new BUrlResult();
-                               }
-                               HeadersReceived(caller, *result);
-                               delete result;
-                       }
+                       HeadersReceived(caller);
                        break;

                case B_URL_PROTOCOL_DATA_RECEIVED:
diff --git a/src/kits/network/libnetapi/UrlProtocolDispatchingListener.cpp 
b/src/kits/network/libnetapi/UrlProtocolDispatchingListener.cpp
index 59b4090..06336b3 100644
--- a/src/kits/network/libnetapi/UrlProtocolDispatchingListener.cpp
+++ b/src/kits/network/libnetapi/UrlProtocolDispatchingListener.cpp
@@ -69,17 +69,9 @@


 void
-BUrlProtocolDispatchingListener::HeadersReceived(BUrlRequest* caller,
-       const BUrlResult& result)
+BUrlProtocolDispatchingListener::HeadersReceived(BUrlRequest* caller)
 {
-       /* The URL request does not keep the headers valid after calling this
-        * method. For asynchronous delivery to work, we need to archive them
-        * into the message. */
        BMessage message(B_URL_PROTOCOL_NOTIFICATION);
-       BMessage archive;
-       result.Archive(&archive, true);
-       message.AddMessage("url:result", &archive);
-
        _SendMessage(&message, B_URL_PROTOCOL_HEADERS_RECEIVED, caller);
 }

diff --git a/src/kits/network/libnetapi/UrlProtocolListener.cpp 
b/src/kits/network/libnetapi/UrlProtocolListener.cpp
index 3a96d94..1ab3b5e 100644
--- a/src/kits/network/libnetapi/UrlProtocolListener.cpp
+++ b/src/kits/network/libnetapi/UrlProtocolListener.cpp
@@ -43,7 +43,7 @@


 void
-BUrlProtocolListener::HeadersReceived(BUrlRequest*, const BUrlResult& result)
+BUrlProtocolListener::HeadersReceived(BUrlRequest*)
 {
 }

diff --git a/src/kits/network/libnetapi/UrlResult.cpp 
b/src/kits/network/libnetapi/UrlResult.cpp
index 454c71e..d8befb3 100644
--- a/src/kits/network/libnetapi/UrlResult.cpp
+++ b/src/kits/network/libnetapi/UrlResult.cpp
@@ -12,42 +12,17 @@

 BUrlResult::BUrlResult()
        :
-       BArchivable(),
        fContentType(),
        fLength(0)
 {
 }


-BUrlResult::BUrlResult(BMessage* archive)
-       :
-       BArchivable(archive)
-{
-       fContentType = archive->FindString("ContentType");
-       fLength = archive->FindInt32("Length");
-}
-
-
 BUrlResult::~BUrlResult()
 {
 }


-status_t
-BUrlResult::Archive(BMessage* archive, bool deep) const
-{
-       status_t result = BArchivable::Archive(archive, deep);
-
-       if (result != B_OK)
-               return result;
-
-       archive->AddString("ContentType", fContentType);
-       archive->AddInt32("Length", fLength);
-
-       return B_OK;
-}
-
-
 void
 BUrlResult::SetContentType(BString contentType)
 {
@@ -74,12 +49,3 @@
 {
        return fLength;
 }
-
-
-/*static*/ BArchivable*
-BUrlResult::Instantiate(BMessage* archive)
-{
-       if (!validate_instantiation(archive, "BUrlResult"))
-               return NULL;
-       return new BUrlResult(archive);
-}
diff --git a/src/kits/network/libnetapi/UrlSynchronousRequest.cpp 
b/src/kits/network/libnetapi/UrlSynchronousRequest.cpp
index 687ee22..859484b 100644
--- a/src/kits/network/libnetapi/UrlSynchronousRequest.cpp
+++ b/src/kits/network/libnetapi/UrlSynchronousRequest.cpp
@@ -71,7 +71,7 @@


 void
-BUrlSynchronousRequest::HeadersReceived(BUrlRequest*, const BUrlResult& result)
+BUrlSynchronousRequest::HeadersReceived(BUrlRequest*)
 {
        PRINT(("SynchronousRequest::HeadersReceived()\n"));
 }
diff --git a/src/tests/kits/net/service/HttpTest.cpp 
b/src/tests/kits/net/service/HttpTest.cpp
index 8c64725..8b4e0f8 100644
--- a/src/tests/kits/net/service/HttpTest.cpp
+++ b/src/tests/kits/net/service/HttpTest.cpp
@@ -55,11 +55,10 @@
        }

        virtual void HeadersReceived(
-               BUrlRequest* caller,
-               const BUrlResult& result)
+               BUrlRequest* caller)
        {
                const BHttpResult& http_result
-                       = dynamic_cast<const BHttpResult&>(result);
+                       = dynamic_cast<const BHttpResult&>(caller->Result());
                const BHttpHeaders& headers = http_result.Headers();

                for (int32 i = 0; i < headers.CountHeaders(); ++i) {

--
To view, visit https://review.haiku-os.org/c/haiku/+/3082
To unsubscribe, or for help writing mail filters, visit 
https://review.haiku-os.org/settings

Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I9dd29a8b26fdd9aa8e5bbad8d1728084f136312d
Gerrit-Change-Number: 3082
Gerrit-PatchSet: 1
Gerrit-Owner: leorize <leorize+oss@xxxxxxxxxxx>
Gerrit-MessageType: newchange

Other related posts:

  • » [haiku-commits] Change in haiku[master]: libbnetapi: BUrlResult is no longer a BArchivable - Gerrit