package de.tum.in.www1.jReto.connectivity;
import java.nio.ByteBuffer;
import java.util.UUID;
import de.tum.in.www1.jReto.Connection.DataProvider;
import de.tum.in.www1.jReto.connectivity.packet.DataPacket;
/**
* An OutTransfer represents a data transfer from the local peer to a remote peer. You can obtain one by calling the connection's send method.
*/
public class OutTransfer extends Transfer {
private DataProvider dataSource;
public OutTransfer(TransferManager transferManager, int dataLenght, DataProvider dataSource, UUID identifier) {
super(transferManager, dataLenght, identifier);
this.dataSource = dataSource;
}
public DataProvider getDataSource() {
return this.dataSource;
}
DataPacket nextPacket(int length) {
int dataLength = length - 4;
dataLength = Math.min(this.getLength() - this.getProgress(), dataLength);
ByteBuffer data = this.getDataSource().getData(this.getProgress(), dataLength);
DataPacket packet = new DataPacket(data);
this.updateProgress(dataLength);
return packet;
}
public void cancel() {
this.getTransferManager().cancelTransfer(OutTransfer.this);
}
}