package com.limegroup.gnutella.malware;
import java.util.Arrays;
/**
* Defines the mime type of a file based on patterns occurring at certain
* offsets. For example, all ASF files start with the bytes
* 0x3026B2758E66CF11A6D900AA0062CE6C, so the mime type named "video/x-ms-asf"
* consists of that pattern at offset zero.
*/
class MimeType {
final String name;
final Long[] offsets;
final byte[][] patterns;
MimeType(String name, Long[] offsets, byte[][] patterns) {
assert offsets.length == patterns.length;
this.name = name;
this.offsets = offsets;
this.patterns = patterns;
}
@Override
public boolean equals(Object o) {
if(o instanceof MimeType) {
MimeType m = (MimeType)o;
if(!name.equals(m.name))
return false;
if(!Arrays.equals(offsets, m.offsets))
return false;
for(int i = 0; i < patterns.length; i++) {
if(!Arrays.equals(patterns[i], m.patterns[i]))
return false;
}
return true;
}
return false;
}
@Override
public int hashCode() {
return name.hashCode();
}
}