summaryrefslogtreecommitdiff
path: root/internal/server/server.go
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-11-03 19:33:30 +0200
committerKyren223 <Kyren223@proton.me>2024-11-03 19:33:30 +0200
commitff3140a4089819489130a0908178a63eff20f708 (patch)
treedef568e1deca7461f814e55af7d9e09720e0b0ae /internal/server/server.go
parenta637ea9c335c385985a23510a4174d837fb51faf (diff)
feat: add username and timestamp to messages
Diffstat (limited to 'internal/server/server.go')
-rw-r--r--internal/server/server.go19
1 files changed, 14 insertions, 5 deletions
diff --git a/internal/server/server.go b/internal/server/server.go
index 09f46e4..07cd537 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -147,9 +147,14 @@ func handleConnection(ctx context.Context, conn net.Conn, server *server) {
return
}
- // TODO: replace this with DB query for id
- id := server.Node().Generate()
- sess := session.NewSession(server, addr, id, pubKey)
+ user, err := api.CreateOrGetUser(ctx, server.Node(), pubKey)
+ if err != nil {
+ log.Println(addr, "user creation/fetching error:", err)
+ conn.Close()
+ log.Println(addr, "disconnected")
+ return
+ }
+ sess := session.NewSession(server, addr, user.ID, pubKey)
server.AddSession(sess)
ctx = session.NewContext(ctx, sess)
framer := packet.NewFramer()
@@ -290,11 +295,15 @@ func processRequest(ctx context.Context, request packet.Payload) packet.Payload
assert.Assert(ok, "context in process packet should always have a session")
log.Println(session.Addr(), "processing", request.Type(), "request:", request)
+ // TODO: add a way to measure the time each request/response took and log it
+ // Potentially even separate time for code vs DB operations
switch request := request.(type) {
case *packet.SendMessage:
- return timeout(50 * time.Millisecond, api.SendMessage, ctx, request)
+ return timeout(20*time.Millisecond, api.SendMessage, ctx, request)
case *packet.GetMessagesRange:
- return timeout(100 * time.Millisecond, api.GetMessages, ctx, request)
+ return timeout(50*time.Millisecond, api.GetMessages, ctx, request)
+ case *packet.GetUserByID:
+ return timeout(50*time.Millisecond, api.GetUserById, ctx, request)
default:
return &packet.ErrorMessage{Error: "use of disallowed packet type for request"}
}