Merging CurlEasyRequest and CurlResponderBuffer, Step 1

This commit is contained in:
Aleric Inglewood
2012-11-01 02:40:08 +01:00
parent 756aac1f9a
commit 6c01b6da9b
4 changed files with 25 additions and 25 deletions

View File

@@ -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.

View File

@@ -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();

View File

@@ -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()).

View File

@@ -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