package org.webpieces.httpcommon.impl;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import org.webpieces.data.api.DataWrapper;
import org.webpieces.httpcommon.api.Http2ServerEngine;
import org.webpieces.httpcommon.api.Protocol;
import org.webpieces.httpcommon.api.RequestId;
import org.webpieces.httpcommon.api.ResponseId;
import org.webpieces.httpcommon.api.ResponseSender;
import org.webpieces.httpcommon.api.exceptions.HttpException;
import org.webpieces.httpparser.api.dto.HttpRequest;
import org.webpieces.httpparser.api.dto.HttpResponse;
import org.webpieces.nio.api.channels.Channel;
import com.webpieces.http2parser.api.dto.lib.Http2Header;
class Http2ResponseSender implements ResponseSender {
// TODO: maybe we should just make the Http2ServerEngine implement ResponseSender?
private Http2ServerEngine http2ServerEngine;
Http2ResponseSender(Http2ServerEngine http2ServerEngine) {
this.http2ServerEngine = http2ServerEngine;
}
@Override
public Protocol getProtocol() {
return Protocol.HTTP2;
}
@Override
public CompletableFuture<Void> close() {
// TODO: Do some stuff with the engine to close
return CompletableFuture.completedFuture(null);
}
@Override
public CompletableFuture<ResponseId> sendResponse(HttpResponse response, HttpRequest request, RequestId requestId, boolean isComplete) {
return http2ServerEngine.sendResponse(response, request, requestId, isComplete);
}
@Override
public CompletableFuture<Void> sendData(DataWrapper data, ResponseId id, boolean isComplete) {
return http2ServerEngine.sendData(data, id, isComplete);
}
@Override
public void sendTrailer(List<Http2Header> headerList, ResponseId id, boolean isComplete) {
// TODO: implement this to support chunked encoding last chunk headers in http2
throw new UnsupportedOperationException();
}
@Override
public CompletableFuture<Void> sendException(HttpException e) {
// TODO: ?? what do we do here
return CompletableFuture.completedFuture(null);
}
@Override
public Channel getUnderlyingChannel() {
return http2ServerEngine.getUnderlyingChannel();
}
}