larksuite-oapi/src/main/java/com/larksuite/oapi/okhttp3_14/internal/connection/Transmitter.java
@Nullable IOException exchangeMessageDone(
          Exchange exchange, boolean requestDone, boolean responseDone, @Nullable IOException e) {
    boolean exchangeDone = false;
    synchronized (connectionPool) {
      if (exchange != this.exchange) {
        return e; // This exchange was detached violently!
      }
      boolean changed = false;
      if (requestDone) {
        if (!exchangeRequestDone) changed = true;
        this.exchangeRequestDone = true;
      }
      if (responseDone) {
        if (!exchangeResponseDone) changed = true;
        this.exchangeResponseDone = true;
      }
      if (exchangeRequestDone && exchangeResponseDone && changed) {
        exchangeDone = true;
        this.exchange.connection().successCount++;
        this.exchange = null;
      }
    }
    if (exchangeDone) {
      e = maybeReleaseConnection(e, false);
    }
    return e;
  }
/**
   * Releases resources held with the request or response of {@code exchange}. This should be called
   * when the request completes normally or when it fails due to an exception, in which case {@code
   * e} should be non-null.
   *
   * <p>If the exchange was canceled or timed out, this will wrap {@code e} in an exception that
   * provides that additional context. Otherwise {@code e} is returned as-is.
   */
Releases resources held with the request or response of  exchange. This should be called
when the request completes normally or when it fails due to an exception, in which case {@code
e} should be non-null.

If the exchange was canceled or timed out, this will wrap  e in an exception that
provides that additional context. Otherwise  e is returned as-is.
Releases resources held with the request or response of exchange . This should be called when the request completes normally or when it fails due to an exception in which case { @code e } should be non - null . If the exchange was canceled or timed out this will wrap e in an exception that provides that additional context . Otherwise e is returned as - is .
@Nullable IOException exchangeMessageDone(
          Exchange exchange, boolean requestDone, boolean responseDone, @Nullable IOException e) {
    boolean exchangeDone = false;
    synchronized (connectionPool) {
      if (exchange != this.exchange) {
        return e; 
      }
      boolean changed = false;
      if (requestDone) {
        if (!exchangeRequestDone) changed = true;
        this.exchangeRequestDone = true;
      }
      if (responseDone) {
        if (!exchangeResponseDone) changed = true;
        this.exchangeResponseDone = true;
      }
      if (exchangeRequestDone && exchangeResponseDone && changed) {
        exchangeDone = true;
        this.exchange.connection().successCount++;
        this.exchange = null;
      }
    }
    if (exchangeDone) {
      e = maybeReleaseConnection(e, false);
    }
    return e;
  }
@ Nullable IOException exchangeMessageDone ( Exchange exchange , boolean requestDone , boolean responseDone , @ Nullable IOException e ) { boolean exchangeDone = false ; synchronized ( connectionPool ) { if ( exchange != this . exchange ) { return e ; } boolean changed = false ; if ( requestDone ) { if ( ! exchangeRequestDone ) changed = true ; this . exchangeRequestDone = true ; } if ( responseDone ) { if ( ! exchangeResponseDone ) changed = true ; this . exchangeResponseDone = true ; } if ( exchangeRequestDone && exchangeResponseDone && changed ) { exchangeDone = true ; this . exchange . connection ( ) . successCount ++ ; this . exchange = null ; } } if ( exchangeDone ) { e = maybeReleaseConnection ( e , false ) ; } return e ; }
Releases resources held with the request or response of {@code exchange}.
Releases resources held with the request or response of { @code exchange } .
// This exchange was detached violently!