001/* 002 * Copyright 2015-2024 the original author or authors 003 * 004 * This software is licensed under the Apache License, Version 2.0, 005 * the GNU Lesser General Public License version 2 or later ("LGPL") 006 * and the WTFPL. 007 * You may choose either license to govern your use of this software only 008 * upon the condition that you accept all of the terms of either 009 * the Apache License 2.0, the LGPL 2.1+ or the WTFPL. 010 */ 011package org.minidns.record; 012 013import java.io.DataInputStream; 014import java.io.DataOutputStream; 015import java.io.IOException; 016 017import org.minidns.dnsname.DnsName; 018import org.minidns.record.Record.TYPE; 019 020/** 021 * MX record payload (mail service pointer). 022 */ 023public class MX extends Data { 024 025 /** 026 * The priority of this service. Lower values mean higher priority. 027 */ 028 public final int priority; 029 030 /** 031 * The name of the target server. 032 */ 033 public final DnsName target; 034 035 /** 036 * The name of the target server. 037 * 038 * @deprecated use {@link #target} instead. 039 */ 040 @Deprecated 041 public final DnsName name; 042 043 public static MX parse(DataInputStream dis, byte[] data) 044 throws IOException { 045 int priority = dis.readUnsignedShort(); 046 DnsName name = DnsName.parse(dis, data); 047 return new MX(priority, name); 048 } 049 050 public MX(int priority, String name) { 051 this(priority, DnsName.from(name)); 052 } 053 054 public MX(int priority, DnsName name) { 055 this.priority = priority; 056 this.target = name; 057 this.name = target; 058 } 059 060 @Override 061 public void serialize(DataOutputStream dos) throws IOException { 062 dos.writeShort(priority); 063 target.writeToStream(dos); 064 } 065 066 @Override 067 public String toString() { 068 return priority + " " + target + '.'; 069 } 070 071 @Override 072 public TYPE getType() { 073 return TYPE.MX; 074 } 075 076}