I have the following code that I am using with an httpclientasync client:

          void put(File file, Map<String, String> headers)
          {

              HttpPut put = new HttpPut(url);
              InputStream is = new FileInputStream(file);
              InputStreamEntity entity = new InputStreamEntity(dataStream, -1);
              put.setEntity(entity);
              for (String header : headers.keySet())
              {
                     put.addHeader(header, headers.get(header));
              }
              if (entity.getContentType() == null && 
!put.containsHeader(HttpHeaders.CONTENT_TYPE))
              {
                     put.addHeader(HttpHeaders.CONTENT_TYPE, 
HTTP.DEF_CONTENT_CHARSET.name());
              }
              Future<HttpResponse> rc = client.execute(put, context, null);

          }

I would like to use a ZeroCopyPut in this code to avoid the copy into user 
land. Is it possible to do this?
I have seen the zero copy example, but I don't know how to adapt it to this 
function here.


Well, I figured it out:



ZeroCopyPut put = new ZeroCopyPut(
                       url,
                       file,
                        ContentType.DEFAULT_BINARY) {

                    @Override
                    protected HttpEntityEnclosingRequest createRequest(
                            final URI requestURI, final HttpEntity entity) {
                        HttpEntityEnclosingRequest request = 
super.createRequest(requestURI, entity);
                        request.addHeader(HttpHeaders.CONTENT_TYPE, 
HTTP.DEF_CONTENT_CHARSET.name());
                        return request;
                    }
                };
        Future<HttpResponse> future = client.execute(put, new 
BasicAsyncResponseConsumer(), context, new FutureCallback<HttpResponse>(){

                        @Override
                        public void completed(HttpResponse result) {
                                // TODO Auto-generated method stub
                                
                        }

                        @Override
                        public void failed(Exception ex) {
                                // TODO Auto-generated method stub
                                
                        }

                        @Override
                        public void cancelled() {
                                // TODO Auto-generated method stub
                                
                        }

                        });




This e-mail may contain confidential and/or privileged information for the sole 
use of the intended recipient. 
Any review or distribution by anyone other than the person for whom it was 
originally intended is strictly prohibited. 
If you have received this e-mail in error, please contact the sender and delete 
all copies. 
Opinions, conclusions or other information contained in this e-mail may not be 
that of the organization.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to