1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/windoze-fibio

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
TODO.md 5.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 11:21 11071ae

TODO List for Fiberized.IO

Ошибки (BUGS)

  • scheduler::add_thread вызывал проблему, отключено (ИСПРАВЛЕНО).
  • Срок действия cookie не работает в Linux, если часовой пояс отличается от UTC.

Основные задачи (Core)

  • Добавить обработчик сигнала в планировщик для обработки Ctrl-C/Ctrl-D/... — нет необходимости, можно использовать asio::use_future, чтобы получить будущее и дождаться его с таймаутом, см. пример echo_server.
  • Сделать concurrent_queue полностью работающим между fiber и not-a-fiber:
    • c_q<fibers::mutex, fiber::c_v> может передавать данные извне в fiber, пока нет ограничения по размеру (push не будет блокировать).
    • c_q<std::mutex, std::c_v> может передавать данные из fiber наружу, пока нет ограничения по размеру (push не будет блокировать). Требуется дополнительная работа, чтобы оба направления работали с установленным size_limit.
  • Найти способ получить трассировку стека для неперехваченного исключения в fiber.
  • Найти способ правильно реализовать тайм-аут для асинхронных операций — asio::use_future можно ожидать с тайм-аутом.
  • Будущая поддержка (СДЕЛАНО).
  • Логирование:
    • Асинхронный журнал (высокая пропускная способность / низкая надёжность).
    • Синхронный журнал (низкая пропускная способность / высокая надёжность).
    • Интеграция Boost.Log (?)
    • Log4CXX/Log4CPP/Log4CPlus (?)
  • Поддержка async/await (?) — это сложно, поскольку создание сопрограммы внутри fiber может мешать планированию fiber, необходимо найти чистое решение для поддержки этого.
  • Убедиться, что fibio::condition_variable и std::condition_variable могут использоваться для связи между fiber и not-a-fiber.
  • Сделать так, чтобы future работал между fiber и not-a-fiber, на данный момент это невозможно, так как set_value/exception должен блокировать мьютекс.
  • Общий мьютекс (СДЕЛАНО).
  • Поддержка Windows начнётся, как только у меня появится доступ к машине с Windows и установленными инструментами разработки:
    • Fiberized main function, WinMain и ServiceMain, ANSI и Unicode версии.
    • Дескриптор потока Windows (должен работать с некоторыми typedefs).
    • Асинхронное чтение/запись файлов (должно работать с некоторыми typedefs).
    • Защита стандартного потока Windows (должна работать при небольших усилиях).
    • Управление службами Windows.

TODO List для вспомогательных библиотек

Протокол

  • HTTP:
    • Cookie (СДЕЛАНО)
    • Клиент HTTP
      • Чанкованный ответ
    • Фреймворк сервера HTTP
      • Чанкованные запросы (загрузка файлов и т. д.)
      • Хранилище сеансов
      • WebSocket
      • RESTful сервис
    • Маршрутизатор запросов HTTP для сервера HTTP (СДЕЛАНО)
    • Пул соединений
    • Поддержка HTTPS
    • Шаблонизатор для сервера HTTP
    • Поток со сжатием
      • gzip
        • Клиент может отправлять сжатые запросы
        • Клиент может получать сжатые ответы (СДЕЛАНО)
        • Сервер может принимать сжатые запросы
        • Сервер может отправлять сжатые ответы
      • deflate
  • SMTP клиент для отправки почты.

Утилиты

  • Сериализация:
    • JSON
    • XML
    • BSON
  • Драйвер базы данных:
    • Драйвер Redis
    • MongoDB драйвер (?)
    • MySQL драйвер (?)
    • Cassandra драйвер (?)
  • RPC фреймворк:
    • Thrift
    • На основе протокола буфера
  • Локальный распределитель fiber (?)
  • Выделенные контейнеры fiber (?)

Скриптовый

  • Все скриптовые движки имеют GIL, неясно, как это повлияет на производительность?
  • Привязка Lua/LuaJIT через LuaWrapper.
  • Привязка ChaiScript.
  • V8 привязка (?)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/windoze-fibio.git
git@api.gitlife.ru:oschina-mirror/windoze-fibio.git
oschina-mirror
windoze-fibio
windoze-fibio
master