001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 *
019 */
020
021 package org.apache.directory.server.dns.io.encoder;
022
023
024 import org.apache.directory.server.dns.messages.ResourceRecord;
025 import org.apache.directory.server.dns.store.DnsAttribute;
026 import org.apache.mina.core.buffer.IoBuffer;
027
028
029 /**
030 * 3.3.9. MX RDATA format
031 *
032 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
033 * | PREFERENCE |
034 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
035 * / EXCHANGE /
036 * / /
037 * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
038 *
039 * where:
040 *
041 * PREFERENCE A 16 bit integer which specifies the preference given to
042 * this RR among others at the same owner. Lower values
043 * are preferred.
044 *
045 * EXCHANGE A <domain-name> which specifies a host willing to act as
046 * a mail exchange for the owner name.
047 *
048 * MX records cause type A additional section processing for the host
049 * specified by EXCHANGE. The use of MX RRs is explained in detail in
050 * [RFC-974].
051 *
052 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
053 * @version $Rev: 725712 $, $Date: 2008-12-11 17:32:04 +0200 (Thu, 11 Dec 2008) $
054 */
055 public class MailExchangeRecordEncoder extends ResourceRecordEncoder
056 {
057 protected void putResourceRecordData( IoBuffer byteBuffer, ResourceRecord record )
058 {
059 byteBuffer.putShort( Short.parseShort( record.get( DnsAttribute.MX_PREFERENCE ) ) );
060 putDomainName( byteBuffer, record.get( DnsAttribute.DOMAIN_NAME ) );
061 }
062 }