in go/greeter/greeter.go [47:77]
func (p *Person) Invoke(ctx statefun.Context, message statefun.Message) error {
// update the visit count.
var visits int32
ctx.Storage().Get(p.Visits, &visits)
visits += 1
fmt.Printf("seen %d", visits)
ctx.Storage().Set(p.Visits, visits)
// enrich the request with the number of visits.
var request GreetRequest
if err := message.As(GreetRequestType, &request); err != nil {
return fmt.Errorf("failed to deserialize greet reqeuest: %w", err)
}
request.Visits = visits
// next, we will forward a message to a special greeter function,
// that will compute a personalized greeting based on the number
// of visits that this person has been seen.
ctx.Send(statefun.MessageBuilder{
Target: statefun.Address{
FunctionType: GreeterTypeName,
Id: request.Name,
},
Value: request,
ValueType: GreetRequestType,
})
return nil
}