ResourceLoaderAndroid::start
->WebUrlLoader::start (或者 clientAndroid->webFrame()->startLoadingResource)
->WebUrlLoaderClient::start

创建一个网络线程来处理请求

->thread->message_loop()->PostTask(FROM_HERE, NewRunnableMethod(m_request.get(), &WebRequest::start));

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

网络线程

->WebRequest::start
->net::URLRequest::start
根据URL类型创建不同的Job,并启动URLRequestXXXXJob::Start

【Http】
->URLRequestHttpJob::Start
->AddExtraHeaders()
->取Cookie

->创建HttpCacheTransaction

HttpCacheTransaction

->启动事务HttpCache::Transaction::Start

->循环Doloop() 状态机

do {
          switch (state) {
               DoGetBackend();
                       DoGetBackendComplete(rv);
               DoSendRequest();
                       DoSendRequestComplete(rv);
               DoSuccessfulSendRequest();
               DoNetworkRead();
                       DoNetworkReadComplete(rv);
               DoInitEntry();
               DoOpenEntry();
                       DoOpenEntryComplete(rv);
               DoCreateEntry();
                       DoCreateEntryComplete(rv);
               DoDoomEntry();
                       DoDoomEntryComplete(rv);
               DoAddToEntry();
                       DoAddToEntryComplete(rv);
               DoNotifyBeforeSendHeaders();
                       DoNotifyBeforeSendHeadersComplete(rv);
               DoStartPartialCacheValidation();
               DoCompletePartialCacheValidation(rv);
               DoUpdateCachedResponse();
                       DoUpdateCachedResponseComplete(rv);
               DoOverwriteCachedResponse();
               DoTruncateCachedData();
                       DoTruncateCachedDataComplete(rv);
               DoTruncateCachedMetadata();
                       DoTruncateCachedMetadataComplete(rv);
               DoPartialHeadersReceived();
               DoCacheReadResponse();
                       DoCacheReadResponseComplete(rv);
               DoCacheWriteResponse();
               DoCacheWriteTruncatedResponse();
                       DoCacheWriteResponseComplete(rv);
               DoCacheReadMetadata();
                       DoCacheReadMetadataComplete(rv);
               DoCacheQueryData();
                       DoCacheQueryDataComplete(rv);
               DoCacheReadData();
                       DoCacheReadDataComplete(rv);
               DoCacheWriteData(rv);
                       DoCacheWriteDataComplete(rv);
          }
        } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE);

->创建HttpNeworkTransaction   (HttpCacheTransaction::DoSendRequest)

HttpNeworkTransaction
      ->启动事务HttpNetworkTransaction::Start

->循环DoLoop() 状态机

do {
          switch (state) {
               DoCreateStream();
                       DoCreateStreamComplete(rv);
               DoInitStream();
                       DoInitStreamComplete(rv);
               DoGenerateProxyAuthToken();
                       DoGenerateProxyAuthTokenComplete(rv);
               DoGenerateServerAuthToken();
                       DoGenerateServerAuthTokenComplete(rv);
               DoBuildRequest();
                       DoBuildRequestComplete(rv);
               DoSendRequest();     Socket阻塞发送
                       DoSendRequestComplete(rv);
               DoReadHeaders();    Socket阻塞读取
                       DoReadHeadersComplete(rv);
               DoReadBody();         Socket阻塞读取
                       DoReadBodyComplete(rv);
               DoDrainBodyForAuthRestart();
                       DoDrainBodyForAuthRestartComplete(rv);
          }
        } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE);

【Ftp】

