private void updatePeer( final Peer peer, final InetSocketAddress isa, final Type type, final LanternTrafficCounter trafficCounter) { // We can get multiple notifications for the same peer, in which case // they'll already have a counter. if (peer.getTrafficCounter() == null) { log.debug("Setting traffic counter..."); peer.setTrafficCounter(trafficCounter); } else { log.debug("Peer already has traffic counter..."); } final String address = isa.getAddress().getHostAddress(); if (StringUtils.isBlank(peer.getIp())) { peer.setIp(address); } if (peer.getPort() == 0) { peer.setPort(isa.getPort()); } if (peer.getRosterEntry() == null) { log.debug("Setting roster entry"); final URI uri = LanternUtils.newURI(peer.getPeerid()); peer.setRosterEntry(rosterEntry(uri)); } peer.setType(type.toString()); updateGeoData(peer, isa.getAddress()); // Note we don't sync peers with the frontend here because the timer // will do it for us }