package org.dcache.vehicles; import com.google.common.collect.Sets; import java.net.InetSocketAddress; import java.util.EnumSet; import java.util.UUID; import diskCacheV111.util.PnfsId; import diskCacheV111.vehicles.IpProtocolInfo; import dmg.cells.nucleus.CellPath; import static java.util.Arrays.asList; public class XrootdProtocolInfo implements IpProtocolInfo { private static final long serialVersionUID = -7070947404762513894L; public enum Flags { POSC } private final String _name; private final int _minor; private final int _major; private final InetSocketAddress _clientSocketAddress; private final CellPath _pathToDoor; private final PnfsId _pnfsId; private final int _xrootdFileHandle; private final UUID _uuid; private final InetSocketAddress _doorAddress; private final EnumSet<Flags> _flags; public XrootdProtocolInfo(String protocol, int major,int minor, InetSocketAddress clientAddress, CellPath pathToDoor, PnfsId pnfsID, int xrootdFileHandle, UUID uuid, InetSocketAddress doorAddress, Flags... flags) { _name = protocol; _minor = minor; _major = major; _clientSocketAddress = clientAddress; _pathToDoor = pathToDoor; _pnfsId = pnfsID; _xrootdFileHandle = xrootdFileHandle; _uuid = uuid; _doorAddress = doorAddress; _flags = Sets.newEnumSet(asList(flags), Flags.class); } @Override public String getProtocol() { return _name; } @Override public int getMinorVersion() { return _minor; } @Override public int getMajorVersion() { return _major; } @Override public String getVersionString() { return _name + "-" + _major + "." + _minor; } @Override public String toString() { return getVersionString() + ':' + _clientSocketAddress.getAddress().getHostAddress() + ":" + _clientSocketAddress.getPort(); } public CellPath getXrootdDoorCellPath() { return _pathToDoor; } public PnfsId getPnfsId() { return _pnfsId; } public int getXrootdFileHandle() { return _xrootdFileHandle; } public UUID getUUID() { return _uuid; } public InetSocketAddress getDoorAddress() { return _doorAddress; } @Override public InetSocketAddress getSocketAddress() { return _clientSocketAddress; } public EnumSet<Flags> getFlags() { return _flags; } }