# mongoc_client_set_stream_initiator()

## Synopsis

    void
    mongoc_client_set_stream_initiator (mongoc_client_t *client,
                                        mongoc_stream_initiator_t initiator,
                                        void *user_data);

The mongoc_client_set_stream_initiator() function shall associate a given mongoc_client_t with a new stream initiator. This will completely replace the default transport (buffered TCP, possibly with TLS). The `initiator` should fulfill the mongoc_stream_t contract. `user_data` is passed through to the `initiator` callback and may be used for whatever run time customization is necessary.

If `user_data` is passed, it is the application’s responsibility to ensure `user_data` remains valid for the lifetime of the client.

## Parameters

- `client`: A mongoc_client_t.

- `initiator`: A mongoc_stream_initiator_t.

- `user_data`: User supplied pointer for callback function.