Package org.xlightweb

Examples of org.xlightweb.NonBlockingBodyDataSource


             
                public void onResponse(IHttpResponse response) throws IOException {
                   
                    BodyDataSink ds = exchange.send(response.getResponseHeader());
                   
                    NonBlockingBodyDataSource source = response.getNonBlockingBody();
                    BodyForwarder bf = new BodyForwarder(source, ds) {
                       
                        @Override
                        public void onData(NonBlockingBodyDataSource bodyDataSource, BodyDataSink bodyDataSink) throws BufferUnderflowException, IOException {
                            int available = bodyDataSource.available();
View Full Code Here


            header.setProtocol(getRequest().getProtocol());
            header.setHeader("Connection", "close");
           
            BodyDataSink bodyDataSink = HttpServerConnection.this.sendResponseHeader(header);
           
            NonBlockingBodyDataSource bodyDataSource = response.getNonBlockingBody();
            BodyForwarder forwarder = new BodyForwarder(bodyDataSource, bodyDataSink);
            bodyDataSource.setDataHandler(forwarder);
            return;
          }
         
          // http protocol version downgrade necessary?
          if (isLargerOrEquals(response.getResponseHeader().getProtocolVersion(), getRequest().getRequestHeader().getProtocolVersion())) {
View Full Code Here

        try {
                  responseBody = response.getNonBlockingBody();
          responseBodyInfo = "(" + response.getNonBlockingBody().getClass().getSimpleName() + ")";

          BodyListener bodyListener = new BodyListener();
          NonBlockingBodyDataSource ds = response.getNonBlockingBody();
          ds.addCompleteListener(bodyListener);
          ds.addDestroyListener(bodyListener);
         
        } catch (IOException ioe) {
          if (LOG.isLoggable(Level.FINE)) {
            LOG.fine("error occured by registering complete listener " + ioe.toString());
          }
View Full Code Here

          } else {
              return requestHeaderInfo + " " + requestBodyInfo + "-> " + responseHeaderInfo + " " + responseBodyInfo + " [" + elapsed + " " + " body=" + reveivedBodySize + " " + getConInfo() + "]";
          }   
       
      } else if (isHeaderReceived) {
          NonBlockingBodyDataSource rb = responseBody;
          if (rb == null) {
              return requestHeaderInfo + " " + requestBodyInfo + "-> " + responseHeaderInfo + " " + responseBodyInfo + " [READING BODY " + elapsed + " " + getConInfo() + "]";
          } else {
              return requestHeaderInfo + " " + requestBodyInfo + "-> " + responseHeaderInfo + " " + responseBodyInfo + " [READING BODY " + elapsed + " " + " body=" + DataConverter.toFormatedBytesSize(HttpClientConnection.getDataReceived(rb)) + " " + getConInfo() + "]";
          }
View Full Code Here

            header.setProtocol(getRequest().getProtocol());
            header.setHeader("Connection", "close");
           
            BodyDataSink bodyDataSink = HttpServerConnection.this.sendResponseHeader(header);
           
            NonBlockingBodyDataSource bodyDataSource = response.getNonBlockingBody();
            BodyForwarder forwarder = new BodyForwarder(bodyDataSource, bodyDataSink);
            bodyDataSource.setDataHandler(forwarder);
            return;
          }
         
          // http protocol version downgrade necessary?
          if (isLargerOrEquals(response.getResponseHeader().getProtocolVersion(), getRequest().getRequestHeader().getProtocolVersion())) {
            response.getResponseHeader().setProtocol(getRequest().getProtocol());
            response.getResponseHeader().setHeader("Connection", "close");
          }
        }
      } catch (Exception e) {
        HttpResponse errorResponse = null;
        if (HttpUtils.isShowDetailedError()) {
          errorResponse = new HttpResponse(400, "text/html", generateErrorMessageHtml(400, DataConverter.toString(e), getId()));
         
        } else {
          errorResponse = new HttpResponse(400, "text/html", generateErrorMessageHtml(400, HttpUtils.getReason(400), getId()));
        }
        setResponseCommited(true);
        HttpServerConnection.this.sendResponseMessage(errorResponse);
        throw new IOException(e.toString());
      }

      if (response.getStatus() != 100) {
          setResponseCommited(true);
      }
     
      BodyDataSink dataSink = HttpServerConnection.this.sendResponseMessage(response);
     
      if (transactionMonitor != null) {
          transactionMonitor.registerMessageHeaderSent(request, response.getResponseHeader(), dataSink);
         
          if (response.hasBody()) {
             
              BodyListener bodyListener = new BodyListener();
              NonBlockingBodyDataSource ds = response.getNonBlockingBody();
              ds.addCompleteListener(bodyListener);
              ds.addDestroyListener(bodyListener);
             
          } else {
              transactionMonitor.registerMessageSent(request);
          }
      }
