package org.shadowsocks.db; import com.j256.ormlite.field.DataType; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName = "dnsresponse") public class DNSResponse { // id is generated by the database and set on the object automagically @DatabaseField(id = true) private String request; @DatabaseField(columnName = "timestamp") private long timestamp = System.currentTimeMillis(); @DatabaseField(columnName = "reqtimes") private int reqTimes = 0; @DatabaseField(columnName = "address") private String address; public DNSResponse() { this.request = String.valueOf(System.currentTimeMillis()); } public DNSResponse(String request) { this.request = request; } /** * @return IP string */ public static String getIPString(byte[] answer) { String ip = null; int i; if (answer == null) { return null; } i = answer.length - 4; if (i < 0) { return null; } ip = "" + (answer[i] & 0xFF); /* Unsigned byte to int */ for (i++; i < answer.length; i++) { ip += "." + (answer[i] & 0xFF); } return ip; } /** * @return the reqTimes */ public int getReqTimes() { return reqTimes; } public String getRequest() { return this.request; } /** * @return the timestamp */ public long getTimestamp() { return timestamp; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("request=").append(request); sb.append(", ").append("timestamp=").append(timestamp); sb.append(", ").append("reqTimes=").append(reqTimes); return sb.toString(); } public String getAddress() { this.reqTimes++; return address; } public void setAddress(String address) { this.address = address; } }