Git Product home page Git Product logo

fuxedo's Introduction

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

Some of the tests fail with Oracle Tuxedo and I have reported several issues to Oracle, some are fixed but require additional patches from Oracle to be installed.

More

Check out some other projects:

I'm interested to hear what features of Oracle Tuxedo your project is using and what should be implemented in Fuxedo. If you can share the code or let me take a look under NDA - even better.

For more information, support, features and development contact us at [email protected]

fuxedo's People

Contributors

aivarsk avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.