libbnetservices: BUrlResult is no longer a BArchivable
The switch to make BUrlResult serializable was debuted in
f9e1854f19 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.
This also change the ABI of BUrlProtocolListener::HeadersReceived to no
longer passing a BUrlResult.
Additionally, BUrlResult and BHttpResult now express the size of the content
as an off_t, thus allowing results larger than 4 GB.
Change-Id: I9dd29a8b26fdd9aa8e5bbad8d1728084f136312d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3082
Reviewed-by: Adrien Destugues <[email protected]>
This commit is contained in:
committed by
Niels Sascha Reedijk
parent
8e3c76b3d2
commit
3e27f8d5a7
@@ -25,10 +25,12 @@ class BUrlRequest;
|
||||
|
||||
class BHttpResult: public BUrlResult {
|
||||
friend class BHttpRequest;
|
||||
|
||||
|
||||
public:
|
||||
BHttpResult(const BUrl& url);
|
||||
#ifdef LIBNETAPI_DEPRECATED
|
||||
BHttpResult(BMessage*);
|
||||
#endif
|
||||
BHttpResult(const BHttpResult& other);
|
||||
~BHttpResult();
|
||||
|
||||
@@ -38,7 +40,11 @@ public:
|
||||
// Result parameters access
|
||||
const BUrl& Url() const;
|
||||
BString ContentType() const;
|
||||
#ifdef LIBNETAPI_DEPRECATED
|
||||
size_t Length() const;
|
||||
#else
|
||||
off_t Length() const;
|
||||
#endif
|
||||
|
||||
// HTTP-Specific stuff
|
||||
const BHttpHeaders& Headers() const;
|
||||
@@ -51,11 +57,13 @@ public:
|
||||
// Overloaded members
|
||||
BHttpResult& operator=(const BHttpResult& other);
|
||||
|
||||
#ifdef LIBNETAPI_DEPRECATED
|
||||
virtual status_t Archive(BMessage*, bool) const;
|
||||
static BArchivable* Instantiate(BMessage*);
|
||||
#endif
|
||||
private:
|
||||
BUrl fUrl;
|
||||
|
||||
|
||||
BHttpHeaders fHeaders;
|
||||
int32 fStatusCode;
|
||||
BString fStatusString;
|
||||
|
||||
@@ -49,8 +49,12 @@ public:
|
||||
virtual void HostnameResolved(BUrlRequest* caller,
|
||||
const char* ip);
|
||||
virtual void ResponseStarted(BUrlRequest* caller);
|
||||
#ifdef LIBNETAPI_DEPRECATED
|
||||
virtual void HeadersReceived(BUrlRequest* caller,
|
||||
const BUrlResult& result);
|
||||
#else
|
||||
virtual void HeadersReceived(BUrlRequest* caller);
|
||||
#endif
|
||||
virtual void DataReceived(BUrlRequest* caller,
|
||||
const char* data, off_t position,
|
||||
ssize_t size);
|
||||
|
||||
@@ -39,8 +39,12 @@ public:
|
||||
virtual void HostnameResolved(BUrlRequest* caller,
|
||||
const char* ip);
|
||||
virtual void ResponseStarted(BUrlRequest* caller);
|
||||
#ifdef LIBNETAPI_DEPRECATED
|
||||
virtual void HeadersReceived(BUrlRequest* caller,
|
||||
const BUrlResult& result);
|
||||
#else
|
||||
virtual void HeadersReceived(BUrlRequest* caller);
|
||||
#endif
|
||||
virtual void DataReceived(BUrlRequest* caller,
|
||||
const char* data, off_t position,
|
||||
ssize_t size);
|
||||
|
||||
@@ -6,15 +6,12 @@
|
||||
#define _B_URL_RESULT_H_
|
||||
|
||||
|
||||
#include <Archivable.h>
|
||||
#include <String.h>
|
||||
|
||||
|
||||
#ifndef LIBNETAPI_DEPRECATED
|
||||
namespace BPrivate {
|
||||
#ifdef LIBNETAPI_DEPRECATED
|
||||
#include <Archivable.h>
|
||||
|
||||
namespace Network {
|
||||
#endif
|
||||
|
||||
class BUrlResult: public BArchivable {
|
||||
public:
|
||||
@@ -37,10 +34,32 @@ private:
|
||||
size_t fLength;
|
||||
};
|
||||
|
||||
#ifndef LIBNETAPI_DEPRECATED
|
||||
} // namespace Network
|
||||
#else
|
||||
|
||||
} // namespace BPrivate
|
||||
#endif
|
||||
namespace BPrivate {
|
||||
|
||||
#endif
|
||||
namespace Network {
|
||||
|
||||
class BUrlResult {
|
||||
public:
|
||||
BUrlResult();
|
||||
virtual ~BUrlResult();
|
||||
|
||||
void SetContentType(BString contentType);
|
||||
void SetLength(off_t length);
|
||||
|
||||
virtual BString ContentType() const;
|
||||
virtual off_t Length() const;
|
||||
|
||||
private:
|
||||
BString fContentType;
|
||||
off_t fLength;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif // LIBNETAPI_DEPRECATED
|
||||
|
||||
#endif // _B_URL_RESULT_H_
|
||||
|
||||
@@ -30,8 +30,12 @@ public:
|
||||
virtual void HostnameResolved(BUrlRequest* caller,
|
||||
const char* ip);
|
||||
virtual void ResponseStarted(BUrlRequest* caller);
|
||||
#ifdef LIBNETAPI_DEPRECATED
|
||||
virtual void HeadersReceived(BUrlRequest* caller,
|
||||
const BUrlResult& result);
|
||||
#else
|
||||
virtual void HeadersReceived(BUrlRequest* caller);
|
||||
#endif
|
||||
virtual void DataReceived(BUrlRequest* caller,
|
||||
const char* data, off_t position,
|
||||
ssize_t size);
|
||||
|
||||
Reference in New Issue
Block a user