Merging CurlEasyRequest and CurlResponderBuffer, Step 1
This commit is contained in:
@@ -879,7 +879,7 @@ void CurlEasyRequest::resetState(void)
|
|||||||
mHeaders = NULL;
|
mHeaders = NULL;
|
||||||
mTimeoutPolicy = NULL;
|
mTimeoutPolicy = NULL;
|
||||||
mTimeout = NULL;
|
mTimeout = NULL;
|
||||||
mEventsTarget = NULL;
|
mHandleEventsTarget = NULL;
|
||||||
mResult = CURLE_FAILED_INIT;
|
mResult = CURLE_FAILED_INIT;
|
||||||
applyDefaultOptions();
|
applyDefaultOptions();
|
||||||
}
|
}
|
||||||
@@ -1152,20 +1152,20 @@ void CurlEasyRequest::getResult(CURLcode* result, AITransferInfo* info)
|
|||||||
|
|
||||||
void CurlEasyRequest::added_to_multi_handle(AICurlEasyRequest_wat& curl_easy_request_w)
|
void CurlEasyRequest::added_to_multi_handle(AICurlEasyRequest_wat& curl_easy_request_w)
|
||||||
{
|
{
|
||||||
if (mEventsTarget)
|
if (mHandleEventsTarget)
|
||||||
mEventsTarget->added_to_multi_handle(curl_easy_request_w);
|
mHandleEventsTarget->added_to_multi_handle(curl_easy_request_w);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CurlEasyRequest::finished(AICurlEasyRequest_wat& curl_easy_request_w)
|
void CurlEasyRequest::finished(AICurlEasyRequest_wat& curl_easy_request_w)
|
||||||
{
|
{
|
||||||
if (mEventsTarget)
|
if (mHandleEventsTarget)
|
||||||
mEventsTarget->finished(curl_easy_request_w);
|
mHandleEventsTarget->finished(curl_easy_request_w);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CurlEasyRequest::removed_from_multi_handle(AICurlEasyRequest_wat& curl_easy_request_w)
|
void CurlEasyRequest::removed_from_multi_handle(AICurlEasyRequest_wat& curl_easy_request_w)
|
||||||
{
|
{
|
||||||
if (mEventsTarget)
|
if (mHandleEventsTarget)
|
||||||
mEventsTarget->removed_from_multi_handle(curl_easy_request_w);
|
mHandleEventsTarget->removed_from_multi_handle(curl_easy_request_w);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CurlEasyRequest::print_diagnostics(AICurlEasyRequest_wat const& curlEasyRequest_w, CURLcode code)
|
void CurlEasyRequest::print_diagnostics(AICurlEasyRequest_wat const& curlEasyRequest_w, CURLcode code)
|
||||||
@@ -1188,7 +1188,7 @@ static int const HTTP_REDIRECTS_DEFAULT = 10;
|
|||||||
|
|
||||||
LLChannelDescriptors const CurlResponderBuffer::sChannels;
|
LLChannelDescriptors const CurlResponderBuffer::sChannels;
|
||||||
|
|
||||||
CurlResponderBuffer::CurlResponderBuffer() : mRequestTransferedBytes(0), mResponseTransferedBytes(0), mEventsTarget(NULL)
|
CurlResponderBuffer::CurlResponderBuffer() : mRequestTransferedBytes(0), mResponseTransferedBytes(0), mBufferEventsTarget(NULL)
|
||||||
{
|
{
|
||||||
ThreadSafeBufferedCurlEasyRequest* lockobj = get_lockobj();
|
ThreadSafeBufferedCurlEasyRequest* lockobj = get_lockobj();
|
||||||
AICurlEasyRequest_wat curl_easy_request_w(*lockobj);
|
AICurlEasyRequest_wat curl_easy_request_w(*lockobj);
|
||||||
@@ -1205,7 +1205,7 @@ CurlResponderBuffer::~CurlResponderBuffer()
|
|||||||
{
|
{
|
||||||
ThreadSafeBufferedCurlEasyRequest* lockobj = get_lockobj();
|
ThreadSafeBufferedCurlEasyRequest* lockobj = get_lockobj();
|
||||||
AICurlEasyRequest_wat curl_easy_request_w(*lockobj); // Wait 'til possible callbacks have returned.
|
AICurlEasyRequest_wat curl_easy_request_w(*lockobj); // Wait 'til possible callbacks have returned.
|
||||||
send_events_to(NULL);
|
send_buffer_events_to(NULL);
|
||||||
curl_easy_request_w->revokeCallbacks();
|
curl_easy_request_w->revokeCallbacks();
|
||||||
if (mResponder)
|
if (mResponder)
|
||||||
{
|
{
|
||||||
@@ -1280,7 +1280,7 @@ void CurlResponderBuffer::prepRequest(AICurlEasyRequest_wat& curl_easy_request_w
|
|||||||
// Send header events to responder if needed.
|
// Send header events to responder if needed.
|
||||||
if (mResponder->needsHeaders())
|
if (mResponder->needsHeaders())
|
||||||
{
|
{
|
||||||
send_events_to(mResponder.get());
|
send_buffer_events_to(mResponder.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add extra headers.
|
// Add extra headers.
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ void AICurlEasyRequestStateMachine::finish_impl(void)
|
|||||||
if (mBuffered)
|
if (mBuffered)
|
||||||
{
|
{
|
||||||
AICurlResponderBuffer_wat buffered_easy_request_w(*mCurlEasyRequest);
|
AICurlResponderBuffer_wat buffered_easy_request_w(*mCurlEasyRequest);
|
||||||
buffered_easy_request_w->send_events_to(NULL);
|
buffered_easy_request_w->send_buffer_events_to(NULL);
|
||||||
}
|
}
|
||||||
curl_easy_request_w->send_events_to(NULL);
|
curl_easy_request_w->send_events_to(NULL);
|
||||||
curl_easy_request_w->revokeCallbacks();
|
curl_easy_request_w->revokeCallbacks();
|
||||||
|
|||||||
@@ -368,7 +368,7 @@ class CurlEasyRequest : public CurlEasyHandle {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
curl_slist* mHeaders;
|
curl_slist* mHeaders;
|
||||||
AICurlEasyHandleEvents* mEventsTarget;
|
AICurlEasyHandleEvents* mHandleEventsTarget;
|
||||||
CURLcode mResult; //AIFIXME: this does not belong in the request object, but belongs in the response object.
|
CURLcode mResult; //AIFIXME: this does not belong in the request object, but belongs in the response object.
|
||||||
|
|
||||||
AIHTTPTimeoutPolicy const* mTimeoutPolicy;
|
AIHTTPTimeoutPolicy const* mTimeoutPolicy;
|
||||||
@@ -396,7 +396,7 @@ class CurlEasyRequest : public CurlEasyHandle {
|
|||||||
// This class may only be created by constructing a ThreadSafeCurlEasyRequest.
|
// This class may only be created by constructing a ThreadSafeCurlEasyRequest.
|
||||||
friend class ThreadSafeCurlEasyRequest;
|
friend class ThreadSafeCurlEasyRequest;
|
||||||
// Throws AICurlNoEasyHandle.
|
// Throws AICurlNoEasyHandle.
|
||||||
CurlEasyRequest(void) : mHeaders(NULL), mEventsTarget(NULL), mResult(CURLE_FAILED_INIT), mTimeoutPolicy(NULL), mTimeoutIsOrphan(false)
|
CurlEasyRequest(void) : mHeaders(NULL), mHandleEventsTarget(NULL), mResult(CURLE_FAILED_INIT), mTimeoutPolicy(NULL), mTimeoutIsOrphan(false)
|
||||||
#if defined(CWDEBUG) || defined(DEBUG_CURLIO)
|
#if defined(CWDEBUG) || defined(DEBUG_CURLIO)
|
||||||
, mDebugIsHeadOrGetMethod(false)
|
, mDebugIsHeadOrGetMethod(false)
|
||||||
#endif
|
#endif
|
||||||
@@ -406,7 +406,7 @@ class CurlEasyRequest : public CurlEasyHandle {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
// Post-initialization, set the parent to pass the events to.
|
// Post-initialization, set the parent to pass the events to.
|
||||||
void send_events_to(AICurlEasyHandleEvents* target) { mEventsTarget = target; }
|
void send_events_to(AICurlEasyHandleEvents* target) { mHandleEventsTarget = target; }
|
||||||
|
|
||||||
// For debugging purposes
|
// For debugging purposes
|
||||||
bool is_finalized(void) const { return mTimeoutPolicy; }
|
bool is_finalized(void) const { return mTimeoutPolicy; }
|
||||||
@@ -458,7 +458,7 @@ class CurlResponderBuffer : protected AICurlResponderBufferEvents, protected AIC
|
|||||||
//void setBodyLimit(U32 size) { mBodyLimit = size; }
|
//void setBodyLimit(U32 size) { mBodyLimit = size; }
|
||||||
|
|
||||||
// Post-initialization, set the parent to pass the events to.
|
// Post-initialization, set the parent to pass the events to.
|
||||||
void send_events_to(AICurlResponderBufferEvents* target) { mEventsTarget = target; }
|
void send_buffer_events_to(AICurlResponderBufferEvents* target) { mBufferEventsTarget = target; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Events from this class.
|
// Events from this class.
|
||||||
@@ -481,7 +481,7 @@ class CurlResponderBuffer : protected AICurlResponderBufferEvents, protected AIC
|
|||||||
std::string mReason; // The "reason" from the same header line.
|
std::string mReason; // The "reason" from the same header line.
|
||||||
S32 mRequestTransferedBytes;
|
S32 mRequestTransferedBytes;
|
||||||
S32 mResponseTransferedBytes;
|
S32 mResponseTransferedBytes;
|
||||||
AICurlResponderBufferEvents* mEventsTarget;
|
AICurlResponderBufferEvents* mBufferEventsTarget;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static LLChannelDescriptors const sChannels; // Channel object for mInput (channel out()) and mOutput (channel in()).
|
static LLChannelDescriptors const sChannels; // Channel object for mInput (channel out()) and mOutput (channel in()).
|
||||||
|
|||||||
@@ -2098,13 +2098,13 @@ void CurlResponderBuffer::processOutput(AICurlEasyRequest_wat& curl_easy_request
|
|||||||
{
|
{
|
||||||
curl_easy_request_w->print_diagnostics(curl_easy_request_w, code);
|
curl_easy_request_w->print_diagnostics(curl_easy_request_w, code);
|
||||||
}
|
}
|
||||||
if (mEventsTarget)
|
if (mBufferEventsTarget)
|
||||||
{
|
{
|
||||||
// Only the responder registers for these events.
|
// Only the responder registers for these events.
|
||||||
llassert(mEventsTarget == mResponder.get());
|
llassert(mBufferEventsTarget == mResponder.get());
|
||||||
// Allow clients to parse result codes and headers before we attempt to parse
|
// Allow clients to parse result codes and headers before we attempt to parse
|
||||||
// the body and provide completed/result/error calls.
|
// the body and provide completed/result/error calls.
|
||||||
mEventsTarget->completed_headers(responseCode, responseReason, (code == CURLE_FAILED_INIT) ? NULL : &info);
|
mBufferEventsTarget->completed_headers(responseCode, responseReason, (code == CURLE_FAILED_INIT) ? NULL : &info);
|
||||||
}
|
}
|
||||||
mResponder->finished(code, responseCode, responseReason, sChannels, mOutput);
|
mResponder->finished(code, responseCode, responseReason, sChannels, mOutput);
|
||||||
mResponder = NULL;
|
mResponder = NULL;
|
||||||
@@ -2114,20 +2114,20 @@ void CurlResponderBuffer::processOutput(AICurlEasyRequest_wat& curl_easy_request
|
|||||||
|
|
||||||
void CurlResponderBuffer::received_HTTP_header(void)
|
void CurlResponderBuffer::received_HTTP_header(void)
|
||||||
{
|
{
|
||||||
if (mEventsTarget)
|
if (mBufferEventsTarget)
|
||||||
mEventsTarget->received_HTTP_header();
|
mBufferEventsTarget->received_HTTP_header();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CurlResponderBuffer::received_header(std::string const& key, std::string const& value)
|
void CurlResponderBuffer::received_header(std::string const& key, std::string const& value)
|
||||||
{
|
{
|
||||||
if (mEventsTarget)
|
if (mBufferEventsTarget)
|
||||||
mEventsTarget->received_header(key, value);
|
mBufferEventsTarget->received_header(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CurlResponderBuffer::completed_headers(U32 status, std::string const& reason, AITransferInfo* info)
|
void CurlResponderBuffer::completed_headers(U32 status, std::string const& reason, AITransferInfo* info)
|
||||||
{
|
{
|
||||||
if (mEventsTarget)
|
if (mBufferEventsTarget)
|
||||||
mEventsTarget->completed_headers(status, reason, info);
|
mBufferEventsTarget->completed_headers(status, reason, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
//static
|
//static
|
||||||
|
|||||||
Reference in New Issue
Block a user