add cache

This commit is contained in:
GitProtogen
2026-03-16 13:49:11 +01:00
parent 83d2105b4e
commit 66e189d247
3 changed files with 69 additions and 2 deletions
+44
View File
@@ -0,0 +1,44 @@
package main
import "sync"
var (
mu sync.RWMutex
ChatGroups = make(map[uint32]ChatGroup)
Clients = make(map[uint32]Client)
ClientsMap = make(map[uint32]map[uint32]*Client)
)
func AddGroupToCache(chatGroup *ChatGroup) {
mu.Lock()
defer mu.Unlock()
ChatGroups[chatGroup.Id] = *chatGroup
ClientsMap[chatGroup.Id] = make(map[uint32]*Client)
}
func RemoveGroupFromCache(chatGroup *ChatGroup) {
mu.Lock()
defer mu.Unlock()
delete(ChatGroups, chatGroup.Id)
delete(ClientsMap, chatGroup.Id)
}
func AddUserToCache(client *Client) {
mu.Lock()
defer mu.Unlock()
for _, groupIn := range client.Groups {
if clients, ok := ClientsMap[groupIn.Id]; ok {
clients[client.Id] = client
}
}
}
func RemoveClientFromCache(client *Client) {
mu.Lock()
defer mu.Unlock()
for _, groupIn := range client.Groups {
if clients, ok := ClientsMap[groupIn.Id]; ok {
delete(clients, client.Id)
}
}
}
+21
View File
@@ -0,0 +1,21 @@
package main
import "github.com/coder/websocket"
type Client struct {
Password string
Name string
Pronouns string
Groups [12]*ChatGroup
Connection *websocket.Conn
Id uint32
Color [3]byte
IsAuthenticated bool
}
type ChatGroup struct {
Name string
Members [32]*Client
Id uint32
Color [3]byte
}
+3 -1
View File
@@ -38,5 +38,7 @@ func ServeConnection(responseWriter http.ResponseWriter, request *http.Request)
} }
} }
func handleUnauthenticatedMessage() {} func handleUnauthenticatedMessage() {
}
func handleAuthenticatedMessage() {} func handleAuthenticatedMessage() {}