code: public void complete(VirtualConnection vc, TCPWriteRequestContext wsc) {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "complete() called: vc=" + vc);
          }
          HttpOutboundServiceContextImpl mySC = (HttpOutboundServiceContextImpl) vc.getStateMap().get(CallbackIDs.CALLBACK_HTTPOSC);
          // LI4335 - handle early reads
          if (mySC.isEarlyRead()) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Notifying app channel of write complete");
              }
              mySC.getAppWriteCallback().complete(vc);
              return;
          }
          // if only the headers have been sent, then we need to check some
          // special case handling scenarios
          // 381105 - only start response read after just the headers have been
          // sent and no body... eventually need to get the isPartialBody state
          // implemented to make this simpler.
          if (mySC.isHeadersSentState() && 0 == mySC.getNumBytesWritten()) {
              if (mySC.shouldReadResponseImmediately()) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      Tr.debug(tc, "Sent headers, reading for response");
                  }
                  mySC.startResponseRead();
                  return;
              }
          }
  
          // if we're here and we need to, notify the channel above that the
          // write has completed, otherwise start the read for the response
          // message
          if (!mySC.isMessageSent()) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, "Calling write complete callback of app channel.");
              }
              mySC.getAppWriteCallback().complete(vc);
          } else {
              if (mySC.shouldReadResponseImmediately()) {
                  // we've already done the "read first" call so jump to the
                  // regular method now
                  mySC.readAsyncResponse();
              } else {
                  // initial read for a response
                  mySC.startResponseRead();
              }
          }
      }
docs: Called by the TCP channel when the write has finished.
  
  @param vc
  @param wsc