FIX Protocol library implemented in Go
Go Ruby Other
Switch branches/tags
Clone or download
cbusbey Merge pull request #337 from darwayne/enhancement/AllowInvalidMessage…
…s-Configuration

Adds support for RejectInvalidMessage configuration.
Latest commit 4480547 Aug 6, 2018
Permalink
Failed to load latest commit information.
_sql Use timestamp with time zone for postgres sql Jul 5, 2017
_test build changes for temp gen package Oct 7, 2017
_test_data introduces tls configuration Aug 4, 2016
cmd/generate-fix importPathRoot function can now support linux and windows file path s… Feb 27, 2018
config Adds support for RejectInvalidMessage configuration. Jul 29, 2018
datadictionary adds validation to datadictionary builder Sep 28, 2017
internal change EventTimer to reset its Timer without requiring a reset channel Mar 22, 2018
spec refactoring data dictionary to support groups Apr 2, 2014
.gitignore build changes for temp gen package Oct 7, 2017
.travis.yml build changes for temp gen package Oct 7, 2017
CHANGELOG.md v0.6.0 changelog Aug 14, 2017
CONTRIBUTING.md link to mailing list in CONTRIBUTING Mar 23, 2018
Gopkg.lock using dep for dep mgmt Oct 6, 2017
Gopkg.toml using dep for dep mgmt Oct 6, 2017
LICENSE.txt added qf license Aug 30, 2013
Makefile adds generate-dist target Oct 7, 2017
README.md doc changes for generated code changes Oct 7, 2017
acceptor.go messages passed as pointers Oct 6, 2016
application.go messages passed as pointers Oct 6, 2016
begin_string.go pulls out hard coded begin string from generated enum package Sep 28, 2017
connection.go refactors connection, initiator does not attempt connection when not … Aug 12, 2016
connection_internal_test.go using byte buffer pool for incoming messages Oct 5, 2016
doc.go documentation Aug 18, 2016
errors.go reject logon support Aug 17, 2016
errors_test.go More verbose error text on conditionally required field BMR + unit te… May 9, 2016
field.go swizzles value and pointer references to tag values, field map methods Oct 10, 2016
field_map.go reverts some earlier refactoring in fieldmap that introduced addition… Oct 24, 2016
field_map_test.go introduces fix bytes field type Sep 27, 2016
file_log.go fixes file log output for incoming, outgoing Sep 28, 2016
file_log_test.go removes unnecessary string alloc in logging fix messages Sep 27, 2016
filestore.go simplifies settings error handling Aug 13, 2016
filestore_test.go Accept `Settings` instead of `SessionSettings` Apr 18, 2016
fileutil.go Move some generic funcs into fileutil.go Mar 17, 2016
fileutil_test.go Move some generic funcs into fileutil.go Mar 17, 2016
fix_boolean.go Misc field type refactoring (#145) Jun 7, 2016
fix_boolean_test.go Misc field type refactoring (#145) Jun 7, 2016
fix_bytes.go introduces fix bytes field type Sep 27, 2016
fix_bytes_test.go introduces fix bytes field type Sep 27, 2016
fix_decimal.go adds fix decimal, makefile fixes, DRY fix generator Aug 17, 2016
fix_decimal_test.go adds fix decimal, makefile fixes, DRY fix generator Aug 17, 2016
fix_float.go Misc field type refactoring (#145) Jun 7, 2016
fix_float_test.go adds fix decimal, makefile fixes, DRY fix generator Aug 17, 2016
fix_int.go more low hanging allocation fruit for outbound Oct 21, 2016
fix_int_test.go Misc field type refactoring (#145) Jun 7, 2016
fix_string.go Misc field type refactoring (#145) Jun 7, 2016
fix_string_test.go message cap, removed cruft Feb 5, 2016
fix_utc_timestamp.go utc timestamp field supports micro, nanosecond precision Aug 15, 2017
fix_utc_timestamp_test.go utc timestamp field supports micro, nanosecond precision Aug 15, 2017
in_session.go removed references to generated enum package from top-level quickfix … Sep 28, 2017
in_session_test.go removed references to generated enum package from top-level quickfix … Sep 28, 2017
initiator.go adds SocketConnectHost/Port<n> Aug 14, 2016
latent_state.go message pool for inbound messages Oct 3, 2016
latent_state_test.go moving and renaming test jigs Aug 12, 2016
log.go removes unnecessary string alloc in logging fix messages Sep 27, 2016
logon_state.go removed references to generated enum package from top-level quickfix … Sep 28, 2017
logon_state_test.go removed references to generated enum package from top-level quickfix … Sep 28, 2017
logout_state.go message pool for inbound messages Oct 3, 2016
logout_state_test.go messages passed as pointers Oct 6, 2016
message.go message parse edge cases Oct 2, 2017
message_pool.go messages passed as pointers Oct 6, 2016
message_router.go pulls up def of applverid to top level out of enum Sep 28, 2017
message_router_test.go pulls up def of applverid to top level out of enum Sep 28, 2017
message_test.go message parse edge cases Oct 2, 2017
msg_type.go leverages fixbytes to reduce number of allocations when checking msg … Sep 28, 2016
not_session_time.go message pool for inbound messages Oct 3, 2016
not_session_time_test.go moving and renaming test jigs Aug 12, 2016
null_log.go removes unnecessary string alloc in logging fix messages Sep 27, 2016
parser.go fixes occurances of panic in parser Oct 2, 2017
parser_test.go fixes occurances of panic in parser Oct 2, 2017
pending_timeout.go state machine knows session time Aug 9, 2016
pending_timeout_test.go lint cleanup Aug 17, 2016
quickfix_test.go removed references to generated enum package from top-level quickfix … Sep 28, 2017
registry.go added new exported unregister session call Jan 19, 2018
repeating_group.go reverts some earlier refactoring in fieldmap that introduced addition… Oct 24, 2016
repeating_group_test.go swizzles value and pointer references to tag values, field map methods Oct 10, 2016
resend_state.go using byte buffer pool for incoming messages Oct 5, 2016
resend_state_test.go removed references to generated enum package from top-level quickfix … Sep 28, 2017
screen_log.go removes unnecessary string alloc in logging fix messages Sep 27, 2016
session.go removed references to generated enum package from top-level quickfix … Sep 28, 2017
session_factory.go Adds support for RejectInvalidMessage configuration. Jul 29, 2018
session_factory_test.go pulls out hard coded begin string from generated enum package Sep 28, 2017
session_id.go pulls out hard coded begin string from generated enum package Sep 28, 2017
session_id_test.go adds sender/target sub and location configuration Sep 24, 2016
session_rejects.go pulled errors into top level package May 16, 2014
session_settings.go simplifies settings error handling Aug 13, 2016
session_settings_test.go fixed parser bug, extracting message builder interface May 11, 2014
session_state.go use data dictionary for parsing fix messages Feb 26, 2017
session_test.go removed references to generated enum package from top-level quickfix … Sep 28, 2017
settings.go validate beginstring configuration Sep 29, 2017
settings_test.go validate beginstring configuration Sep 29, 2017
sqlstore.go renames SQLStore config settings Aug 19, 2016
sqlstore_test.go renames SQLStore config settings Aug 19, 2016
store.go Fix a data race condition in the memoryStore Jan 5, 2018
store_test.go Ensure new sqlstore resets cache immediately Apr 19, 2016
tag.go rem fix subpackage Oct 26, 2015
tag_value.go message parse edge cases Oct 2, 2017
tag_value_test.go message parse edge cases Oct 2, 2017
tls.go build changes for temp gen package Oct 7, 2017
tls_test.go fixing tests for MinimumTLSVersion Feb 22, 2017
validation.go Adds support for RejectInvalidMessage configuration. Jul 29, 2018
validation_test.go Adds support for RejectInvalidMessage configuration. Jul 29, 2018

README.md

QuickFIX/Go

GoDoc Build Status Go Report Card

Open Source FIX Protocol library implemented in Go

Getting Started and Documentation

Installation

To install QuickFIX/Go, use go get:

$ go get github.com/quickfixgo/quickfix

Staying up to date

To update QuickFIX/Go to the latest version, use go get -u github.com/quickfixgo/quickfix.

Example Apps

See examples for some simple examples of using QuickFIX/Go.

FIX Message Generation

QuickFIX/Go includes separate packages for tags, fields, enums, messages, and message components generated from the FIX 4.0 - FIX5.0SP2 specs. See:

For most FIX applications, these generated resources are sufficient. Custom FIX applications may generate source specific to the FIX spec of that application using the generate-fix tool included with QuickFIX/Go.

Following installation, generate-fix is installed to $GOPATH/bin/generate-fix. Run $GOPATH/bin/generate-fix --help for usage instructions.

Developing QuickFIX/Go

If you wish to work on QuickFIX/Go itself, you will first need Go installed on your machine (version 1.6+ is required).

For local dev first make sure Go is properly installed, including setting up a GOPATH.

Next, using Git, clone this repository into $GOPATH/src/github.com/quickfixgo/quickfix.

Installing Dependencies

QuickFIX/Go uses dep to manage the vendored dependencies. Install dep with go get:

$ go get -u github.com/golang/dep/cmd/dep

Run dep ensure to install the correct versioned dependencies into vendor/, which Go 1.6+ automatically recognizes and loads.

$ $GOPATH/bin/dep ensure

Note: No vendored dependencies are included in the QuickFIX/Go source.

Build and Test

The default make target runs go vet and unit tests.

$ make

If this exits with exit status 0, then everything is working!

Generated Code

Generated code from the FIX40-FIX50SP2 specs are available as separate repos under the QuickFIX/Go organization. The source specifications for this generated code is located in spec/. Generated code can be identified by the .generated.go suffix. Any changes to generated code must be captured by changes to source in cmd/generate-fix. After making changes to the code generator source, run the following to re-generate the source

$ make generate-dist

If you are making changes to the generated code, please create Pull Requests for these changes for the affected repos.

Acceptance Tests

QuickFIX/Go has a comprehensive acceptance test suite covering the FIX protocol. These are the same tests used across all QuickFIX implementations.

QuickFIX/Go acceptance tests depend on ruby in path.

To run acceptance tests,

    # generate code locally
    make generate

	# build acceptance test rig
	make build_accept

	# run acceptance tests
	make accept

Dependencies

If you are developing QuickFIX/Go, there are a few tasks you might need to perform related to dependencies.

Adding a dependency

If you are adding a dependency, you will need to update the dep manifest in the same Pull Request as the code that depends on it. You should do this in a separate commit from your code, as this makes PR review easier and Git history simpler to read in the future.

To add a dependency:

  1. Add the dependency using dep:
$ dep ensure -add github.com/foo/bar
  1. Review the changes in git and commit them.

Updating a dependency

To update a dependency to the latest version allowed by constraints in Gopkg.toml:

  1. Run:
$ dep ensure -update github.com/foo/bar
  1. Review the changes in git and commit them.

To change the allowed version/branch/revision of a dependency:

  1. Manually edit Gopkg.toml
  2. Run:
$ dep ensure
  1. Review the changes in git and commit them.

Licensing

This software is available under the QuickFIX Software License. Please see the LICENSE.txt for the terms specified by the QuickFIX Software License.