Merging CurlEasyRequest and CurlResponderBuffer, Step 1
This commit is contained in:
@@ -879,7 +879,7 @@ void CurlEasyRequest::resetState(void)
|
||||
mHeaders = NULL;
|
||||
mTimeoutPolicy = NULL;
|
||||
mTimeout = NULL;
|
||||
mEventsTarget = NULL;
|
||||
mHandleEventsTarget = NULL;
|
||||
mResult = CURLE_FAILED_INIT;
|
||||
applyDefaultOptions();
|
||||
}
|
||||
@@ -1152,20 +1152,20 @@ void CurlEasyRequest::getResult(CURLcode* result, AITransferInfo* info)
|
||||
|
||||
void CurlEasyRequest::added_to_multi_handle(AICurlEasyRequest_wat& curl_easy_request_w)
|
||||
{
|
||||
if (mEventsTarget)
|
||||
mEventsTarget->added_to_multi_handle(curl_easy_request_w);
|
||||
if (mHandleEventsTarget)
|
||||
mHandleEventsTarget->added_to_multi_handle(curl_easy_request_w);
|
||||
}
|
||||
|
||||
void CurlEasyRequest::finished(AICurlEasyRequest_wat& curl_easy_request_w)
|
||||
{
|
||||
if (mEventsTarget)
|
||||
mEventsTarget->finished(curl_easy_request_w);
|
||||
if (mHandleEventsTarget)
|
||||
mHandleEventsTarget->finished(curl_easy_request_w);
|
||||
}
|
||||
|
||||
void CurlEasyRequest::removed_from_multi_handle(AICurlEasyRequest_wat& curl_easy_request_w)
|
||||
{
|
||||
if (mEventsTarget)
|
||||
mEventsTarget->removed_from_multi_handle(curl_easy_request_w);
|
||||
if (mHandleEventsTarget)
|
||||
mHandleEventsTarget->removed_from_multi_handle(curl_easy_request_w);
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
CurlResponderBuffer::CurlResponderBuffer() : mRequestTransferedBytes(0), mResponseTransferedBytes(0), mEventsTarget(NULL)
|
||||
CurlResponderBuffer::CurlResponderBuffer() : mRequestTransferedBytes(0), mResponseTransferedBytes(0), mBufferEventsTarget(NULL)
|
||||
{
|
||||
ThreadSafeBufferedCurlEasyRequest* lockobj = get_lockobj();
|
||||
AICurlEasyRequest_wat curl_easy_request_w(*lockobj);
|
||||
@@ -1205,7 +1205,7 @@ CurlResponderBuffer::~CurlResponderBuffer()
|
||||
{
|
||||
ThreadSafeBufferedCurlEasyRequest* lockobj = get_lockobj();
|
||||
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();
|
||||
if (mResponder)
|
||||
{
|
||||
@@ -1280,7 +1280,7 @@ void CurlResponderBuffer::prepRequest(AICurlEasyRequest_wat& curl_easy_request_w
|
||||
// Send header events to responder if needed.
|
||||
if (mResponder->needsHeaders())
|
||||
{
|
||||
send_events_to(mResponder.get());
|
||||
send_buffer_events_to(mResponder.get());
|
||||
}
|
||||
|
||||
// Add extra headers.
|
||||
|
||||
@@ -238,7 +238,7 @@ void AICurlEasyRequestStateMachine::finish_impl(void)
|
||||
if (mBuffered)
|
||||
{
|
||||
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->revokeCallbacks();
|
||||
|
||||
@@ -368,7 +368,7 @@ class CurlEasyRequest : public CurlEasyHandle {
|
||||
|
||||
private:
|
||||
curl_slist* mHeaders;
|
||||
AICurlEasyHandleEvents* mEventsTarget;
|
||||
AICurlEasyHandleEvents* mHandleEventsTarget;
|
||||
CURLcode mResult; //AIFIXME: this does not belong in the request object, but belongs in the response object.
|
||||
|
||||
AIHTTPTimeoutPolicy const* mTimeoutPolicy;
|
||||
@@ -396,7 +396,7 @@ class CurlEasyRequest : public CurlEasyHandle {
|
||||
// This class may only be created by constructing a ThreadSafeCurlEasyRequest.
|
||||
friend class ThreadSafeCurlEasyRequest;
|
||||
// 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)
|
||||
, mDebugIsHeadOrGetMethod(false)
|
||||
#endif
|
||||
@@ -406,7 +406,7 @@ class CurlEasyRequest : public CurlEasyHandle {
|
||||
|
||||
public:
|
||||
// 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
|
||||
bool is_finalized(void) const { return mTimeoutPolicy; }
|
||||
@@ -458,7 +458,7 @@ class CurlResponderBuffer : protected AICurlResponderBufferEvents, protected AIC
|
||||
//void setBodyLimit(U32 size) { mBodyLimit = size; }
|
||||
|
||||
// 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:
|
||||
// Events from this class.
|
||||
@@ -481,7 +481,7 @@ class CurlResponderBuffer : protected AICurlResponderBufferEvents, protected AIC
|
||||
std::string mReason; // The "reason" from the same header line.
|
||||
S32 mRequestTransferedBytes;
|
||||
S32 mResponseTransferedBytes;
|
||||
AICurlResponderBufferEvents* mEventsTarget;
|
||||
AICurlResponderBufferEvents* mBufferEventsTarget;
|
||||
|
||||
public:
|
||||
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);
|
||||
}
|
||||
if (mEventsTarget)
|
||||
if (mBufferEventsTarget)
|
||||
{
|
||||
// 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
|
||||
// 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 = NULL;
|
||||
@@ -2114,20 +2114,20 @@ void CurlResponderBuffer::processOutput(AICurlEasyRequest_wat& curl_easy_request
|
||||
|
||||
void CurlResponderBuffer::received_HTTP_header(void)
|
||||
{
|
||||
if (mEventsTarget)
|
||||
mEventsTarget->received_HTTP_header();
|
||||
if (mBufferEventsTarget)
|
||||
mBufferEventsTarget->received_HTTP_header();
|
||||
}
|
||||
|
||||
void CurlResponderBuffer::received_header(std::string const& key, std::string const& value)
|
||||
{
|
||||
if (mEventsTarget)
|
||||
mEventsTarget->received_header(key, value);
|
||||
if (mBufferEventsTarget)
|
||||
mBufferEventsTarget->received_header(key, value);
|
||||
}
|
||||
|
||||
void CurlResponderBuffer::completed_headers(U32 status, std::string const& reason, AITransferInfo* info)
|
||||
{
|
||||
if (mEventsTarget)
|
||||
mEventsTarget->completed_headers(status, reason, info);
|
||||
if (mBufferEventsTarget)
|
||||
mBufferEventsTarget->completed_headers(status, reason, info);
|
||||
}
|
||||
|
||||
//static
|
||||
|
||||
Reference in New Issue
Block a user