1
0
Fork 0
mirror of https://codeberg.org/june64/mrvc.git synced 2026-01-10 16:06:33 +01:00

move counters into RoomInfoTree structure

This bundles all the information nicely in one place.
This commit is contained in:
June 2025-08-17 21:17:05 +02:00
commit d7ca2f4a00
Signed by: june
SSH key fingerprint: SHA256:o9EAq4Y9N9K0pBQeBTqhSDrND5E7oB+60ZNx0U1yPe0

52
main.go
View file

@ -23,39 +23,25 @@ type HomeserverServerVersionInfo struct {
ServerVersionInfo fclient.Version
}
type MaxRoomVersionPath struct {
RoomID id.RoomID
MaxRoomVersion string
}
type ServerPath struct {
RoomID id.RoomID
MaxRoomVersion string
Server string
}
type VersionPath struct {
RoomID id.RoomID
MaxRoomVersion string
Server string
Version string
}
type RoomInfoTree map[id.RoomID](*RoomInfo)
type RoomInfo struct {
MemberCount uint
MaxRoomVersions map[string](*MaxRoomVersionInfo)
}
type MaxRoomVersionInfo struct {
Servers map[string](*ServerInfo)
MemberCount uint
Servers map[string](*ServerInfo)
}
type ServerInfo struct {
Versions map[string](*VersionInfo)
MemberCount uint
Versions map[string](*VersionInfo)
}
type VersionInfo struct {
MemberCount uint
Homeservers map[string](*HomeserverInfo)
}
@ -385,11 +371,6 @@ func main() {
// Info map tree.
roomInfoTree := make(RoomInfoTree)
// Member counters.
membersByRoomID := make(map[id.RoomID]uint)
membersByMaxRoomVersion := make(map[MaxRoomVersionPath]uint)
membersByServerPath := make(map[ServerPath]uint)
membersByVersionPath := make(map[VersionPath]uint)
for roomID, membersByHomeserver := range membersByHomeserverByRoomID {
for hs, members := range membersByHomeserver {
@ -397,13 +378,7 @@ func main() {
maxRoomVersion := getMaxRoomVersion(serverVersionInfo)
// Add to counters.
membersByRoomID[roomID] += members
membersByMaxRoomVersion[MaxRoomVersionPath{roomID, maxRoomVersion}] += members
membersByServerPath[ServerPath{roomID, maxRoomVersion, serverVersionInfo.Server.Name}] += members
membersByVersionPath[VersionPath{roomID, maxRoomVersion, serverVersionInfo.Server.Name, serverVersionInfo.Server.Version}] += members
// Sort into roomInfoTree.
// Sort into roomInfoTree and add to counters.
roomInfo, ok := roomInfoTree[roomID]
if !ok {
roomInfo = &RoomInfo{MaxRoomVersions: make(map[string]*MaxRoomVersionInfo)}
@ -429,13 +404,18 @@ func main() {
homeserverInfo = &HomeserverInfo{}
versionInfo.Homeservers[hs] = homeserverInfo
}
homeserverInfo.MemberCount = members
versionInfo.MemberCount += members
serverInfo.MemberCount += members
maxRoomVersionInfo.MemberCount += members
roomInfo.MemberCount += members
}
}
for roomID, roomInfo := range roomInfoTree {
fmt.Println("Room:")
fmt.Printf(" %s -> %d\n", givenRoomsByRoomID[roomID], membersByRoomID[roomID])
fmt.Printf(" %s -> %d\n", givenRoomsByRoomID[roomID], roomInfo.MemberCount)
fmt.Println("Version Support:")
@ -447,7 +427,7 @@ func main() {
for _, maxRoomVersionKey := range maxRoomVersionKeys {
maxRoomVersionInfo := roomInfo.MaxRoomVersions[maxRoomVersionKey]
fmt.Printf(" %s -> %d\n", maxRoomVersionKey, membersByMaxRoomVersion[MaxRoomVersionPath{roomID, maxRoomVersionKey}])
fmt.Printf(" %s -> %d\n", maxRoomVersionKey, maxRoomVersionInfo.MemberCount)
serverKeys := make([]string, 0, len(maxRoomVersionInfo.Servers))
for key := range maxRoomVersionInfo.Servers {
@ -457,7 +437,7 @@ func main() {
for _, serverKey := range serverKeys {
serverInfo := maxRoomVersionInfo.Servers[serverKey]
fmt.Printf(" %s -> %d\n", serverKey, membersByServerPath[ServerPath{roomID, maxRoomVersionKey, serverKey}])
fmt.Printf(" %s -> %d\n", serverKey, serverInfo.MemberCount)
versionKeys := make([]string, 0, len(serverInfo.Versions))
for key := range serverInfo.Versions {
@ -467,7 +447,7 @@ func main() {
for _, versionKey := range versionKeys {
versionInfo := serverInfo.Versions[versionKey]
fmt.Printf(" %s -> %d\n", versionKey, membersByVersionPath[VersionPath{roomID, maxRoomVersionKey, serverKey, versionKey}])
fmt.Printf(" %s -> %d\n", versionKey, versionInfo.MemberCount)
if config.PrintHomeserverMemberCount {
homeserverKeys := make([]string, 0, len(versionInfo.Homeservers))