NAME

Net::Fix::Checksum::XS - Fast FIX Checksum calculations from Perl

SYNOPSIS

use Net::Fix::Checksum::XS qw(generate_checksum replace_checksum validate_checksum);

# Generate a checksum and return it as a 0-padded string. Any existing
# checksum field is ignored.
my $checksum = generate_checksum($fixmsg);

# Append/replace a checksum to a fix message. Any existing checksum field is
# ignored and replaced.
my $newmsg = replace_checksum($fixmsg);

# Validate checksum of given message. Return true (1) if checksum is present
# and valid.
validate_checksum($fixmsg) or die "Invalid checksum";

All functions return undef if passed a string that doe not end with a SOH. See "FUNCTIONS" for other possible return values.

DESCRIPTION

This module calculates, validates and replace checksum on FIX messages. It comes with a simple interface written in C for speed.

EXPORT

None by default. All three methods can be exported.

FUNCTIONS

generate_checksum

my $checksum = generate_checksum($fixmsg);

Generate a checksum and return it as a 0-padded string. Any existing checksum field is ignored.

Returns undef if the message does not end with a SOH. No other validity checks are performed.

replace_checksum

my $newmsg = replace_checksum($fixmsg);

Append/replace a checksum to a SOH-delimited fix message. Any existing checksum field is ignored and replaced.

Returns undef if the message does not end with a SOH or if the message exceeds the maximum allowed length (see "BUGS" for more info).

validate_checksum

my $result = validate_checksum($fixmsg);

Validate checksum of given message. Return 1 if checksum is present and valid, and 0 if the checksum is invalid.

Returns undef if the message does not end with a SOH or if the checksum field is malformed or invalid.

BUGS

For speed and simplicity, replace_checksum() is limited to 4095 characters messages by default (including all fields, checksum and trailing separator). This can be changed at compile time; see Makefile.PL.

Functions should take a delimiter optional argument. It should be very easy to implement once we get past XS glue; I just never looked into it.

SEE ALSO

The code repository is mirrored on https://github.com/dermoth/Net-Fix-Checksum-XS

AUTHOR

Thomas Guyot-Sionnest <tguyot@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2015 by Thomas Guyot-Sionnest <tguyot@gmail.com>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.20.2 or, at your option, any later version of Perl 5 you may have available.