tree: fa689af2ed187cd560bd0d093e68cba58bc76dc4 [path history] [tgz]
  1. bind_utils.h
  2. ec_constants.cc
  3. ec_constants.h
  4. ec_constants_test.cc
  5. fake_browser.cc
  6. fake_browser.h
  7. fake_wilco_dtc.cc
  8. fake_wilco_dtc.h
  9. fake_wilco_dtc_supportd_routine_factory.cc
  10. fake_wilco_dtc_supportd_routine_factory.h
  11. file_test_utils.cc
  12. file_test_utils.h
  13. json_utils.cc
  14. json_utils.h
  15. main.cc
  16. mock_mojom_wilco_dtc_supportd_client.cc
  17. mock_mojom_wilco_dtc_supportd_client.h
  18. mojo_test_utils.cc
  19. mojo_test_utils.h
  20. mojo_utils.cc
  21. mojo_utils.h
  22. mojo_utils_test.cc
  23. protobuf_test_utils.h
  24. README.md
  25. wilco_dtc_supportd_core.cc
  26. wilco_dtc_supportd_core.h
  27. wilco_dtc_supportd_core_delegate_impl.cc
  28. wilco_dtc_supportd_core_delegate_impl.h
  29. wilco_dtc_supportd_core_test.cc
  30. wilco_dtc_supportd_daemon.cc
  31. wilco_dtc_supportd_daemon.h
  32. wilco_dtc_supportd_dbus_service.cc
  33. wilco_dtc_supportd_dbus_service.h
  34. wilco_dtc_supportd_dbus_service_test.cc
  35. wilco_dtc_supportd_ec_event_service.cc
  36. wilco_dtc_supportd_ec_event_service.h
  37. wilco_dtc_supportd_ec_event_service_test.cc
  38. wilco_dtc_supportd_grpc_service.cc
  39. wilco_dtc_supportd_grpc_service.h
  40. wilco_dtc_supportd_grpc_service_test.cc
  41. wilco_dtc_supportd_mojo_service.cc
  42. wilco_dtc_supportd_mojo_service.h
  43. wilco_dtc_supportd_mojo_service_test.cc
  44. wilco_dtc_supportd_routine_factory.h
  45. wilco_dtc_supportd_routine_factory_impl.cc
  46. wilco_dtc_supportd_routine_factory_impl.h
  47. wilco_dtc_supportd_routine_service.cc
  48. wilco_dtc_supportd_routine_service.h
  49. wilco_dtc_supportd_routine_service_test.cc
diagnostics/wilco_dtc_supportd/README.md

wilco_dtc_supportd daemon

Please see ../README.md for general information.

IPC mechanisms

This daemon uses three IPC mechanisms:

  • gRPC - for talking to the wilco_dtc daemon.
  • Mojo - for talking to the browser.
  • D-Bus - for receiving Mojo bootstrap requests from the browser.

Class structure

`WilcoDtcSupportdDaemon`
 ^
 |
 v
`WilcoDtcSupportdCore`
 ^
 |
 |   // gRPC-related members:
 +-> `WilcoDtcSupportdGrpcService`
 |       (handles incoming gRPC requests)
 +-> `AsyncGrpcServer<grpc_api::WilcoDtcSupportd>`
 |       (connects `WilcoDtcSupportdGrpcService` with the actual gRPC
 |        pipe)
 +-> `AsyncGrpcClient<grpc_api::WilcoDtc>`
 |       (sends outgoing gRPC requests through the actual gRPC pipe)
 |
 |   // Mojo-related members:
 +-> `WilcoDtcSupportdMojoService`
 |       (handles incoming Mojo requests and sends outgoing ones)
 +-> `mojo::Binding<mojom::DiagnosticsdService>`
 |       (connects `WilcoDtcSupportdMojoService` with the actual Mojo pipe)
 |
 |   // D-Bus-related members:
 +-> `WilcoDtcSupportdDBusService`
 |       (handles incoming D-Bus requests)
 +-> `brillo::dbus_utils::DBusObject`
         (connects `WilcoDtcSupportdDBusService` with the actual D-Bus pipe)

Classes are generally organized such that they don't know about their owners or siblings in this graph. Instead, these classes are parameterized with delegate(s), which implement these cross-class calls. This allows to test each individual piece of logic separately.