/** Check timestamp and make checkpoint if timestamp is large enough. * @returns error code and flag that indicates whether or not new checkpoint is created */ std::tuple<aku_Status, int> Sequencer::check_timestamp_(aku_Timestamp ts) { aku_Status error_code = AKU_SUCCESS; if (ts < top_timestamp_) { auto delta = top_timestamp_ - ts; if (delta > window_size_) { error_code = AKU_ELATE_WRITE; } return make_tuple(error_code, 0); } auto point = get_checkpoint_(ts); int flag = 0; if (point > checkpoint_) { // Create new checkpoint flag = make_checkpoint_(point); } top_timestamp_ = ts; return make_tuple(error_code, flag); }
/** Check timestamp and make checkpoint if timestamp is large enough. * @returns error code and flag that indicates whether or not new checkpoint is created */ std::tuple<int, int> Sequencer::check_timestamp_(aku_Timestamp ts) { int error_code = AKU_SUCCESS; if (ts < top_timestamp_) { auto delta = top_timestamp_ - ts; if (delta > window_size_) { error_code = AKU_ELATE_WRITE; } return make_tuple(error_code, 0); } auto point = get_checkpoint_(ts); int flag = 0; if (point > checkpoint_) { // Create new checkpoint flag = make_checkpoint_(point); if (flag % 2 == 0) { // Previous checkpoint not completed error_code = AKU_EBUSY; } } top_timestamp_ = ts; return make_tuple(error_code, flag); }