append method

Future<WriteResult> append(
  1. StreamState state,
  2. Stream<EventData> events, {
  3. UserCredentials? userCredentials,
  4. EventStoreClientOperationOptions? operationOptions,
})

Append events to stream given by state. Returns as WriteResult when the operation has completed. If a concurrent write has occurred, a WrongExpectedVersionResult is returned. Otherwise, WriteSuccessResult is returned.

Implementation

Future<WriteResult> append(
  StreamState state,
  Stream<EventData> events, {
  UserCredentials? userCredentials,
  EventStoreClientOperationOptions? operationOptions,
}) {
  return $runRequest<WriteResult>(() async {
    final client = await $getClient();
    if (settings.batchAppend) {
      // From v21_LTS the ability to use multiplex appends over
      // a single gRPC channel was added with BatchAppend. This improves
      // speed by eliminating the channel setup overhead. This results
      // in a performance improvement in the order of 20x.
      return _batchAppend(
        state,
        client,
        events,
        userCredentials,
        operationOptions,
      );
    }
    return _append(
      state,
      client,
      events,
      userCredentials,
      operationOptions,
    );
  });
}