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:
parent
77d5d33c45
commit
d7ca2f4a00
1 changed files with 16 additions and 36 deletions
52
main.go
52
main.go
|
|
@ -23,39 +23,25 @@ type HomeserverServerVersionInfo struct {
|
||||||
ServerVersionInfo fclient.Version
|
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 RoomInfoTree map[id.RoomID](*RoomInfo)
|
||||||
|
|
||||||
type RoomInfo struct {
|
type RoomInfo struct {
|
||||||
|
MemberCount uint
|
||||||
MaxRoomVersions map[string](*MaxRoomVersionInfo)
|
MaxRoomVersions map[string](*MaxRoomVersionInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
type MaxRoomVersionInfo struct {
|
type MaxRoomVersionInfo struct {
|
||||||
Servers map[string](*ServerInfo)
|
MemberCount uint
|
||||||
|
Servers map[string](*ServerInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
type ServerInfo struct {
|
type ServerInfo struct {
|
||||||
Versions map[string](*VersionInfo)
|
MemberCount uint
|
||||||
|
Versions map[string](*VersionInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
type VersionInfo struct {
|
type VersionInfo struct {
|
||||||
|
MemberCount uint
|
||||||
Homeservers map[string](*HomeserverInfo)
|
Homeservers map[string](*HomeserverInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -385,11 +371,6 @@ func main() {
|
||||||
|
|
||||||
// Info map tree.
|
// Info map tree.
|
||||||
roomInfoTree := make(RoomInfoTree)
|
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 roomID, membersByHomeserver := range membersByHomeserverByRoomID {
|
||||||
for hs, members := range membersByHomeserver {
|
for hs, members := range membersByHomeserver {
|
||||||
|
|
@ -397,13 +378,7 @@ func main() {
|
||||||
|
|
||||||
maxRoomVersion := getMaxRoomVersion(serverVersionInfo)
|
maxRoomVersion := getMaxRoomVersion(serverVersionInfo)
|
||||||
|
|
||||||
// Add to counters.
|
// Sort into roomInfoTree and 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.
|
|
||||||
roomInfo, ok := roomInfoTree[roomID]
|
roomInfo, ok := roomInfoTree[roomID]
|
||||||
if !ok {
|
if !ok {
|
||||||
roomInfo = &RoomInfo{MaxRoomVersions: make(map[string]*MaxRoomVersionInfo)}
|
roomInfo = &RoomInfo{MaxRoomVersions: make(map[string]*MaxRoomVersionInfo)}
|
||||||
|
|
@ -429,13 +404,18 @@ func main() {
|
||||||
homeserverInfo = &HomeserverInfo{}
|
homeserverInfo = &HomeserverInfo{}
|
||||||
versionInfo.Homeservers[hs] = homeserverInfo
|
versionInfo.Homeservers[hs] = homeserverInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
homeserverInfo.MemberCount = members
|
homeserverInfo.MemberCount = members
|
||||||
|
versionInfo.MemberCount += members
|
||||||
|
serverInfo.MemberCount += members
|
||||||
|
maxRoomVersionInfo.MemberCount += members
|
||||||
|
roomInfo.MemberCount += members
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for roomID, roomInfo := range roomInfoTree {
|
for roomID, roomInfo := range roomInfoTree {
|
||||||
fmt.Println("Room:")
|
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:")
|
fmt.Println("Version Support:")
|
||||||
|
|
||||||
|
|
@ -447,7 +427,7 @@ func main() {
|
||||||
for _, maxRoomVersionKey := range maxRoomVersionKeys {
|
for _, maxRoomVersionKey := range maxRoomVersionKeys {
|
||||||
maxRoomVersionInfo := roomInfo.MaxRoomVersions[maxRoomVersionKey]
|
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))
|
serverKeys := make([]string, 0, len(maxRoomVersionInfo.Servers))
|
||||||
for key := range maxRoomVersionInfo.Servers {
|
for key := range maxRoomVersionInfo.Servers {
|
||||||
|
|
@ -457,7 +437,7 @@ func main() {
|
||||||
for _, serverKey := range serverKeys {
|
for _, serverKey := range serverKeys {
|
||||||
serverInfo := maxRoomVersionInfo.Servers[serverKey]
|
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))
|
versionKeys := make([]string, 0, len(serverInfo.Versions))
|
||||||
for key := range serverInfo.Versions {
|
for key := range serverInfo.Versions {
|
||||||
|
|
@ -467,7 +447,7 @@ func main() {
|
||||||
for _, versionKey := range versionKeys {
|
for _, versionKey := range versionKeys {
|
||||||
versionInfo := serverInfo.Versions[versionKey]
|
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 {
|
if config.PrintHomeserverMemberCount {
|
||||||
homeserverKeys := make([]string, 0, len(versionInfo.Homeservers))
|
homeserverKeys := make([]string, 0, len(versionInfo.Homeservers))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue