package diskCacheV111.vehicles;
import java.util.EnumSet;
import diskCacheV111.util.PnfsId;
import org.dcache.pool.assumption.Assumption;
import org.dcache.pool.assumption.Assumptions;
import org.dcache.vehicles.FileAttributes;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.dcache.namespace.FileAttribute.PNFSID;
import static org.dcache.namespace.FileAttribute.STORAGEINFO;
public class PoolIoFileMessage extends PoolMessage {
private final FileAttributes _fileAttributes;
private final ProtocolInfo _protocolInfo;
private boolean _isPool2Pool;
private String _ioQueueName;
private int _moverId;
private String _initiator = "<undefined>";
private boolean _forceSourceMode;
private String _pnfsPath;
private String _transferPath;
private final Assumption _assumption;
private static final long serialVersionUID = -6549886547049510754L;
public PoolIoFileMessage(String pool ,
ProtocolInfo protocolInfo ,
FileAttributes fileAttributes,
Assumption assumption)
{
super(pool);
checkNotNull(fileAttributes);
checkArgument(fileAttributes.isDefined(EnumSet.of(STORAGEINFO, PNFSID)));
_fileAttributes = fileAttributes;
_protocolInfo = protocolInfo;
_assumption = assumption;
}
public PoolIoFileMessage(String pool,
PnfsId pnfsId,
ProtocolInfo protocolInfo,
Assumption assumption)
{
super(pool);
_protocolInfo = protocolInfo;
_fileAttributes = FileAttributes.ofPnfsId(pnfsId);
_assumption = assumption;
}
public Assumption getAssumption()
{
// REVISIT in 4.0: We need to check for null for backwards compatibility
return _assumption == null ? Assumptions.none() : _assumption;
}
public PnfsId getPnfsId(){ return _fileAttributes.getPnfsId(); }
public ProtocolInfo getProtocolInfo(){ return _protocolInfo ; }
public boolean isPool2Pool(){ return _isPool2Pool ; }
public void setPool2Pool(){ _isPool2Pool = true ; }
public void setIoQueueName( String ioQueueName ){
_ioQueueName = ioQueueName ;
}
public String getIoQueueName(){
return _ioQueueName ;
}
/**
* Getter for property moverId.
* @return Value of property moverId.
*/
public int getMoverId() {
return _moverId;
}
/**
* Setter for property moverId.
* @param moverId New value of property moverId.
*/
public void setMoverId(int moverId) {
this._moverId = moverId;
}
public void setInitiator(String initiator) {
_initiator = initiator;
}
public String getInitiator() {
return _initiator;
}
public String getBillingPath()
{
return _pnfsPath != null ? _pnfsPath : null;
}
public void setBillingPath(String path)
{
_pnfsPath = path;
}
public String getTransferPath()
{
return _transferPath != null ? _transferPath : getBillingPath();
}
public void setTransferPath(String path)
{
_transferPath = path;
}
public FileAttributes getFileAttributes()
{
return _fileAttributes;
}
public void setForceSourceMode(boolean forceSourceMode)
{
_forceSourceMode = forceSourceMode;
}
public boolean isForceSourceMode()
{
return _forceSourceMode;
}
@Override
public String getDiagnosticContext() {
return super.getDiagnosticContext() + ' ' + getPnfsId();
}
}