1. @override
void startSendingData(int currentTime, int waitingAckId)

Source

@override
void startSendingData(int currentTime, int waitingAckId) {
  _pendingSending = false;
  if (_err != null) {
    responder.closeResponse(rid, response: this, error: _err);
    if (_sentStreamStatus == StreamStatus.closed) {
      _close();
    }
    return;
  }

  for (_InvokeResponseUpdate update in pendingData) {
    List<Map<String, dynamic>> outColumns;
    if (update.columns != null) {
      outColumns = TableColumn.serializeColumns(update.columns);
    }

    responder.updateResponse(
      this,
      update.updates,
      streamStatus: update.status,
      columns: outColumns,
      meta: update.meta, handleMap: (m) {
      if (onSendUpdate != null) {
        onSendUpdate(this, m);
      }
    });

    if (_sentStreamStatus == StreamStatus.closed) {
      _close();
      break;
    }
  }
  pendingData.length = 0;
}