Skip to content

Latest commit

 

History

History
 
 

api

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

CloudI API

PURPOSE

Provide an interface for external software to utilize CloudI's scalability, fault-tolerance, messaging, dynamic configuration, and other features.

INTEGRATION

Supported languages:

  • ATS2/Postiats >= 0.3.13
  • C
  • C++
  • Elixir
  • Erlang >= 22.0
  • Go >= 1.11
  • Haskell (GHC >= 8.6.0)
  • Java
  • JavaScript/node.js >= 0.12.18
  • OCaml >= 4.08.0
  • Perl >= 5.10 (with Compress::Zlib)
  • PHP >= 7.0
  • Python >= 2.7.0
  • Ruby >= 1.9.0
  • Rust >= 1.66.1

C/C++, Go, Haskell, Java, JavaScript, OCaml, Perl, PHP, Python, Ruby, and Rust all have an implementation of the CloudI API that is completely done in that programming language (to avoid extra complexity). ATS uses the C CloudI API to add more type information in the ATS CloudI API. A separate Python/C CloudI API uses the C++ CloudI API to provide more efficiency (when using the cloudi_c Python module instead of cloudi). Any use of the CloudI API in these programming languages (that are not running in the Erlang VM, i.e., "external" services) is executed as separate OS processes with separate threads (using any native threading library) with CloudI as the application server.

Erlang (or Elixir) integration uses the cloudi_service behavior to create "internal" CloudI services. Typically, the module name implementing the cloudi_service behavior is built as an Erlang/OTP application with the same name.

An example SWIG interface file is provided based on the C CloudI API in cloudi.i. SWIG could be used to create a CloudI API for Lua, R, D, etc.

Examples exist within the integration tests:

Please see the CloudI API documentation for more details.