Бывают случаи, когда надо к примеру посмотреть, какие данные пришли от клиента в каком-то определенном пакете. Что обычно тогда делают?
Да, обычно просто втыкают в пакет вывод к примеру в консоль нужных считанных данных через System.out.println или log.info.
Зачастую это бывает не очень удобно, когда к примеру в пакете много полей и/или еще и часть шлется в цикле - в итоге приходится писать много временного кода.
Я же для своего удобства сделал вот такие вот простейшие методы:
Как оное работает? Легко и просто.
Достаточно в начало readImpl в нужного пакета, добавить до считывания данных из буфера основным кодом метода вызов метода dumpBufferData, передав ему в качестве параметров буфер с данными приходящими в пакет и указав строкой формат данных в этом буфере и при приходе этого пакета серверу мы получим в консоли пришедшие данные в читабельном виде.
В качестве строки формата передается структура пакета с указанием какого типа данные считать по очереди из буфера. Поддерживаемые типы:
- c - byte;
- h - short;
- d - integer;
- q - long;
- f - double;
- b - byte array;
- s - string.
Так же можно указать что часть данных отправляется в виде цикла, количество элементов которого передается как раз перед этим циклом.
Для примера возьмем пакет RequestBuyItem, в котром передаются в начале dd и потом в цикле dq. Чтобы показать пришедшие в него данные, достаточно в начало readImpl добавить такую строчку:
Java:
dumpBufferData(getButeBuffer(), "dd(dq)");
Сам код метода вроде достаточно примитивный и должен работать на любой сборке. Ну может чуть-чуть где и придется что поправить.
Так же метод может пригодиться в ситуации когда точная структура пакета неизвестна и считываемые поля подбираются методом тыка - в этом случае тоже удобно быстро меняя формат получаемых данных для метода добиваться в итоге вменяемых отображаемых данных.