*/
public static List<KadContact> loadFile(String fileName) {
List<KadContact> result = new LinkedList<KadContact>();
try {
FileChannel channel = new RandomAccessFile(fileName,"rw").getChannel();
ByteBuffer data = getByteBuffer(4);
channel.position(4); // skip 'old' contacts count field
channel.read(data); // nodes.dat version
data.position(0);
channel.read(data);
int totalContacts = data.getInt(0);
for(int i = 1 ; i <= totalContacts ; i++) {
data = getByteBuffer(16);
channel.read(data);
ClientID contact_id = new ClientID(data.array());
data = getByteBuffer(4);
channel.read(data);
byte[] ip = data.array().clone();
//ip = Convert.reverseArray(ip);
IPAddress address = new IPAddress(ip);
data = getByteBuffer(2);
channel.read(data);
short udp_port = data.getShort(0);
data = getByteBuffer(2);
channel.read(data);
short tcp_port = data.getShort(0);
data = getByteBuffer(1);
channel.read(data);
byte contact_version = data.get(0);
data = getByteBuffer(4);
channel.read(data);
ByteBuffer data2 = getByteBuffer(4);
channel.read(data2);
JKadUDPKey udp_key = new JKadUDPKey(data.array(), data2.array());
data = getByteBuffer(1);
channel.read(data);
if (Utils.isGoodAddress(address)) {
KadContact contact = new KadContact(contact_id, new ContactAddress(address, Convert.shortToInt(udp_port)), Convert.shortToInt(tcp_port), contact_version, udp_key, data.get(0)==1 ? true : false);
result.add(contact);
}
}
channel.close();
}catch(Throwable t) {
t.printStackTrace();
}
return result;