001// Licensed under the MIT license. See LICENSE file in the project root for full license information.
002
003package de.bytefish.pgbulkinsert.pgsql.handlers;
004
005import java.io.DataOutputStream;
006import java.net.Inet6Address;
007
008public class Inet6AddressValueHandler extends BaseValueHandler<Inet6Address> {
009
010    private static final byte IPv6 = 3;
011    private static final int MASK = 128;
012    private static final byte IS_CIDR = 0;
013
014    @Override
015    protected void internalHandle(DataOutputStream buffer, final Inet6Address value) throws Exception {
016        buffer.writeInt(20);
017
018        buffer.writeByte(IPv6);
019        buffer.writeByte(MASK);
020        buffer.writeByte(IS_CIDR);
021
022        byte[] inet6AddressBytes = value.getAddress();
023        buffer.writeByte(inet6AddressBytes.length);
024        buffer.write(inet6AddressBytes);
025    }
026
027    @Override
028    public int getLength(Inet6Address value) {
029        return 20;
030    }
031}