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