Chrome网络库的请求处理相关推荐

  1. Android网络库的比较:OkHTTP,Retrofit和Volley [关闭]

    本文翻译自:Comparison of Android networking libraries: OkHTTP, Retrofit, and Volley [closed] Two-part que ...

  2. 谷歌开源张量网络库TensorNetwork,GPU处理提升100倍!

    编译 |  琥珀 出品 | AI科技大本营(ID:rgznai100) 世界上许多最严峻的科学挑战,如开发高温超导体和理解时空的本质,都涉及处理量子系统的复杂性.然而,这些系统中量子态的数量程指数级增 ...

  3. 新书预告:《Linux 多线程服务端编程——使用 muduo C++ 网络库》

    看完了 W. Richard Stevens 的传世经典<UNIX 网络编程>, 能照着例子用 Sockets API 编写 echo 服务, 却仍然对稍微复杂一点的网络编程任务感到无从下 ...

  4. kotlin 用协程做网络请求_Android使用Kotlin协程封装网络库

    概述 最近又要替换网络库成了,导致所有的业务代码都要替换且要重新测试回归.为了防止后续再遇到这样事情,降低替换核心库的成本,现利用协程对网络库进行封装. 理想API调用方式 launch { val ...

  5. 开源免费的C/C++网络库(c/c++ sockets library)

    (1)ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库,支持跨平台. http://www.cs.wustl.edu/~schmidt/ACE.html (2)Asio Asio基于Boo ...

  6. 网易云音乐网络库跨平台化实践

    导读: 2021年10月21日,「QCon 全球软件开发大会」在上海举办,网易智企技术 VP 陈功作为出品人发起了「AI 时代下的融合通信技术」专场,邀请到网易云信.网易音视频实验室.网易云音乐的技术 ...

  7. 技术实践 | 聊聊网易云信的信令网络库实践

    导读:信令作为实时音视频技术架构中的重要一环,是对建立实时音视频通信起到关键桥梁性的作用. 文|丁永锋 网易云信资深客户端开发工程师 本文将从信令的概念着手,分享在网易云信新一代音视频技术架构下,信令 ...

  8. 如何使用网络库实现应用级消息收发

    为什么80%的码农都做不了架构师?>>>    网络客户端ISocketClient和网络会话ISocketSession都继承了ISocketRemoteISocketRemote ...

  9. muduo网络库学习(八)事件驱动循环线程池EventLoopThreadPool

    muduo是支持多线程的网络库,在muduo网络库学习(七)用于创建服务器的类TcpServer中也提及了TcpServer中有一个事件驱动循环线程池,线程池中存在大量线程,每个线程运行一个Event ...

最新文章

  1. linux 系统调用表 sys_call_table 获取方法
  2. [原]请留心asp:Image控件中的ImageUrl属性
  3. java继承的关键字_超级关键字在Java继承中的作用
  4. VTK:可视化算法之TensorAxes
  5. DWZ (JUI) 教程 navTab 刷新分析
  6. Application package 'AndroidManifest.xml' must have a minimum of 2 segments错误
  7. [剑指offer][JAVA]面试题第[09]题[用两个栈实现队列][LinkedList]
  8. 【BZOJ2038】小Z的袜子,第一次的莫队算法
  9. 解决Hash冲突四种方法
  10. Android7工程模式,安卓手机的“工程模式”是什么?
  11. new relic_Datadog,SignalFX,New Relic,Wavefront –您应该选择哪个仪表板?
  12. Luogu1039 侦探推理
  13. 记一次mysql启动失败问题.
  14. Android Zip 解压与进度 实现,kotlin命令行输入值
  15. python安装需要什么电脑配置_自学python用什么配置电脑?
  16. 市场“不确定性”中的投资逻辑 2020-03-18
  17. exFAT和NTFS哪个好
  18. 【Linux】Linux下安装gcc/g++
  19. ScroolView 控制最大高度
  20. springboot+ldap+Jpa

热门文章

  1. 神经网络之dropout层
  2. Oracle Length 和 Lengthb 函数说明 .(用来判断记录值里是否有中文内容)
  3. jquery 选择器,模糊匹配
  4. ASP.NET 网速慢时候按钮禁止重复提交
  5. MySQL 优化之 index_merge (索引合并)
  6. 编程3:仅用递归函数和栈操作逆序一个栈
  7. Wannafly挑战赛18C 异或和
  8. ThreadLocal相关
  9. 深入SQL SERVER 2000的内存管理机制
  10. openfire推送离线聊天信息的插件