com.cloudhopper.commons.util.windowing.WindowFuture类的使用及代码示例

x33g5p2x  于2022-02-03 转载在 其他  
字(9.2k)|赞(0)|评价(0)|浏览(220)

本文整理了Java中com.cloudhopper.commons.util.windowing.WindowFuture类的一些代码示例,展示了WindowFuture类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。WindowFuture类的具体详情如下:
包路径:com.cloudhopper.commons.util.windowing.WindowFuture
类名称:WindowFuture

WindowFuture介绍

[英]A WindowFuture is either uncompleted or completed. When an operation begins, a new future object is created. The new future is uncompleted initially - it is neither succeeded, failed, nor cancelled because the operation is not finished yet. If the operation is finished either successfully, with failure, or by cancellation, the future is marked as completed with more specific information, such as the cause of the failure. Please note that even failure and cancellation belong to the completed state.

  1. +---------------------------+
  2. | Completed successfully |
  3. +---------------------------+
  4. +----> isDone() = true |
  5. +--------------------------+ | | isSuccess() = true |
  6. | Uncompleted | | +===========================+
  7. +--------------------------+ | | Completed with failure |
  8. | isDone() = false | | +---------------------------+
  9. | isSuccess() = false |----+----> isDone() = true |
  10. | isCancelled() = false | | | getCause() = non-null |
  11. | getCause() = null | | +===========================+
  12. +--------------------------+ | | Completed by cancellation |
  13. | +---------------------------+
  14. +----> isDone() = true |
  15. | isCancelled() = true |
  16. +---------------------------+

[中]WindowFuture要么是“未完成”要么是“已完成”。当操作开始时,将创建一个新的未来对象。新的未来最初是未完成的——它既没有成功,也没有失败,也没有因为操作尚未完成而取消。如果操作成功完成、失败或取消,则未来将标记为已完成,并显示更具体的信息,例如失败的原因。请注意,即使失败和取消也属于已完成状态

  1. +---------------------------+
  2. | Completed successfully |
  3. +---------------------------+
  4. +----> isDone() = true |
  5. +--------------------------+ | | isSuccess() = true |
  6. | Uncompleted | | +===========================+
  7. +--------------------------+ | | Completed with failure |
  8. | isDone() = false | | +---------------------------+
  9. | isSuccess() = false |----+----> isDone() = true |
  10. | isCancelled() = false | | | getCause() = non-null |
  11. | getCause() = null | | +===========================+
  12. +--------------------------+ | | Completed by cancellation |
  13. | +---------------------------+
  14. +----> isDone() = true |
  15. | isCancelled() = true |
  16. +---------------------------+

代码示例

代码示例来源:origin: twitter-archive/cloudhopper-smpp

  1. @Override
  2. public PduRequest getRequest() {
  3. return future.getRequest();
  4. }

代码示例来源:origin: wizardjedi/my-spring-learning

  1. private static void log(WindowFuture<Integer, PduRequest, PduResponse> future) {
  2. SubmitSm req = (SubmitSm)future.getRequest();
  3. SubmitSmResp resp = (SubmitSmResp)future.getResponse();
  4. log.debug("Got response with MSG ID={} for APPID={}", resp.getMessageId(), req.getReferenceObject());
  5. }

代码示例来源:origin: twitter-archive/cloudhopper-smpp

  1. @Override
  2. public long getResponseTime() {
  3. return future.getAcceptToDoneTime();
  4. }

代码示例来源:origin: com.fizzed/ch-smpp

  1. boolean completedWithinTimeout = future.await();
  2. future.cancel();
  3. throw new SmppTimeoutException("Unable to get response within [" + timeoutInMillis + " ms]");
  4. if (future.isSuccess()) {
  5. return future.getResponse();
  6. } else if (future.getCause() != null) {
  7. Throwable cause = future.getCause();
  8. if (cause instanceof ClosedChannelException) {
  9. throw new SmppChannelException("Channel was closed after sending request, but before receiving response", cause);
  10. throw new UnrecoverablePduException(cause.getMessage(), cause);
  11. } else if (future.isCancelled()) {
  12. throw new RecoverablePduException("Request was cancelled");
  13. } else {

代码示例来源:origin: twitter-archive/cloudhopper-smpp

  1. if (future != null) {
  2. logger.trace("Found a future in the window for seqNum [{}]", receivedPduSeqNum);
  3. this.countReceiveResponsePdu(responsePdu, future.getOfferToAcceptTime(), future.getAcceptToDoneTime(), (future.getAcceptToDoneTime() / future.getWindowSize()));
  4. int callerStateHint = future.getCallerStateHint();
  5. logger.trace("Caller waiting for request: {}", future.getRequest());
  6. logger.trace("Caller not waiting for request: {}", future.getRequest());
  7. logger.trace("Caller timed out waiting for request: {}", future.getRequest());

代码示例来源:origin: twitter-archive/cloudhopper-smpp

  1. for (WindowFuture<Integer,PduRequest,PduResponse> future : requests.values()) {
  2. if (future.isCallerWaiting()) {
  3. logger.debug("Caller waiting on request [{}], cancelling it with a channel closed exception", future.getKey());
  4. try {
  5. future.fail(cause);
  6. } catch (Exception e) { }

代码示例来源:origin: twitter-archive/cloudhopper-smpp

  1. @Override
  2. public String toString() {
  3. StringBuilder buf = new StringBuilder(100);
  4. buf.append("smpp_async_resp: seqNum [0x");
  5. buf.append(HexUtil.toHexString(this.future.getKey()));
  6. buf.append("] windowSize [");
  7. buf.append(getWindowSize());
  8. buf.append("] windowWaitTime [");
  9. buf.append(getWindowWaitTime());
  10. buf.append(" ms] responseTime [");
  11. buf.append(getResponseTime());
  12. buf.append(" ms] estProcessingTime [");
  13. buf.append(getEstimatedProcessingTime());
  14. buf.append(" ms] reqType [");
  15. buf.append(getRequest().getName());
  16. buf.append("] respType [");
  17. buf.append(getResponse().getName());
  18. buf.append("]");
  19. return buf.toString();
  20. }

代码示例来源:origin: twitter-archive/cloudhopper-smpp

  1. if(!((SmppSessionListener)this.sessionHandler).firePduDispatch(pdu)) {
  2. logger.info("dispatched request PDU discarded: {}", pdu);
  3. future.cancel(); //@todo probably throwing exception here is better solution?
  4. return future;

代码示例来源:origin: twitter-archive/cloudhopper-smpp

  1. @Override
  2. public PduResponse getResponse() {
  3. return future.getResponse();
  4. }

代码示例来源:origin: twitter-archive/cloudhopper-smpp

  1. @Override
  2. public long getWindowWaitTime() {
  3. return future.getOfferToAcceptTime();
  4. }

代码示例来源:origin: com.cloudhopper/ch-smpp

  1. boolean completedWithinTimeout = future.await();
  2. future.cancel();
  3. throw new SmppTimeoutException("Unable to get response within [" + timeoutInMillis + " ms]");
  4. if (future.isSuccess()) {
  5. return future.getResponse();
  6. } else if (future.getCause() != null) {
  7. Throwable cause = future.getCause();
  8. if (cause instanceof ClosedChannelException) {
  9. throw new SmppChannelException("Channel was closed after sending request, but before receiving response", cause);
  10. throw new UnrecoverablePduException(cause.getMessage(), cause);
  11. } else if (future.isCancelled()) {
  12. throw new RecoverablePduException("Request was cancelled");
  13. } else {

代码示例来源:origin: com.fizzed/ch-smpp

  1. if (future != null) {
  2. logger.trace("Found a future in the window for seqNum [{}]", receivedPduSeqNum);
  3. this.countReceiveResponsePdu(responsePdu, future.getOfferToAcceptTime(), future.getAcceptToDoneTime(), (future.getAcceptToDoneTime() / future.getWindowSize()));
  4. int callerStateHint = future.getCallerStateHint();
  5. logger.trace("Caller waiting for request: {}", future.getRequest());
  6. logger.trace("Caller not waiting for request: {}", future.getRequest());
  7. logger.trace("Caller timed out waiting for request: {}", future.getRequest());

代码示例来源:origin: com.cloudhopper/ch-smpp

  1. for (WindowFuture<Integer,PduRequest,PduResponse> future : requests.values()) {
  2. if (future.isCallerWaiting()) {
  3. logger.debug("Caller waiting on request [{}], cancelling it with a channel closed exception", future.getKey());
  4. try {
  5. future.fail(cause);
  6. } catch (Exception e) { }

代码示例来源:origin: com.cloudhopper/ch-smpp

  1. @Override
  2. public String toString() {
  3. StringBuilder buf = new StringBuilder(100);
  4. buf.append("smpp_async_resp: seqNum [0x");
  5. buf.append(HexUtil.toHexString(this.future.getKey()));
  6. buf.append("] windowSize [");
  7. buf.append(getWindowSize());
  8. buf.append("] windowWaitTime [");
  9. buf.append(getWindowWaitTime());
  10. buf.append(" ms] responseTime [");
  11. buf.append(getResponseTime());
  12. buf.append(" ms] estProcessingTime [");
  13. buf.append(getEstimatedProcessingTime());
  14. buf.append(" ms] reqType [");
  15. buf.append(getRequest().getName());
  16. buf.append("] respType [");
  17. buf.append(getResponse().getName());
  18. buf.append("]");
  19. return buf.toString();
  20. }

代码示例来源:origin: com.cloudhopper/ch-smpp

  1. if(!((SmppSessionListener)this.sessionHandler).firePduDispatch(pdu)) {
  2. logger.info("dispatched request PDU discarded: {}", pdu);
  3. future.cancel(); //@todo probably throwing exception here is better solution?
  4. return future;

代码示例来源:origin: com.fizzed/ch-smpp

  1. @Override
  2. public PduResponse getResponse() {
  3. return future.getResponse();
  4. }

代码示例来源:origin: com.cloudhopper/ch-smpp

  1. @Override
  2. public long getWindowWaitTime() {
  3. return future.getOfferToAcceptTime();
  4. }

代码示例来源:origin: twitter-archive/cloudhopper-smpp

  1. boolean completedWithinTimeout = future.await();
  2. future.cancel();
  3. throw new SmppTimeoutException("Unable to get response within [" + timeoutInMillis + " ms]");
  4. if (future.isSuccess()) {
  5. return future.getResponse();
  6. } else if (future.getCause() != null) {
  7. Throwable cause = future.getCause();
  8. if (cause instanceof ClosedChannelException) {
  9. throw new SmppChannelException("Channel was closed after sending request, but before receiving response", cause);
  10. throw new UnrecoverablePduException(cause.getMessage(), cause);
  11. } else if (future.isCancelled()) {
  12. throw new RecoverablePduException("Request was cancelled");
  13. } else {

代码示例来源:origin: com.cloudhopper/ch-smpp

  1. if (future != null) {
  2. logger.trace("Found a future in the window for seqNum [{}]", receivedPduSeqNum);
  3. this.countReceiveResponsePdu(responsePdu, future.getOfferToAcceptTime(), future.getAcceptToDoneTime(), (future.getAcceptToDoneTime() / future.getWindowSize()));
  4. int callerStateHint = future.getCallerStateHint();
  5. logger.trace("Caller waiting for request: {}", future.getRequest());
  6. logger.trace("Caller not waiting for request: {}", future.getRequest());
  7. logger.trace("Caller timed out waiting for request: {}", future.getRequest());

代码示例来源:origin: com.fizzed/ch-smpp

  1. @Override
  2. public PduRequest getRequest() {
  3. return future.getRequest();
  4. }

相关文章