Skip to content

Libs.Plans.Ru

Anton Kashcheev edited this page Nov 1, 2024 · 2 revisions

Работа по модулям

Libs

About

По идее, предзначалось для отображения даты сборки, компилятор и его версия, коммита и прочее

Bus

  • "Шина" сообщений. Сейчас не совсем понимаю о необходимости на данный момент
  • Можно заюзать как концентратор соединений

Common

  • Тут только общее
    • Можно Expected внести сюда
    • Интерфейс аллокаторов

Constants

  • Удалить -- В текущем виде бесполезны

Crypto

  • Заголовки PKCS#11 -- pragma push/pop для выравнивания по одному байту
  • Wrapper
    • Выделить в отдельные объекты ключи, сертификаты и прочее
  • SoftPkcs11
    • Прототипы механизмов
    • Хранилище -- ?
      • По крайней мере в RAM можно хранить объекты
      • После реализации файловой системы можно подумать о файлах-токенах
      • Генератор случайных чисел
  • Как совместить механизмы и получение объектов -- промежуточный класс (?)

Os

  • Асинхронный UDP сервер
    • Сделаны концепты "ping-pong" на основе условного поллинга для Linux и Windows
  • Асинхронный UDP клиент
    • Сделан концепт "ping-pong" на основе условного поллинга для Linux
  • Синхронный TCP, чтобы отработать связки ф-ций
  • Выделить в отдельный подмодуль сеть
  • Добавить работу с переменными окружения
  • Превращение процесса в сервис/демон
  • Выделение памяти
  • Конструктор и деструктор для *.so/*.dll
  • Перевести возвраты на Expected
  • Сигналы (?)
  • Процессы
  • Межпроцессное взаимодейсвие
    • Разделяемая память
    • Разделяемый мьютекс
    • Именованные и неименнованные трубы
    • Сообщения

Others

  • Стили вывода в консоль для vte
    • Можно было бы попробовать адаптировать для cmd

Streams

  • Перенести в Os (есть отдельная ветка для этого):
    • Pipe
    • NamedPipe

Templates

  • Дореализовать следующие классы:
    • BitSet
    • Builder
    • CycleInteger
    • Function
    • Future
    • MaybeMonad
    • StaticAllocator
    • Trees
      • Сейчас реализуется
    • WideFloat
    • WideInt
  • В Unique/SharedPointer сдать типонезависимый делитер (как ф-ция, принимающая ссылку на аллокатор и указатель на объект)
  • IntegerIterator перенести в итераторы
  • Реализовать контейнер-кортеж для аргументов командной строки

Threads

  • Перенести в Os

Ubjson

  • Перерефакторить типы
  • Добавить документ-кортеж

Handler

  • Модуль для обработки сетевых и локальных соединений
    • Network -- реализуется
    • Ipc -- планируется

Общее

  • Не забываем про тесты
  • Распилить на отдельные репозитории -- сложности

GUI

  • В первую очередь надо настроить сборку и задизайнить первое окно
  • Перевести бэкэнд на SDL
    • Посмотреть внимательнее на опции компиляции, убрать сборку iconv

CMakeFlameResolver

  • Обнаружился косяк с линковкой:
    • В динамическую библиотеку вкомпиливаются статические
    • При линковке с бинарём эти же статические библиотеки заново подтягиваются
    • Получается multiple difinition
  • Линковка библиотек из объектников
  • Опция -- создание таргетов в текущей директории
  • Если положение сорцов не абсолютное -- добавить путь к ним
  • Импортированные таргеты (find_package) -- ?
  • Поддержать, что сейчас не поддержано, или удалить

В целом

  • Есть мысля сделать типа такой штуки:
struct Message< ubjson::Document<...> >
{
    using Document = ubjson::Document<...>;
    
    static Parser<Document> parser() noexcept;
    static Serializer<Document> serializer() noexcept;
};

struct Messager<DocumentServer, DocumentClient>
{
    static Message<DocumentClient> client() noexcept;
    static Message<DocumentServer> server() noexcept;
}

class Dispatcher<Messanger...>
{
public:
    Messager<...> dispatch(id) noexcept;
    
private:
    Tuple<Messanger...> messangers;
}

// client

{
}

// server

{
}