package org.dcache.xrootd.door;
import javax.security.auth.Subject;
import java.net.InetSocketAddress;
import java.util.UUID;
import diskCacheV111.util.FsPath;
import diskCacheV111.util.PnfsHandler;
import diskCacheV111.vehicles.ProtocolInfo;
import dmg.cells.nucleus.CellPath;
import org.dcache.auth.attributes.Restriction;
import org.dcache.util.RedirectedTransfer;
import org.dcache.vehicles.XrootdProtocolInfo;
public class XrootdTransfer extends RedirectedTransfer<InetSocketAddress>
{
private UUID _uuid;
private InetSocketAddress _doorAddress;
private int _fileHandle;
public XrootdTransfer(PnfsHandler pnfs, Subject subject, Restriction restriction, FsPath path) {
super(pnfs, subject, restriction, path);
}
public synchronized void setFileHandle(int fileHandle) {
_fileHandle = fileHandle;
}
public synchronized int getFileHandle() {
return _fileHandle;
}
public synchronized void setUUID(UUID uuid) {
_uuid = uuid;
}
public synchronized void setDoorAddress(InetSocketAddress doorAddress) {
_doorAddress = doorAddress;
}
protected synchronized ProtocolInfo createProtocolInfo() {
InetSocketAddress client = getClientAddress();
return new XrootdProtocolInfo(XrootdDoor.XROOTD_PROTOCOL_STRING,
XrootdDoor.XROOTD_PROTOCOL_MAJOR_VERSION,
XrootdDoor.XROOTD_PROTOCOL_MINOR_VERSION,
client,
new CellPath(getCellName(), getDomainName()),
getPnfsId(),
_fileHandle,
_uuid,
_doorAddress);
}
@Override
protected ProtocolInfo getProtocolInfoForPoolManager() {
return createProtocolInfo();
}
@Override
protected ProtocolInfo getProtocolInfoForPool() {
return createProtocolInfo();
}
}