private static byte[] _monitor_handleAnnouncement( DirectoryAnnouncement da, String detected_sa, DBInterface db, boolean storeNAT) throws P2PDDSQLException { if (DEBUG) System.out.println("Got announcement: " + da); if (da.getGID() != null) db.deleteNoSyncNULL( table.registered.TNAME, new String[] {table.registered.global_peer_ID, table.registered.instance}, new String[] {da.getGID(), da.instance}, DEBUG); else db.deleteNoSyncNULL( table.registered.TNAME, new String[] {table.registered.global_peer_ID_hash, table.registered.instance}, new String[] {da.getGIDH(), da.instance}, DEBUG); String adr = da.address.addresses(); // da.address.domain+":"+da.address.port+ADDR_SEP+detected_sa, if (storeNAT) adr = Address.joinAddresses(detected_sa, adr); String params[] = new String[table.registered.fields_noID_list.length]; params[table.registered.REG_GID] = da.getGID(); params[table.registered.REG_GID_HASH] = da.getGIDH(); params[table.registered.REG_INSTANCE] = da.instance; params[table.registered.REG_BRANCH] = da.branch; params[table.registered.REG_AGENT_VERSION] = Util.getVersion(da.agent_version); params[table.registered.REG_NAME] = da.name; params[table.registered.REG_CERT] = (da.certificate.length == 0) ? null : Util.stringSignatureFromByte(da.certificate); params[table.registered.REG_ADDR] = adr; params[table.registered.REG_SIGN] = (da.signature.length == 0) ? null : Util.stringSignatureFromByte(da.signature); Calendar timestamp = da.date; if (timestamp == null) timestamp = Util.CalendargetInstance(); params[table.registered.REG_TIME] = Encoder.getGeneralizedTime( timestamp); // (Util.CalendargetInstance().getTimeInMillis()/1000)+""; long id = db.insert( table.registered.TNAME, table.registered.fields_noID_list, // new // String[]{table.registered.global_peer_ID,table.registered.certificate,table.registered.addresses,table.registered.signature,table.registered.timestamp}, params); if (DEBUG) out.println("DirectoryServer: mon_handleAnnoncement:inserted with ID=" + id); byte[] answer = new DirectoryAnnouncement_Answer(detected_sa).encode(); if (DEBUG) out.println("sending answer: " + Util.byteToHexDump(answer)); return answer; }