View Full Code Here

            // is response cacheable?
            if (HttpCache.isCacheable(response, isSharedCache())) {
                final IHttpResponseHeader responseHeader = response.getResponseHeader();
               
                if (response.hasBody()) {
                    final NonBlockingBodyDataSource dataSource = response.getNonBlockingBody();
                    BodyDataSink dataSink = exchange.send(responseHeader);

                    BodyForwarder bodyForwarder = new BodyForwarder(dataSource, dataSink) {

                        private final List<ByteBuffer> responseBodyCopy = new ArrayList<ByteBuffer>();
                       
                        @Override
                        public void onData(NonBlockingBodyDataSource bodyDataSource, BodyDataSink bodyDataSink) throws BufferUnderflowException, IOException {
                            ByteBuffer[] data = bodyDataSource.readByteBufferByLength(bodyDataSource.available());
                           
                            for (ByteBuffer buf : data) {
                                responseBodyCopy.add(buf.duplicate());
                            }
                           
                            bodyDataSink.write(data);
                        }
                       
                       
                        @Override
                        public void onComplete() {
                            try {
                                IHttpResponse responseCopy = new HttpResponse(responseHeader.copy(), responseBodyCopy);
                                interaction.setResponse(responseCopy);
                               
                            } catch (IOException ioe) {
                                if (LOG.isLoggable(Level.FINE)) {
                                    LOG.fine("error occured by creating/registering cachedResponse " + ioe.toString());
                                }
                            }
                        }
                    };

                    dataSource.setDataHandler(bodyForwarder);
                   
                } else {
                    interaction.setResponse(HttpUtils.copy(response));
                    exchange.send(response);
                }
View Full Code Here

     
        if (request.hasBody()) {

            final List<ByteBuffer> bodyCopy = new ArrayList<ByteBuffer>();
           
            NonBlockingBodyDataSource dataSource = request.getNonBlockingBody();
           
           
            ForwarderResponseHandler forwardResponseHandler = new ForwarderResponseHandler(interaction, exchange);
            BodyDataSink dataSink = exchange.forward(request.getRequestHeader(), forwardResponseHandler);

            BodyForwarder bodyForwarder = new BodyForwarder(dataSource, dataSink) {
               
                int currentSize = 0;
               
                @Override
                public void onData(NonBlockingBodyDataSource bodyDataSource, BodyDataSink bodyDataSink) throws BufferUnderflowException, IOException {
                    ByteBuffer[] data = bodyDataSource.readByteBufferByLength(bodyDataSource.available());
                   
                    if (currentSize < cache.getMaxSizeCacheEntry()) {
                        for (ByteBuffer buf : data) {
                            ByteBuffer bufCopy = buf.duplicate();
                            currentSize += bufCopy.remaining();
                            bodyCopy.add(bufCopy);
                        }
                    }
                   
                    bodyDataSink.write(data);
                }
               
               
                @Override
                public void onComplete() {
                    if (currentSize < cache.getMaxSizeCacheEntry()) {
                        try {
                            interaction.setRequest(new HttpRequest(headerCopy, bodyCopy));
                        } catch (IOException ioe) {
                            if (LOG.isLoggable(Level.FINE)) {
                                LOG.fine("error occured by creating/registering cachedResponse " + ioe.toString());
                            }
                        }
                    } else {
                        if (LOG.isLoggable(Level.FINE)) {
                            LOG.fine("do not cache interaction (to large or request not complete)");
                        }
                    }
                }                       
            };
           
            dataSource.setDataHandler(bodyForwarder);
           
           
        } else {
            interaction.setRequest(new HttpRequest(headerCopy));
           
View Full Code Here

            header.setProtocol(getRequest().getProtocol());
            header.setHeader("Connection", "close");
           
            BodyDataSink bodyDataSink = HttpServerConnection.this.sendResponseHeader(header);
           
            NonBlockingBodyDataSource bodyDataSource = response.getNonBlockingBody();
            BodyForwarder forwarder = new BodyForwarder(bodyDataSource, bodyDataSink);
            bodyDataSource.setDataHandler(forwarder);
            return;
          }
         
          // http protocol version downgrade necessary?
          if (isLargerOrEquals(response.getResponseHeader().getProtocolVersion(), getRequest().getRequestHeader().getProtocolVersion())) {
View Full Code Here

          // does request contain a body?
          if (response.hasBody()) {
           
            // get the body
            NonBlockingBodyDataSource orgDataSource = response.getNonBlockingBody();
           
            // ... and replace it 
            final BodyDataSink inBodyChannel = exchange.send(response.getResponseHeader());
           
            //... by a body forward handler
            BodyForwarder bodyForwardHandler = new BodyForwarder(orgDataSource, inBodyChannel) {
             
              @Override
              public void onData(NonBlockingBodyDataSource bodyDataSource, BodyDataSink bodyDataSink) throws BufferUnderflowException, IOException {
                ByteBuffer[] bufs = bodyDataSource.readByteBufferByLength(bodyDataSource.available());
                   
                for (ByteBuffer byteBuffer : bufs) {
                  // WARNING DataConverter call could fail!
                  requestString.append(DataConverter.toString(byteBuffer.duplicate()));
                }
                   
                bodyDataSink.write(bufs);
                bodyDataSink.flush();
              }
            };
            orgDataSource.setDataHandler(bodyForwardHandler);
           
          } else {
            exchange.send(response);
          }
        }
       
        public void onException(IOException ioe) {
         
        }
      };
     
     
      // does request contain a body?
      if (req.hasBody()) {
       
        // get the body
        NonBlockingBodyDataSource orgDataSource = req.getNonBlockingBody();
       
        // ... and replace it 
        final BodyDataSink inBodyChannel = exchange.forward(req.getRequestHeader(), respHdl);
       
        //... by a body forward handler
        BodyForwarder bodyForwardHandler = new BodyForwarder(orgDataSource, inBodyChannel) {
         
          @Override
          public void onData(NonBlockingBodyDataSource bodyDataSource, BodyDataSink bodyDataSink) throws BufferUnderflowException, IOException {
            ByteBuffer[] bufs = bodyDataSource.readByteBufferByLength(bodyDataSource.available());
               
            for (ByteBuffer byteBuffer : bufs) {
              // WARNING DataConverter call could fail!
              requestString.append(DataConverter.toString(byteBuffer.duplicate()));
            }
               
            bodyDataSink.write(bufs);
            bodyDataSink.flush();
          }
        };
        orgDataSource.setDataHandler(bodyForwardHandler);
       
      } else {
        exchange.forward(req, respHdl);
      }
    }
