mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-04-11 22:33:40 +00:00
Fix cyclomatic complexity check
This commit is contained in:
parent
c3d25bd7cc
commit
9d8c0d66f0
1 changed files with 39 additions and 23 deletions
|
@ -196,37 +196,17 @@ func retrieveEvents(
|
||||||
// Check if earliest event is a backward extremity, i.e. if one of its
|
// Check if earliest event is a backward extremity, i.e. if one of its
|
||||||
// previous events is missing from the database.
|
// previous events is missing from the database.
|
||||||
// Get the earliest retrieved event's parents.
|
// Get the earliest retrieved event's parents.
|
||||||
prevIDs := streamEvents[0].PrevEventIDs()
|
|
||||||
prevs, err := db.Events(ctx, prevIDs)
|
backwardExtremity, err := isBackwardExtremity(ctx, &(streamEvents[0]), db)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Check if we have all of the events we requested. If not, it means we've
|
|
||||||
// reached a backard extremity.
|
|
||||||
var eventInDB, isBackwardExtremity bool
|
|
||||||
var id string
|
|
||||||
// Iterate over the IDs we used in the request.
|
|
||||||
for _, id = range prevIDs {
|
|
||||||
eventInDB = false
|
|
||||||
// Iterate over the events we got in response.
|
|
||||||
for _, ev := range prevs {
|
|
||||||
if ev.EventID() == id {
|
|
||||||
eventInDB = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// One occurrence of one the event's parents not being present in the
|
|
||||||
// database is enough to say that the event is a backward extremity.
|
|
||||||
if !eventInDB {
|
|
||||||
isBackwardExtremity = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var events []gomatrixserverlib.Event
|
var events []gomatrixserverlib.Event
|
||||||
|
|
||||||
// Backfill is needed if we've reached a backward extremity and need more
|
// Backfill is needed if we've reached a backward extremity and need more
|
||||||
// events. It's only needed if the direction is backard.
|
// events. It's only needed if the direction is backard.
|
||||||
if isBackwardExtremity && !isSetLargeEnough && backwardOrdering {
|
if backwardExtremity && !isSetLargeEnough && backwardOrdering {
|
||||||
var pdus []gomatrixserverlib.Event
|
var pdus []gomatrixserverlib.Event
|
||||||
// Only ask the remote server for enough events to reach the limit.
|
// Only ask the remote server for enough events to reach the limit.
|
||||||
pdus, err = backfill(
|
pdus, err = backfill(
|
||||||
|
@ -250,6 +230,42 @@ func retrieveEvents(
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// isBackwardExtremity checks if a given event is a backward extremity. It does
|
||||||
|
// so by checking the presence in the database of all of its parent events, and
|
||||||
|
// consider the event itself a backward extremity if at least one of the parent
|
||||||
|
// events doesn't exist in the database.
|
||||||
|
// Returns an error if there was an issue with talking to the database.
|
||||||
|
func isBackwardExtremity(
|
||||||
|
ctx context.Context, ev *storage.StreamEvent, db *storage.SyncServerDatabase,
|
||||||
|
) (bool, error) {
|
||||||
|
prevIDs := ev.PrevEventIDs()
|
||||||
|
prevs, err := db.Events(ctx, prevIDs)
|
||||||
|
if err != nil {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
// Check if we have all of the events we requested. If not, it means we've
|
||||||
|
// reached a backard extremity.
|
||||||
|
var eventInDB bool
|
||||||
|
var id string
|
||||||
|
// Iterate over the IDs we used in the request.
|
||||||
|
for _, id = range prevIDs {
|
||||||
|
eventInDB = false
|
||||||
|
// Iterate over the events we got in response.
|
||||||
|
for _, ev := range prevs {
|
||||||
|
if ev.EventID() == id {
|
||||||
|
eventInDB = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// One occurrence of one the event's parents not being present in the
|
||||||
|
// database is enough to say that the event is a backward extremity.
|
||||||
|
if !eventInDB {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
// backfill performs a backfill request over the federation on another
|
// backfill performs a backfill request over the federation on another
|
||||||
// homeserver in the room.
|
// homeserver in the room.
|
||||||
// See: https://matrix.org/docs/spec/server_server/unstable.html#get-matrix-federation-v1-backfill-roomid
|
// See: https://matrix.org/docs/spec/server_server/unstable.html#get-matrix-federation-v1-backfill-roomid
|
||||||
|
|
Loading…
Reference in a new issue