package diskCacheV111.vehicles;
import java.io.IOException;
import java.io.Serializable;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.security.auth.Subject;
import diskCacheV111.util.PnfsId;
import static com.google.common.base.Preconditions.checkNotNull;
public class IoDoorEntry implements Serializable
{
private final long _serialId;
private final PnfsId _pnfsId;
private String _pool;
private final String _status;
private final long _waitingSince;
private final String _replyHost;
private final Subject _subject;
private static final long serialVersionUID = 7283617314269359997L;
public IoDoorEntry(long serialId, PnfsId pnfsId, Subject subject,
String pool, String status,
long waitingSince, String replyHost)
{
_serialId = serialId;
_pnfsId = pnfsId;
_subject = subject;
_pool = pool;
_status = status;
_waitingSince = waitingSince;
_replyHost = checkNotNull(replyHost);
}
public long getSerialId()
{
return _serialId;
}
@Nullable
public PnfsId getPnfsId()
{
return _pnfsId;
}
@Nullable
public String getPool()
{
return _pool;
}
@Nullable
public String getStatus()
{
return _status;
}
/**
* Under certain conditions it is possible to receive
* transfer info sent before login has been performed
* by the door. It is thus possible that the Subject
* also be <code>null</code>.
*/
@Nullable
public Subject getSubject()
{
return _subject;
}
public long getWaitingSince()
{
return _waitingSince;
}
@Nonnull
public String getReplyHost()
{
return _replyHost;
}
public String toString()
{
return _serialId + ";" + _pnfsId + ';' + _subject + ';'
+ _replyHost + ';' + _pool + ';' + _status + ';'
+ (System.currentTimeMillis() - _waitingSince) + ';';
}
private void readObject(java.io.ObjectInputStream stream)
throws IOException, ClassNotFoundException
{
stream.defaultReadObject();
if (_pool != null) {
_pool = _pool.intern();
}
}
}