C++ library for pattern-based time-point generation of recurring tasks
FireDaemon Synkronize is a static C++ library for Microsoft Windows and macOS that allows you to generate recurring timepoints to support task scheduling based on blueprint patterns. Tasks are often planned and performed repeatedly, recurring at regular intervals. The Synkronize C++ library, generates timepoints according to simple yet powerful blueprint patterns. Those timepoints are then typically consumed to schedule recurring tasks. Tasks can be any computer-based activity that requires automated recurring scheduling at specific timepoints including version checking, calendar reminders, execution of a specific program or script, starting or stopping of a Windows service or macOS daemon. FireDaemon Pro uses FireDaemon Synkronize to provide Windows service scheduling functionality. The benefit of using FireDaemon Synkronize over other libraries such as Boost.Date_Time is that Synkronize offers far simpler code that is semantically meaningful in relation to time point iteration and generation.
Two versions of FireDaemon Synkronize are available. We offer an unsupported version of the library with limited functionality for free. A commercial, fully supported version will all features enabled is available for purchase on an annual subscription basis. Please refer to Product Snapshot below.
Product: FireDaemon Synkronize
Version: 2.0.0 December 2023
Price: Free - Non-commercial binary-only license without support
$400 - Commercial binary-only license with support per project per year
Includes 2 hours setup and integration support
OS: Windows, C++20 (VC2022 17.7 msvc 14.37)
Features at a Glance
C++ library offering domain specific recurring timepoint generation.
Simple enumerators (labels) denoting patterns that define how to generate timepoints (e.g. every hour on a specific weekday).
Simple enumerators (labels) denoting where to move on the timeline, given a reference timepoint (e.g. ‘now’).
Uniform handling of various timescales (units) including seconds, minutes, hours, days, weeks, months and years utilising Gregorian calendars.
Specific and Relative Dates
Uniform handling of specific (i.e. fixed) dates and relative (e.g. 'nth day of week') dates, making it easy to build public holiday schedules for example.
Action and Duration Schedules
Uniform programming interface allowing the specification of action onset schedules (i.e. do task at this point) and duration schedules (i.e. do task between two time points).
Uptime and Downtime Schedules
Uniform programming interface allowing the specification of a duration as either uptime or downtime. You can also confine action schedules to a specific uptime duration.
Specify fixed boundaries when a schedule is valid (i.e. schedule is not valid before the start or after the end of the boundary).
Store the properties of a schedule (timepiece) then create a schedule from the timepiece. Avoids unnecessary coding of each individual schedule.
Multiple, Correlating Time Points Per Schedule
Multiple action or duration points can be combined to form a single schedule with automatic timepoint deduplication.
Create a schedule that executes a task a fixed number of times then invalidates itself.
Schedules are self-validating and designed to handle edge cases.
XML and JSON Serialisation
Save and load schedules in XML or JSON formats.
The library is rigorously unit tested prior to release.