Java 类org.apache.http.nio.ContentDecoder 实例源码

项目:elasticsearch_my    文件:HeapBufferedAsyncResponseConsumerTests.java   
public void testResponseProcessing() throws Exception {
    ContentDecoder contentDecoder = mock(ContentDecoder.class);
    IOControl ioControl = mock(IOControl.class);
    HttpContext httpContext = mock(HttpContext.class);

    HeapBufferedAsyncResponseConsumer consumer = spy(new HeapBufferedAsyncResponseConsumer(TEST_BUFFER_LIMIT));

    ProtocolVersion protocolVersion = new ProtocolVersion("HTTP", 1, 1);
    StatusLine statusLine = new BasicStatusLine(protocolVersion, 200, "OK");
    HttpResponse httpResponse = new BasicHttpResponse(statusLine);
    httpResponse.setEntity(new StringEntity("test", ContentType.TEXT_PLAIN));

    //everything goes well
    consumer.responseReceived(httpResponse);
    consumer.consumeContent(contentDecoder, ioControl);
    consumer.responseCompleted(httpContext);

    verify(consumer).releaseResources();
    verify(consumer).buildResult(httpContext);
    assertTrue(consumer.isDone());
    assertSame(httpResponse, consumer.getResult());

    consumer.responseCompleted(httpContext);
    verify(consumer, times(1)).releaseResources();
    verify(consumer, times(1)).buildResult(httpContext);
}
项目:PhET    文件:NHttpFileServer.java   
public void contentAvailable(ContentDecoder decoder, IOControl ioctrl)
        throws IOException {
    long transferred;
    if(useFileChannels && decoder instanceof FileContentDecoder) {
        transferred = ((FileContentDecoder) decoder).transfer(
                fileChannel, idx, Long.MAX_VALUE);
    } else {
        transferred = fileChannel.transferFrom(
                new ContentDecoderChannel(decoder), idx, Integer.MAX_VALUE);
    }

    if(transferred > 0)
        idx += transferred;
}
项目:OpsDev    文件:NHttpReverseProxy.java   
public void consumeContent(
        final ContentDecoder decoder, final IOControl ioctrl) throws IOException {
    synchronized (this.httpExchange) {
        this.httpExchange.setClientIOControl(ioctrl);
        // Receive data from the client
        ByteBuffer buf = this.httpExchange.getInBuffer();
        int n = decoder.read(buf);
        System.out.println("[client->proxy] " + this.httpExchange.getId() + " " + n + " bytes read");
        ConsoleFactory.printToConsole("[client->proxy] " + this.httpExchange.getId() + " " + n + " bytes read",true);
        if (decoder.isCompleted()) {
            System.out.println("[client->proxy] " + this.httpExchange.getId() + " content fully read");
            ConsoleFactory.printToConsole("[client->proxy] " + this.httpExchange.getId() + " content fully read",true);
        }
        // If the buffer is full, suspend client input until there is free
        // space in the buffer
        if (!buf.hasRemaining()) {
            ioctrl.suspendInput();
            System.out.println("[client->proxy] " + this.httpExchange.getId() + " suspend client input");
            ConsoleFactory.printToConsole("[client->proxy] " + this.httpExchange.getId() + " suspend client input",true);
        }
        // If there is some content in the input buffer make sure origin
        // output is active
        if (buf.position() > 0) {
            if (this.httpExchange.getOriginIOControl() != null) {
                this.httpExchange.getOriginIOControl().requestOutput();
                System.out.println("[client->proxy] " + this.httpExchange.getId() + " request origin output");
                ConsoleFactory.printToConsole("[client->proxy] " + this.httpExchange.getId() + " request origin output",true);
            }
        }
    }
}
项目:OpsDev    文件:NHttpReverseProxy.java   
public void consumeContent(
        final ContentDecoder decoder, final IOControl ioctrl) throws IOException {
    synchronized (this.httpExchange) {
        this.httpExchange.setOriginIOControl(ioctrl);
        // Receive data from the origin
        ByteBuffer buf = this.httpExchange.getOutBuffer();
        int n = decoder.read(buf);
        System.out.println("[proxy<-origin] " + this.httpExchange.getId() + " " + n + " bytes read");
        ConsoleFactory.printToConsole("[proxy<-origin] " + this.httpExchange.getId() + " " + n + " bytes read",true);
        if (decoder.isCompleted()) {
            System.out.println("[proxy<-origin] " + this.httpExchange.getId() + " content fully read");
            ConsoleFactory.printToConsole("[proxy<-origin] " + this.httpExchange.getId() + " content fully read",true);
        }
        // If the buffer is full, suspend origin input until there is free
        // space in the buffer
        if (!buf.hasRemaining()) {
            ioctrl.suspendInput();
            System.out.println("[proxy<-origin] " + this.httpExchange.getId() + " suspend origin input");
            ConsoleFactory.printToConsole("[proxy<-origin] " + this.httpExchange.getId() + " suspend origin input",true);
        }
        // If there is some content in the input buffer make sure client
        // output is active
        if (buf.position() > 0) {
            if (this.httpExchange.getClientIOControl() != null) {
                this.httpExchange.getClientIOControl().requestOutput();
                System.out.println("[proxy<-origin] " + this.httpExchange.getId() + " request client output");
                ConsoleFactory.printToConsole("[proxy<-origin] " + this.httpExchange.getId() + " request client output",true);
            }
        }
    }
}
项目:elasticsearch_my    文件:HeapBufferedAsyncResponseConsumer.java   
@Override
protected void onContentReceived(ContentDecoder decoder, IOControl ioctrl) throws IOException {
    this.buf.consumeContent(decoder);
}
项目:PhET    文件:NHttpReverseProxy.java   
public void inputReady(final NHttpServerConnection conn, final ContentDecoder decoder) {
    System.out.println(conn + " [client->proxy] input ready");

    HttpContext context = conn.getContext();
    ProxyTask proxyTask = (ProxyTask) context.getAttribute(ProxyTask.ATTRIB);

    synchronized (proxyTask) {
        ConnState connState = proxyTask.getClientState();
        if (connState != ConnState.REQUEST_RECEIVED
                && connState != ConnState.REQUEST_BODY_STREAM) {
            throw new IllegalStateException("Illegal client connection state: " + connState);
        }

        try {

            ByteBuffer dst = proxyTask.getInBuffer();
            int bytesRead = decoder.read(dst);
            System.out.println(conn + " [client->proxy] " + bytesRead + " bytes read");
            System.out.println(conn + " [client->proxy] " + decoder);
            if (!dst.hasRemaining()) {
                // Input buffer is full. Suspend client input
                // until the origin handler frees up some space in the buffer
                conn.suspendInput();
            }
            // If there is some content in the input buffer make sure origin 
            // output is active
            if (dst.position() > 0) {
                if (proxyTask.getOriginIOControl() != null) {
                    proxyTask.getOriginIOControl().requestOutput();
                }
            }

            if (decoder.isCompleted()) {
                System.out.println(conn + " [client->proxy] request body received");
                // Update connection state
                proxyTask.setClientState(ConnState.REQUEST_BODY_DONE);
                // Suspend client input
                conn.suspendInput();
            } else {
                proxyTask.setClientState(ConnState.REQUEST_BODY_STREAM);
            }

        } catch (IOException ex) {
            shutdownConnection(conn);
        }
    }
}
项目:PhET    文件:NHttpReverseProxy.java   
public void inputReady(final NHttpClientConnection conn, final ContentDecoder decoder) {
    System.out.println(conn + " [proxy<-origin] input ready");

    HttpContext context = conn.getContext();
    ProxyTask proxyTask = (ProxyTask) context.getAttribute(ProxyTask.ATTRIB);

    synchronized (proxyTask) {
        ConnState connState = proxyTask.getOriginState();
        if (connState != ConnState.RESPONSE_RECEIVED
                && connState != ConnState.RESPONSE_BODY_STREAM) {
            throw new IllegalStateException("Illegal target connection state: " + connState);
        }

        HttpResponse response = proxyTask.getResponse();
        try {

            ByteBuffer dst = proxyTask.getOutBuffer();
            int bytesRead = decoder.read(dst);
            System.out.println(conn + " [proxy<-origin] " + bytesRead + " bytes read");
            System.out.println(conn + " [proxy<-origin] " + decoder);
            if (!dst.hasRemaining()) {
                // Output buffer is full. Suspend origin input until 
                // the client handler frees up some space in the buffer
                conn.suspendInput();
            }
            // If there is some content in the buffer make sure client output 
            // is active
            if (dst.position() > 0) {
                proxyTask.getClientIOControl().requestOutput();
            }

            if (decoder.isCompleted()) {
                System.out.println(conn + " [proxy<-origin] response body received");
                proxyTask.setOriginState(ConnState.RESPONSE_BODY_DONE);

                if (!this.connStrategy.keepAlive(response, context)) {
                    System.out.println(conn + " [proxy<-origin] close connection");
                    proxyTask.setOriginState(ConnState.CLOSING);
                    conn.close();
                }
            } else {
                proxyTask.setOriginState(ConnState.RESPONSE_BODY_STREAM);
            }

        } catch (IOException ex) {
            shutdownConnection(conn);
        }
    }
}
项目:PhET    文件:NHttpClientConnManagement.java   
public void inputReady(NHttpClientConnection conn, ContentDecoder decoder) {
    this.handler.inputReady(conn, decoder);
}
项目:aliyun-tablestore-java-sdk    文件:OTSAsyncResponseConsumer.java   
@Override
protected void onContentReceived(final ContentDecoder decoder,
        final IOControl ioctrl) throws IOException {
    Asserts.notNull(this.buf, "Content buffer");
    this.buf.consumeContent(decoder);
}
项目:algorithmia-java    文件:HttpClientHelpers.java   
@Override
protected void onContentReceived(final ContentDecoder decoder, final IOControl ioctrl) throws IOException {
    Asserts.notNull(this.buf, "Content buffer");
    this.buf.consumeContent(decoder);
}