MountingTelemetry.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * Copyright (c) Facebook, Inc. and its affiliates.
  3. *
  4. * This source code is licensed under the MIT license found in the
  5. * LICENSE file in the root directory of this source tree.
  6. */
  7. #pragma once
  8. #include <chrono>
  9. #include <cstdint>
  10. #include <react/utils/Telemetry.h>
  11. namespace facebook {
  12. namespace react {
  13. /*
  14. * Represent arbitrary telemetry data that can be associated with the
  15. * particular revision of `ShadowTree`.
  16. */
  17. class MountingTelemetry final {
  18. public:
  19. /*
  20. * Signaling
  21. */
  22. void willDiff();
  23. void didDiff();
  24. void willCommit();
  25. void didCommit();
  26. void willLayout();
  27. void didLayout();
  28. void willMount();
  29. void didMount();
  30. /*
  31. * Reading
  32. */
  33. TelemetryTimePoint getDiffStartTime() const;
  34. TelemetryTimePoint getDiffEndTime() const;
  35. TelemetryTimePoint getLayoutStartTime() const;
  36. TelemetryTimePoint getLayoutEndTime() const;
  37. TelemetryTimePoint getCommitStartTime() const;
  38. TelemetryTimePoint getCommitEndTime() const;
  39. TelemetryTimePoint getMountStartTime() const;
  40. TelemetryTimePoint getMountEndTime() const;
  41. int getCommitNumber() const;
  42. private:
  43. TelemetryTimePoint diffStartTime_{kTelemetryUndefinedTimePoint};
  44. TelemetryTimePoint diffEndTime_{kTelemetryUndefinedTimePoint};
  45. TelemetryTimePoint commitStartTime_{kTelemetryUndefinedTimePoint};
  46. TelemetryTimePoint commitEndTime_{kTelemetryUndefinedTimePoint};
  47. TelemetryTimePoint layoutStartTime_{kTelemetryUndefinedTimePoint};
  48. TelemetryTimePoint layoutEndTime_{kTelemetryUndefinedTimePoint};
  49. TelemetryTimePoint mountStartTime_{kTelemetryUndefinedTimePoint};
  50. TelemetryTimePoint mountEndTime_{kTelemetryUndefinedTimePoint};
  51. int commitNumber_{0};
  52. };
  53. } // namespace react
  54. } // namespace facebook