package org.webpieces.http2client.impl; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.util.concurrent.CompletableFuture; import org.webpieces.http2client.api.Http2Socket; import org.webpieces.nio.api.channels.Channel; import org.webpieces.nio.api.channels.TCPChannel; import org.webpieces.util.logging.Logger; import org.webpieces.util.logging.LoggerFactory; import com.webpieces.http2engine.api.client.ClientEngineListener; import com.webpieces.http2parser.api.Http2Exception; import com.webpieces.http2parser.api.dto.lib.Http2Frame; public class Layer3Outgoing implements ClientEngineListener { private static final Logger log = LoggerFactory.getLogger(Layer3Outgoing.class); private TCPChannel channel; private Http2Socket socket; public Layer3Outgoing(TCPChannel channel, Http2Socket socket) { this.channel = channel; this.socket = socket; } @Override public CompletableFuture<Void> sendToSocket(ByteBuffer data) { log.info("writing out data to socket size="+data.remaining()); return channel.write(data) .thenApply(c -> null); } public void sendPreface(ByteBuffer buf) { channel.write(buf); } public CompletableFuture<Channel> connect(InetSocketAddress addr, Layer1Incoming incoming) { return channel.connect(addr, incoming); } public CompletableFuture<Channel> close() { return channel.close(); } @Override public void sendControlFrameToClient(Http2Frame lowLevelFrame) { } @Override public void engineClosedByFarEnd() { } @Override public void closeSocket(Http2Exception reason) { channel.close(); } }