TECS - Thrift Event Communication Service
TECS is a communication middleware for Java, C#, C++, Ruby and Python. It is used for rapid prototyping in research scenarios - especially in Cyber Physical Enviroments - which envolves different programming languages and operating systems. We offer communication via publish-subscribe (PS), message-passing (MP) and Thrift's RPC. Additionally UDP multicast or broadcast is used to find services in a network. TECS uses Apache Thrift which was originally developed by Facebook as an Interface Definition Language (IDL).
TECS is developed by DFKI GmbH under CC-BY-NC-4.0
- Christian Bürckert - Christian.Buerckert@dfki.de
- Yannick Körber - Yannick.Koerber@dfki.de
- Magdalena Kaiser - Magdalena.Kaiser@dfki.de
Used in Projects
- HySociaTea - http://hysociatea.dfki.de
- MadMacs - http://madmacs.dfki.de
- PAL - http://www.dfki.de/lt/project.php?id=Project_914&l=en
- Eyebots - http://www.youtube.com/watch?v=YceZnAQ1rR4
Used in Teaching
- Human Robotic Interface Seminar - http://w5.cs.uni-sb.de/teaching/ws1516/HRInterface/
- Cobot Seminar - http://www.dfki.de/~timsch/cobot.html
- Issue Tracking: https://www.forschungssoftware.de/dfki/TECS/
- Wiki: https://www.forschungssoftware.de/dfki/TECS/wikis/home
- Java: Released - waiting for Bugs
- C++: Released - waiting for Bugs
- C#: Released - waiting for Bugs
- PS Released - waiting for Bugs
- MP Released - waiting for Bugs
- RPC extensions - Planned - Thrift works
- Discovery Released - waiting for Bugs
- PS Released - waiting for Bugs
- MP Unplanned
- RPC Unplanned
- Dis Unplanned
TECS - Specs
- Available For: C++, Java, Python, C#, Ruby
- Easy Communication Description (Thrift)
- Up to 1 Gbit/s !!
- Thrift-Compiler 0.9.3 and 'libthrift'
- For C++: C11 and boost155
- For Java: jdk1.7 (1.8 prefered) and slf4j-api
- For Python: 2.7
- For C#: .NET 4.0
- For Ruby: 2.0
TECS uses semantic versioning (see http://semver.org/)
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
We create a git tag for each released version number.
- major3.0 - next major version 3.0
- minor2.1 - next minor version 2.1
- patch2.0 - merged stable patches for version 2.0.x
- patch1.0 - merged stable patches for version 1.0.x
- issueX - solution for tracked issue X in our bugtracker
/scripts: Developer scripts.
/examples: Contains a minimal example for all programming languages based on the same communication file. It also gives an example on how to structure a tecs project. All projects only needs to share the same (or at least a compatible) thrift file.
/examples/types Contains the thrift files needed for all examples.
/tecs-server Contains a the source and install scripts for a tecs-server which is needed for publish subscribe communication. You can simply install it on the computer which should be used as centralized server in your project.
/tecs-watchdog Contains a the source and install scripts for a tecs-watchdog.
/libtecs The libraries for the different programming languages.
/img Contains important image sources (i.e. for the tecs logo).
/docs Contains important files which help understanding TECS.