/*
 * Java Network Programming, Second Edition
 * Merlin Hughes, Michael Shoffner, Derek Hamner
 * Manning Publications Company; ISBN 188477749X
 *
 * http://nitric.com/jnp/
 *
 * Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner;
 * all rights reserved; see license.txt for details.
 */

import java.io.*;

public abstract class DNSRR {
  private String rrName;
  private int rrType, rrClass;
  private long rrTTL, rrCreated;

  void init (String name, int type, int clas, long ttl, DNSInputStream dnsIn) throws IOException {
    rrName = name;
    rrType = type;
    rrClass = clas;
    rrTTL = ttl;
    rrCreated = System.currentTimeMillis ();
    decode (dnsIn);
  }
  
  protected abstract void decode (DNSInputStream dnsIn) throws IOException;

  public String getRRName () {
    return rrName;
  }

  public int getRRType () {
    return rrType;
  }

  public int getRRClass () {
    return rrClass;
  }

  public long getRRTTL () {
    return rrTTL;
  }

  public boolean isValid () {
    return rrTTL * 1000 > System.currentTimeMillis () - rrCreated;
  }
}
