LINUX.ORG.RU

История изменений

Исправление witaway, (текущая версия) :

По крайней мере, такой подход с потоками, реализованными посредством лонг поллинга сишных функций, очень легко может быть интегрирован в любой ЯП, не зависит от окружения и не требует лишних зависимостей.

Со стороны разработчика конечного приложения требуется всего-лишь написать простейший цикл и вынести его в отдельный поток. Как-то примерно так:

  1. В цикле вызвать си_получить_лог()
  2. Разобрать полученную структуру. Это может быть сишная структура, тогда надо предоставить её определение. Ещё проще, если логи представляют сериализованный массив байт. Тогда нужно предоставить функцию десериализатор. Если сериализация в JSON или protobuf — ещё проще.
  3. Передать в свой высокоуровневый логгер данные.
  4. Повторить.

В конечном итоге, внешнему разработку можно просто в доках выкинуть короткий сниппет.

Исправление witaway, :

По крайней мере, такой подход с потоками, реализованными посредством лонг поллинга сишных функций, очень легко может быть интегрирован в любой ЯП, не зависит от окружения и не требует лишних зависимостей.

Со стороны разработчика конечного приложения требуется всего-лишь написать простейший цикл и вынести его в отдельный поток. Как-то примерно так:

  1. В цикле вызвать си_получить_лог()
  2. Разобрать полученную структуру. Это может быть сишная структура, тогда надо предоставить её определение. Ещё проще, если логи представляют сериализованный массив байт. Тогда нужно предоставить функцию десериализатор. Если сериализация в JSON или protobuf — ещё проще.
  3. Передать в свой высокоуровневый логгер данные.
  4. Повторить.

Исправление witaway, :

По крайней мере, такой подход с потоками, реализованными посредством лонг поллинга сишных функций, очень легко может быть интегрирован в любой ЯП, не зависит от окружения и не требует лишних зависимостей.

Со стороны разработчика конечного приложения требуется всего-лишь написать простейший цикл и вынести его в отдельный поток. Как-то примерно так:

  1. В цикле вызвать си_получить_лог()
  2. Разобрать полученную структуру. Это может быть как сишная структура, тогда надо предоставить её определение. Ещё проще, если логи представляют сериализованный массив байт. Тогда нужно предоставить функцию десериализатор. Если сериализация в JSON или protobuf — ещё проще.
  3. Передать в свой высокоуровневый логгер данные.
  4. Повторить.

Исходная версия witaway, :

По крайней мере, такой подход с потоками, реализованными посредством лонг поллинга сишных функций, очень легко может быть интегрирован в любой ЯП, не зависит от окружения и не требует лишних зависимостей.

Со стороны разработчика конечного приложения требуется всего-лишь написать простейший цикл и вынести его в отдельный поток. Как-то примерно так:

  1. В цикле вызываешь си_получить_лог()
  2. Разобрать полученную структуру. Это может быть как сишная структура, тогда надо предоставить её определение. Ещё проще, если логи представляют сериализованный массив байт. Тогда нужно предоставить функцию десериализатор. Если сериализация в JSON или protobuf — ещё проще.
  3. Передать в свой высокоуровневый логгер данные.
  4. Повторить.