Compare commits

..

4 Commits

Author SHA1 Message Date
Bel LaPointe
60241736c6 valkey-server OR redis-server.sh 2026-02-04 08:38:18 -07:00
Bel LaPointe
8b8fafca21 ctrl-c to close on clients 2026-02-04 08:38:09 -07:00
Bel LaPointe
03b2d35cd3 fix closing 2026-02-04 08:37:55 -07:00
Bel LaPointe
0f52de4204 bufio writer now half speed native not bad 2026-02-04 08:37:37 -07:00
4 changed files with 29 additions and 7 deletions

View File

@@ -72,6 +72,16 @@ func readMessage(reader *bufio.Reader) ([]byte, []any, error) {
}
func readMessageTo(w io.Writer, reader *bufio.Reader) ([]any, error) {
w2 := bufio.NewWriter(w)
defer w2.Flush()
arr, err := _readMessageTo(w2, reader)
if err != nil {
return nil, err
}
return arr, w2.Flush()
}
func _readMessageTo(w io.Writer, reader *bufio.Reader) ([]any, error) {
firstLine, _, err := reader.ReadLine()
if err != nil {
return nil, err
@@ -124,7 +134,7 @@ func readMessageTo(w io.Writer, reader *bufio.Reader) ([]any, error) {
}
var result []any
for i := 0; i < n; i++ {
more, err := readMessageTo(w, reader)
more, err := _readMessageTo(w, reader)
if err != nil {
return nil, err
}

View File

@@ -92,13 +92,14 @@ func (c Config) Close() {
for i := range c.forwards {
if c.forwards[i] != nil {
i := i
go func() {
func() {
c.forwards[i].New = nil
for {
got := c.forwards[i].Get()
if got != nil {
go got.(net.Conn).Close()
if got == nil {
break
}
got.(net.Conn).Close()
}
}()
}

View File

@@ -31,7 +31,6 @@ func listen(ctx context.Context, config Config) error {
} else {
wg.Add(1)
go func() {
defer log.Println("/handle()")
defer wg.Done()
handle(ctx, config, conn)
}()
@@ -50,5 +49,12 @@ func handle(ctx context.Context, config Config, conn net.Conn) {
func _handle(ctx context.Context, config Config, conn net.Conn) error {
defer conn.Close()
ctx, can := context.WithCancel(ctx)
defer can()
go func() {
<-ctx.Done()
conn.Close()
}()
return adapt(ctx, config, conn)
}

View File

@@ -1,9 +1,14 @@
#! /usr/bin/bash
bin=valkey-server
if ! which valkey-server; then
bin=redis-server
fi
d=$(mktemp -d)
mkdir -p $d/1
mkdir -p $d/2
valkey-server --dir $d/1 --port 60113 --logfile $d/1.log &
$bin --dir $d/1 --port 60113 --logfile $d/1.log &
bg=${!}
cleanup() {
kill $bg
@@ -13,5 +18,5 @@ trap cleanup EXIT
sleep 5
echo FORWARDS=127.0.0.1:60113,127.0.0.1:60114
) &
valkey-server --dir $d/2 --port 60114 --logfile $d/2.log
$bin --dir $d/2 --port 60114 --logfile $d/2.log