#include <Prefetch.h>
Inherits Continuation.
Public Types | |
typedef int(PrefetchBlaster::* | EventHandler )(int event, void *data) |
Public Member Functions | |
PrefetchBlaster () | |
~PrefetchBlaster () | |
int | init (PrefetchUrlEntry *entry, HTTPHdr *request, PrefetchTransform *p_trans) |
int | handleEvent (int event, void *data) |
Receives the event code and data for an Event. | |
int | bufferObject (int event, void *data) |
int | blastObject (int event, void *data) |
int | httpClient (int event, void *data) |
int | invokeBlaster () |
void | initCacheLookupConfig () |
void | handleCookieHeaders (HTTPHdr *req_hdr, HTTPHdr *resp_hdr, const char *domain_start, const char *domain_end, const char *host_start, int host_len, bool no_dot) |
void | free () |
Data Fields | |
PrefetchUrlEntry * | url_ent |
PrefetchTransform * | transform |
BlasterUrlList * | url_list |
HTTPHdr * | request |
CacheHTTPInfo * | cache_http_info |
MIOBuffer * | buf |
IOBufferReader * | reader |
VConnection * | serverVC |
TSPrefetchBlastData | data_blast |
CacheLookupHttpConfig | cache_lookup_config |
uint32_t | n_pkts_sent |
uint32_t | seq_no |
IOBufferBlock * | io_block |
Definition at line 286 of file Prefetch.h.
typedef int(PrefetchBlaster::* PrefetchBlaster::EventHandler)(int event, void *data) |
Definition at line 290 of file Prefetch.h.
PrefetchBlaster::PrefetchBlaster | ( | ) | [inline] |
Definition at line 292 of file Prefetch.h.
PrefetchBlaster::~PrefetchBlaster | ( | ) | [inline] |
Definition at line 297 of file Prefetch.h.
int PrefetchBlaster::blastObject | ( | int | event, | |
void * | data | |||
) |
Definition at line 1684 of file Prefetch.cc.
References KeepAliveConnTable::append(), ats_ip_copy(), ats_ip_port_cast(), ats_is_ip(), buf, BUFFER_SIZE_INDEX_32K, PrefetchUrlEntry::child_ip, data_blast, PrefetchUrlEntry::data_multicast_ip, Debug, VConnection::do_io_close(), PrefetchConfiguration::embedded_obj_hook, TSPrefetchInfo::embedded_url, IOBufferBlock::end(), EVENT_IMMEDIATE, IOBufferBlock::fill(), free(), get_udp_seq_no(), ink_assert, io_block, ioBlockAllocator, n_pkts_sent, NET_EVENT_DATAGRAM_WRITE_COMPLETE, NET_EVENT_DATAGRAM_WRITE_ERROR, TSPrefetchInfo::object_buf, TSPrefetchInfo::object_buf_reader, TSPrefetchInfo::object_buf_status, PrefetchUrlEntry::object_buf_status, prefetch_udp_fd, PRELOAD_UDP_HEADER_LEN, IOBufferReader::read(), IOBufferBlock::read_avail(), IOBufferReader::read_avail(), reader, IOBufferBlock::reset(), IpEndpoint::sa, UDPNetProcessor::sendto_re(), seq_no, serverVC, SET_HANDLER, setup_object_header(), setup_udp_header(), IOBufferBlock::start(), IOBufferReader::start(), PrefetchConfiguration::stuffer_port, TS_PREFETCH_EMBEDDED_OBJECT_HOOK, TS_PREFETCH_OBJ_BUF_NEEDED, TS_PREFETCH_OBJ_BUF_NOT_NEEDED, TS_PREFETCH_TCP_BLAST, TSIOBufferCreate(), TSIOBufferReaderAlloc(), TSPrefetchBlastData::type, udpNet, PrefetchUrlEntry::url, url_ent, and IOBufferBlock::write_avail().
Referenced by bufferObject().
int PrefetchBlaster::bufferObject | ( | int | event, | |
void * | data | |||
) |
Definition at line 1636 of file Prefetch.cc.
References blastObject(), buf, cache_http_info, copy_header(), Debug, VConnection::do_io_read(), EVENT_IMMEDIATE, EVENT_INTERVAL, MIOBuffer::fill(), get_vc_event_name(), MIOBuffer::high_water(), PrefetchUrlEntry::len, PrefetchConfiguration::max_object_size, PRELOAD_HEADER_LEN, request, MIOBuffer::reset(), serverVC, PrefetchUrlEntry::url, url_ent, VC_EVENT_EOS, VC_EVENT_READ_COMPLETE, VC_EVENT_READ_READY, MIOBuffer::water_mark, and MIOBuffer::write().
Referenced by handleEvent(), and httpClient().
void PrefetchBlaster::free | ( | void | ) |
Definition at line 1110 of file Prefetch.cc.
References buf, Ptr< T >::clear(), HdrHeapSDKHandle::destroy(), VConnection::do_io_close(), IOBufferBlock::free(), PrefetchTransform::free(), PrefetchUrlEntry::free(), free_MIOBuffer(), io_block, Continuation::mutex, prefetchBlasterAllocator, request, serverVC, transform, and url_ent.
Referenced by blastObject(), handleEvent(), httpClient(), init(), and invokeBlaster().
void PrefetchBlaster::handleCookieHeaders | ( | HTTPHdr * | req_hdr, | |
HTTPHdr * | resp_hdr, | |||
const char * | domain_start, | |||
const char * | domain_end, | |||
const char * | host_start, | |||
int | host_len, | |||
bool | no_dot | |||
) |
Definition at line 1197 of file Prefetch.cc.
References cookie_debug(), DUMP_HEADER, MIMEHdr::field_attach(), MIMEHdr::field_create(), MIMEHdr::field_delete(), MIMEHdr::field_find(), MIMEHdr::field_value_append(), StrList::head, URL::host_get(), isCookieUnique(), Str::len, HdrHeapSDKHandle::m_heap, MIMEHdr::m_mime, MIMEField::m_next_dup, MIME_FIELD_COOKIE, MIME_FIELD_HOST, MIME_FIELD_SET_COOKIE, MIME_LEN_COOKIE, MIME_LEN_HOST, MIME_LEN_SET_COOKIE, MIME_PRESENCE_COOKIE, MIME_PRESENCE_SET_COOKIE, MIMEField::name_set(), Str::next, HttpCompat::parse_tok_list(), URL::path_get(), MIMEHdr::presence(), request, Str::str, HTTPHdr::url_get(), HTTPHdr::valid(), MIMEField::value_get(), and MIMEHdr::value_get().
Referenced by init().
int PrefetchBlaster::handleEvent | ( | int | event, | |
void * | data | |||
) |
Receives the event code and data for an Event.
This function receives the event code and data for an event and forwards them to the current continuation handler. The processor calling back the continuation is responsible for acquiring its lock.
event | Event code to be passed at callback (Processor specific). | |
data | General purpose data related to the event code (Processor specific). |
Reimplemented from Continuation.
Definition at line 1463 of file Prefetch.cc.
References bufferObject(), CACHE_EVENT_OPEN_READ, CACHE_EVENT_OPEN_READ_FAILED, cache_http_info, cache_lookup_config, cacheProcessor, Debug, EVENT_IMMEDIATE, EVENT_INTERVAL, free(), PrefetchTransform::free(), BlasterUrlList::handleEvent(), HRTIME_MSECONDS, httpClient(), initCacheLookupConfig(), ink_assert, invokeBlaster(), Continuation::mutex, MUTEX_TRY_LOCK, CacheProcessor::open_read(), PREFETCH_EVENT_SEND_URL, request, PrefetchUrlEntry::resp_blaster, EThread::schedule_imm_local(), EThread::schedule_in(), serverVC, SET_HANDLER, this_ethread(), transform, PrefetchUrlEntry::url, url_ent, HTTPHdr::url_get(), and url_list.
Referenced by init(), and invokeBlaster().
int PrefetchBlaster::httpClient | ( | int | event, | |
void * | data | |||
) |
Definition at line 1576 of file Prefetch.cc.
References buf, bufferObject(), NetProcessor::connect_re(), copy_header(), Debug, VConnection::do_io_write(), EVENT_IMMEDIATE, MIMEHdr::field_find(), free(), get_vc_event_name(), PrefetchConfiguration::local_http_server_port, NET_EVENT_OPEN, NET_EVENT_OPEN_FAILED, netProcessor, IpEndpoint::port(), PREFETCH_FIELD_LEN_RECURSION, PREFETCH_FIELD_RECURSION, reader, request, MIOBuffer::reset(), IpEndpoint::sa, serverVC, SET_HANDLER, IpEndpoint::setToLoopback(), MIMEHdr::value_get_int(), VC_EVENT_EOS, VC_EVENT_ERROR, VC_EVENT_WRITE_COMPLETE, and VC_EVENT_WRITE_READY.
Referenced by handleEvent().
int PrefetchBlaster::init | ( | PrefetchUrlEntry * | entry, | |
HTTPHdr * | request, | |||
PrefetchTransform * | p_trans | |||
) |
Definition at line 1004 of file Prefetch.cc.
References MIOBuffer::alloc_reader(), PrefetchTransform::assign(), PrefetchUrlEntry::assign(), ats_free(), ats_ip_pton(), buf, PrefetchUrlEntry::child_ip, HTTPHdr::copy(), Debug, PrefetchTransform::domain_end, PrefetchTransform::domain_start, DUMP_HEADER, MIMEHdr::field_delete(), MIMEHdr::field_find(), free(), handleCookieHeaders(), handleEvent(), HttpTransact::State::hdr_info, URL::host_get(), PrefetchTransform::host_len, PrefetchTransform::host_start, HTTP_LEN_GET, atscppapi::HTTP_METHOD_GET, ink_strlcpy(), IS_RECURSIVE_PREFETCH, PrefetchTransform::m_sm, URL::m_url_impl, HTTPHdr::method_set(), MIME_FIELD_AUTHORIZATION, MIME_FIELD_CACHE_CONTROL, MIME_FIELD_CLIENT_IP, MIME_FIELD_CONNECTION, MIME_FIELD_CONTENT_LENGTH, MIME_FIELD_HOST, MIME_FIELD_IF_MATCH, MIME_FIELD_IF_MODIFIED_SINCE, MIME_FIELD_IF_NONE_MATCH, MIME_FIELD_IF_RANGE, MIME_FIELD_IF_UNMODIFIED_SINCE, MIME_FIELD_PROXY_CONNECTION, MIME_FIELD_REFERER, MIME_LEN_AUTHORIZATION, MIME_LEN_CACHE_CONTROL, MIME_LEN_CLIENT_IP, MIME_LEN_CONNECTION, MIME_LEN_CONTENT_LENGTH, MIME_LEN_HOST, MIME_LEN_IF_MATCH, MIME_LEN_IF_MODIFIED_SINCE, MIME_LEN_IF_NONE_MATCH, MIME_LEN_IF_RANGE, MIME_LEN_IF_UNMODIFIED_SINCE, MIME_LEN_PROXY_CONNECTION, MIME_LEN_REFERER, Continuation::mutex, new_MIOBuffer, new_ProxyMutex(), PrefetchTransform::no_dot_in_host, URL::parse(), PARSE_DONE, reader, PrefetchUrlEntry::req_ip, request, IpEndpoint::sa, EThread::schedule_imm(), URL::scheme_get(), SET_HANDLER, URL::string_get(), HttpSM::t_state, this_ethread(), transform, PrefetchUrlEntry::url, url_clear(), url_ent, HTTPHdr::url_get(), URL_SCHEME_HTTP, MIMEHdr::value_get(), and MIMEHdr::value_set().
Referenced by PrefetchTransform::parse_data(), and PrefetchTransform::redirect().
void PrefetchBlaster::initCacheLookupConfig | ( | ) |
Definition at line 1855 of file Prefetch.cc.
References HttpConfig::acquire(), HttpConfigParams::cache_enable_default_vary_headers, CacheLookupHttpConfig::cache_enable_default_vary_headers, CacheLookupHttpConfig::cache_global_user_agent_header, cache_lookup_config, HttpConfigParams::cache_vary_default_images, CacheLookupHttpConfig::cache_vary_default_images, HttpConfigParams::cache_vary_default_other, CacheLookupHttpConfig::cache_vary_default_other, HttpConfigParams::cache_vary_default_text, CacheLookupHttpConfig::cache_vary_default_text, OverridableHttpConfigParams::global_user_agent_header, HttpConfigParams::oride, and HttpConfig::release().
Referenced by handleEvent().
int PrefetchBlaster::invokeBlaster | ( | ) |
Definition at line 1785 of file Prefetch.cc.
References ats_ip_copy(), ats_ip_sa_cast(), cache_http_info, PrefetchUrlEntry::child_ip, TSPrefetchInfo::client_ip, data_blast, PrefetchUrlEntry::data_multicast_ip, PrefetchConfiguration::default_data_blast, PrefetchConfiguration::default_url_blast, VConnection::do_io_close(), TSPrefetchInfo::embedded_url, PrefetchConfiguration::embedded_url_hook, EVENT_INTERVAL, free(), handleEvent(), TSPrefetchBlastData::ip, HTTPHdr::m_http, PrefetchConfiguration::max_recursion, TSPrefetchInfo::object_buf, TSPrefetchInfo::object_buf_reader, PrefetchUrlEntry::object_buf_status, TSPrefetchInfo::object_buf_status, TSPrefetchInfo::present_in_cache, PrefetchConfiguration::push_cached_objects, request, TSPrefetchInfo::request_buf, TSPrefetchInfo::request_loc, TSPrefetchInfo::response_buf, TSPrefetchInfo::response_loc, serverVC, PrefetchTransform::tcp_url_list, transform, TS_PREFETCH_CONTINUE, TS_PREFETCH_DISCONTINUE, TS_PREFETCH_EMBEDDED_URL_HOOK, TS_PREFETCH_MULTICAST_BLAST, TS_PREFETCH_OBJ_BUF_NEEDED, TS_PREFETCH_TCP_BLAST, TSPrefetchBlastData::type, PrefetchTransform::udp_url_list, PrefetchUrlEntry::url, TSPrefetchInfo::url_blast, url_ent, url_list, PrefetchUrlEntry::url_multicast_ip, and TSPrefetchInfo::url_response_blast.
Referenced by handleEvent().
Definition at line 323 of file Prefetch.h.
Referenced by blastObject(), bufferObject(), free(), httpClient(), and init().
Definition at line 321 of file Prefetch.h.
Referenced by bufferObject(), handleEvent(), and invokeBlaster().
Definition at line 330 of file Prefetch.h.
Referenced by handleEvent(), and initCacheLookupConfig().
Definition at line 328 of file Prefetch.h.
Referenced by blastObject(), and invokeBlaster().
Definition at line 335 of file Prefetch.h.
Referenced by blastObject(), and free().
uint32_t PrefetchBlaster::n_pkts_sent |
Definition at line 333 of file Prefetch.h.
Referenced by blastObject().
Definition at line 324 of file Prefetch.h.
Referenced by blastObject(), httpClient(), and init().
Definition at line 320 of file Prefetch.h.
Referenced by bufferObject(), free(), handleCookieHeaders(), handleEvent(), httpClient(), init(), and invokeBlaster().
uint32_t PrefetchBlaster::seq_no |
Definition at line 334 of file Prefetch.h.
Referenced by blastObject().
Definition at line 326 of file Prefetch.h.
Referenced by blastObject(), bufferObject(), free(), handleEvent(), httpClient(), and invokeBlaster().
Definition at line 317 of file Prefetch.h.
Referenced by free(), handleEvent(), init(), and invokeBlaster().
Definition at line 316 of file Prefetch.h.
Referenced by blastObject(), bufferObject(), free(), handleEvent(), init(), and invokeBlaster().
Definition at line 318 of file Prefetch.h.
Referenced by handleEvent(), and invokeBlaster().