Hi Justin,
you're absolutely right, I want to do something very very similar to a
jitter buffer.

I 've found some implementations:
https://github.com/icefreedom/jitter_buffer/tree/master/include/jitter_buffer
https://github.com/alpartis/rtp.jitter
but honestly they are so much focused on RTP that are not useful to me.

 It should be easy to write a generic message-oriented re-order container
using a std::map having the timestamp as key and the message as value but
honestly that does not look something high performance (I expect to push
about 1Mpps in and get the same rate in output, at least in average).
Perhaps a possible solution is to couple std::map with Boost memory pool
allocator (
http://www.boost.org/doc/libs/1_65_1/libs/pool/doc/html/boost_pool/pool/interfaces.html)
to decrease memory fragmentation and reduce to zero malloc/free calls

Thanks for the reply
Francesco



2017-12-06 18:54 GMT+01:00 Justin Karneges <[email protected]>:

> Hi,
>
> It sounds like you need logic similar to a jitter buffer, which is
> commonly used in RTP media streaming (voip / TV airwaves).
>
> Basically, you have a time buffer (say 300 milliseconds) that timestamped
> messages are held in before processing. Each message sits in this queue for
> the defined time limit, and if any other messages arrive during that time
> then the messages are sorted by their timestamps. Once the time limit
> elapses for a message, it becomes available for reading. Note that this
> approach introduces a fixed amount of latency (e.g. in the case of a 300ms
> buffer, messages will run 300ms behind).
>
> I don't have any libraries to suggest, but you might look around for
> jitter buffer implementations as inspiration.
>
> Justin
>
> On Wed, Dec 6, 2017, at 03:55 AM, Francesco wrote:
>
> Hi all,
> As you know when using PUB/SUB model the order of arrival of messages at
> SUB-side cannot be garantueed and generally speaking, the SUB will receive
> messages out of order. This is a well known problem, see e.g.:
>   https://cloud.google.com/pubsub/docs/ordering
>
> My question is: in case in the SUB you need strict time ordering, are you
> aware of any good C++ implementation of a reordering queue?
>
> I used for other purposes moodycamel's queue (http://moodycamel.com/blog/
> 2013/a-fast-lock-free-queue-for-c++) which is thread-safe but it does not
> perform time-reordering.
>
> Thanks!
>
> Francesco
>
>
> *_______________________________________________*
> zeromq-dev mailing list
> [email protected]
> https://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
>
> _______________________________________________
> zeromq-dev mailing list
> [email protected]
> https://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
_______________________________________________
zeromq-dev mailing list
[email protected]
https://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to