Example #1
0
int Dispatcher::spinOnce()
{
    int num_frames_processed = 0;

    while (true)
    {
        CanIOFlags flags = 0;
        CanRxFrame frame;
        const int res = canio_.receive(frame, MonotonicTime(), flags);
        if (res < 0)
        {
            return res;
        }
        else if (res > 0)
        {
            if (flags & CanIOFlagLoopback)
            {
                handleLoopbackFrame(frame);
            }
            else
            {
                num_frames_processed++;
                handleFrame(frame);
            }
            notifyRxFrameListener(frame, flags);
        }
        else
        {
            break;      // No frames left
        }
    }

    return num_frames_processed;
}
Example #2
0
 int publish(const DataStruct& message, TransferType transfer_type, NodeID dst_node_id, TransferID tid,
             MonotonicTime blocking_deadline = MonotonicTime())
 {
     return genericPublish(message, transfer_type, dst_node_id, &tid, blocking_deadline);
 }