Skip to content
An Open Source alternative to Oracle Tuxedo
C++ C M4 Makefile
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
include
install-tests
m4
src TUXCONFIG checks Jan 18, 2020
tests
third_party
.travis.yml
COPYING
Makefile.am
README.md
RM
autogen.sh
configure.ac

README.md

Fuxedo

Making the world a better place through minimal message-oriented transport layers.

Build Status codecov Coverage Status

Why Fuxedo?

"Fuxedo is a one-piece tuxedo that combines the elegance of a tuxedo and the convenience of a jumpsuit."

Fuxedo is a toy project I started in late 2011 to play with C++11 and Boost libaries by building emulation of some Oracle Tuxedo APIs. Name of the project was just a word play about Tuxedo, BlackTie and "free"/"fun". Years later I have gained more experience and different bits and pieces about FML32, parsers, configuration files, shared memory, messages queues laying in my projects folder. I think it's time to put it all together.

It is also free to use, modify and distribute for commercial and non-commercial purposes.

What is Fuxedo?

Fuxedo is an open source implementation of X/Open XATMI specification and some Oracle Tuxedo extensions of the API. The goal is to provide source code compatibility with core Tuxedo functionality: ideally a recompilation will be sufficient to port software from Tuxedo to Fuxedo. Fuxedo also keeps Tuxedo's configuration file formats and conventions silently ignoring the obscure parts.

There is no definition of what "core functionality" is but I will start with the functions I use on daily basis. Things like TSAM, Jolt, SALT, queues and adapters are out of scope.

Currently C++17 is used as implementation language mostly to learn what the new standard offers. This choice makes some of XATMI C-style interfaces weird to implement but life is too short to write everything in C.

Currently implemented:

  • Typed buffers API
    • STRING - C-style null-terminated strings.
    • CARRAY - binary blobs.
    • FML32 - self-describing fielded buffer like binary XML or JSON. Supports multiple levels of nested FML32 buffers.
  • Boolean expressions of FML32 fielded buffers
  • Tuxedo-specific APIs
  • Programs
    • mkfldhdr32
    • ud32
    • tmloadcf/tmunloadcf
    • tmipcrm
    • buildserver
    • buildclient
    • buildtms
  • ...more to come

Supported API function list

  • Typed buffer functions
    • tpalloc
    • tprealloc
    • tpfree
    • tptypes
  • Service routine functions
    • tpservice
    • tpreturn
  • Advertising functions
    • tpadvertise
    • tpunadvertise
  • Request/response service functions
    • tpcall
    • tpacall
    • tpcancel
    • tpgetrply
  • Oracle Tuxedo XATMI extensions
    • tpimport/tpexport
    • tpinit/tpterm
  • Oracle Tuxedo XATMI transaction interface
    • tpopen/tpclose
    • tpbegin/tpabort/tpcommit
    • tpgetlev
    • tpsuspend/tpresume
  • X/Open TX interface
    • tx_open/tx_close
    • tx_begin/tx_rollback/tx_commit
    • tx_info
    • tx_set_commit_return/tx_set_transaction_control/tx_set_transaction_timeout
  • FML32
    • a lot
  • Boolean expressions
    • Fboolco32
    • Fboolpr32
    • Fboolev32
    • Ffloatev32

Compatibility with Oracle Tuxedo

Fuxedo tries to be compatible with Oracle Tuxedo for all functionality implemented so far. That is ensured by executing the same tests cases against both Fuxedo and Oracle Tuxedo:

  • Running make from install-tests folder will execute all "intergration tests" with whatever TUXDIR points to. That is done for every change in Fuxedo and time-to-time with Oracle Tuxedo 12.2
  • Part of unittests (FML32, Boolean expressions) are compiled and executed as "integration tests" under install-tests/unit

More

If you need more information, support or features contact us at info@fuxedo.io

You can’t perform that action at this time.