int packet_type;//тип пакета
int packet_size;//размер данных пакета
byte[] data;//данные пакета
Эти пакеты посылаются от Network-а к службе:
0: новое соединение к этой службе (первый пакет, посылаемый к службе), в пакете уточняется источник пакета
содержимое пакета таково:
int size_str;//размер последующей строки
byte[] host_ip;//IP присоединяющегося узла в текстовом виде (например "192.168.0.1")
int size_id;//размер последующей строки
byte[] id;//ID присоединяющегося узла
1: это соединение закрыто, после этого пара пайпов закрывается подсистемой. Также пакет с таким типом может послать сама подсистема через пайп. в таком случае пара пайпов закрывается Network-ом.
2: это соединение прервано, после этого пара пайпов закрывается, в пакете уточняется причина прерывания
содержимое пакета таково: int error_code
3: пакет с таким типом послыается от службы к Network-у, в нём сообщается об изменении
атрибутов данного соединения.
содержимое пакета таково:
int is_limited;// указывает, ограничено ли соединение по трафику(1- ограничен, 0 - не ограничен)
4: пакет с таким типом посылается от network-а к подсистеме, когда подсистема запрашивает пару пайпов после завершения соединения к хосту. Если соединение прошло успешно, то в данных пакета указывается int status=0. если соединение неуспешно, то int status=-1.
1000:
1001:
...
1999:
2000:запрос на добавление информации о ресурсе на трекер:
// пакет содержит сериализованные данные IDType id; // идентификатор ресурса Vector hostList; // (NodeInfo) список хостов2001:запрос информации о ресурсе с трекера:
// пакет содержит сериализованные данные int maxResponse; // максимальное количество хостов в ответе IDType id; // идентификатор ресурса2002:запрос на добавление статической информации о ресурсе на трекер:
IDType id; // идентификатор ресурса StaticInfo si; // статическая информация2003:запрос на получение статической информации о ресурсе:
IDType id; // идентификатор ресурса2004:запрос на добавление информации о потенциальном хранителе ресурса:
int storageSize; // максимальное возможное количество хранимых байт на хранителе 2005:запрос на получение списка потенциальных хранителей:
int storageSize; // минимальное количество байт которые они должны быть готовы хранить int maxResponse; // максимальное количество хранителей в ответе2100:ответ: информация о ресурсе добавлена успешно:
2101:ответ: ресурс найден:
// пакет содержит сериализованные данные Vector hostList; // (NodeInfo) список хостов2102:ответ: ресурс не найден:
2103:ответ: статическая информация добавлена успешно:
2104:ответ: статическая информация найдена:
// пакет содержит сериализованные данные StaticInfo si; // статическая информация2105:ответ: статическая информация не найдена:
2106:ответ: хранитель успешно добавлен в список:
2107:ответ: найдены хранители:
// пакет содержит сериализованные данные Vector hostList; // (NodeInfo) список хостов2108:ответ: хранители не найдены:
Типы пакетов, обрабатываемые Модулями статической, динамической информации и ссылок.
3000:
3001:
...
3999:
Типы пакетов, обрабатываемые Distributer-ом.
4000:начальный пакет. Смысл "Хочу закачать на тебя такую полоску".содержимое:
int matrix_string_size; int[matrix_string_size] matrix_string; int stripSize; int pieceSize; int pieceQuantity;4001: ответ на 4000. Содержимое int status;// 0 - всё ОК, иначе - нет.
4002:пакет с куском полоски.
int pieceNumber; int pieceSize; byte[pieceSize] data;4003:ответ на пакет 4002 int status;//0 - всё ок.
4999: