code: @Override
      public void complete(VirtualConnection vc, TCPWriteRequestContext wsc) {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(tc, "complete, vc=" + getVCHash());
          }
  
          synchronized (closeSync) {
              if (closeCalled) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                      Tr.exit(tc, "complete");
                  }
                  return;
              }
          }
  
          VirtualConnection rc = vc;
          if (0 < this.asyncBytesToWrite) {
              // previously went async partly through the app data, continue now
              rc = encryptAndWriteAsync(this.asyncBytesToWrite, false, this.asyncTimeout);
          }
  
          if (null != rc) {
              // Nothing else needs to be done here. Report success up the chain.
              this.callback.complete(rc, this);
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(tc, "complete");
          }
      }
docs: /*
  @see com.ibm.wsspi.tcpchannel.TCPWriteCompletedCallback#complete(com.ibm.wsspi.channelfw.VirtualConnection, com.ibm.wsspi.tcpchannel.TCPWriteRequestContext)