Skip to content

Tekenlight/evpoco

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Provides a cooperative multitasking platform for LUA Each instance of lua_State * can be considered as a LUA thread being run by an underlying OS thread.

alt text

EVPOCO (EVENT DRIVEN Portable Components) C/C++ Libraries are:

  • A collection of C++ class libraries and C functions, built by enahancing a fork from Poco library (16-Apr-2018)
  • Exposes a set of platform functions to lua programming language, making it easy to develop web applications in lua
  • Implements event driven IO through coroutines, i.e. threads initiating IO do not block and continue with other taks, and once the IO is complete any available thread continues the task from where the task was left of
  • The IO-event driven task handling is achieved via coroutines in lua, which accomplishes cooperative multi-tasking and provides the programmer an interface of sequential code vis-a-vis an event driven code with promises etc...
  • Focused on solutions to frequently-encountered practical problems.
  • Focused on ‘internet-age’ network-centric applications.
  • Open Source, licensed under the Boost Software License.

alt text

The library essentially genetates two outputs evluaserver and evlua

  • evluaserver: A HTTP server that listens on a port for HTTP requests. Upon arrival of a new HTTP request a lua file main.lua is run. The file should be present in the directory where from where the executable is run or present in path as specified by the environmental variable EVLUA_PATH
    • The global lua module platform is avaialble to the lua file using which other aspects of HTTP processing such as request, response etc... can be accessed. The documentation has complete datails of various services available to the lua environment.
  • evlua: A standalone component which can run a lua script from the commandline. A lua file when run from evlua can access platform and achieve event driven IO.

Build and dependencies:

  • CMake 3.5 or newer
  • A C++14 compiler (GCC 5.0, Clang 3.4, or newer)
  • OpenSSL headers and libraries
  • PostgreSQL client libraries
  • openssl and libssl-dev

Dependencies maintained in Tekenlight

Currently the dependencies maintained in Tekenlight have to be built first and installed before building evpoco. (TDB) Customized libev, Customized lua 5.3.5 and evpoco, efio, redis client, postgresql client are to be merged into single repository evpoco

Building with CMake (linux and MacOS):

$ git clone -b master https://github.com/Tekenlight/evpoco  
$ cd evpoco  
$ mkdir cmake-build  
$ cmake -DPG_VERSION="<12, 13, 14 or 15, depending on which Postgresql client version is installed>" ..  
$ cmake --build . --config Release  

Usage examples of evlua and evluaserver are provided


See the Usage documentation for usage
Other links: evlua documentation


Notes
  • Crypto and NetSSL_OpenSSL related commits in poco reconciled on 30-Aug-2023 (TLS 1.3, OpenSSL3 and other enhancements) (poco NetSSL_OpenSSL 11-Jul-2023 Crypto 11-Jul-2023)