- Add parser map for contract type resolution - Update socket handlers with new message routing - Add parser map tests - Remove outdated code review and plan docs for G07
56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package socket
|
|
|
|
import (
|
|
protoSocket "git.toki-labs.com/toki/proto-socket/go"
|
|
|
|
altv1 "git.toki-labs.com/toki/alt/packages/contracts/gen/go/alt/v1"
|
|
)
|
|
|
|
type sessionHandler struct {
|
|
requestType string
|
|
register func(*protoSocket.WsClient)
|
|
}
|
|
|
|
func sessionHandlers() []sessionHandler {
|
|
return []sessionHandler{
|
|
helloHandler(),
|
|
}
|
|
}
|
|
|
|
func registerSessionHandlers(client *protoSocket.WsClient) {
|
|
registerHandlers(client, sessionHandlers())
|
|
}
|
|
|
|
func registerHandlers(client *protoSocket.WsClient, handlers []sessionHandler) {
|
|
for _, handler := range handlers {
|
|
if handler.register == nil {
|
|
continue
|
|
}
|
|
handler.register(client)
|
|
}
|
|
}
|
|
|
|
func helloHandler() sessionHandler {
|
|
return sessionHandler{
|
|
requestType: protoSocket.TypeNameOf(&altv1.HelloRequest{}),
|
|
register: func(client *protoSocket.WsClient) {
|
|
protoSocket.AddRequestListenerTyped[*altv1.HelloRequest, *altv1.HelloResponse](&client.Communicator, handleHello)
|
|
},
|
|
}
|
|
}
|
|
|
|
func handleHello(req *altv1.HelloRequest) (*altv1.HelloResponse, error) {
|
|
protocolVersion := req.GetAltProtocolVersion()
|
|
if protocolVersion == "" {
|
|
protocolVersion = defaultAltProtocolVersion
|
|
}
|
|
return &altv1.HelloResponse{
|
|
ServerName: serverName,
|
|
ServerVersion: serverVersion,
|
|
AltProtocolVersion: protocolVersion,
|
|
Capabilities: []string{
|
|
"hello",
|
|
"worker-execution",
|
|
},
|
|
}, nil
|
|
}
|