public static void deleteInactivePeers(int MAX_TIME_WITHOUT_UPDATES) { List toDelete = new ArrayList<Peer>(); List<RealtimeRoom> roomsToSave = new ArrayList<RealtimeRoom>(); // ++++++++= CLEAN ROOMs ++++++++++++++++++= Collection<RealtimeRoom> rooms = DbUtils.loadRooms(); for (RealtimeRoom room : rooms) { List<Peer> roomPeers = room.getPeers(); if (!roomPeers.isEmpty()) { for (Peer peer : roomPeers) { if (peer.getTimeSinceLastUpdate() >= RefreshCommand.MAX_TIME_WITHOUT_UPDATES) { toDelete.add(peer); roomsToSave.add(room); room.removePeer(peer.getId()); } } } else { if (!room.isStatic() && !room.isWaitingRoom()) { // deletable room without peers toDelete.add(room); } } } ofy().delete().entities(toDelete); ofy().save().entities(roomsToSave); // LOGGER.info(inactivePeers.size() + " peers inativos deletados!"); }
private TrackerResponse sendEvent( long uploadedBytes, long downloadedBytes, long bytesLeftToDownload, String event) throws IOException, TrackerCommunicationException { GetMethod method = new GetMethod(announceUrl.getFile()); method.setRequestHeader("User-Agent", "BlackBits/0.1"); StringBuffer queryString = new StringBuffer(announceUrl.getQuery() == null ? "" : announceUrl.getQuery()); queryString.append("info_hash=" + URLUtils.encode(infoHash.getBytes())); queryString.append("&peer_id=" + URLUtils.encode(localPeer.getId())); queryString.append("&port=" + localPeer.getPort()); queryString.append("&uploaded=" + uploadedBytes); queryString.append("&downloaded=" + downloadedBytes); queryString.append("&left=" + bytesLeftToDownload); if (event != null) { queryString.append("&event=" + event); } if (localPeer.getAddress() != null) { queryString.append("&ip=" + localPeer.getAddress()); } method.setQueryString(queryString.toString()); httpClient.executeMethod(method); return decodeResponse(method); }