// $Id: Pool2PoolTransferMsg.java,v 1.8 2006-04-18 07:13:47 patrick Exp $
package diskCacheV111.vehicles;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import java.util.EnumSet;
import diskCacheV111.util.PnfsId;
import org.dcache.namespace.FileAttribute;
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.*;
public class Pool2PoolTransferMsg extends PoolMessage {
public static final ImmutableSet<FileAttribute> NEEDED_ATTRIBUTES =
Sets.immutableEnumSet(PNFSID, STORAGEINFO, CHECKSUM, SIZE, ACCESS_LATENCY, RETENTION_POLICY,
STORAGECLASS, CACHECLASS, HSM, FLAGS);
public static final int UNDETERMINED = 0 ;
public static final int PRECIOUS = 1 ;
public static final int CACHED = 2 ;
private final FileAttributes _fileAttributes;
private final String _destinationPoolName;
private int _destinationFileStatus = UNDETERMINED ;
private static final long serialVersionUID = -4227857007512530410L;
public Pool2PoolTransferMsg( String sourcePoolName ,
String destinationPoolName ,
FileAttributes fileAttributes){
super( sourcePoolName ) ;
checkNotNull(fileAttributes);
checkArgument(fileAttributes.isDefined(EnumSet.of(PNFSID)));
_fileAttributes = fileAttributes;
_destinationPoolName = destinationPoolName ;
setReplyRequired(true);
}
public PnfsId getPnfsId()
{
return _fileAttributes.getPnfsId();
}
public String getSourcePoolName(){ return getPoolName() ; }
public String getDestinationPoolName(){ return _destinationPoolName ; }
public void setDestinationFileStatus( int status ){
_destinationFileStatus = status ;
}
public int getDestinationFileStatus(){
return _destinationFileStatus ;
}
public FileAttributes getFileAttributes()
{
return _fileAttributes;
}
public String toString(){
return getPoolName()+";pnfsid=" + _fileAttributes.getPnfsId() + ";mode="+
( _destinationFileStatus==UNDETERMINED?
"Undetermined":
( _destinationFileStatus==PRECIOUS?"Precious":"Cached" ));
}
@Override
public String getDiagnosticContext() {
return super.getDiagnosticContext() + ' ' + getPnfsId();
}
}