ElegantNetworking - максимально изящная пакетная система

ElegantNetworking - максимально изящная пакетная система 2.8 / 2.4

Нет прав для скачивания
6,067
222
1,170
hohserg1 добавил(а) новый ресурс:

ElegantNetworking - максимально изящная пакетная система - Максимально изящная пакетная система

Недавно делал ремейк тутора по пакетной системе CodeChickenLib
и у меня сложилось новое виденье идеальной пакетной системы

ElegantNetworking - пакетная система, которая стремится максимально упростить разработку клиент-серверного взаимодействия в модах.​
Примерно так выглядит объявление пакета:
Java:
@ElegantPacket
@Value //lombok
public class PacketExample implements ClientToServerPacket {
    int someValue1;
    MyClass someValue2...

Узнать больше об этом ресурсе...
 

tox1cozZ

aka Agravaine
Модератор
7,510
484
2,334
Прикольно было бы если эта аннотация был AnnotationProcessor и генерировала методы записи/чтения пакета в классе. Ну и пару аннотация для игнорирования полей или ручной сериализации. Все таки в рантайме из-за всяких рефлексий это все дольше, да и размер пакета больше становится из-за записи всяких метаданных коллекций.
 
6,067
222
1,170
Dahaka посоветовал сделать расширение ломбока. Как выяснилось, этот подход зависит от компилятора: будет работать на одном компиле, но не будет на другом.
 
6,067
222
1,170
Тоже поддерживаются
 
6,067
222
1,170
Они дефолтные ¯\(ツ)
 
6,067
222
1,170
Странно, у мя почти последняя версия Idea и все работает.
 
Последнее редактирование:
6,067
222
1,170
Хорошая идея)) Более того, это можно сделать во время компиляции, что делает фичу вдойне вкусней 😜
 
6,067
222
1,170
Воу-воу, полегче, меня щас снесет от твоих клевых идей))
 
6,067
222
1,170
Я вот думаю: а не слишком ли это ортогональная задача и не слишком ли костыльное решение? Есть всякие PacketUnlimiter, которые позволяют настроить максимальный размер пакета. Это более правильное решение, т.к. убирает проблему, а не пытается ее обойти.

Попытка улучшить это решение напрашивается само собой: автоматически расширять предел размера пакета по мере надобности. Но это оставляет дыру в безопасности: можно уложить принимающую сторону огромным пакетом (стоит отметить, что такую же уязвимость оставляет фича разбиения пакета на кучу пакетов).
Кажется, лучшим решением будет вручную настраиваемый в конфиге предел.

Что думаете?
 
6,067
222
1,170
hohserg1 обновил(а) ресурс ElegantNetworking - максимально изящная пакетная система новой записью:

Бдыщ! Обнова подлетела!

  • Теперь авто-сериализация основана на кодогенерации, а не на рефлекции: плюс к скорости работы и совместимости с обфускаторами
  • Артефакты фреймворка(да-да, это теперь фреймворк) доступны на Maven Central: добавление зависимости стало еще проще
Сейчас самое время, чтобы предлагать свои хотелки по поводу апи. Ибо оно почти устаканилось(мне больше не хочется его менять) и после устаканивания оно больше не будет меняться и будет идентичным на всех версиях майна.

Узнать больше об этом обновлении...
 
Сверху