We are pleased to announce the release of our C++ Tracker version 0.3.0.
This release brings support for desktop Linux by introducing a cURL HTTP request adapter and adding Linux-compatible helpers for retrieving desktop context and generating UUIDs.
Event classes have also been refactored to share a common Event
base class and remove their nesting inside the Tracker
class. They can now be tracked using a common tracker->track(event)
method which returns the tracked event ID.
There are also improvements in the Emitter, which now provides a request callback with a list of emitted event IDs and their emit status. It also adds no-retry HTTP status codes (400, 401, 403, 410, and 422) that, when received from the Collector, result in event requests not being retried and the events being dropped. This retry behavior is configurable in the Emitter.
Finally, the storage layer is now customizable โ you can define custom EventStore
and SessionStore
implementations for the event queue and session storage. The tracker still provides an SQLite option named SqliteStorage
.
Enhancements:
- Add support for Linux in HTTP client (#5)
- Add CI build on Linux and update build instructions (#50)
- Add support for Linux in desktop context (#47)
- Add support for Linux when generating UUIDs (#46)
- Use a common Event base class for all event types (#51)
- Add emitter callback function (#7)
- Add customizable no-retry HTTP status codes (#54)
- Expose an interface for storage and make it configurable (#48)
- Add a header file that includes all the published APIs (#55)
Upgrading to v0.3.0
There are a few breaking changes in this release. Please make sure to:
- Remove the
Tracker::
prefix when referring to event types, e.g., useScreenViewEvent()
instead ofTracker::ScreenViewEvent()
. - Use the common
tracker->track(event)
function to track events (instead oftracker->track_self_describing_event(event)
,tracker->track_screen_view(event)
, โฆ). - Use the
event.set_context(context)
andevent.set_true_timestamp(tt)
setters instead of accessingevent.contexts
andevent.true_timestamp
directly. - Event IDs are no longer accessible from the event objects but are returned from the
tracker->track(event)
function. -
Emitter
andClientSession
no longer accept database path string for SQLite database location but require an instance ofSqliteStorage
(or other storage implementation, see the docs). - Use
#include "snowplow.hpp"
to import all public APIs of the tracker instead of including individual files.
Documentation: C++ Tracker - Snowplow Docs
On GitHub: Release Version 0.3.0 ยท snowplow/snowplow-cpp-tracker ยท GitHub