package com.limegroup.gnutella.downloader.serial.conversion; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.Collections; import java.util.Map; import java.util.Set; import org.limewire.util.GenericsUtils; import com.limegroup.gnutella.URN; import com.limegroup.gnutella.UrnSet; import com.limegroup.gnutella.xml.SerialXml; class SerialRemoteFileDesc4x16 implements Serializable, SerialRemoteFileDesc { private static final long serialVersionUID = 6619479308616716538L; private String _host; private int _port; private String _filename; private long _index; private byte[] _clientGUID; private int _speed; private int _size; private boolean _chatEnabled; private int _quality; private boolean _replyToMulticast; private SerialXml[] _xmlDocs; private Set<URN> _urns; private boolean _browseHostEnabled; private boolean _firewalled; private String _vendor; private boolean _http11; private Map<String, Serializable> propertiesMap; private transient long longSize; private transient boolean tlsCapable; private transient String httpPushAddr; private void writeObject(ObjectOutputStream output) throws IOException {} private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); if (_urns != null) { Set<URN> newUrns = GenericsUtils.scanForSet(_urns, URN.class, GenericsUtils.ScanMode.NEW_COPY_REMOVED, UrnSet.class); if (_urns != newUrns) _urns = Collections.unmodifiableSet(newUrns); } // if we saved any properties, read them now if (propertiesMap != null) { Boolean tlsBoolean = (Boolean)propertiesMap.get("CONNECT_TYPE"); if(tlsBoolean != null) tlsCapable = tlsBoolean.booleanValue(); String http = (String)propertiesMap.get("PUSH_ADDR"); // try the older serialized name if it didn't have the newer one. if(http == null) http = (String)propertiesMap.get("_pushAddr"); Long size64 = (Long)propertiesMap.get("LONG_SIZE"); if (size64 == null) longSize = _size; else longSize = size64.longValue(); } else { // very old format, make sure we get the size right longSize = _size; } } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#isTlsCapable() */ public boolean isTlsCapable() { return tlsCapable; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getHttpPushAddr() */ public String getHttpPushAddr() { return httpPushAddr; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getHost() */ public String getHost() { return _host; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getPort() */ public int getPort() { return _port; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getFilename() */ public String getFilename() { return _filename; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getIndex() */ public long getIndex() { return _index; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getClientGUID() */ public byte[] getClientGUID() { return _clientGUID; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getSpeed() */ public int getSpeed() { return _speed; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getSize() */ public long getSize() { return longSize; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#isChatEnabled() */ public boolean isChatEnabled() { return _chatEnabled; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getQuality() */ public int getQuality() { return _quality; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#isReplyToMulticast() */ public boolean isReplyToMulticast() { return _replyToMulticast; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getXml() */ public String getXml() { return _xmlDocs != null && _xmlDocs.length > 0 ? _xmlDocs[0].getXml(false) : null; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getUrns() */ public Set<URN> getUrns() { return _urns; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#isBrowseHostEnabled() */ public boolean isBrowseHostEnabled() { return _browseHostEnabled; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#isFirewalled() */ public boolean isFirewalled() { return _firewalled; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getVendor() */ public String getVendor() { return _vendor; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#isHttp11() */ public boolean isHttp11() { return _http11; } /* (non-Javadoc) * @see com.limegroup.gnutella.downloader.serial.conversion.SerialRemoteFileDesc#getPropertiesMap() */ public Map<String, Serializable> getPropertiesMap() { return propertiesMap; } }