void Loader::load(DocLoader* docLoader, CachedResource* resource, bool incremental, SecurityCheckPolicy securityCheck, bool sendResourceLoadCallbacks) { ASSERT(docLoader); Request* request = new Request(docLoader, resource, incremental, securityCheck, sendResourceLoadCallbacks); RefPtr<Host> host; KURL url(ParsedURLString, resource->url()); if (url.protocolInHTTPFamily()) { m_hosts.checkConsistency(); AtomicString hostName = url.host(); host = m_hosts.get(hostName.impl()); if (!host) { host = Host::create(hostName, maxRequestsInFlightPerHost); m_hosts.add(hostName.impl(), host); } } else host = m_nonHTTPProtocolHost; bool hadRequests = host->hasRequests(); Priority priority = determinePriority(resource); host->addRequest(request, priority); docLoader->incrementRequestCount(); if (priority > Low || !url.protocolInHTTPFamily() || !hadRequests) { // Try to request important resources immediately host->servePendingRequests(priority); } else { // Handle asynchronously so early low priority requests don't get scheduled before later high priority ones scheduleServePendingRequests(); } }
Target::Target(int _priority,int _distance,int _angle) { priority=_priority; distance=_distance; angle=_angle; determinePriority(angle,distance); }
void Loader::load(DocLoader* docLoader, CachedResource* resource, bool incremental, bool skipCanLoadCheck, bool sendResourceLoadCallbacks) { ASSERT(docLoader); Request* request = new Request(docLoader, resource, incremental, skipCanLoadCheck, sendResourceLoadCallbacks); Host* host; KURL url(resource->url()); bool isHTTP = url.protocolIs("http") || url.protocolIs("https"); if (isHTTP) { AtomicString hostName = url.host(); host = m_hosts.get(hostName.impl()); if (!host) { host = new Host(hostName, maxRequestsInFlightPerHost); m_hosts.add(hostName.impl(), host); } } else host = &m_nonHTTPProtocolHost; bool hadRequests = host->hasRequests(); Priority priority = determinePriority(resource); host->addRequest(request, priority); docLoader->incrementRequestCount(); if (priority > Low || !isHTTP || !hadRequests) { // Try to request important resources immediately host->servePendingRequests(priority); } else { // Handle asynchronously so early low priority requests don't get scheduled before later high priority ones scheduleServePendingRequests(); } }