FIX Protocol library implemented in Go
Go Other
Latest commit ad0acfd Aug 23, 2016 @cbusbey cbusbey committed on GitHub Merge pull request #233 from cbusbey/resend_toapp_toadmin
calls toApp toAdmin on resend and seq reset
Permalink
Failed to load latest commit information.
_sql Add ddl files for creating db and tables Apr 15, 2016
_test correctly translate default appl ver id in config Aug 12, 2016
_test_data introduces tls configuration Aug 4, 2016
cmd/generate-fix only imports decimal package if not using floats, and there are decim… Aug 18, 2016
config renames SQLStore config settings Aug 19, 2016
datadictionary Datadictionary/Gen refactor (#140) May 24, 2016
enum adds 'generated.go' suffix to generated source Aug 16, 2016
field generated code Aug 17, 2016
fix40 generated code Aug 17, 2016
fix41 generated code Aug 17, 2016
fix42 generated code Aug 17, 2016
fix43 generated code Aug 17, 2016
fix44 generated code Aug 17, 2016
fix50 generated code Aug 17, 2016
fix50sp1 generated code Aug 17, 2016
fix50sp2 generated code Aug 17, 2016
fixt11 adds 'generated.go' suffix to generated source Aug 16, 2016
internal fixes bug for 24 hour session Aug 16, 2016
spec refactoring data dictionary to support groups Apr 2, 2014
tag adds 'generated.go' suffix to generated source Aug 16, 2016
vendor remove vendor source Aug 18, 2016
.gitignore remove vendor source Aug 18, 2016
.travis.yml remove vendor source Aug 18, 2016
CHANGELOG.md release notes for v0.4.0 release Aug 1, 2016
CONTRIBUTING.md typo fix Jul 13, 2016
LICENSE.txt added qf license Aug 30, 2013
Makefile adds fix decimal, makefile fixes, DRY fix generator Aug 17, 2016
README.md documentation Aug 18, 2016
acceptor.go extracts sessin creation code into session factory Aug 13, 2016
application.go docs Feb 13, 2016
connection.go refactors connection, initiator does not attempt connection when not … Aug 12, 2016
connection_internal_test.go clean disconnect on initiator/acceptor stop Aug 10, 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 extracts repeating group interface (#137) May 20, 2016
field_map.go Header, Body, Trailer FieldMap types (#138) May 23, 2016
field_map_test.go Header, Body, Trailer FieldMap types (#138) May 23, 2016
file_log.go simplifies settings error handling Aug 13, 2016
file_log_test.go fix for #72 Mar 5, 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_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 Misc field type refactoring (#145) Jun 7, 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 Misc field type refactoring (#145) Jun 7, 2016
fix_utc_timestamp_test.go Misc field type refactoring (#145) Jun 7, 2016
in_session.go calls toApp toAdmin on resend and seq reset Aug 23, 2016
in_session_test.go calls toApp toAdmin on resend and seq reset Aug 23, 2016
initiator.go adds SocketConnectHost/Port<n> Aug 14, 2016
latent_state.go clean disconnect on initiator/acceptor stop Aug 10, 2016
latent_state_test.go moving and renaming test jigs Aug 12, 2016
log.go file logger May 8, 2014
logon_state.go fixes logic around logon message with sequence number too high Aug 23, 2016
logon_state_test.go fixes logic around logon message with sequence number too high Aug 23, 2016
logout_state.go clean disconnect on initiator/acceptor stop Aug 10, 2016
logout_state_test.go extracts sessin creation code into session factory Aug 13, 2016
message.go removes marshal cruft Jun 11, 2016
message_router.go makes some reject helpers public (#124) May 5, 2016
message_router_test.go KISS on registry, session management Aug 11, 2016
message_test.go Return better error when group delim not found (#111) Apr 22, 2016
msg_type.go rem fix subpackage Oct 26, 2015
not_session_time.go clean disconnect on initiator/acceptor stop Aug 10, 2016
not_session_time_test.go moving and renaming test jigs Aug 12, 2016
null_log.go interface cleanup, changed where receivetime is collected May 16, 2014
parser.go message cap, removed cruft Feb 5, 2016
parser_test.go message cap, removed cruft Feb 5, 2016
pending_timeout.go state machine knows session time Aug 9, 2016
pending_timeout_test.go lint cleanup Aug 17, 2016
quickfix_test.go test coverage around sequence resets in resend state Aug 23, 2016
registry.go KISS on registry, session management Aug 11, 2016
repeating_group.go lint cleanup Aug 17, 2016
repeating_group_test.go fix for 153, recursive repeating groups Jun 21, 2016
resend_state.go fixes bug in resend state Aug 22, 2016
resend_state_test.go test coverage around sequence resets in resend state Aug 23, 2016
screen_log.go interface cleanup, changed where receivetime is collected May 16, 2014
session.go calls toApp toAdmin on resend and seq reset Aug 23, 2016
session_factory.go adds SocketConnectHost/Port<n> Aug 14, 2016
session_factory_test.go adds SocketConnectHost/Port<n> Aug 14, 2016
session_id.go validator interface (#120) Apr 26, 2016
session_id_test.go added session qualifier May 9, 2014
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 fixes bug for 24 hour session Aug 16, 2016
session_test.go reject logon support Aug 17, 2016
settings.go Allow settings values to contain equals signs Apr 19, 2016
settings_test.go Allow settings values to contain equals signs Apr 19, 2016
sqlstore.go renames SQLStore config settings Aug 19, 2016
sqlstore_test.go renames SQLStore config settings Aug 19, 2016
store.go Alter GetMessages return value. Mar 16, 2016
store_test.go Ensure new sqlstore resets cache immediately Apr 19, 2016
tag.go rem fix subpackage Oct 26, 2015
tag_value.go extracts repeating group interface (#137) May 20, 2016
tag_value_test.go extracts repeating group interface (#137) May 20, 2016
tls.go extracts sessin creation code into session factory Aug 13, 2016
tls_test.go extracts sessin creation code into session factory Aug 13, 2016
validation.go Datadictionary/Gen refactor (#140) May 24, 2016
validation_test.go Misc field type refactoring (#145) Jun 7, 2016

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 fields, enums, messages, and message components generated from the FIX 4.0 - FIX5.0SP2 specs. 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 govendor to manage the vendored dependencies. Install govendor with go get:

$ go get github.com/kardianos/govendor

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

$ $GOPATH/bin/govendor sync

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!

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,

    # build acceptance test rig
    make build_accept

    # run acceptance tests
    make accept

Generated Code

For convenience, generated code from the FIX40-FIX50SP2 specs are included in the QuickFIX/Go repo. 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

If you are making changes to the generated code, you will need to include the generated source in the same Pull Request as the changes made to the code generator. 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.

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 update the govendor 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:

Assuming your work is on a branch called my-feature-branch, the steps look like this:

  1. Add the new package to your GOPATH:

    go get github.com/quickfixgo/my-project
  2. Add the new package to your vendor/ directory:

    govendor add github.com/quickfixgo/my-project
  3. Review the changes in git and commit them.

Updating a dependency

To update a dependency:

  1. Fetch the dependency:

    govendor fetch github.com/quickfixgo/my-project
  2. 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.