DS-Lab / src / main / java / dslab / protocol / dmtp / DeliveryFailureReport.java
DeliveryFailureReport.java
Raw
package dslab.protocol.dmtp;

import dslab.protocol.Message;
import dslab.routing.Address;
import dslab.routing.Domain;

import java.net.InetAddress;
import java.net.UnknownHostException;

import static dslab.protocol.MessageBuilder.aMessage;

/**
 * Represents a report that is generated on delivery failure as specified in assignment 1, sec. 2.4 § 3
 */
public class DeliveryFailureReport extends SingleDomainMessage {

    private static final String MY_IP;

    static {
        try {
            MY_IP = InetAddress.getLocalHost().getHostAddress();
        } catch (UnknownHostException e) {
            throw new RuntimeException(e);
        }
    }

    public DeliveryFailureReport(Exception exception, Message message) {
        this("An exception occured: " + exception, message);
    }

    public DeliveryFailureReport(String cause, Message message) {
        super(aMessage()
                .sender(new Address("mailer", new Domain(MY_IP)))
                .recipient(new Address(message.getSender()))
                .subject("DELIVERY FAILURE")
                .data("Error during delivery of " + message + ": " + cause)
                .build());
    }
}