test/net-pool #2

Merged
mats merged 11 commits from test/net-pool into main 2024-11-23 15:30:38 +01:00
Showing only changes of commit 9b137e2ff1 - Show all commits

View File

@@ -1,8 +1,10 @@
package main
import (
"bufio"
"encoding/binary"
"fmt"
"io"
"log"
"net"
"time"
@@ -130,6 +132,7 @@ func WaitForFrame(conn net.Conn, resultChan chan<- FrameWithPayload) error {
payload := make([]byte, frame.Length)
_, err = conn.Read(payload)
if err != nil {
conn.Close()
return err
}
resultChan <- FrameWithPayload{
@@ -169,21 +172,28 @@ func (c *Connection) Listen() (*GenericListener, error) {
}
const (
MaxCallDuration = 900 * time.Millisecond
MaxCallDuration = 300 * time.Millisecond
ListenerKeepalive = 5 * time.Second
)
func (l *GenericListener) HandleConnection(conn net.Conn) {
for !l.StopListener {
ch := make(chan FrameWithPayload, 1)
//conn.SetReadDeadline(time.Now().Add(MaxCallDuration))
go WaitForFrame(conn, ch)
frame := <-ch
err := l.HandleFrame(conn, &frame)
if err != nil {
log.Fatalf("Error in handler: %v\n", err)
}
var err error
var frame Frame
b := bufio.NewReader(conn)
for err != io.EOF {
err = binary.Read(b, binary.LittleEndian, &frame)
if err == nil && frame.IsValid() {
payload := make([]byte, frame.Length)
_, err = b.Read(payload)
if err == nil {
err = l.HandleFrame(conn, &FrameWithPayload{
Frame: frame,
Payload: payload,
})
}
}
}
}