网络栈加载完数据发送消息时的堆栈

来源:互联网 发布:知乎大脑的结构 编辑:程序博客网 时间:2024/06/16 17:40

19. 此时主资源的加载到此结束。

     再来看看thirdparty/WebKit下的文件DocumentLoader.cpp中方法:

 DocumentLoader::startLoadingMainResource()

   我们之前分析的都是:该方法中的代码:

    m_mainResource = m_fetcher->fetchMainResource(cachedResourceRequest, m_substituteData);

   该方法中,之后有代码:m_mainResource->addClient(this);

10. 上面提到的代码执行的thirdparty/WebKIt下文件RawResource.cpp中方法:RawResource::appendData

      该方法中有代码:

该方法中有代码:

    

[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
  1. while (RawResourceClient* c = w.next())  
  2.     c->dataReceived(this, data, length);  

这里执行的是DocumentLoader.cpp中方法:DocumentLoader::dataReceived

该方法中又会调用同文件中方法:DocumentLoader::commitData

9. 上面方法调用的是文件:thirdparty/WebKIt下文件ResourceLoader.cpp中方法:ResourceLoader::didReceiveData

     该方法中有代码: m_resource->appendData(data, length);


8. 上面提到的代码调用的是 content目录下文件:web_url_loader_impl.cc中方法:

     WebURLLoaderImpl::Context::OnReceivedData

    该方法中有代码: client_->didReceiveData(loader_, data, data_length, encoded_data_length);

    
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
  1. while (RawResourceClient* c = w.next())  
  2.     c->dataReceived(this, data, length);  

这里执行的是DocumentLoader.cpp中方法:DocumentLoader::dataReceived

该方法中又会调用同文件中方法:DocumentLoader::commitData


--------------------------------------------------------------------------------

void ResourceDispatcher::OnReceivedData(  request_info->peer->OnReceivedData(

  1. request_info->peer->OnReceivedData(  
  2.     data_ptr, data_length, encoded_data_length); 

void ResourceDispatcher::DispatchMessage(const IPC::Message& message) {

child/resource_dispatcher.cc  IPC_MESSAGE_HANDLER(ResourceMsg_DataReceived, OnReceivedData)

#2  0x00007fca0bb3841f in content::AsyncResourceHandler::OnReadCompleted(int, bool*) ()

   from /opt/BrowserCrawl/cef/libcef.so

filter->Send(new ResourceMsg_DataReceived(
      GetRequestID(), data_offset, bytes_read, encoded_data_length));

#3  0x00007fca0bb3b46d in content::BufferedResourceHandler::ReplayReadCompleted(bool*) ()
   from /opt/BrowserCrawl/cef/libcef.so
#4  0x00007fca0bb3a0e6 in content::BufferedResourceHandler::ProcessResponse(bool*) ()
   from /opt/BrowserCrawl/cef/libcef.so
#5  0x00007fca0bb3a5df in content::BufferedResourceHandler::OnReadCompleted(int, bool*) ()
   from /opt/BrowserCrawl/cef/libcef.so
#6  0x00007fca0bb44780 in content::LayeredResourceHandler::OnReadCompleted(int, bool*) ()
   from /opt/BrowserCrawl/cef/libcef.so
#7  0x00007fca0bb80040 in content::ResourceLoader::CompleteRead(int) () from /opt/BrowserCrawl/cef/libcef.so


#8  0x00007fca0bb7fda6 in content::ResourceLoader::OnReadCompleted(net::URLRequest*, int) ()

   from /opt/BrowserCrawl/cef/libcef.so
#9  0x00007fca0ae32f2b in net::URLRequest::NotifyReadCompleted(int) () from /opt/BrowserCrawl/cef/libcef.so
#10 0x00007fca0ae5e29c in net::URLRequestJob::NotifyReadComplete(int) () from /opt/BrowserCrawl/cef/libcef.so
#11 0x00007fca0ae54774 in net::URLRequestHttpJob::OnReadCompleted(int) () from /opt/BrowserCrawl/cef/libcef.so

bool URLRequestHttpJob::ReadRawData(

url_request/url_request_job.cc  bool URLRequestJob::ReadRawDataHelper(IOBuffer* buf, int buf_size,  int* bytes_read) {

bool URLRequestJob::ReadRawDataForFilter(int* bytes_read) {

bool URLRequestJob::ReadFilteredData(int* bytes_read) {

bool URLRequestJob::Read(IOBuffer* buf, int buf_size, int *bytes_read) {

url_request/url_request.cc bool URLRequest::Read(IOBuffer* dest, int dest_size, int* bytes_read) {

browser/loader/resource_loader.cc  void ResourceLoader::ReadMore(int* bytes_read) {

void ResourceLoader::StartReading(bool is_continuation) {

void ResourceLoader::OnResponseStarted(net::URLRequest* unused) {

url_request/url_request.cc  void URLRequest::NotifyResponseStarted() {

void URLRequestJob::NotifyHeadersComplete() {

url_request/url_request_http_job.cc  void URLRequestHttpJob::NotifyHeadersComplete() {

void URLRequestHttpJob::SaveNextCookie() {

void URLRequestHttpJob::SaveCookiesAndNotifyHeadersComplete(int result) {

void URLRequestHttpJob::OnStartCompleted(int result) {

void URLRequestHttpJob::StartTransactionInternal() {




0 0