// Copyright (c) 2004 Brian Wellington (bwelling@xbill.org)

package org.xbill.DNS;

import java.io.*;

/**
 * Mailbox information Record - lists the address responsible for a mailing
 * list/mailbox and the address to receive error messages relating to the
 * mailing list/mailbox.
 *
 * @author Brian Wellington
 */

public class MINFORecord extends Record {

    private static final long serialVersionUID = -3962147172340353796L;

    private Name responsibleAddress;
    private Name errorAddress;

    MINFORecord() {
    }

    Record
    getObject() {
        return new MINFORecord();
    }

    /**
     * Creates an MINFO Record from the given data
     *
     * @param responsibleAddress The address responsible for the
     *                           mailing list/mailbox.
     * @param errorAddress       The address to receive error messages relating to the
     *                           mailing list/mailbox.
     */
    public MINFORecord(Name name, int dclass, long ttl,
                       Name responsibleAddress, Name errorAddress) {
        super(name, Type.MINFO, dclass, ttl);

        this.responsibleAddress = checkName("responsibleAddress",
                responsibleAddress);
        this.errorAddress = checkName("errorAddress", errorAddress);
    }

    void
    rrFromWire(DNSInput in) throws IOException {
        responsibleAddress = new Name(in);
        errorAddress = new Name(in);
    }

    void
    rdataFromString(Tokenizer st, Name origin) throws IOException {
        responsibleAddress = st.getName(origin);
        errorAddress = st.getName(origin);
    }

    /**
     * Converts the MINFO Record to a String
     */
    String
    rrToString() {
        StringBuffer sb = new StringBuffer();
        sb.append(responsibleAddress);
        sb.append(" ");
        sb.append(errorAddress);
        return sb.toString();
    }

    /**
     * Gets the address responsible for the mailing list/mailbox.
     */
    public Name
    getResponsibleAddress() {
        return responsibleAddress;
    }

    /**
     * Gets the address to receive error messages relating to the mailing
     * list/mailbox.
     */
    public Name
    getErrorAddress() {
        return errorAddress;
    }

    void
    rrToWire(DNSOutput out, Compression c, boolean canonical) {
        responsibleAddress.toWire(out, null, canonical);
        errorAddress.toWire(out, null, canonical);
    }

}
