@Override public void sendResponse(final Throwable error) throws IOException { close(); BytesStreamOutput stream = new BytesStreamOutput(); stream.skip(NettyHeader.HEADER_SIZE); RemoteTransportException tx = new RemoteTransportException( transport.nodeName(), transport.wrapAddress(channel.getLocalAddress()), action, error); stream.writeThrowable(tx); byte status = 0; status = TransportStatus.setResponse(status); status = TransportStatus.setError(status); BytesReference bytes = stream.bytes(); ChannelBuffer buffer = bytes.toChannelBuffer(); NettyHeader.writeHeader(buffer, requestId, status, version); ChannelFuture future = channel.write(buffer); ChannelFutureListener onResponseSentListener = new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { transportServiceAdapter.onResponseSent(requestId, action, error); } }; future.addListener(onResponseSentListener); }
private SearchResponse handleResponse(final SearchResponse response, final long startTime, final List<SearchResultModifier> modifiers) throws IOException { BytesStreamOutput out = new BytesStreamOutput(); response.writeTo(out); ChannelBufferStreamInput in = new ChannelBufferStreamInput(out.bytes().toChannelBuffer()); Map<String, Object> headers = readHeaders(in); InternalSearchHits hits = modifyHits(modifiers, readHits(in)); InternalAggregations aggregations = readAggregations(in); Suggest suggest = readSuggestions(in); Boolean timedOut = in.readBoolean(); Boolean terminatedEarly = in.readOptionalBoolean(); InternalProfileShardResults profileResults = readInternalProfileShardResults(in); InternalSearchResponse internalResponse = new InternalSearchResponse(hits, aggregations, suggest, profileResults, timedOut, terminatedEarly); SearchResponse newResponse = createNewResponse(startTime, in, internalResponse); copyHeaders(headers, newResponse); logTime(response, startTime); return newResponse; }
boolean addedReleaseListener = false; try { buffer = content.toChannelBuffer(); resp.setContent(buffer);
bytes = bStream.bytes(); ChannelBuffer headerBuffer = bytes.toChannelBuffer(); ChannelBuffer contentBuffer = bRequest.bytes().toChannelBuffer(); buffer = ChannelBuffers.wrappedBuffer(NettyUtils.DEFAULT_GATHERING, headerBuffer, contentBuffer); } else {