@Override public void calledOperationFailed(Operation op) { if (op instanceof BTOperationDownload) { logger.process( this.getClass().toString(), new Object[] {op, new Long(Simulator.getCurrentTime()), new Boolean(false)}); } }
/** * This method starts a download by creating and activating a download operation. * * @param theOverlayKey the key/hash of the document that we want to download. * @param theOtherPeers a list of peers start also participate in this torrent. We normaly get * this list from the tracker. * @return the operation id of the started download operation. */ public int downloadDocument( OverlayKey theOverlayKey, List<TransInfo> theOtherPeers, OperationCallback theCallback) { log.debug( "Time: " + Simulator.getCurrentTime() + "; Starting download at '" + this.itsOwnContact + "'."); BTDocument document; BTConnectionManager connectionManager; if (!this.itsContentStorage.containsDocument(theOverlayKey)) { document = new BTDocument( theOverlayKey, ((BTTorrent) this.itsDataBus.getPerTorrentData(theOverlayKey, "Torrent")).getSize()); this.itsContentStorage.storeDocument(document); } else { document = (BTDocument) this.itsContentStorage.loadDocument(theOverlayKey); } if (!this.itsConnectionManagers.containsKey(theOverlayKey)) { connectionManager = new BTConnectionManager(this.itsOwnContact); this.itsConnectionManagers.put(theOverlayKey, connectionManager); } else { connectionManager = this.itsConnectionManagers.get(theOverlayKey); } BTOperationDownload<BTPeerDistributeNode> downloadOperation = new BTOperationDownload<BTPeerDistributeNode>( this.itsDataBus, document, this.itsOwnContact, this, this, connectionManager, this.itsStatistic, this.itsRandomGenerator); this.itsDownloadOperations.add(downloadOperation); downloadOperation.scheduleImmediately(); return downloadOperation.getOperationID(); }
public void scheduleAtTime(long time) { time = Math.max(time, Simulator.getCurrentTime()); Simulator.scheduleEvent(this, time, this, SimulationEvent.Type.TIMEOUT_EXPIRED); }
public void scheduleWithDelay(long delay) { long time = Simulator.getCurrentTime() + delay; scheduleAtTime(time); }