Restructure FilesystemCopierAction to use ping-pong buffers.

This would allow some parallel processing -- calculating hashes in parallel with
read in parallel with write. Performance benefit at this stage seems
marginal. The major reason for the change is to reuse the FilesystemCopierAction
for applied update verification -- hopefully speeding it up and making AU
responsive to D-Bus signals during that stage. That would be a separate CL
though.

BUG=9140
TEST=unit tests, tested update on the device

Change-Id: I9d07ebbf4d536362c0a955addcaa1d48d5e9b115

Review URL: http://codereview.chromium.org/5603001
2 files changed
tree: 2e653344d2913f19892dfdbbe6c9f677fc1917f5
  1. .gitignore
  2. action.h
  3. action_mock.h
  4. action_pipe.h
  5. action_pipe_unittest.cc
  6. action_processor.cc
  7. action_processor.h
  8. action_processor_mock.h
  9. action_processor_unittest.cc
  10. action_unittest.cc
  11. buffered_file_writer.cc
  12. buffered_file_writer.h
  13. buffered_file_writer_unittest.cc
  14. bzip.cc
  15. bzip.h
  16. bzip_extent_writer.cc
  17. bzip_extent_writer.h
  18. bzip_extent_writer_unittest.cc
  19. chrome_proxy_resolver.cc
  20. chrome_proxy_resolver.h
  21. chrome_proxy_resolver_unittest.cc
  22. cycle_breaker.cc
  23. cycle_breaker.h
  24. cycle_breaker_unittest.cc
  25. dbus_constants.h
  26. dbus_interface.h
  27. dbus_service.cc
  28. dbus_service.h
  29. decompressing_file_writer.cc
  30. decompressing_file_writer.h
  31. decompressing_file_writer_unittest.cc
  32. delta_diff_generator.cc
  33. delta_diff_generator.h
  34. delta_diff_generator_unittest.cc
  35. delta_performer.cc
  36. delta_performer.h
  37. delta_performer_unittest.cc
  38. download_action.cc
  39. download_action.h
  40. download_action_unittest.cc
  41. extent_mapper.cc
  42. extent_mapper.h
  43. extent_mapper_unittest.cc
  44. extent_ranges.cc
  45. extent_ranges.h
  46. extent_ranges_unittest.cc
  47. extent_writer.cc
  48. extent_writer.h
  49. extent_writer_unittest.cc
  50. file_writer.cc
  51. file_writer.h
  52. file_writer_mock.h
  53. file_writer_unittest.cc
  54. filesystem_copier_action.cc
  55. filesystem_copier_action.h
  56. filesystem_copier_action_unittest.cc
  57. filesystem_iterator.cc
  58. filesystem_iterator.h
  59. filesystem_iterator_unittest.cc
  60. flimflam_proxy.cc
  61. flimflam_proxy.h
  62. flimflam_proxy_unittest.cc
  63. full_update_generator.cc
  64. full_update_generator.h
  65. full_update_generator_unittest.cc
  66. gen_coverage_html.sh
  67. generate_delta_main.cc
  68. graph_types.h
  69. graph_utils.cc
  70. graph_utils.h
  71. graph_utils_unittest.cc
  72. gzip.cc
  73. gzip.h
  74. http_fetcher.cc
  75. http_fetcher.h
  76. http_fetcher_unittest.cc
  77. inherit-review-settings-ok
  78. install_plan.h
  79. integration_unittest.cc
  80. libcurl_http_fetcher.cc
  81. libcurl_http_fetcher.h
  82. LICENSE
  83. local_coverage_rate.sh
  84. main.cc
  85. marshal.list
  86. mock_dbus_interface.h
  87. mock_file_writer.h
  88. mock_http_fetcher.cc
  89. mock_http_fetcher.h
  90. multi_http_fetcher.h
  91. omaha_hash_calculator.cc
  92. omaha_hash_calculator.h
  93. omaha_hash_calculator_unittest.cc
  94. omaha_request_action.cc
  95. omaha_request_action.h
  96. omaha_request_action_unittest.cc
  97. omaha_request_params.cc
  98. omaha_request_params.h
  99. omaha_request_params_unittest.cc
  100. omaha_response_handler_action.cc
  101. omaha_response_handler_action.h
  102. omaha_response_handler_action_unittest.cc
  103. org.chromium.UpdateEngine.service
  104. payload_signer.cc
  105. payload_signer.h
  106. payload_signer_unittest.cc
  107. postinstall_runner_action.cc
  108. postinstall_runner_action.h
  109. postinstall_runner_action_unittest.cc
  110. prefs.cc
  111. prefs.h
  112. prefs_interface.h
  113. prefs_mock.h
  114. prefs_unittest.cc
  115. proxy_resolver.cc
  116. proxy_resolver.h
  117. SConstruct
  118. setup_dev_packages
  119. simple_key_value_store.cc
  120. simple_key_value_store.h
  121. simple_key_value_store_unittest.cc
  122. split_file_writer.cc
  123. split_file_writer.h
  124. split_file_writer_unittest.cc
  125. subprocess.cc
  126. subprocess.h
  127. subprocess_unittest.cc
  128. tarjan.cc
  129. tarjan.h
  130. tarjan_unittest.cc
  131. terminator.cc
  132. terminator.h
  133. terminator_unittest.cc
  134. test_http_server.cc
  135. test_utils.cc
  136. test_utils.h
  137. testrunner.cc
  138. topological_sort.cc
  139. topological_sort.h
  140. topological_sort_unittest.cc
  141. unittest_key.pem
  142. update_attempter.cc
  143. update_attempter.h
  144. update_attempter_mock.h
  145. update_attempter_unittest.cc
  146. update_check_scheduler.cc
  147. update_check_scheduler.h
  148. update_check_scheduler_unittest.cc
  149. update_engine.xml
  150. update_engine_client.cc
  151. update_metadata.proto
  152. UpdateEngine.conf
  153. utils.cc
  154. utils.h
  155. utils_unittest.cc
  156. WATCHLISTS
  157. zip_unittest.cc