package jxm.JWS;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.channels.ByteChannel;


public abstract class AbstractClientProxyChannel extends AbstractWrappedByteChannel {
    protected final ByteBuffer proxyHandshake;


    /**
     * @param towrap The channel to the proxy server
     */
    public AbstractClientProxyChannel(ByteChannel towrap) {
        super(towrap);
        try {
            proxyHandshake = ByteBuffer.wrap(buildHandShake().getBytes("ASCII"));
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public int write(ByteBuffer src) throws IOException {
        if (!proxyHandshake.hasRemaining()) {
            return super.write(src);
        } else {
            return super.write(proxyHandshake);
        }
    }

    public abstract String buildHandShake();

}
