Getting started
Serialization usage example
#include <cstdio>
#include <batprotocol.hpp>
int main()
{
// The whole library is in the batprotocol namespace.
// The sub-namespace batprotocol::fb contains
// code automatically generated by flatbuffers.
using namespace batprotocol;
// This is the main class to interact with.
// It handles the message serialization.
MessageBuilder builder;
// Let us create a first message.
// It only contains a single event.
builder.add_edc_hello("example-msg-builder", "0.1.0");
builder.finish_message(0);
printf("Message serialized. Buffer at %p with size=%u\n",
builder.buffer_pointer(), builder.buffer_size());
// You can reuse the same MessageBuilder for another message by calling clear().
builder.clear(0);
builder.add_execute_job("w0!0", "0-3");
builder.add_reject_job("w0!1");
builder.finish_message(0);
printf("Message serialized. Buffer at %p with size=%u\n",
builder.buffer_pointer(), builder.buffer_size());
// An API is provided to generate complex types,
// such as advanced job execution options or profile registration.
builder.clear(0);
builder.add_execute_job("w0!2", "0", ExecuteJobOptions()
.set_predefined_placement_strategy(
fb::PredefinedExecutorPlacementStrategy_FillOneHostCoresFirst)
.override_storage_placement("pfs", 11)
);
builder.add_register_profile("dyn!0", Profile::make_parallel_task_homogeneous(
fb::HomogeneousParallelTaskGenerationStrategy_DefinedAmountsSpreadUniformly,
1e10,
0
));
builder.finish_message(0);
printf("Message serialized. Buffer at %p with size=%u\n",
builder.buffer_pointer(), builder.buffer_size());
// You can control the timestamps of events and of the message
// by giving parameters to clear(), finish_message() and set_current_time().
builder.clear(10);
builder.add_reject_job("w1!0"); // event at timestamp=10
builder.set_current_time(11);
builder.add_reject_job("w2!0"); // event at timestamp=11
builder.finish_message(12); // message at timestamp=12
printf("Message serialized. Buffer at %p with size=%u\n",
builder.buffer_pointer(), builder.buffer_size());
return 0;
}
The JSON examples for each event type in the high-level API reference are valid JSON-formatted protocol messages.
Scheduler example (FCFS)
Todo
Write an FCFS example using the library.