From 19079b6401d0c284c99923486b726ae5f706dfa3 Mon Sep 17 00:00:00 2001
From: AJ Heller <hork@google.com>
Date: Wed, 27 Jul 2022 15:24:57 -0700
Subject: [PATCH] Time conversion utility for EventEngine::Durations (#30427)

* Time conversion utility for EventEngine::Durations

* Automated change: Fix sanity tests

Co-authored-by: drfloob <drfloob@users.noreply.github.com>
---
 BUILD                                  | 10 ++++++++
 src/core/lib/event_engine/time_util.cc | 30 ++++++++++++++++++++++++
 src/core/lib/event_engine/time_util.h  | 32 ++++++++++++++++++++++++++
 3 files changed, 72 insertions(+)
 create mode 100644 src/core/lib/event_engine/time_util.cc
 create mode 100644 src/core/lib/event_engine/time_util.h

diff --git a/BUILD b/BUILD
index ad9364a4833..c6f693c511d 100644
--- a/BUILD
+++ b/BUILD
@@ -2251,6 +2251,16 @@ grpc_cc_library(
     ],
 )
 
+grpc_cc_library(
+    name = "event_engine_time_util",
+    srcs = ["src/core/lib/event_engine/time_util.cc"],
+    hdrs = ["src/core/lib/event_engine/time_util.h"],
+    deps = [
+        "event_engine_base_hdrs",
+        "gpr_platform",
+    ],
+)
+
 grpc_cc_library(
     name = "iomgr_ee_timer",
     srcs = [
diff --git a/src/core/lib/event_engine/time_util.cc b/src/core/lib/event_engine/time_util.cc
new file mode 100644
index 00000000000..63a720132ca
--- /dev/null
+++ b/src/core/lib/event_engine/time_util.cc
@@ -0,0 +1,30 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/event_engine/time_util.h"
+
+#include <chrono>
+
+#include <grpc/event_engine/event_engine.h>
+
+namespace grpc_event_engine {
+namespace experimental {
+
+int64_t Milliseconds(EventEngine::Duration d) {
+  return std::chrono::duration_cast<std::chrono::milliseconds>(d).count();
+}
+
+}  // namespace experimental
+}  // namespace grpc_event_engine
diff --git a/src/core/lib/event_engine/time_util.h b/src/core/lib/event_engine/time_util.h
new file mode 100644
index 00000000000..add87bdb0e4
--- /dev/null
+++ b/src/core/lib/event_engine/time_util.h
@@ -0,0 +1,32 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_TIME_UTIL_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_TIME_UTIL_H
+
+#include <grpc/support/port_platform.h>
+
+#include <stdint.h>
+
+#include <grpc/event_engine/event_engine.h>
+
+namespace grpc_event_engine {
+namespace experimental {
+
+// Convert a duration to milliseconds
+int64_t Milliseconds(EventEngine::Duration d);
+
+}  // namespace experimental
+}  // namespace grpc_event_engine
+
+#endif  // GRPC_CORE_LIB_EVENT_ENGINE_TIME_UTIL_H
\ No newline at end of file