<commit_before># endurox

## Build (including atmi/ubf tests) status

| OS   |      Status      | OS       |      Status   |OS       |      Status   |
|----------|:-------------:|----------|:-------------:|----------|:-------------:|
| AIX 7.1 |  [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-aix7_1)](http://www.silodev.com:9090/jenkins/job/endurox-aix7_1/) |Centos 6|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-centos6)](http://www.silodev.com:9090/jenkins/job/endurox-centos6/)|FreeBSD 11|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-freebsd11)](http://www.silodev.com:9090/jenkins/job/endurox-freebsd11/)|
|Oracle Linux 7|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ol7)](http://www.silodev.com:9090/jenkins/job/endurox-ol7/)|OSX 11.4|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-osx11_4)](http://www.silodev.com:9090/jenkins/job/endurox-osx11_4/)|raspbian10_arv7l|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-raspbian10_arv7l)](http://www.silodev.com:9090/jenkins/job/endurox-raspbian10_arv7l/)|
|SLES 12|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-sles12)](http://www.silodev.com:9090/jenkins/job/endurox-sles12/)|SLES 15|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-sles15)](http://www.silodev.com:9090/jenkins/job/endurox-sles15/)|Solaris 10|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-solaris10-sparc)](http://www.silodev.com:9090/jenkins/job/endurox-solaris10-sparc/)|
|Solaris 11| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-solaris11_x86)](http://www.silodev.com:9090/jenkins/job/endurox-solaris11_x86/)|Ubuntu 14.04| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ubuntu14)](http://www.silodev.com:9090/jenkins/job/endurox-ubuntu14/)|Ubuntu 18.04| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ubuntu18)](http://www.silodev.com:9090/jenkins/job/endurox-ubuntu18/)|
|RHEL/Oracle Linux 8| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ol8)](http://www.silodev.com:9090/jenkins/job/endurox-ol8/)|AIX 7.2| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-aix7_2)](http://www.silodev.com:9090/jenkins/job/endurox-aix7_2/)|||

## Overview

Enduro/X is Open Source Middleware Platform for Distributed Transaction 
Processing

It is modern, micro-services based middleware for writing distributed, open
systems (program consists of several executables) based applications. Thus 
by using Enduro/X programmers do not have to worry about threads and concurrency 
anymore, the load balacing and multi-CPU loading is done by Enduro/X middleware by it self,
administrator only have to determine how many copies of particular services should
be started. Of-course Enduro/X supports multi-threaded applications too, but now
system architects have a choice either to design multi-threaded executables or
just configure number of executables to start.

For local inter-process-communication (IPC) Enduro/X uses kernel memory based Posix
queues to avoid overhead of the TCP/IP protocol which is used in other middlewares
or REST based micro-service architectures. Thus this approach greatly increases
application speed, as kernel queues is basically a matter of block memory
copy from one process to another (by contrast of 7 layers of TCP/IP stack and
streaming nature of the sockets vs block copy). 

Enduro/X provides SOA architecture for C/C++ applications and allows to cluster 
application in fault tolerant way over multiple physical servers. 
Enduro/X provides Oracle(R) Tuxedo(R) FML/FML32 library emulation, 
including boolean expressions. Other Tuxedo specific APIs are supported, 
such as tpforward() and work with distributed transactions (tpbegin(), 
tpcommit(), etc.).

Platform provides X/Open XATMI and XA interfaces/APIs for C/C++ applications. Enduro/X can 
at some level can be considered as replacement 
for Oracle(R) Tuxedo(R), Jboss Blacktie (Narayan), Hitachi OpenTP1 and other XATMI middlewares.

Dual licensed under Affero General Public License Version 3 for use in Open
Source project or Commercial license Acquired from Mavimax Ltd 
(https://www.mavimax.com),

EnduroX have bindings for:
- Golang (client & server)
- Java (client & server)
- PHP (client)
- Perl (client & server)
- Python (client & server)
- Node.js (client)

Enduro/X provides following features:

* Standards based APIs - SCA, The Open Group XATMI
Communication types - Synchronous, Asynchronous, Conversational, Publish/subscribe
* Typed buffers
  * UBF (Unified Buffer Format) which provides emulation of Tuxedo's FML/FML32 
        format. UBF if high performance binary protocol buffer format. Buffer is 
        indexed by binary search on fixed data types.
  * STRING buffer format.
  * CARRAY (byte array) buffer format.
  * JSON buffer format, automatic conversion between JSON and UBF available.
  * VIEW buffer (starting from version 5.0+). This offer C structure sending
        between processes in cross platform way. Also this allows to map UBF 
        fields to VIEW fields, thus helping developer quicker to develop applications, 
        by combining UBF and VIEW buffers.
* Transaction Management - Global Transactions - Two-phase commit protocol - X/Open XA
* Clustering - on peer-to-peer basis
* Multi-threaded Event broker (also called publish and subscribe messaging)
* Security - Cluster link encryption with GNU PGP framework
* System process monitoring and self healing (pings and restarts)
* SOA Service cache. XATMI services can be cached to LMDB database. Resulting 
        that next call to service from any local client receives results 
        directly from cache (mainly from direct memory read).
* Dynamic re-configuration
* Custom server polling extensions
* XATMI sub-system is able to work with out main application server daemon (ndrxd)
* Main application server daemon (ndrxd) can be restarted (if crashed). 
        When started back it enters in learning mode for some period of time, 
        in which in gathers information about system, what services are running, 
        etc. After learning =-period, it starts to do normal operations
* tpforward() call
* ATMI server threads may become clients, and can do tpcall()
* Extensive logging & debugging. Enduro/X logging can be configured per binary 
        with different log levels. As ATMI servers can be started outside of 
        appserver, it is possible to debug them from programming IDE or with 
        tools like valgrind.
* For quality assurance project uses automated unit-testing and integration-testing
* Built in ATMI service profiling.
* Environment variables can be updated for XATMI server processes with 
        out full application reboot.
* Generic client process monitor (cpm). Subsystem allows to start/stop/monitor 
        client executables. At client process crashes, cpm will start it back.
* Starting with version 5.2 Enduro/X provides configuration data encryption feature, 
        so that software which is built on top of Enduro/X may comply with 
        Payment Card Industry Data Security Standard (PCI/DSS).
* Application monitoring with TM_MIB interface. For example NetXMS.
* XA Driver for PostgreSQL.
* Fully functional buildserver, buildclient, buildtms tools.
* Provides server entry point _tmstartserver().<commit_msg>Updates on doc<commit_after># endurox

## Build (including atmi/ubf tests) status

| OS   |      Status      | OS       |      Status   |OS       |      Status   |
|----------|:-------------:|----------|:-------------:|----------|:-------------:|
| AIX 7.1 |  [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-aix7_1)](http://www.silodev.com:9090/jenkins/job/endurox-aix7_1/) |Centos 6|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-centos6)](http://www.silodev.com:9090/jenkins/job/endurox-centos6/)|FreeBSD 11|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-freebsd11)](http://www.silodev.com:9090/jenkins/job/endurox-freebsd11/)|
|Oracle Linux 7|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ol7)](http://www.silodev.com:9090/jenkins/job/endurox-ol7/)|OSX 11.4|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-osx11_4)](http://www.silodev.com:9090/jenkins/job/endurox-osx11_4/)|raspbian10_arv7l|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-raspbian10_arv7l)](http://www.silodev.com:9090/jenkins/job/endurox-raspbian10_arv7l/)|
|SLES 12|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-sles12)](http://www.silodev.com:9090/jenkins/job/endurox-sles12/)|SLES 15|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-sles15)](http://www.silodev.com:9090/jenkins/job/endurox-sles15/)|Solaris 10|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-solaris10-sparc)](http://www.silodev.com:9090/jenkins/job/endurox-solaris10-sparc/)|
|Solaris 11| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-solaris11_x86)](http://www.silodev.com:9090/jenkins/job/endurox-solaris11_x86/)|Ubuntu 14.04| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ubuntu14)](http://www.silodev.com:9090/jenkins/job/endurox-ubuntu14/)|Ubuntu 18.04| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ubuntu18)](http://www.silodev.com:9090/jenkins/job/endurox-ubuntu18/)|
|RHEL/Oracle Linux 8| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ol8)](http://www.silodev.com:9090/jenkins/job/endurox-ol8/)|AIX 7.2| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-aix7_2)](http://www.silodev.com:9090/jenkins/job/endurox-aix7_2/)|||

## Overview

Enduro/X is Open Source Middleware Platform for Distributed Transaction 
Processing

It is modern, micro-services based middleware for writing distributed, open
systems (program consists of several executables) based applications. Thus 
by using Enduro/X programmers do not have to worry about threads and concurrency 
anymore, the load balacing and multi-CPU loading is done by Enduro/X middleware by it self,
administrator only have to determine how many copies of particular services should
be started. Of-course Enduro/X supports multi-threaded applications too, but now
system architects have a choice either to design multi-threaded executables or
just configure number of executables to start.

For local inter-process-communication (IPC) Enduro/X uses kernel memory based Posix
queues to avoid overhead of the TCP/IP protocol which is used in other middlewares
or REST based micro-service architectures. Thus this approach greatly increases
application speed, as kernel queues is basically a matter of block memory
copy from one process to another (by contrast of 7 layers of TCP/IP stack and
streaming nature of the sockets vs block copy). 

Enduro/X provides SOA architecture for C/C++ applications and allows to cluster 
application in fault tolerant way over multiple physical servers. 
Enduro/X provides Oracle(R) Tuxedo(R) FML/FML32 library emulation, 
including boolean expressions. Other Tuxedo specific APIs are supported, 
such as tpforward() and work with distributed transactions (tpbegin(), 
tpcommit(), etc.).

Platform provides X/Open XATMI and XA interfaces/APIs for C/C++ applications. Enduro/X can 
at some level can be considered as replacement 
for Oracle(R) Tuxedo(R), Jboss Blacktie (Narayan), Hitachi OpenTP1 and other XATMI middlewares.

Dual licensed under Affero General Public License Version 3 for use in Open
Source project or Commercial license Acquired from Mavimax Ltd 
(https://www.mavimax.com),

EnduroX have bindings for:
- Golang (client & server)
- Java (client & server)
- PHP (client)
- Perl (client & server)
- Python (client & server)
- Node.js (client)

Enduro/X provides following features:

* Standards based APIs - SCA, The Open Group XATMI
Communication types - Synchronous, Asynchronous, Conversational, Publish/subscribe
* Typed buffers
  * UBF (Unified Buffer Format) which provides emulation of Tuxedo's FML/FML32 
        format. UBF if high performance binary protocol buffer format. Buffer is 
        indexed by binary search on fixed data types.
  * STRING buffer format.
  * CARRAY (byte array) buffer format.
  * JSON buffer format, automatic conversion between JSON and UBF available.
  * VIEW buffer (starting from version 5.0+). This offer C structure sending
        between processes in cross platform way. Also this allows to map UBF 
        fields to VIEW fields, thus helping developer quicker to develop applications, 
        by combining UBF and VIEW buffers.
* Transaction Management - Global Transactions - Two-phase commit protocol - X/Open XA
* Clustering - on peer-to-peer basis
* Multi-threaded Event broker (also called publish and subscribe messaging)
* System process monitoring and self healing (pings and restarts)
* SOA Service cache. XATMI services can be cached to LMDB database. Resulting 
        that next call to service from any local client receives results 
        directly from cache (mainly from direct memory read).
* Dynamic re-configuration
* Custom server polling extensions
* XATMI sub-system is able to work with out main application server daemon (ndrxd)
* Main application server daemon (ndrxd) can be restarted (if crashed). 
        When started back it enters in learning mode for some period of time, 
        in which in gathers information about system, what services are running, 
        etc. After learning =-period, it starts to do normal operations
* tpforward() call
* ATMI server threads may become clients, and can do tpcall()
* Extensive logging & debugging. Enduro/X logging can be configured per binary 
        with different log levels. As ATMI servers can be started outside of 
        appserver, it is possible to debug them from programming IDE or with 
        tools like valgrind.
* For quality assurance project uses automated unit-testing and integration-testing
* Built in ATMI service profiling.
* Environment variables can be updated for XATMI server processes with 
        out full application reboot.
* Generic client process monitor (cpm). Subsystem allows to start/stop/monitor 
        client executables. At client process crashes, cpm will start it back.
* Starting with version 5.2 Enduro/X provides configuration data encryption feature, 
        so that software which is built on top of Enduro/X may comply with 
        Payment Card Industry Data Security Standard (PCI/DSS).
* Application monitoring with TM_MIB interface. For example NetXMS.
* XA Driver for PostgreSQL.
* Fully functional buildserver, buildclient, buildtms tools.
* Provides server entry point _tmstartserver().
{'fraction_non_alphanumeric': 0.10883373714884421, 'fraction_numerical': 0.027765044856263507, 'mean_word_length': 4.347338935574229, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 58, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2574217', 'n_tokens_mistral': 4983, 'n_tokens_neox': 4631, 'n_words': 1459}