Skip to content

Commit

Permalink
chore: guard the payload logical time update instead of writing many …
Browse files Browse the repository at this point in the history
…times
  • Loading branch information
kapeps committed Jan 2, 2025
1 parent a7d583f commit 53a5594
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions lib/syskit/log/datastore/normalize.rb
Original file line number Diff line number Diff line change
Expand Up @@ -110,25 +110,28 @@ def create_block_stream
Pocolog::BlockStream.new(@wio.dup)
end

def update_raw_payload_logical_time(raw_payload, logical_time)
# Logical time are bytes from 8..15
raw_payload[8..11] = [logical_time.tv_sec].pack("V")
raw_payload[12..15] = [logical_time.tv_usec].pack("V")
raw_payload
end

def add_data_block(rt_time, lg_time, raw_data, raw_payload)
@stream_size += 1

write raw_data[0, 2]
write ZERO_BYTE
write raw_data[4..-1]

# Real time are bytes from 0..7
write raw_payload[0..7]
# Logical time are bytes from 8..15
logical_time = extract_logical_time(raw_payload)
if logical_time
write [logical_time.tv_sec].pack("V")
write [logical_time.tv_usec].pack("V")
lg_time = logical_time.microseconds
else
write raw_payload[8..15]
raw_payload = update_raw_payload_logical_time(
raw_payload, logical_time
)
end
write raw_payload[16..-1]
write raw_payload

@interval_rt[0] ||= rt_time
@interval_rt[1] = rt_time
Expand Down

0 comments on commit 53a5594

Please sign in to comment.