View Full Code Here

        public void onResponse(IHttpResponse response) throws IOException {

          if (response.hasBody()) {

            // get the body
            NonBlockingBodyDataSource orgDataSource = response.getNonBlockingBody();

            // ... and replace it 
            final BodyDataSink inBodyChannel = exchange.send(response.getResponseHeader());
           
            //... by a body forward handler
            BodyForwarder bodyForwardHandler = new BodyForwarder(orgDataSource, inBodyChannel) {
             
              @Override
              public void onData(NonBlockingBodyDataSource bodyDataSource, BodyDataSink bodyDataSink) throws BufferUnderflowException, IOException {
                byte[] data = bodyDataSource.readBytesByLength(bodyDataSource.available());
                   
                for (int i = 0; i < data.length; i++) {
                  data[i] = (byte) ((int) data[i] - shift);
                }
                                       
                inBodyChannel.write(data);
                inBodyChannel.flush();
              }
            };
            orgDataSource.setDataHandler(bodyForwardHandler);
           
          } else {
            exchange.send(response);
          }
        };
       
        public void onException(IOException ioe) {
         
        };
      };
     
      // does request contain a body?
      if (exchange.getRequest().hasBody()) {
       
        // get the body
        NonBlockingBodyDataSource orgDataSource = exchange.getRequest().getNonBlockingBody();
       
        // ... and replace it ...
        final BodyDataSink inBodyChannel = exchange.forward(exchange.getRequest().getRequestHeader(), responseInterceptor);
       
        //... by a body forward handler
        BodyForwarder bodyForwardHandler = new BodyForwarder(orgDataSource, inBodyChannel) {
         
          @Override
          public void onData(NonBlockingBodyDataSource bodyDataSource, BodyDataSink bodyDataSink) throws BufferUnderflowException, IOException {
            byte[] data = bodyDataSource.readBytesByLength(bodyDataSource.available());
               
            for (int i = 0; i < data.length; i++) {
              data[i] = (byte) ((int) data[i] + shift);
            }
               
               
            inBodyChannel.write(data);
            inBodyChannel.flush();
          }
        };
        orgDataSource.setDataHandler(bodyForwardHandler);
       
      } else {
        exchange.forward(exchange.getRequest(), responseInterceptor);
      }
    }
View Full Code Here

TOP

Related Classes of org.xlightweb.NonBlockingBodyDataSource

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.