// 
// Decompiled by Procyon v0.6.0
// 

package io.netty.handler.codec.quic;

import java.net.InetSocketAddress;
import java.nio.ByteBuffer;

final class QuicheRecvInfo
{
    private QuicheRecvInfo() {
    }
    
    static void setRecvInfo(final ByteBuffer memory, final InetSocketAddress from, final InetSocketAddress to) {
        final int position = memory.position();
        try {
            setAddress(memory, Quiche.SIZEOF_QUICHE_RECV_INFO, Quiche.QUICHE_RECV_INFO_OFFSETOF_FROM, Quiche.QUICHE_RECV_INFO_OFFSETOF_FROM_LEN, from);
            setAddress(memory, Quiche.SIZEOF_QUICHE_RECV_INFO + Quiche.SIZEOF_SOCKADDR_STORAGE, Quiche.QUICHE_RECV_INFO_OFFSETOF_TO, Quiche.QUICHE_RECV_INFO_OFFSETOF_TO_LEN, to);
        }
        finally {
            memory.position();
        }
    }
    
    private static void setAddress(final ByteBuffer memory, final int socketAddressOffset, final int addrOffset, final int lenOffset, final InetSocketAddress address) {
        final int position = memory.position();
        try {
            final int sockaddrPosition = position + socketAddressOffset;
            memory.position();
            final long sockaddrMemoryAddress = Quiche.memoryAddressWithPosition(memory);
            final int len = SockaddrIn.setAddress(memory, address);
            if (Quiche.SIZEOF_SIZE_T == 4) {
                memory.putInt(position + addrOffset, (int)sockaddrMemoryAddress);
            }
            else {
                memory.putLong(position + addrOffset, sockaddrMemoryAddress);
            }
            Quiche.setPrimitiveValue(memory, position + lenOffset, Quiche.SIZEOF_SOCKLEN_T, len);
        }
        finally {
            memory.position();
        }
    }
}
