private void createBackEndRequestPopulateAndForward ( final HttpRequest clientRequest ) { try { if ( backendServiceHttpClient == null ) { handleHttpClientErrorsForBackend ( clientRequest , new HttpClientClosedConnectionException ( "Not connected" ) ) ; long timeSinceLastStart = time - lastHttpClientStart ; if ( timeSinceLastStart > 10_000 ) { checkClient ( ) ; } return ; } /* forward request to backend client. */ final HttpRequestBuilder httpRequestBuilder = HttpRequestBuilder . httpRequestBuilder ( ) . copyRequest ( clientRequest ) . setBinaryReceiver ( new HttpBinaryReceiver ( ) { @ Override public void response ( final int code , final String contentType , final byte [ ] body , final MultiMap < String , String > headers ) { handleBackendClientResponses ( clientRequest , code , contentType , body , headers ) ; } @ Override public void response ( int code , String contentType , byte [ ] body ) { response ( code , contentType , body , MultiMap . empty ( ) ) ; } } ) . setErrorHandler ( e -> handleHttpClientErrorsForBackend ( clientRequest , e ) ) ; /** Give user of the lib a chance to populate headers and such. */ beforeSend . accept ( httpRequestBuilder ) ; backendServiceHttpClient . sendHttpRequest ( httpRequestBuilder . build ( ) ) ; } catch ( HttpClientClosedConnectionException httpClientClosedConnectionException ) { errorCount . incrementAndGet ( ) ; errorHandler . accept ( httpClientClosedConnectionException ) ; logger . error ( "Unable to forward request" , httpClientClosedConnectionException ) ; handleHttpClientErrorsForBackend ( clientRequest , httpClientClosedConnectionException ) ; backendServiceHttpClient = null ; long timeSinceLastStart = time - lastHttpClientStart ; if ( timeSinceLastStart > 10_000 ) { checkClient ( ) ; } } catch ( Exception ex ) { errorCount . incrementAndGet ( ) ; errorHandler . accept ( ex ) ; logger . error ( "Unable to forward request" , ex ) ; handleHttpClientErrorsForBackend ( clientRequest , ex ) ; long timeSinceLastStart = time - lastHttpClientStart ; if ( timeSinceLastStart > 10_000 ) { checkClient ( ) ; } } }
Creates a backend request from the client request and then forwards it .