public interface HttpResponseDuplicator extends StreamMessageDuplicator<HttpObject>
HttpResponse into one or more HttpResponses,
which publish the same elements.
HttpResponse res = ...
try (HttpResponseDuplicator duplicator = res.toDuplicator()) {
// res.subscribe(...) will throw an exception. You cannot subscribe to res anymore.
// Duplicate the response as many as you want to subscribe.
HttpResponse duplicatedResponse1 = duplicator.duplicate();
HttpResponse duplicatedResponse2 = duplicator.duplicate();
duplicatedResponse1.subscribe(...);
duplicatedResponse2.subscribe(...);
}
Use the try-with-resources block or call StreamMessageDuplicator.close() manually to clean up the resources
after all subscriptions are done. If you want to stop publishing and clean up the resources immediately,
call StreamMessageDuplicator.abort(). If you do none of these, memory leak might happen.
If you subscribe to the duplicated http response with the
SubscriptionOption.WITH_POOLED_OBJECTS, the published elements can be shared across
Subscribers. So do not manipulate the data unless you copy them.
| Modifier and Type | Method and Description |
|---|---|
HttpResponse |
duplicate()
Returns a new
HttpResponse that publishes the same ResponseHeaders, HttpDatas
and trailers as the HttpResponse that this duplicator is created from. |
abort, abort, closeHttpResponse duplicate()
HttpResponse that publishes the same ResponseHeaders, HttpDatas
and trailers as the HttpResponse that this duplicator is created from.duplicate in interface StreamMessageDuplicator<HttpObject>Copyright © 2020 LeanCloud. All rights reserved.