@Override public void onError(Throwable e) { termSubject.onNext(null); termSubject.onCompleted(); }
@Override public void onCompleted() { termSubject.onNext(null); termSubject.onCompleted(); }
@Override public void onCompleted() { termSubject.onNext(null); termSubject.onCompleted(); }
@Override public void onError(Throwable e) { termSubject.onNext(null); termSubject.onCompleted(); }
public void call(ByteBuf buf) { if (queryStatusObservable != null) { String statusStr = buf.toString(CHARSET); buf.release(); statusStr = statusStr.substring(1, statusStr.length() - 1); if (!statusStr.equals("success")) { status = ResponseStatus.FAILURE; } queryStatusObservable.onNext(statusStr); //overwrite existing response object if streamed in status if (!sentResponse) { createResponse(); LOGGER.trace("Received status for requestId {}", requestID); } } } }),
public void call(ByteBuf buf) { if (queryStatusObservable != null) { String statusStr = buf.toString(CHARSET); buf.release(); statusStr = statusStr.substring(1, statusStr.length() - 1); if (!statusStr.equals("success")) { status = ResponseStatus.FAILURE; } queryStatusObservable.onNext(statusStr); //overwrite existing response object if streamed in status if (!sentResponse) { createResponse(); LOGGER.trace("Received status for requestId {}", requestID); } } } }),
public void call(ByteBuf buf) { if (queryStatusObservable != null) { String statusStr = buf.toString(CHARSET); buf.release(); statusStr = statusStr.substring(1, statusStr.length() - 1); if (!statusStr.equals("success")) { status = ResponseStatus.FAILURE; } queryStatusObservable.onNext(statusStr); //overwrite existing response object if streamed in status if (!sentResponse) { createResponse(); LOGGER.trace("Received status for requestId {}", requestID); } } } }),
public void call(ByteBuf buf) { if (queryStatusObservable != null) { String statusStr = buf.toString(CHARSET); buf.release(); statusStr = statusStr.substring(1, statusStr.length() - 1); if (!statusStr.equals("success")) { status = ResponseStatus.FAILURE; } queryStatusObservable.onNext(statusStr); //overwrite existing response object if streamed in status if (!sentResponse) { createResponse(); LOGGER.trace("Received status for requestId {}", requestID); } } } }),
@OnClick(R.id.async_subject_test_error) public void onAsyncSubjectTestWithErrorClick() { unsubscribe(); createSubscription(); AsyncSubject<Stock> stockAsyncSubject = AsyncSubject.create(); stockAsyncSubject.onNext(new Stock(GOOG, 722)); // Will get the last value (GOOG, 723) and all future items and terminal events Subscription subscription = stockAsyncSubject.subscribe(getDefaultSubscriber()); compositeSubscription.add(subscription); stockAsyncSubject.onNext(new Stock(GOOG, 723)); stockAsyncSubject.onNext(new Stock(GOOG, 100)); stockAsyncSubject.onNext(new Stock(GOOG, 699)); stockAsyncSubject.onError(new Exception("Boom!")); // current and future subscribers will only receive this, with NO items emitted. Subscription tardySubscription = stockAsyncSubject.subscribe(getTardySubscriber()); compositeSubscription.add(tardySubscription); }
public void performPublish(final String topic, final EnumSet<PublishFlags> flags, final ArrayNode arguments, final ObjectNode argumentsKw, AsyncSubject<Long> resultSubject) { final long requestId = IdGenerator.newLinearId(lastRequestId, requestMap); lastRequestId = requestId; ObjectNode options = stateController.clientConfig().objectMapper().createObjectNode(); if (flags != null && flags.contains(PublishFlags.DontExcludeMe)) { options.put("exclude_me", false); } if (flags != null && flags.contains(PublishFlags.RequireAcknowledge)) { // An acknowledge from the router in the form of a PUBLISHED or ERROR message // is expected. The request is stored in the requestMap and the resultSubject will be // completed once a response was received. options.put("acknowledge", true); requestMap.put(requestId, new RequestMapEntry(WampMessages.PublishMessage.ID, resultSubject)); } else { // No acknowledge will be sent from the router. // Treat the publish as a success resultSubject.onNext(0L); resultSubject.onCompleted(); } final WampMessages.PublishMessage msg = new WampMessages.PublishMessage(requestId, options, topic, arguments, argumentsKw); connectionController.sendMessage(msg, IWampConnectionPromise.Empty); }
@OnClick(R.id.async_subject_test) public void onAsyncSubjectTestClick() { unsubscribe(); createSubscription(); AsyncSubject<Stock> stockAsyncSubject = AsyncSubject.create(); stockAsyncSubject.onNext(new Stock(GOOG, 722)); // Will get the last value (GOOG, 723) and all future items and terminal events Subscription subscription = stockAsyncSubject.subscribe(getDefaultSubscriber()); compositeSubscription.add(subscription); stockAsyncSubject.onNext(new Stock(GOOG, 723)); stockAsyncSubject.onNext(new Stock(GOOG, 100)); stockAsyncSubject.onNext(new Stock(GOOG, 699)); stockAsyncSubject.onCompleted(); Subscription tardySubscription = stockAsyncSubject.subscribe(getTardySubscriber()); compositeSubscription.add(tardySubscription); }
public void performPublish(final String topic, final EnumSet<PublishFlags> flags, final ArrayNode arguments, final ObjectNode argumentsKw, AsyncSubject<Long> resultSubject) { final long requestId = IdGenerator.newLinearId(lastRequestId, requestMap); lastRequestId = requestId; ObjectNode options = stateController.clientConfig().objectMapper().createObjectNode(); if (flags != null && flags.contains(PublishFlags.DontExcludeMe)) { options.put("exclude_me", false); } if (flags != null && flags.contains(PublishFlags.RequireAcknowledge)) { // An acknowledge from the router in the form of a PUBLISHED or ERROR message // is expected. The request is stored in the requestMap and the resultSubject will be // completed once a response was received. options.put("acknowledge", true); requestMap.put(requestId, new RequestMapEntry(WampMessages.PublishMessage.ID, resultSubject)); } else { // No acknowledge will be sent from the router. // Treat the publish as a success resultSubject.onNext(0L); resultSubject.onCompleted(); } final WampMessages.PublishMessage msg = new WampMessages.PublishMessage(requestId, options, topic, arguments, argumentsKw); connectionController.sendMessage(msg, IWampConnectionPromise.Empty); }
public void performPublish(final String topic, final EnumSet<PublishFlags> flags, final ArrayNode arguments, final ObjectNode argumentsKw, AsyncSubject<Long> resultSubject) { final long requestId = IdGenerator.newLinearId(lastRequestId, requestMap); lastRequestId = requestId; ObjectNode options = stateController.clientConfig().objectMapper().createObjectNode(); if (flags != null && flags.contains(PublishFlags.DontExcludeMe)) { options.put("exclude_me", false); } if (flags != null && flags.contains(PublishFlags.RequireAcknowledge)) { // An acknowledge from the router in the form of a PUBLISHED or ERROR message // is expected. The request is stored in the requestMap and the resultSubject will be // completed once a response was received. options.put("acknowledge", true); requestMap.put(requestId, new RequestMapEntry(WampMessages.PublishMessage.ID, resultSubject)); } else { // No acknowledge will be sent from the router. // Treat the publish as a success resultSubject.onNext(0L); resultSubject.onCompleted(); } final WampMessages.PublishMessage msg = new WampMessages.PublishMessage(requestId, options, topic, arguments, argumentsKw); connectionController.sendMessage(msg, IWampConnectionPromise.Empty); }
/** * The query response is an error, parse it and attache it to the observable. * * @param last if the given content chunk is the last one. */ private void parseViewError(boolean last) { if (!last) { return; } if (responseHeader.getStatus().code() == 200) { int openBracketPos = responseContent.bytesBefore((byte) '[') + responseContent.readerIndex(); int closeBracketLength = findSectionClosingPosition(responseContent, '[', ']') - openBracketPos + 1; ByteBuf slice = responseContent.slice(openBracketPos, closeBracketLength); viewErrorObservable.onNext("{\"errors\":" + slice.toString(CharsetUtil.UTF_8) + "}"); } else { viewErrorObservable.onNext("{\"errors\":[" + responseContent.toString(CharsetUtil.UTF_8) + "]}"); } viewErrorObservable.onCompleted(); viewParsingState = QUERY_STATE_DONE; responseContent.discardReadBytes(); }
/** * The query response is an error, parse it and attache it to the observable. * * @param last if the given content chunk is the last one. */ private void parseViewError(boolean last) { if (!last) { return; } if (responseHeader.getStatus().code() == 200) { int openBracketPos = responseContent.bytesBefore((byte) '[') + responseContent.readerIndex(); int closeBracketLength = findSectionClosingPosition(responseContent, '[', ']') - openBracketPos + 1; ByteBuf slice = responseContent.slice(openBracketPos, closeBracketLength); viewErrorObservable.onNext("{\"errors\":" + slice.toString(CharsetUtil.UTF_8) + "}"); } else { viewErrorObservable.onNext("{\"errors\":[" + responseContent.toString(CharsetUtil.UTF_8) + "]}"); } viewErrorObservable.onCompleted(); viewParsingState = QUERY_STATE_DONE; responseContent.discardReadBytes(); }
/** * Last before the end of the stream, we can now parse the final result status * (including full execution of the query). */ private void parseQueryStatus(boolean lastChunk) { //some sections don't always come up, unlike status. Take this chance to close said sections' observables here. querySignatureObservable.onCompleted(); queryRowObservable.onCompleted(); queryErrorObservable.onCompleted(); responseContent.markReaderIndex(); responseContent.skipBytes(findNextChar(responseContent, '"') + 1); int endStatus = findNextChar(responseContent, '"'); if (endStatus > -1) { ByteBuf resultSlice = responseContent.readSlice(endStatus); queryStatusObservable.onNext(resultSlice.toString(CHARSET)); queryStatusObservable.onCompleted(); sectionDone(); queryParsingState = transitionToNextToken(lastChunk); } else { responseContent.resetReaderIndex(); return; //need more data } }
/** * Last before the end of the stream, we can now parse the final result status * (including full execution of the query). */ private void parseQueryStatus(boolean lastChunk) { //some sections don't always come up, unlike status. Take this chance to close said sections' observables here. querySignatureObservable.onCompleted(); queryRowObservable.onCompleted(); queryErrorObservable.onCompleted(); responseContent.markReaderIndex(); responseContent.skipBytes(findNextChar(responseContent, '"') + 1); int endStatus = findNextChar(responseContent, '"'); if (endStatus > -1) { ByteBuf resultSlice = responseContent.readSlice(endStatus); queryStatusObservable.onNext(resultSlice.toString(CHARSET)); queryStatusObservable.onCompleted(); sectionDone(); queryParsingState = transitionToNextToken(lastChunk); } else { responseContent.resetReaderIndex(); return; //need more data } }
/** * Last before the end of the stream, we can now parse the final result status * (including full execution of the query). */ private void parseQueryStatus(boolean lastChunk) { //some sections don't always come up, unlike status. Take this chance to close said sections' observables here. querySignatureObservable.onCompleted(); queryRowObservable.onCompleted(); queryErrorObservable.onCompleted(); responseContent.markReaderIndex(); responseContent.skipBytes(findNextChar(responseContent, '"') + 1); int endStatus = findNextChar(responseContent, '"'); if (endStatus > -1) { ByteBuf resultSlice = responseContent.readSlice(endStatus); queryStatusObservable.onNext(resultSlice.toString(CHARSET)); queryStatusObservable.onCompleted(); sectionDone(); queryParsingState = transitionToNextToken(lastChunk); } else { responseContent.resetReaderIndex(); return; //need more data } }
/** * Last before the end of the stream, we can now parse the final result status * (including full execution of the query). */ private void parseQueryStatus(boolean lastChunk) { //some sections don't always come up, unlike status. Take this chance to close said sections' observables here. querySignatureObservable.onCompleted(); queryRowObservable.onCompleted(); queryErrorObservable.onCompleted(); responseContent.markReaderIndex(); responseContent.skipBytes(findNextChar(responseContent, '"') + 1); int endStatus = findNextChar(responseContent, '"'); if (endStatus > -1) { ByteBuf resultSlice = responseContent.readSlice(endStatus); queryStatusObservable.onNext(resultSlice.toString(CHARSET)); queryStatusObservable.onCompleted(); sectionDone(); queryParsingState = transitionToNextToken(lastChunk); } else { responseContent.resetReaderIndex(); return; //need more data } }