From 6e10c2cdb706f0f6a1a4cd600fadfa809026f622 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Thu, 15 Apr 2021 10:33:28 -0400 Subject: [PATCH] LibCore+LibIPC: Add IPC coder for Core::DateTime Since LibCore cannot depend on LibIPC, the coders are defined in LibIPC just like they are for Core::AnonymousBuffer. --- Userland/Libraries/LibCore/DateTime.h | 8 ++++++++ Userland/Libraries/LibIPC/Decoder.cpp | 11 +++++++++++ Userland/Libraries/LibIPC/Encoder.cpp | 8 ++++++++ 3 files changed, 27 insertions(+) diff --git a/Userland/Libraries/LibCore/DateTime.h b/Userland/Libraries/LibCore/DateTime.h index 9101a9306a..1702914bcc 100644 --- a/Userland/Libraries/LibCore/DateTime.h +++ b/Userland/Libraries/LibCore/DateTime.h @@ -27,6 +27,7 @@ #pragma once #include +#include #include namespace Core { @@ -70,3 +71,10 @@ private: }; } + +namespace IPC { + +bool encode(IPC::Encoder&, const Core::DateTime&); +bool decode(IPC::Decoder&, Core::DateTime&); + +} diff --git a/Userland/Libraries/LibIPC/Decoder.cpp b/Userland/Libraries/LibIPC/Decoder.cpp index 67ed0b91fc..372af41fe6 100644 --- a/Userland/Libraries/LibIPC/Decoder.cpp +++ b/Userland/Libraries/LibIPC/Decoder.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -205,4 +206,14 @@ bool decode(Decoder& decoder, Core::AnonymousBuffer& buffer) return buffer.is_valid(); } +bool decode(Decoder& decoder, Core::DateTime& datetime) +{ + i64 timestamp = -1; + if (!decoder.decode(timestamp)) + return false; + + datetime = Core::DateTime::from_timestamp(static_cast(timestamp)); + return true; +} + } diff --git a/Userland/Libraries/LibIPC/Encoder.cpp b/Userland/Libraries/LibIPC/Encoder.cpp index 42aa60a675..02c38298b3 100644 --- a/Userland/Libraries/LibIPC/Encoder.cpp +++ b/Userland/Libraries/LibIPC/Encoder.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -180,4 +181,11 @@ bool encode(Encoder& encoder, const Core::AnonymousBuffer& buffer) } return true; } + +bool encode(Encoder& encoder, const Core::DateTime& datetime) +{ + encoder << static_cast(datetime.timestamp()); + return true; +} + }