AU: Extent writer utility classes

These are similar to the FileWriter classes, but focus on writing to
extents within a file (or device) rather than writing a file in order.

Again there is a ExtentWriter interface from which all types of extent
writers interit.

There are also two basic extent writers: a direct extent writer that
writes data directly to the file descriptor, and a zero padding extent
writer that piggy-backs on another extent writer. When the
zero-padding extent writer is End()ed, it fills out the rest of the
extent with zeros.

Also, BzipExtentWriter: an ExtentWriter concrete subclass that writes
to another ExtentWriter.  BzipExtentWriter bzip2 decompresses all data
passed through.

Review URL: http://codereview.chromium.org/551132
9 files changed
tree: ddc90f26cff8d836d2abf5756670dc6933cbdeaf
  1. action.h
  2. action_pipe.h
  3. action_pipe_unittest.cc
  4. action_processor.cc
  5. action_processor.h
  6. action_processor_unittest.cc
  7. action_unittest.cc
  8. bzip_extent_writer.cc
  9. bzip_extent_writer.h
  10. bzip_extent_writer_unittest.cc
  11. decompressing_file_writer.cc
  12. decompressing_file_writer.h
  13. decompressing_file_writer_unittest.cc
  14. delta_diff_generator.cc
  15. delta_diff_generator.h
  16. delta_diff_generator_unittest.cc
  17. delta_diff_parser.cc
  18. delta_diff_parser.h
  19. delta_diff_parser_unittest.cc
  20. download_action.cc
  21. download_action.h
  22. download_action_unittest.cc
  23. extent_writer.cc
  24. extent_writer.h
  25. extent_writer_unittest.cc
  26. file_writer.cc
  27. file_writer.h
  28. file_writer_unittest.cc
  29. filesystem_copier_action.cc
  30. filesystem_copier_action.h
  31. filesystem_copier_action_unittest.cc
  32. filesystem_iterator.cc
  33. filesystem_iterator.h
  34. filesystem_iterator_unittest.cc
  35. gen_coverage_html.sh
  36. generate_delta_main.cc
  37. gzip.cc
  38. gzip.h
  39. gzip_unittest.cc
  40. http_fetcher.h
  41. http_fetcher_unittest.cc
  42. install_plan.h
  43. integration_unittest.cc
  44. libcurl_http_fetcher.cc
  45. libcurl_http_fetcher.h
  46. local_coverage_rate.sh
  47. main.cc
  48. mock_file_writer.h
  49. mock_http_fetcher.cc
  50. mock_http_fetcher.h
  51. omaha_hash_calculator.cc
  52. omaha_hash_calculator.h
  53. omaha_hash_calculator_unittest.cc
  54. omaha_request_prep_action.cc
  55. omaha_request_prep_action.h
  56. omaha_request_prep_action_unittest.cc
  57. omaha_response_handler_action.cc
  58. omaha_response_handler_action.h
  59. omaha_response_handler_action_unittest.cc
  60. postinstall_runner_action.cc
  61. postinstall_runner_action.h
  62. postinstall_runner_action_unittest.cc
  63. SConstruct
  64. set_bootable_flag_action.cc
  65. set_bootable_flag_action.h
  66. set_bootable_flag_action_unittest.cc
  67. subprocess.cc
  68. subprocess.h
  69. subprocess_unittest.cc
  70. test_http_server.cc
  71. test_http_server.py
  72. test_installer_main.cc
  73. test_utils.cc
  74. test_utils.h
  75. testrunner.cc
  76. update_check_action.cc
  77. update_check_action.h
  78. update_check_action_unittest.cc
  79. update_metadata.proto
  80. utils.cc
  81. utils.h
  82. utils_unittest.cc