return;
}
case PACKET_SRVSEARCHRESULT: {
int result_count = packet_data.getInt();
SearchResultItemList searchResults = new SearchResultItemList();
for (int i = 0; i < result_count; i++) {
byte fileHash[] = new byte[16];
packet_data.get(fileHash);
byte clientID[] = new byte[4];
packet_data.get(clientID);
short clientPort = packet_data.getShort();
SearchResultItem result = new SearchResultItem(
new FileHash(fileHash), new ClientID(clientID),
clientPort);
int tag_count = packet_data.getInt();
for (int j = 0; j < tag_count; j++) {
Tag tag = TagScanner.scanTag(packet_data);
result.addTag(tag);
}
// transform Server's file rating into eMule file rating
if (result.hasTag(FT_FILERATING)) {
Tag tag = result.getTag(FT_FILERATING);
try {
int data = (Integer) tag.getValue();
data = Convert.byteToInt(Misc.getByte(data, 0));
int rating_value = data / SERVER_SEARCH_RATIO;
tag.setValue(rating_value);
} catch (Throwable e) {
e.printStackTrace();
}
}
searchResults.add(result);
}
_network_manager.receivedSearchResult(searchResults);
return;
}