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; +} + }