major refactor
All checks were successful
Build and Publish / BuildAndDeployAmd64 (push) Successful in 28s
Build and Publish / BuildAndDeploy (push) Successful in 2m18s

This commit is contained in:
matst80
2024-11-13 21:56:40 +01:00
parent 9f7c8227c2
commit abf561c3fe
20 changed files with 310 additions and 1292 deletions

View File

@@ -27,8 +27,8 @@ var (
)
type GrainPool interface {
Process(id CartId, messages ...Message) (*CallResult, error)
Get(id CartId) (*CallResult, error)
Process(id CartId, messages ...Message) (*FrameWithPayload, error)
Get(id CartId) (*FrameWithPayload, error)
}
type Ttl struct {
@@ -142,23 +142,29 @@ func (p *GrainLocalPool) GetGrain(id CartId) (*CartGrain, error) {
return grain, err
}
func (p *GrainLocalPool) Process(id CartId, messages ...Message) ([]byte, error) {
func (p *GrainLocalPool) Process(id CartId, messages ...Message) (*FrameWithPayload, error) {
grain, err := p.GetGrain(id)
var result *FrameWithPayload
if err == nil && grain != nil {
for _, message := range messages {
_, err = grain.HandleMessage(&message, false)
result, err = grain.HandleMessage(&message, false)
}
}
if err != nil {
return nil, err
return result, err
}
return json.Marshal(grain)
return result, err
}
func (p *GrainLocalPool) Get(id CartId) ([]byte, error) {
func (p *GrainLocalPool) Get(id CartId) (*FrameWithPayload, error) {
grain, err := p.GetGrain(id)
if err != nil {
return nil, err
}
return json.Marshal(grain)
data, err := json.Marshal(grain)
if err != nil {
return nil, err
}
ret := MakeFrameWithPayload(0, 200, data)
return &ret, nil
}