This Library is work in progress. Most of the functionalities and the architecture were inspired by the DSMS framework Odysseus.
To use Apalinea you need to include Core/Plan/Plan.hpp
, Core/Log/LogManager.hpp
, Core/Executor/STLExecutor.hpp
, Core/Log/ConsoleLog.hpp
.
You can also create your own Executor and Logger (STLExecutor and ConsoleLog are only pre defined ones). A Executor based on boost
is also part of the library.
First you need to add a Logger to the LogManager by using (as an example with ConsoleLog):
Apalinea::Core::Log::LogManager::addLog(std::make_unique<Apalinea::Core::Log::ConsoleLog>());
After that you need to create the Plan by using (as an example with STLExecutor and 3 threads / worker):
Apalinea::Core::Plan::Plan plan(std::make_shared<Apalinea::Core::Executor::STLExecutor>(3));
After that you can add your operators to the plan by using:
plan.createSource<YOUR_SOURCE_OPERATOR>();
- Creation of an SourceLinkplan.createPipe<YOUR_PIPE_OPERATOR>();
- Creation of an PipeLinkplan.createSink<YOUR_SINK_OPERATOR>();
- Creation of an SinkLinkplan.connect(SOURCELINK_OBJECT,PIPELINK_OBJECT);
- Connect two Linksplan.connect(PIPELINK_OBJECT,PIPELINK_OBJECT);
- Connect two Linksplan.connect(SOURCELINK_OBJECT,SINKLINK_OBJECT);
- Connect two Linksplan.connect(PIPELINK_OBJECT,SINKLINK_OBJECT);
- Connect two Linksplan.process();
- Process one iteration through the stream (unordered)plan.order();
- Ordering of the whole planplan.processOrdered();
- Process one iteration through the stream (ordered)
For a working example look into example/example.cpp
.
Currently, Apalinea is after a breaking change in the version v1.0.0.Orez available. At that change the full library has moved into its own namespace and a name change was fulfilled.