SObjectizer-5.5.22 and so_5_extra-1.1.0

2018.11.07

SObjectizer has been updated to version 5.5.23 and so_5_extra has been updated to version 1.2.0.

There is no too much new changes in SObjectizer-5.5.23, but there is the building block for the more interesting features from so_5_extra-1.2.0. It is enveloped messages feature (see [so-5.5 In-depth - Enveloped Messages] for more details). This feature allows to wrap a message into a special envelope. Such envelope can hold additional information about the message and can perform additional actions upon delivery of the message.

The full list of SObjectizer-5.5.23 changes can be found here: [so-5.5.23 Version Info]

Attention. This feature extends the so_5::abstract_message_box_t interface and if you have written your own custom mboxes you have to upgrade them and implement do_deliver_enveloped_msg method.

The so_5_extra project received several new additions in version 1.2.0.

There is a new class so_5::extra::mboxes::proxy::simple_t for simplification of creation of custom mboxes. See [so5extra 1.2 Proxy Mbox] for more details.

There is a new namespace so_5::extra::revocable_msg with tools for sending revocable messages. For example:

auto id = so_5::extra::revocable_msg::send(mbox, ...);
... // Some other actions.
if(some_condition())
   // Message should be revoked.
   id.revoke(); // If message is not delivered yet it will be revoked.

See [so5extra 1.2 Revocable Messages] for more details.

There is a new namespace so_5::extra::revocable_timer with tools for guaranteed revocation of delayed/periodic messages. These tools mimic SObjectizer's send_delayed/send_periodic/timer_id, but they revoke a message even if the message is already in the receiver's queue. For example:

auto id = so_5::extra::revocable_timer::send_periodic(env, mbox, 1s, 2s, ...);
... // Some other actions.
if(some_condition())
   // Periodic message should be cancelled.
   id.release();

See [so5extra 1.2 Revocable Timers] for more details.

There is a new namespace so_5::extra::enveloped_msg with several tools based on enveloped messages feature. For example there is an envelope that controls delivery time for a message:

// A message of type check_user should be delivered in 10s. Or it should be discarded.
// Make the message instance...
so_5::extra::enveloped_msg::make(...)
   // ...now envelope it into a special envelope...
   .envelope(10s)
   // ...and send the envelope with our message inside.
   .send_to(target_mbox);

See [so5extra 1.2 Just Envelope], [so5extra 1.2 Sending of Envelopes] and [so5extra 1.2 Time-Limited Message Delivery] for more details.

The SObjectizer v.5.5.23 can be downloaded from the corresponding Files section or can be checked out from Subversion repository and from mirror on GitHub.

Source code of so_5_extra-1.2.0 can be obtained from the repository or can be downloaded from Files section.