Skip to content

Commit cf8ff83

Browse files
author
Colin James
committed
Use record type for individual event entries
Further changes to turn tuples into records. Also partially uncurries `collect_events` to make its intended use as a fold more apparent. Signed-off-by: Colin James <[email protected]>
1 parent aff5883 commit cf8ff83

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

ocaml/xapi/xapi_event.ml

+15-12
Original file line numberDiff line numberDiff line change
@@ -525,16 +525,18 @@ let rec next ~__context =
525525
else
526526
rpc_of_events relevant
527527

528-
type entry = string * string * Xapi_database.Db_cache_types.Time.t
528+
type time = Xapi_database.Db_cache_types.Time.t
529+
530+
type entry = {table: string; obj: string; time: time}
529531

530532
type acc = {
531533
creates: entry list
532534
; mods: entry list
533535
; deletes: entry list
534-
; last: Xapi_database.Db_cache_types.Time.t
536+
; last: time
535537
}
536538

537-
let collect_events subs tables last_generation acc table =
539+
let collect_events (subs, tables, last_generation) acc table =
538540
let open Xapi_database in
539541
let open Db_cache_types in
540542
let table_value = TableSet.find table tables in
@@ -544,13 +546,13 @@ let collect_events subs tables last_generation acc table =
544546
let last = max last (max modified deleted) in
545547
let creates =
546548
if created > last_generation then
547-
(table, obj, created) :: creates
549+
{table; obj; time= created} :: creates
548550
else
549551
creates
550552
in
551553
let mods =
552554
if modified > last_generation && not (created > last_generation) then
553-
(table, obj, modified) :: mods
555+
{table; obj; time= modified} :: mods
554556
else
555557
mods
556558
in
@@ -564,7 +566,7 @@ let collect_events subs tables last_generation acc table =
564566
let last = max last (max modified deleted) in
565567
let deletes =
566568
if created <= last_generation then
567-
(table, obj, deleted) :: deletes
569+
{table; obj; time= deleted} :: deletes
568570
else
569571
deletes
570572
in
@@ -603,7 +605,7 @@ let from_inner __context session subs from from_t timer batching =
603605
in
604606
let events =
605607
let initial = {creates= []; mods= []; deletes= []; last= since} in
606-
let folder = collect_events subs tableset since in
608+
let folder = collect_events (subs, tableset, since) in
607609
List.fold_left folder initial tables
608610
in
609611
(msg_gen, messages, tableset, events)
@@ -641,18 +643,18 @@ let from_inner __context session subs from from_t timer batching =
641643
)
642644
in
643645
let {creates; mods; deletes; last} = events in
644-
let event_of op ?snapshot (table, objref, time) =
646+
let event_of op ?snapshot {table; obj; time} =
645647
{
646648
id= Int64.to_string time
647649
; ts= "0.0"
648650
; ty= String.lowercase_ascii table
649651
; op
650-
; reference= objref
652+
; reference= obj
651653
; snapshot
652654
}
653655
in
654656
let events_of ~kind ?(with_snapshot = true) entries acc =
655-
let rec go events ((table, obj, _time) as entry) =
657+
let rec go events ({table; obj; time= _} as entry) =
656658
try
657659
let snapshot =
658660
let serialiser = Eventgen.find_get_record table in
@@ -696,13 +698,14 @@ let from_inner __context session subs from from_t timer batching =
696698
List.fold_left
697699
(fun acc mev ->
698700
let event =
701+
let table = "message" in
699702
match mev with
700703
| Message.Create (_ref, message) ->
701704
event_of `add
702705
?snapshot:(Some (API.rpc_of_message_t message))
703-
("message", Ref.string_of _ref, 0L)
706+
{table; obj= Ref.string_of _ref; time= 0L}
704707
| Message.Del _ref ->
705-
event_of `del ("message", Ref.string_of _ref, 0L)
708+
event_of `del {table; obj= Ref.string_of _ref; time= 0L}
706709
in
707710
event :: acc
708711
)

0 commit comments

Comments
 (0)