# mco_translog_play_ex

> This function reads a specified log file or pipe and, if the log file is “compatible”, iterates its content by calling the user-defined callback and also fires registered events.

> ### For an overview see page TL Applications

### Prototype

        MCO_RET	mco_translog_play_ex(	mco_TL_play_params_h tl_play_params);

### Arguments

params | The `mco_translog_play_params_t` structure containing the initialized parameters

### Description

This function is similar to `mco_translog_play()`, except that it takes a single structure `mco_TL_play_params_t` argument. The `mco_TL_play_params_t` structure is initialized by calling `mco_translog_play_params_init().`

The fields of the structure correspond to parameters of `mco_translog_play()` with one additional field:

        mco_device_t *pipe_device;

The `pipe_device` is a descriptor of the pipe device to be used by the readers. If the value of the `pipe_device` is `NULL` then the transaction logging runtime chooses the first pipe that does not have any connected readers. The same happens when the old style `mco_translog_play()` and `mco_translog_iterate()` APIs are used.

### Return Codes

MCO_S_OK | The log file was read successfully
User defined code other than MCO_S_OK | If the user-defined callback returns any value other than MCO_S_OK then function`mco_translog_iterate()` aborts and returns this code as its own return code. This is the correct way to break the iteration loop if an error condition occurs inside the user-defined iteration callback.
MCO_E_TL_INVAL | Arguments are wrong or incompatible.
MCO_E_TL_NOT_ITERABLE | The log was created without the flag `MCO_TRANSLOG_ITERABLE`.
MCO_E_TL_LOG_NOT_OPENED | The log file could not be opened.
MCO_E_TL_IO_ERROR | Disk IO error.
MCO_E_VERS_MISMATCH | The log file is incompatible with the runtime settings or the database version.
MCO_E_TL_INVFORMAT | The log file or pipe data is corrupted.
MCO_S_TL_INVDATA | The log file or pipe was not read completely but some transactions were found, or no end-of-file was found.
MCO_E_TL_PIPE_USED | Pipe is already opened by another call of `mco_trans_iterate()`.
MCO_E_TL_PIPE_TERM | Logging was terminated during the previous call of `mco_trans_iterate()` but not reinitialized by writer.
MCO_E_TL_PIPE_LOST | All connections to a pipe were closed and its data was lost before this function was called.
MCO_E_NOMEM | Insufficient memory to complete the operation. Increase the value of `mem_size`.

### Files

Header file:
mcolog.h
Source file:
mcolog.c
Library:
libmcolog.a