Исправление сериализации Epoch #13

Merged
DarkCat09 merged 2 commits from fix/hifitime-serde into master 2024-06-01 21:25:50 +03:00
Owner

Явно забыл добавить её ранее

Явно забыл добавить её ранее
nm17 added 1 commit 2024-05-31 23:59:54 +03:00
nm17 requested review from DarkCat09 2024-06-01 00:00:52 +03:00
DarkCat09 reviewed 2024-06-01 09:41:50 +03:00
@ -0,0 +54,4 @@
E: de::Error,
{
return Ok(Epoch::from_unix_seconds(
value.parse().map_err(de::Error::custom)?
Owner

API народмона также разрешает отправлять юникс-время в 16-ричном виде. Предполагаю, растовый parse() по умолчанию парсит только decimal и выдаст ошибку на hex. Верно?

API народмона также разрешает отправлять юникс-время в 16-ричном виде. Предполагаю, растовый `parse()` по умолчанию парсит только decimal и выдаст ошибку на hex. Верно?
Author
Owner

API народмона также разрешает отправлять юникс-время в 16-ричном виде.

Чаво? Это где написано? Впервые слышу.

> API народмона также разрешает отправлять юникс-время в 16-ричном виде. Чаво? Это где написано? Впервые слышу.
Owner

А вот)

А вот)
Author
Owner

А, хорошо подметил. Тогда доделаю как смогу.

А, хорошо подметил. Тогда доделаю как смогу.
Owner

Предполагаю, что пользуются этим не один-два человека, экономить трафик все хотят. Реализацию я вижу вида:

  1. попытаться распарсить 10-ричное число
  2. получилось – проверить, не прошедший ли timestamp указан, и если да – проверить то же самое с 16-ричной конвертацией, скорее всего так получится правильное время
  3. не получилось – парсим как hex

Честно не понимаю, как они это на своём сервере на баш-скриптах обрабатывают. Гениальный API.

Предполагаю, что пользуются этим не один-два человека, экономить трафик все хотят. Реализацию я вижу вида: 1. попытаться распарсить 10-ричное число 2. получилось – проверить, не прошедший ли timestamp указан, и если да – проверить то же самое с 16-ричной конвертацией, скорее всего так получится правильное время 3. не получилось – парсим как hex Честно не понимаю, как они это на своём сервере на баш-скриптах обрабатывают. Гениальный API.
Owner

[То же самое написал в тг-чате]

Ещё можно, знаешь, смотреть по префиксу таймстемпа.

Например, сейчас префикс 1717 в десятеричном и 0x665 в хексе.
1717228768
0x665ad4e0

Через N секунд обновляем префиксы, если нужно.

Когда приходит time от девайса, пробуем распарсить как десятиричное число, и если получается – то сравниваем по префиксам. Иначе пробуем парсить как хекс.

[То же самое написал в тг-чате] Ещё можно, знаешь, смотреть по префиксу таймстемпа. Например, сейчас префикс 1717 в десятеричном и 0x665 в хексе. 1717228768 0x665ad4e0 Через N секунд обновляем префиксы, если нужно. Когда приходит time от девайса, пробуем распарсить как десятиричное число, и если получается – то сравниваем по префиксам. Иначе пробуем парсить как хекс.
Author
Owner

Мне кажется легче всего отличить по длине строки. 8 символов => значит hex.

Мне кажется легче всего отличить по длине строки. 8 символов => значит hex.
Owner

Но ведь когда-то будет не 8 символов, а больше)
Обновлять надо. Похоже на мой вариант с префиксами, кстати. Да, по длине проще.

Но ведь когда-то будет не 8 символов, а больше) Обновлять надо. Похоже на мой вариант с префиксами, кстати. Да, по длине проще.
Author
Owner

Но ведь когда-то будет не 8 символов, а больше)

Это произойдёт 7 Февраля 2106г. в 06:28:15 UTC, так что сойдёт.

> Но ведь когда-то будет не 8 символов, а больше) Это произойдёт 7 Февраля 2106г. в 06:28:15 UTC, так что сойдёт.
Author
Owner

Заметка: байты эти в BE, а не LE

Заметка: байты эти в BE, а не LE
DarkCat09 marked this conversation as resolved
DarkCat09 reviewed 2024-06-01 20:16:54 +03:00
@ -0,0 +35,4 @@
fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
formatter.write_str(
"a (string, representing a timestamp in number or hex form) or a number",
Owner

string representing a timestamp in a decimal or hex number

`string representing a timestamp in a decimal or hex number`
Author
Owner

string representing a timestamp in a decimal or hex number

Не, совсем не звучит. "Строка, представляющая из себя таймстамп в цифре(?) или шестнадцатеричное число". Сейчас подправлю чтобы точно не было сомнений.

> `string representing a timestamp in a decimal or hex number` Не, совсем не звучит. "Строка, представляющая из себя таймстамп в цифре(?) или шестнадцатеричное число". Сейчас подправлю чтобы точно не было сомнений.
DarkCat09 marked this conversation as resolved
nm17 force-pushed fix/hifitime-serde from 11c830c3f3 to 9edfcb3af7 2024-06-01 20:26:23 +03:00 Compare
DarkCat09 approved these changes 2024-06-01 21:25:22 +03:00
DarkCat09 merged commit c9e81b942e into master 2024-06-01 21:25:50 +03:00
DarkCat09 deleted branch fix/hifitime-serde 2024-06-01 21:36:51 +03:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: iotishnik/server#13
No description provided.