go-peer/pkg/network/examples/echo/construct.go
2026-06-01 21:36:46 +07:00

52 lines
1.3 KiB
Go

package main
import (
"context"
"fmt"
"time"
"github.com/number571/go-peer/pkg/crypto/scheme/layer1"
"github.com/number571/go-peer/pkg/network"
"github.com/number571/go-peer/pkg/network/conn"
"github.com/number571/go-peer/pkg/storage/cache"
)
func newNode(serviceAddress string) network.INode {
return network.NewNode(
network.NewSettings(&network.SSettings{
FAddress: serviceAddress,
FMaxConnects: 2,
FConnSettings: connSettings(),
FWriteTimeout: time.Minute,
FReadTimeout: time.Minute,
}),
handler,
cache.NewLRUCache(1<<10),
)
}
func connSettings() conn.ISettings {
return conn.NewSettings(&conn.SSettings{
FMessageSettings: layer1.NewSettings(&layer1.SSettings{}),
FLimitMessageSizeBytes: (1 << 10),
FWaitReadTimeout: time.Hour,
FDialTimeout: time.Minute,
FReadTimeout: time.Minute,
FWriteTimeout: time.Minute,
})
}
var handler = func(ctx context.Context, node network.INode, c conn.IConn, msg layer1.IMessage) error {
resp := fmt.Sprintf("echo: [%s]", string(msg.GetBody()))
_ = c.WriteMessage(
ctx,
layer1.NewMessage(
layer1.NewConstructSettings(&layer1.SConstructSettings{
FSettings: node.GetSettings().GetConnSettings().GetMessageSettings(),
}),
[]byte(resp),
),
)
return nil
}