in hessian-lite/src/main/java/com/alibaba/com/caucho/hessian/io/socket/Inet4AddressSerializer.java [52:95]
private void writeInetAddressHolderObject(Object obj, AbstractHessianOutput out)
throws IOException {
String replacedClName = "java.net.InetAddress$InetAddressHolder";
int ref = out.writeObjectBegin(replacedClName);
if (ref < -1) {
out.writeString("hostName");
out.writeObject(((InetAddress)obj).getHostName());
out.writeString("address");
byte[] addr = ((InetAddress) obj).getAddress();
int address = addr[3] & 0xFF;
address |= ((addr[2] << 8) & 0xFF00);
address |= ((addr[1] << 16) & 0xFF0000);
address |= ((addr[0] << 24) & 0xFF000000);
out.writeObject(address);
out.writeString("family");
out.writeInt(2);
out.writeMapEnd();
} else {
if (ref == -1) {
out.writeClassFieldLength(3);
out.writeString("hostName");
out.writeString("address");
out.writeString("family");
out.writeObjectBegin(replacedClName);
}
out.writeObject(((InetAddress)obj).getHostName());
byte[] addr = ((InetAddress) obj).getAddress();
int address = addr[3] & 0xFF;
address |= ((addr[2] << 8) & 0xFF00);
address |= ((addr[1] << 16) & 0xFF0000);
address |= ((addr[0] << 24) & 0xFF000000);
out.writeObject(address);
out.writeInt(1);
}
}