GithubHelp home page GithubHelp logo

tempbottle / trex Goto Github PK

View Code? Open in Web Editor NEW

This project forked from deib-polimi/trex

0.0 1.0 0.0 1.73 MB

T-Rex is a general purpose Complex Event Processing (CEP) Infrastructure designed to support an expressive language for rule definition while offering efficient processing mechanisms.

HTML 0.20% JavaScript 2.01% ANTLR 0.34% Java 27.80% Makefile 0.36% M4 9.05% C++ 45.97% C 1.37% Cuda 12.91%

trex's Introduction

T-Rex

T-Rex is a general purpose Complex Event Processing (CEP) Middleware designed to support an expressive language for rule definition while offering efficient processing mechanisms.

With the T-Rex tools users can create TESLA rules, publish events and subscribe to event notifications.

TESLA

TESLA is a powerful yet simple complex event definition language.

TESLA includes operators to express:

  • Content-based event filtering
  • Customizable event selection and consumption policies
  • Event sequences with timing constraints
  • Negations (time-based and interval-based)
  • Parameters
  • Aggregates

Further details on TESLA can be found in the following paper: TESLA: a Formally Defined Event Specification Language, G. Cugola, A. Margara. In Proceedings of 4th ACM International Conference On Distributed Event-Based Systems (DEBS 2010). Cambridge, United Kingdom. July 12 - 15, 2010

http://www.inf.usi.ch/postdoc/margara/papers/debs10.pdf

Architecture

The T-Rex software suite consists of 3 components: a C++/CUDA highly optimized engine, a C++ server and a Java client.

Further details on T-Rex algorithms and implementation can be found in the following paper: Complex Event Processing with T-Rex, G. Cugola, A. Margara. In Journal of Systems and Software. Volume 85 - Issue 8. August 2012.

http://home.deib.polimi.it/cugola/Papers/trex.pdf

More on the GPU implementation can be found in the following thesis: GTrex : implementing a CEP engine for the TESLA language on GPU, Daniele Rogora.

https://www.politesi.polimi.it/bitstream/10589/88428/1/Tesi.pdf

The client includes the code to actually perform the communication between the client itself and the server as well as a TESLA rule parser.

More on the specific syntax used for the parser can be found in the PDF document TESLA_parser_intro in this repository.

TRex2-Lib

This is the core of the project, containing both the standard and the CUDA powered engine.

First of all build the configure script:

$ autoreconf --install

To configure:

$ ./configure

To build also the CUDA engine:

$ ./configure --enable-cuda

Build the binary library:

$ make

To install the library and the development headers:

$ make install

TRex-Server

This is a server built with the TRex2 library that handles the communication between the engine and the clients.

First of all build the configure script:

$ autoreconf --install

To configure:

$ ./configure

Build the binary:

$ make

To install the library and the development headers:

$ make install

To run the server with the standard engine:

$ TRexServer

To run the server with the CUDA engine:

$ TRexServer -gpu

TRex-Java-client

This project contains both a Java library to simply and efficiently take advantage of the T-Rex server and an example command line client developed with the library.

To build the example command line client:

$ ant jars

Run with:

$ java -jar TRex-client.jar 

Other options can be seen with:

$ ant -p

TRex-HttpProxy

This project contains a very simple proxy written in node.js, which converts REST calls into calls to the T-Rex server.

The proxy can be launched through the command:

$ nodejs trex-proxy.js

waits connections on port 8888, and connects to the T-Rex server running on localhost:50254 (the default). Use the following environment variables to change these defaults: TREX_HOST, TREX_PORT

The proxy exports five main REST services: one to connect, one to publish events, one to subscribe to events, one to unsubscribe, and one to get received events (which it stores, on behalf of clients). The first is a GET request, those to publish and subscribe are POST requests, the one to unsubscribe is a DELETE request, the latter is a GET request.

Clients are identified through an UUID they receive at connection time.

File "testjs.html" (served through the URL: http://proxy.machine:8888/testjs.html) provides a starting example of usage from Javascript. The javascript client-side library used by such an example can be found in file trex-client.js.

License

The license is usually specified at the beginning of each source file; where not explicitly stated assume GPLv3.

Contacts

Gianpaolo Cugola

http://home.deib.polimi.it/cugola

Alessandro Margara

http://www.inf.usi.ch/postdoc/margara/index.html

Daniele Rogora

trex's People

Contributors

dippi avatar grobx avatar margara avatar rogora avatar

Watchers

 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.