package hdgl.db.protocol; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.net.InetSocketAddress; import java.util.HashMap; import java.util.Map; import org.apache.hadoop.io.Writable; public class RegionMapWritable extends HashMap<Integer, InetSocketAddress> implements Writable { private static final long serialVersionUID = 7648903434154487286L; public RegionMapWritable(){ } @Override public void readFields(DataInput in) throws IOException { int len=in.readInt(); InetSocketAddressWritable addr=new InetSocketAddressWritable(); clear(); for(int i=0;i<len;i++){ int id = in.readInt(); addr.readFields(in); put(id, addr.toAddress()); } } @Override public void write(DataOutput out) throws IOException { out.writeInt(size()); InetSocketAddressWritable addr=new InetSocketAddressWritable(); for(Map.Entry<Integer,InetSocketAddress> item:entrySet()){ out.writeInt(item.getKey()); addr.setHost(item.getValue().getHostName()); addr.setPort(item.getValue().getPort()); addr.write(out); } } }