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
@@ -103,15 +103,13 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\fn virtual void BUrlProtocolListener::HeadersReceived(BUrlRequest* caller,
|
\fn virtual void BUrlProtocolListener::HeadersReceived(BUrlRequest* caller)
|
||||||
const BUrlResult& result);
|
|
||||||
\brief Called when all of the server response metadata (such as headers)
|
\brief Called when all of the server response metadata (such as headers)
|
||||||
have been read and parsed.
|
have been read and parsed.
|
||||||
|
|
||||||
\b Frequency: Once
|
\b Frequency: Once
|
||||||
|
|
||||||
\param caller The BUrlRequest that invoked this callback.
|
\param caller The BUrlRequest that invoked this callback.
|
||||||
\param result The BUrlResult associated with the request.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|||||||
@@ -25,10 +25,12 @@ class BUrlRequest;
|
|||||||
|
|
||||||
class BHttpResult: public BUrlResult {
|
class BHttpResult: public BUrlResult {
|
||||||
friend class BHttpRequest;
|
friend class BHttpRequest;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BHttpResult(const BUrl& url);
|
BHttpResult(const BUrl& url);
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
BHttpResult(BMessage*);
|
BHttpResult(BMessage*);
|
||||||
|
#endif
|
||||||
BHttpResult(const BHttpResult& other);
|
BHttpResult(const BHttpResult& other);
|
||||||
~BHttpResult();
|
~BHttpResult();
|
||||||
|
|
||||||
@@ -38,7 +40,11 @@ public:
|
|||||||
// Result parameters access
|
// Result parameters access
|
||||||
const BUrl& Url() const;
|
const BUrl& Url() const;
|
||||||
BString ContentType() const;
|
BString ContentType() const;
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
size_t Length() const;
|
size_t Length() const;
|
||||||
|
#else
|
||||||
|
off_t Length() const;
|
||||||
|
#endif
|
||||||
|
|
||||||
// HTTP-Specific stuff
|
// HTTP-Specific stuff
|
||||||
const BHttpHeaders& Headers() const;
|
const BHttpHeaders& Headers() const;
|
||||||
@@ -51,11 +57,13 @@ public:
|
|||||||
// Overloaded members
|
// Overloaded members
|
||||||
BHttpResult& operator=(const BHttpResult& other);
|
BHttpResult& operator=(const BHttpResult& other);
|
||||||
|
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
virtual status_t Archive(BMessage*, bool) const;
|
virtual status_t Archive(BMessage*, bool) const;
|
||||||
static BArchivable* Instantiate(BMessage*);
|
static BArchivable* Instantiate(BMessage*);
|
||||||
|
#endif
|
||||||
private:
|
private:
|
||||||
BUrl fUrl;
|
BUrl fUrl;
|
||||||
|
|
||||||
BHttpHeaders fHeaders;
|
BHttpHeaders fHeaders;
|
||||||
int32 fStatusCode;
|
int32 fStatusCode;
|
||||||
BString fStatusString;
|
BString fStatusString;
|
||||||
|
|||||||
@@ -49,8 +49,12 @@ public:
|
|||||||
virtual void HostnameResolved(BUrlRequest* caller,
|
virtual void HostnameResolved(BUrlRequest* caller,
|
||||||
const char* ip);
|
const char* ip);
|
||||||
virtual void ResponseStarted(BUrlRequest* caller);
|
virtual void ResponseStarted(BUrlRequest* caller);
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
virtual void HeadersReceived(BUrlRequest* caller,
|
virtual void HeadersReceived(BUrlRequest* caller,
|
||||||
const BUrlResult& result);
|
const BUrlResult& result);
|
||||||
|
#else
|
||||||
|
virtual void HeadersReceived(BUrlRequest* caller);
|
||||||
|
#endif
|
||||||
virtual void DataReceived(BUrlRequest* caller,
|
virtual void DataReceived(BUrlRequest* caller,
|
||||||
const char* data, off_t position,
|
const char* data, off_t position,
|
||||||
ssize_t size);
|
ssize_t size);
|
||||||
|
|||||||
@@ -39,8 +39,12 @@ public:
|
|||||||
virtual void HostnameResolved(BUrlRequest* caller,
|
virtual void HostnameResolved(BUrlRequest* caller,
|
||||||
const char* ip);
|
const char* ip);
|
||||||
virtual void ResponseStarted(BUrlRequest* caller);
|
virtual void ResponseStarted(BUrlRequest* caller);
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
virtual void HeadersReceived(BUrlRequest* caller,
|
virtual void HeadersReceived(BUrlRequest* caller,
|
||||||
const BUrlResult& result);
|
const BUrlResult& result);
|
||||||
|
#else
|
||||||
|
virtual void HeadersReceived(BUrlRequest* caller);
|
||||||
|
#endif
|
||||||
virtual void DataReceived(BUrlRequest* caller,
|
virtual void DataReceived(BUrlRequest* caller,
|
||||||
const char* data, off_t position,
|
const char* data, off_t position,
|
||||||
ssize_t size);
|
ssize_t size);
|
||||||
|
|||||||
@@ -6,15 +6,12 @@
|
|||||||
#define _B_URL_RESULT_H_
|
#define _B_URL_RESULT_H_
|
||||||
|
|
||||||
|
|
||||||
#include <Archivable.h>
|
|
||||||
#include <String.h>
|
#include <String.h>
|
||||||
|
|
||||||
|
|
||||||
#ifndef LIBNETAPI_DEPRECATED
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
namespace BPrivate {
|
#include <Archivable.h>
|
||||||
|
|
||||||
namespace Network {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class BUrlResult: public BArchivable {
|
class BUrlResult: public BArchivable {
|
||||||
public:
|
public:
|
||||||
@@ -37,10 +34,32 @@ private:
|
|||||||
size_t fLength;
|
size_t fLength;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef LIBNETAPI_DEPRECATED
|
#else
|
||||||
} // namespace Network
|
|
||||||
|
|
||||||
} // namespace BPrivate
|
namespace BPrivate {
|
||||||
#endif
|
|
||||||
|
|
||||||
#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,
|
virtual void HostnameResolved(BUrlRequest* caller,
|
||||||
const char* ip);
|
const char* ip);
|
||||||
virtual void ResponseStarted(BUrlRequest* caller);
|
virtual void ResponseStarted(BUrlRequest* caller);
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
virtual void HeadersReceived(BUrlRequest* caller,
|
virtual void HeadersReceived(BUrlRequest* caller,
|
||||||
const BUrlResult& result);
|
const BUrlResult& result);
|
||||||
|
#else
|
||||||
|
virtual void HeadersReceived(BUrlRequest* caller);
|
||||||
|
#endif
|
||||||
virtual void DataReceived(BUrlRequest* caller,
|
virtual void DataReceived(BUrlRequest* caller,
|
||||||
const char* data, off_t position,
|
const char* data, off_t position,
|
||||||
ssize_t size);
|
ssize_t size);
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public:
|
|||||||
fRunning = true;
|
fRunning = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HeadersReceived(BUrlRequest* request, const BUrlResult& result)
|
void HeadersReceived(BUrlRequest* request)
|
||||||
{
|
{
|
||||||
fAdapterIO->UpdateSize();
|
fAdapterIO->UpdateSize();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void HeadersReceived(BUrlRequest* caller, const BUrlResult& result)
|
virtual void HeadersReceived(BUrlRequest* caller)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,14 +51,14 @@ ToFileUrlProtocolListener::ResponseStarted(BUrlRequest* caller)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ToFileUrlProtocolListener::HeadersReceived(BUrlRequest* caller,
|
ToFileUrlProtocolListener::HeadersReceived(BUrlRequest* caller)
|
||||||
const BUrlResult& result)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
// check that the status code is success. Only if it is successful
|
// check that the status code is success. Only if it is successful
|
||||||
// should the payload be streamed to the file.
|
// 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();
|
int32 statusCode = httpResult.StatusCode();
|
||||||
|
|
||||||
if (!BHttpRequest::IsSuccessStatusCode(statusCode)) {
|
if (!BHttpRequest::IsSuccessStatusCode(statusCode)) {
|
||||||
|
|||||||
@@ -25,8 +25,7 @@ public:
|
|||||||
void HostnameResolved(BUrlRequest* caller,
|
void HostnameResolved(BUrlRequest* caller,
|
||||||
const char* ip);
|
const char* ip);
|
||||||
void ResponseStarted(BUrlRequest* caller);
|
void ResponseStarted(BUrlRequest* caller);
|
||||||
void HeadersReceived(BUrlRequest* caller,
|
void HeadersReceived(BUrlRequest* caller);
|
||||||
const BUrlResult& result);
|
|
||||||
void DataReceived(BUrlRequest* caller,
|
void DataReceived(BUrlRequest* caller,
|
||||||
const char* data, off_t position,
|
const char* data, off_t position,
|
||||||
ssize_t size);
|
ssize_t size);
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2013-2017 Haiku Inc. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Adrien Destugues, [email protected]
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <UrlResult.h>
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
fContentType = contentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
BUrlResult::SetLength(size_t length)
|
||||||
|
{
|
||||||
|
fLength = length;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BString
|
||||||
|
BUrlResult::ContentType() const
|
||||||
|
{
|
||||||
|
return fContentType;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
size_t
|
||||||
|
BUrlResult::Length() const
|
||||||
|
{
|
||||||
|
return fLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*static*/ BArchivable*
|
||||||
|
BUrlResult::Instantiate(BMessage* archive)
|
||||||
|
{
|
||||||
|
if (!validate_instantiation(archive, "BUrlResult"))
|
||||||
|
return NULL;
|
||||||
|
return new BUrlResult(archive);
|
||||||
|
}
|
||||||
@@ -123,7 +123,11 @@ BDataRequest::_ProtocolLoop()
|
|||||||
fResult.SetLength(length);
|
fResult.SetLength(length);
|
||||||
|
|
||||||
if (fListener != NULL) {
|
if (fListener != NULL) {
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
fListener->HeadersReceived(this, fResult);
|
fListener->HeadersReceived(this, fResult);
|
||||||
|
#else
|
||||||
|
fListener->HeadersReceived(this);
|
||||||
|
#endif
|
||||||
if (length > 0) {
|
if (length > 0) {
|
||||||
fListener->DataReceived(this, payload, 0, length);
|
fListener->DataReceived(this, payload, 0, length);
|
||||||
fListener->DownloadProgress(this, length, length);
|
fListener->DownloadProgress(this, length, length);
|
||||||
|
|||||||
@@ -81,7 +81,11 @@ BFileRequest::_ProtocolLoop()
|
|||||||
return error;
|
return error;
|
||||||
fResult.SetLength(size);
|
fResult.SetLength(size);
|
||||||
|
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
fListener->HeadersReceived(this, fResult);
|
fListener->HeadersReceived(this, fResult);
|
||||||
|
#else
|
||||||
|
fListener->HeadersReceived(this);
|
||||||
|
#endif
|
||||||
|
|
||||||
ssize_t chunkSize = 0;
|
ssize_t chunkSize = 0;
|
||||||
char chunk[4096];
|
char chunk[4096];
|
||||||
@@ -124,7 +128,11 @@ BFileRequest::_ProtocolLoop()
|
|||||||
|
|
||||||
if (fListener != NULL) {
|
if (fListener != NULL) {
|
||||||
fListener->ConnectionOpened(this);
|
fListener->ConnectionOpened(this);
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
fListener->HeadersReceived(this, fResult);
|
fListener->HeadersReceived(this, fResult);
|
||||||
|
#else
|
||||||
|
fListener->HeadersReceived(this);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Add a parent directory entry.
|
// Add a parent directory entry.
|
||||||
fListener->DataReceived(this, "+/,\t..\r\n", transferredSize, 8);
|
fListener->DataReceived(this, "+/,\t..\r\n", transferredSize, 8);
|
||||||
|
|||||||
@@ -350,7 +350,11 @@ BGopherRequest::_ProtocolLoop()
|
|||||||
// we don't really have headers but well...
|
// we don't really have headers but well...
|
||||||
//! ProtocolHook:HeadersReceived
|
//! ProtocolHook:HeadersReceived
|
||||||
if (fListener != NULL)
|
if (fListener != NULL)
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
fListener->HeadersReceived(this, fResult);
|
fListener->HeadersReceived(this, fResult);
|
||||||
|
#else
|
||||||
|
fListener->HeadersReceived(this);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_NeedsParsing())
|
if (_NeedsParsing())
|
||||||
|
|||||||
@@ -672,7 +672,11 @@ BHttpRequest::_MakeRequest()
|
|||||||
|
|
||||||
//! ProtocolHook:HeadersReceived
|
//! ProtocolHook:HeadersReceived
|
||||||
if (fListener != NULL && !disableListener)
|
if (fListener != NULL && !disableListener)
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
fListener->HeadersReceived(this, fResult);
|
fListener->HeadersReceived(this, fResult);
|
||||||
|
#else
|
||||||
|
fListener->HeadersReceived(this);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (BString(fHeaders["Transfer-Encoding"]) == "chunked")
|
if (BString(fHeaders["Transfer-Encoding"]) == "chunked")
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ BHttpResult::BHttpResult(const BUrl& url)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
BHttpResult::BHttpResult(BMessage* archive)
|
BHttpResult::BHttpResult(BMessage* archive)
|
||||||
:
|
:
|
||||||
BUrlResult(archive),
|
BUrlResult(archive),
|
||||||
@@ -42,6 +43,7 @@ BHttpResult::BHttpResult(BMessage* archive)
|
|||||||
archive->FindMessage("http:headers", &headers);
|
archive->FindMessage("http:headers", &headers);
|
||||||
fHeaders.PopulateFromArchive(&headers);
|
fHeaders.PopulateFromArchive(&headers);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
BHttpResult::BHttpResult(const BHttpResult& other)
|
BHttpResult::BHttpResult(const BHttpResult& other)
|
||||||
@@ -86,6 +88,7 @@ BHttpResult::ContentType() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
size_t
|
size_t
|
||||||
BHttpResult::Length() const
|
BHttpResult::Length() const
|
||||||
{
|
{
|
||||||
@@ -115,6 +118,38 @@ BHttpResult::Length() const
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
off_t
|
||||||
|
BHttpResult::Length() const
|
||||||
|
{
|
||||||
|
const char* length = Headers()["Content-Length"];
|
||||||
|
if (length == NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* NOTE: Not RFC7230 compliant:
|
||||||
|
* - If Content-Length is a list, all values must be checked and verified
|
||||||
|
* to be duplicates of each other, but this is currently not supported.
|
||||||
|
*/
|
||||||
|
off_t result = 0;
|
||||||
|
/* strtoull() will ignore a prefixed sign, so we verify that there aren't
|
||||||
|
* any before continuing (RFC7230 only permits digits).
|
||||||
|
*
|
||||||
|
* We can check length[0] directly because header values are trimmed by
|
||||||
|
* HttpHeader beforehand. */
|
||||||
|
if (length[0] != '-' && length[0] != '+') {
|
||||||
|
errno = 0;
|
||||||
|
char *endptr = NULL;
|
||||||
|
result = strtoull(length, &endptr, 10);
|
||||||
|
/* ERANGE will be signalled if the result is too large (which can
|
||||||
|
* happen), in that case, return 0. */
|
||||||
|
if (errno != 0 || *endptr != '\0')
|
||||||
|
result = 0;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#endif // BNETAPI_DEPRECATED
|
||||||
|
|
||||||
|
|
||||||
const BHttpHeaders&
|
const BHttpHeaders&
|
||||||
BHttpResult::Headers() const
|
BHttpResult::Headers() const
|
||||||
@@ -165,6 +200,7 @@ BHttpResult::operator=(const BHttpResult& other)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
status_t
|
status_t
|
||||||
BHttpResult::Archive(BMessage* target, bool deep) const
|
BHttpResult::Archive(BMessage* target, bool deep) const
|
||||||
{
|
{
|
||||||
@@ -192,3 +228,4 @@ BHttpResult::Instantiate(BMessage* archive)
|
|||||||
|
|
||||||
return new BHttpResult(archive);
|
return new BHttpResult(archive);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ local sources =
|
|||||||
UrlProtocolListener.cpp
|
UrlProtocolListener.cpp
|
||||||
UrlProtocolRoster.cpp
|
UrlProtocolRoster.cpp
|
||||||
UrlRequest.cpp
|
UrlRequest.cpp
|
||||||
UrlResult.cpp
|
|
||||||
UrlSynchronousRequest.cpp
|
UrlSynchronousRequest.cpp
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -51,12 +50,14 @@ for architectureObject in [ MultiArchSubDirSetup ] {
|
|||||||
|
|
||||||
MergeObject <libnetapi!$(architecture)>netservices.o :
|
MergeObject <libnetapi!$(architecture)>netservices.o :
|
||||||
$(sources)
|
$(sources)
|
||||||
|
UrlResult_Deprecated.cpp
|
||||||
: <$(architecture)>libshared.a
|
: <$(architecture)>libshared.a
|
||||||
;
|
;
|
||||||
} else {
|
} else {
|
||||||
StaticLibrary [ MultiArchDefaultGristFiles libnetservices.a ] :
|
StaticLibrary [ MultiArchDefaultGristFiles libnetservices.a ] :
|
||||||
$(sources)
|
$(sources)
|
||||||
Geolocation.cpp
|
Geolocation.cpp
|
||||||
|
UrlResult.cpp
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ BUrlProtocolAsynchronousListener::MessageReceived(BMessage* message)
|
|||||||
ResponseStarted(caller);
|
ResponseStarted(caller);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
case B_URL_PROTOCOL_HEADERS_RECEIVED:
|
case B_URL_PROTOCOL_HEADERS_RECEIVED:
|
||||||
{
|
{
|
||||||
BMessage archive;
|
BMessage archive;
|
||||||
@@ -115,7 +116,11 @@ BUrlProtocolAsynchronousListener::MessageReceived(BMessage* message)
|
|||||||
HeadersReceived(caller, *result);
|
HeadersReceived(caller, *result);
|
||||||
delete result;
|
delete result;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
case B_URL_PROTOCOL_HEADERS_RECEIVED:
|
||||||
|
HeadersReceived(caller);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case B_URL_PROTOCOL_DATA_RECEIVED:
|
case B_URL_PROTOCOL_DATA_RECEIVED:
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ BUrlProtocolDispatchingListener::ResponseStarted(BUrlRequest* caller)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
void
|
void
|
||||||
BUrlProtocolDispatchingListener::HeadersReceived(BUrlRequest* caller,
|
BUrlProtocolDispatchingListener::HeadersReceived(BUrlRequest* caller,
|
||||||
const BUrlResult& result)
|
const BUrlResult& result)
|
||||||
@@ -87,6 +88,16 @@ BUrlProtocolDispatchingListener::HeadersReceived(BUrlRequest* caller,
|
|||||||
_SendMessage(&message, B_URL_PROTOCOL_HEADERS_RECEIVED, caller);
|
_SendMessage(&message, B_URL_PROTOCOL_HEADERS_RECEIVED, caller);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
void
|
||||||
|
BUrlProtocolDispatchingListener::HeadersReceived(BUrlRequest* caller)
|
||||||
|
{
|
||||||
|
BMessage message(B_URL_PROTOCOL_NOTIFICATION);
|
||||||
|
_SendMessage(&message, B_URL_PROTOCOL_HEADERS_RECEIVED, caller);
|
||||||
|
}
|
||||||
|
#endif // LIBNETAPI_DEPRECATED
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BUrlProtocolDispatchingListener::DataReceived(BUrlRequest* caller,
|
BUrlProtocolDispatchingListener::DataReceived(BUrlRequest* caller,
|
||||||
|
|||||||
@@ -45,11 +45,20 @@ BUrlProtocolListener::ResponseStarted(BUrlRequest*)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
void
|
void
|
||||||
BUrlProtocolListener::HeadersReceived(BUrlRequest*, const BUrlResult& result)
|
BUrlProtocolListener::HeadersReceived(BUrlRequest*, const BUrlResult& result)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
void
|
||||||
|
BUrlProtocolListener::HeadersReceived(BUrlRequest*)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif // LIBNETAPI_DEPRECATED
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BUrlProtocolListener::DataReceived(BUrlRequest*, const char*, off_t, ssize_t)
|
BUrlProtocolListener::DataReceived(BUrlRequest*, const char*, off_t, ssize_t)
|
||||||
|
|||||||
@@ -10,48 +10,22 @@
|
|||||||
#include <UrlResult.h>
|
#include <UrlResult.h>
|
||||||
|
|
||||||
|
|
||||||
#ifndef LIBNETAPI_DEPRECATED
|
|
||||||
using namespace BPrivate::Network;
|
using namespace BPrivate::Network;
|
||||||
#endif
|
|
||||||
|
|
||||||
BUrlResult::BUrlResult()
|
BUrlResult::BUrlResult()
|
||||||
:
|
:
|
||||||
BArchivable(),
|
|
||||||
fContentType(),
|
fContentType(),
|
||||||
fLength(0)
|
fLength(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BUrlResult::BUrlResult(BMessage* archive)
|
|
||||||
:
|
|
||||||
BArchivable(archive)
|
|
||||||
{
|
|
||||||
fContentType = archive->FindString("ContentType");
|
|
||||||
fLength = archive->FindInt32("Length");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BUrlResult::~BUrlResult()
|
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
|
void
|
||||||
BUrlResult::SetContentType(BString contentType)
|
BUrlResult::SetContentType(BString contentType)
|
||||||
{
|
{
|
||||||
@@ -60,7 +34,7 @@ BUrlResult::SetContentType(BString contentType)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BUrlResult::SetLength(size_t length)
|
BUrlResult::SetLength(off_t length)
|
||||||
{
|
{
|
||||||
fLength = length;
|
fLength = length;
|
||||||
}
|
}
|
||||||
@@ -73,17 +47,8 @@ BUrlResult::ContentType() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
size_t
|
off_t
|
||||||
BUrlResult::Length() const
|
BUrlResult::Length() const
|
||||||
{
|
{
|
||||||
return fLength;
|
return fLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*static*/ BArchivable*
|
|
||||||
BUrlResult::Instantiate(BMessage* archive)
|
|
||||||
{
|
|
||||||
if (!validate_instantiation(archive, "BUrlResult"))
|
|
||||||
return NULL;
|
|
||||||
return new BUrlResult(archive);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -73,12 +73,22 @@ BUrlSynchronousRequest::ResponseStarted(BUrlRequest*)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef LIBNETAPI_DEPRECATED
|
||||||
void
|
void
|
||||||
BUrlSynchronousRequest::HeadersReceived(BUrlRequest*, const BUrlResult& result)
|
BUrlSynchronousRequest::HeadersReceived(BUrlRequest*, const BUrlResult& result)
|
||||||
{
|
{
|
||||||
PRINT(("SynchronousRequest::HeadersReceived()\n"));
|
PRINT(("SynchronousRequest::HeadersReceived()\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
void
|
||||||
|
BUrlSynchronousRequest::HeadersReceived(BUrlRequest*)
|
||||||
|
{
|
||||||
|
PRINT(("SynchronousRequest::HeadersReceived()\n"));
|
||||||
|
}
|
||||||
|
#endif // LIBNETAPI_DEPRECATED
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BUrlSynchronousRequest::DataReceived(BUrlRequest*, const char*,
|
BUrlSynchronousRequest::DataReceived(BUrlRequest*, const char*,
|
||||||
|
|||||||
@@ -58,11 +58,10 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual void HeadersReceived(
|
virtual void HeadersReceived(
|
||||||
BUrlRequest* caller,
|
BUrlRequest* caller)
|
||||||
const BUrlResult& result)
|
|
||||||
{
|
{
|
||||||
const BHttpResult& http_result
|
const BHttpResult& http_result
|
||||||
= dynamic_cast<const BHttpResult&>(result);
|
= dynamic_cast<const BHttpResult&>(caller->Result());
|
||||||
const BHttpHeaders& headers = http_result.Headers();
|
const BHttpHeaders& headers = http_result.Headers();
|
||||||
|
|
||||||
for (int32 i = 0; i < headers.CountHeaders(); ++i) {
|
for (int32 i = 0; i < headers.CountHeaders(); ++i) {
|
||||||
|
|||||||
Reference in New Issue
Block a user