Андрей писал(а):
Кстати, насколько я понимаю, вы протоколом называете то, что я называю "типом пакета"?
Пример:
Протокол 0 (системный протокол транспортной подсистемы)
Тип пакета 0 (запрос открыкого транспортного ключа)
Тип пакета 1 (ответ содержащий открытый транспортный ключ)
Тип пакета 2 (запрос списка узлов в ноде)
Тип пакета 3 (список узлов в ноде)
Протокол 66 (протокол голосований)
Тип пакета 0 (запрос списка субъектов)
Тип пакета 1 (ответ списка субъектов)
и т.п.
В этом случае именно "тип пакета" определяет содержимое которое передается в нем. Я бы его даже назвал "команда", команда "REQUEST_SUBJECT_LIST", "RESPONCE_SUBJECT_LIST".
Обработка при этом производится так:
Транспортная система принимает самый маленький первый заголовок. Если "протокол" поддерживается системой то принимаются оставшиеся байты в буфер, буфер передается на обработку модулю. Модуль в зависимости от "тип пакета" методом тупого switch вызывает функцию для обработки именно этого типа пакета. Функция преобразует указатель на буфер в указатель на структуру связанную с этим типом пакета и получает нужные поля данных. Никаких кодов данных до этого момента не нужно.
Согласен, в каких-то других, более сложных случаях, нам может потребоваться передать произвольный набор данных, поэтому не против такого списка кодов.