| 1 |  | %% Copyright (c) 2023 Peter Morgan <peter.james.morgan@gmail.com> | 
| 2 |  | %% | 
| 3 |  | %% Licensed under the Apache License, Version 2.0 (the "License"); | 
| 4 |  | %% you may not use this file except in compliance with the License. | 
| 5 |  | %% You may obtain a copy of the License at | 
| 6 |  | %% | 
| 7 |  | %% http://www.apache.org/licenses/LICENSE-2.0 | 
| 8 |  | %% | 
| 9 |  | %% Unless required by applicable law or agreed to in writing, software | 
| 10 |  | %% distributed under the License is distributed on an "AS IS" BASIS, | 
| 11 |  | %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
| 12 |  | %% See the License for the specific language governing permissions and | 
| 13 |  | %% limitations under the License. | 
| 14 |  |  | 
| 15 |  |  | 
| 16 |  | -module(msmp_binlog_dump). | 
| 17 |  |  | 
| 18 |  |  | 
| 19 |  | -export([decode/0]). | 
| 20 |  | -export([encode/0]). | 
| 21 |  |  | 
| 22 |  |  | 
| 23 |  | decode() -> | 
| 24 | 3 |     fun | 
| 25 |  |         (Input) -> | 
| 26 | 1 |             (scran_result:into_map( | 
| 27 |  |                scran_sequence:sequence( | 
| 28 |  |                  [scran_result:kv( | 
| 29 |  |                     action, | 
| 30 |  |                     scran_combinator:value( | 
| 31 |  |                       binlog_dump, | 
| 32 |  |                       scran_bytes:tag(<<18>>))), | 
| 33 |  |  | 
| 34 |  |                   scran_result:kv( | 
| 35 |  |                     binlog_pos, | 
| 36 |  |                     msmp_integer_fixed:decode(4)), | 
| 37 |  |  | 
| 38 |  |                   scran_result:kv( | 
| 39 |  |                     flags, | 
| 40 |  |                     msmp_integer_fixed:decode(2)), | 
| 41 |  |  | 
| 42 |  |                   scran_result:kv( | 
| 43 |  |                     server_id, | 
| 44 |  |                     msmp_integer_fixed:decode(4)), | 
| 45 |  |  | 
| 46 |  |                   scran_result:kv( | 
| 47 |  |                     binlog_filename, | 
| 48 |  |                     msmp_string_rest_of_packet:decode())])))(Input) | 
| 49 |  |     end. | 
| 50 |  |  | 
| 51 |  |  | 
| 52 |  | encode() -> | 
| 53 | 3 |     fun | 
| 54 |  |         (Decoded) -> | 
| 55 | 1 |             (narcs_sequence:sequence( | 
| 56 |  |                [narcs_bytes:tag(<<18>>), | 
| 57 |  |                 narcs_combinator:v(binlog_pos, msmp_integer_fixed:encode(4)), | 
| 58 |  |                 narcs_combinator:v(flags, msmp_integer_fixed:encode(2)), | 
| 59 |  |                 narcs_combinator:v(server_id, msmp_integer_fixed:encode(4)), | 
| 60 |  |                 narcs_combinator:v(binlog_filename, narcs_combinator:rest())]))(Decoded) | 
| 61 |  |     end. |