alt/services/worker/internal/contracts/parser_map.go
toki 620ca92e2e refactor: market status parsing과 backtest runtime 흐름 통합
- parser_map.go 업데이트하여 market status 파싱 로직 통일
- protobuf market.proto 변경사항 적용 (market.pb.go, market.pb.dart)
- socket handlers, market, backtest 관련 테스트 및 런타임 코드 개선
- workerclient와 alt-worker main.go 변경사항 반영
- agent-task archive 이동 (01_import_contract_worker_api → archive/2026/06/)
2026-06-03 20:26:56 +09:00

56 lines
2.3 KiB
Go

package contracts
import (
"google.golang.org/protobuf/proto"
altv1 "git.toki-labs.com/toki/alt/packages/contracts/gen/go/alt/v1"
protoSocket "git.toki-labs.com/toki/proto-socket/go"
)
func messageFactories() []func() proto.Message {
return []func() proto.Message{
func() proto.Message { return &altv1.HelloRequest{} },
func() proto.Message { return &altv1.HelloResponse{} },
// market read surface: instruments and bars
func() proto.Message { return &altv1.ListInstrumentsRequest{} },
func() proto.Message { return &altv1.ListInstrumentsResponse{} },
func() proto.Message { return &altv1.ListBarsRequest{} },
func() proto.Message { return &altv1.ListBarsResponse{} },
// market import command: daily bars
func() proto.Message { return &altv1.ImportDailyBarsRequest{} },
func() proto.Message { return &altv1.ImportDailyBarsResponse{} },
// backtest surface: start / list / detail / result / compare
func() proto.Message { return &altv1.StartBacktestRequest{} },
func() proto.Message { return &altv1.StartBacktestResponse{} },
func() proto.Message { return &altv1.GetBacktestRunRequest{} },
func() proto.Message { return &altv1.GetBacktestRunResponse{} },
func() proto.Message { return &altv1.GetBacktestResultRequest{} },
func() proto.Message { return &altv1.GetBacktestResultResponse{} },
func() proto.Message { return &altv1.BacktestResult{} },
func() proto.Message { return &altv1.ListBacktestRunsRequest{} },
func() proto.Message { return &altv1.ListBacktestRunsResponse{} },
func() proto.Message { return &altv1.GetBacktestRunDetailRequest{} },
func() proto.Message { return &altv1.GetBacktestRunDetailResponse{} },
func() proto.Message { return &altv1.CompareBacktestRunsRequest{} },
func() proto.Message { return &altv1.CompareBacktestRunsResponse{} },
}
}
func ParserMap() protoSocket.ParserMap {
factories := messageFactories()
pm := make(protoSocket.ParserMap, len(factories))
for _, factory := range factories {
pm[protoSocket.TypeNameOf(factory())] = parserFor(factory)
}
return pm
}
func parserFor(factory func() proto.Message) func([]byte) (proto.Message, error) {
return func(data []byte) (proto.Message, error) {
msg := factory()
if err := proto.Unmarshal(data, msg); err != nil {
return nil, err
}
return msg, nil
}
}