squid事件处理流程
2016-01-13 16:01:22 0 举报
squid事件处理流程,回调机制
作者其他创作
大纲/内容
EventLoop::run()
UFSStoreState::write
StoreIOState::PointerstoreCreate
comm_write注册COMM_SELECT_WRITE回调为commHandleWriteIOCB_WRITE回调为clientWriteBodyComplete
建立客户端连接
检查是否缓存1. StoreEntry::swapOutAble()2. StoreEntry::checkCachable()
FwdState::complete()
ConnectStateData::commRetryConnect
FwdState::connectDone
comm_select()
1. ipcacheMarkBadAddr2. callCallback
store_client::doCopy
commio_complete_callback
向原始服务器网络请求
写磁盘流程
comm_read
CommSelectEngine::checkEvents()
httpStart注意,此httpStart为向服务器请求,ClientHttpRequest::httpStart为客户端的请求
打开文件
StoreEntry::swapOut()
commio_set_callback
在commfd_completed_events加入节点,回调函数为clientWriteComplete(往客户端写)或clientWriteBodyComplete(往客户端写数据)HttpStateData::SendComplete(往服务端写数据)
BlockingFile::write
fdc_table[fd].acceptOne(fd)
ConnectStateData::connect()
comm_check_incoming_select_handlers
调用accept回调,即httpAccept
comm_write_mbuf设置回调为HttpStateData::SendComplete或HttpStateData::sentRequestBodyWrapper
main
FwdState::connectStart设置回调fwdConnectDoneWrapper
根据FwdState* fwd创建HttpStateData* httpState调用HttpStateData::sendRequest
1. ipcacheMarkGoodAddr2. callCallback
创建sioStoreIOState::Pointer storeCreate
fdc_t::acceptOne()
UFSSwapDir::createStoreIO
对链表commfd_completed_events的每个节点,调用commio_call_callback
sio-read_
StoreEntry::complete()
comm_listen
在commfd_completed_events加入节点,回调函数为clientReadRequest(读取客户端数据)或HttpStateData::ReadReplyWrapper(读取服务端数据)
UFSStoreState::read_
ipcache_nbgethostbyname
clientOpenListenSockets
EventLoop::runOnce()
storeSwapInStart
BlockingFile::create
往socket写数据
ConnectStateData::callCallback
store_client::callback
serverConnectionsOpen
comm_accept_try
commConnectDnsHandle
commio_call_callbacks()
回调clientWriteBodyComplete
UFSStoreState::drainWriteQueue
回调HttpStateData::SendComplete
回调commHandleWrite
comm_connect_addr
clientHttpConnectionsOpen
回调comm_accept_try
FwdState::connectStart
httpAccept
sio-write
UFSStoreState::doWrite
store_client::scheduleMemRead
commSetSelect设置fd_table[fd]对应的read_handler为commHandleRead
回调fwdConnectDoneWrapper
comm_accept
comm_read设置回调为clientReadRequest
BlockingFile::open
写文件
网络请求
回调clientReadRequest
storeIOWrite
store_client::startSwapin
store_client::scheduleDiskRead
读磁盘流程
commDispatcher::dispatch()
socketl连接,属性设置
storeSwapOutStart
store_client::fileRead
StoreEntry::invokeHandlers()
ConnStateData::readSomeData
读取socket数据
UFSSwapDir::openStoreIO
回调commHandleRead
IO-create即UFSStrategy::create
comm_write
mainInitialize
回调httpAccept
回调ConnectStateData::Connect
一堆流程,一直到ClientSocketContext::sendBody
comm_open
StoreIOState::Pointer storeOpen
store_client::scheduleRead
commio_set_callback设置commfd_table[(fd)].readcb为clientReadRequest
commSetSelect设置fd的COMM_SELECT_WRITE回调为ConnectStateData::Connect
commSetSelect设置回调,fd_table[fd].read_handler为comm_accept_try
回调fwdConnectdoneWrapper
connStateCreate创建ConnStateData
回调clientWriteComplete
commSetSelect
IO-open即UFSStrategy::open
BlockingFile::read
FwdState::dispatch
回调clientRelpyCOntext::CacheHit
commConnectStart
0 条评论
下一页