Yes I rewrote the Curl code to use the new callback api's so you can
use select in the main thread.
Also the Pleyo people have done some work I've not fully integrated so
their work is worth looking at.
I ran into some issues and dropped back for the time being to a full
load on each call. Its a nice debugging feature anyway.
Also the latest curl uses asynchronous DNS resolution a huge win.
The biggest problem with Curl right now is that completion messages
still have to be polled for I was going to talk with the curl guys and
patch so you can register a callback.
Attached is my current curl the new stuff is turned off and I'm just loading.
Also this has some nice code in it esp for gtk that binds curl to the
gtk event loop.
http://www.gnomefiles.org/app.php/gCurl
If you read the code and think about the problem that the completion
messages get put on a queue inside curl
and you have to poll for them then you will see why I really want to
fix this in curl.
Also I seemed to be crashing inside curl sometimes with this turned on.
On Nov 12, 2007 12:11 AM, Alp Toker <[EMAIL PROTECTED]> wrote:
> Mike Emmel wrote:
> > Here is my autoconf build files
> >
> > They are for my current projects but I think they could readily be
> > cleaned up to b used with the standard build.
> > I found that having a single Makefile did not incur any performance
> > problems.
>
> Mike, just had a look over this and it's looking like a good start. Thanks!
>
> Was wondering, do you have any fixes to the Cairo graphics or CURL http
> backends in your tree, or anything that might be useful to WebKit upstream?
>
> If you provide your HTTP fixes, for example, I'll have more time to fix
> the remaining Cairo SVG bugs, which you can then pull back into your
> private branch, so everyone wins.
>
/*
* Copyright (C) 2004, 2006 Apple Computer, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
*notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
*notice, this list of conditions and the following disclaimer in the
*documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef ResourceHandle_h
#define ResourceHandle_h
#include "AuthenticationChallenge.h"
#include "HTTPHeaderMap.h"
#include
#if PLATFORM(WIN)
typedef unsigned long DWORD;
typedef unsigned long DWORD_PTR;
typedef void* LPVOID;
typedef LPVOID HINTERNET;
typedef unsigned WPARAM;
typedef long LPARAM;
typedef struct HWND__* HWND;
typedef _W64 long LONG_PTR;
typedef LONG_PTR LRESULT;
#endif
#if PLATFORM(MAC)
#include
#ifdef __OBJC__
@class NSData;
@class NSError;
@class NSURLConnection;
@class WebCoreResourceHandleAsDelegate;
#else
class NSData;
class NSError;
class NSURLConnection;
class WebCoreResourceHandleAsDelegate;
typedef struct objc_object *id;
#endif
#endif
#if USE(CFNETWORK)
typedef struct _CFURLConnection* CFURLConnectionRef;
typedef int CFHTTPCookieStorageAcceptPolicy;
typedef struct OpaqueCFHTTPCookieStorage* CFHTTPCookieStorageRef;
#endif
#if USE(CURL)
typedef struct CURLMsg CURLMsg;
#endif
namespace WebCore {
class AuthenticationChallenge;
class Credential;
class FormData;
class Frame;
class KURL;
class ResourceError;
class ResourceHandleClient;
class ResourceHandleInternal;
class ResourceRequest;
class ResourceResponse;
class SharedBuffer;
class SubresourceLoader;
class SubresourceLoaderClient;
template class Timer;
class ResourceHandle : public Shared {
private:
ResourceHandle(const ResourceRequest&, ResourceHandleClient*, bool defersLoading, bool mightDownloadFromHandle);
public:
// FIXME: should not need the Frame
static PassRefPtr create(const ResourceRequest&, ResourceHandleClient*, Frame*, bool defersLoading, bool mightDownloadFromHandle = false);
static void loadResourceSynchronously(const ResourceRequest&, ResourceError&, ResourceResponse&, Vector& data);
static bool willLoadFromCache(ResourceRequest&);
~ResourceHandle();
#if PLATF