top of page

FireDaemon Synkronize

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.

C++ Library for Pattern Based Timepoint Generation of Recurring Tasks

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

Timepoint Generation

C++ library offering domain specific recurring timepoint generation.


Pattern Enumerators

Simple enumerators (labels) denoting patterns that define how to generate timepoints (e.g. every hour on a specific weekday).

Timeline Integration

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.

Activity Boundaries

Specify fixed boundaries when a schedule is valid (i.e. schedule is not valid before the start or after the end of the boundary).

Data-Driven Configuration

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.


Recurrence Limits

Create a schedule that executes a task a fixed number of times then invalidates itself.


Data Sanitisation

Schedules are self-validating and designed to handle edge cases.

XML and JSON Serialisation

Save and load schedules in XML or JSON formats.

Unit Tested

The library is rigorously unit tested prior to release.

bottom of page