C API functions for processing a replication event stream from a
      server require a connection handler (a MYSQL *
      pointer) and a pointer to a MYSQL_RPL structure
      that describes the steam of replication events to read from the
      server binary log. For example:
    
MYSQL *mysql = mysql_real_connect(...);
MYSQL_RPL rpl;
# ... initialize MYSQL_RPL members ...
int result = mysql_binlog_open(mysql, &rpl);
      This section describes the MYSQL_RPL structure
      members. Connection handlers are described in
      Section 5.2, “C API Basic Data Structures”.
    
      The applicable MYSQL_RPL members depend on the
      binary log operation to be performed:
    
- Before calling - mysql_binlog_open(), the caller must set the- MYSQL_RPLmembers from- file_name_lengththrough- flags. In addition, if- flagshas the- MYSQL_RPL_GTIDflag set, the caller must set the members from- gtid_set_encoded_sizethrough- gtid_set_arg.
- After a successful - mysql_binlog_fetch()call, the caller examines the- sizeand- buffermembers.
      MYSQL_RPL structure member descriptions:
    
- 
file_name_lengthThe length of the name of the binary log file to read. This member is used in conjunction with file_name; see thefile_namedescription.
- 
file_nameThe name of the binary log file to read: - If - file_nameis- NULL, the client library sets it to the empty string and sets- file_name_lengthto 0.
- If - file_nameis not- NULL,- file_name_lengthmust either be the length of the name or 0. If- file_name_lengthis 0, the client library sets it to the length of the name, in which case,- file_namemust be given as a null-terminated string.
 To read from the beginning of the binary log without having to know the name of the oldest binary log file, set file_nametoNULLor the empty string, andstart_positionto 4.
- 
start_positionThe position at which to start reading the binary log. The position of the first event in any given binary log file is 4. 
- 
server_idThe server ID to use for identifying to the server from which the binary log is read. 
- 
flagsThe union of flags that affect binary log reading, or 0 if no flags are set. These flag values are permitted: - 
MYSQL_RPL_SKIP_HEARTBEATSet this flag to cause mysql_binlog_fetch()to skip heartbeat events.
- 
MYSQL_RPL_GTIDSet this flag to read GTID (global transaction ID) data. If set, you must initialize the MYSQL_RPLstructure GTID-related members fromgtid_set_encoded_sizetogtid_set_argbefore callingmysql_binlog_open().It is beyond the scope of this documentation to describe in detail how client programs use those GTID-related members. For more information, examine the mysqlbinlog.ccsource file. For information about GTID-based replication, see Replication with Global Transaction Identifiers.
 
- 
- 
gtid_set_encoded_sizeThe size of GTID set data, or 0. 
- 
fix_gtid_setThe address of a callback function for mysql_binlog_open()to call to fill the command packet GTID set, orNULLif there is no such function. The callback function, if used, should have this calling signature:void my_callback(MYSQL_RPL *rpl, unsigned char *packet_gtid_set);
- 
gtid_set_argEither a pointer to GTID set data (if fix_gtid_setisNULL), or a pointer to a value to be made available for use within the callback function (iffix_gtid_setis notNULL).gtid_set_argis a generic pointer, so it can point to any kind of value (for example, a string, a structure, or a function). Its interpretation within the callback depends on how the callback intends to use it.
- 
sizeAfter a successful mysql_binlog_fetch()call, the size of the returned binary log event. The value is 0 for an EOF event, greater than 0 for a non-EOF event.
- 
bufferAfter a successful mysql_binlog_fetch()call, a pointer to the binary log event contents.