state_context.go 652 B

12345678910111213141516171819202122232425262728293031
  1. package states
  2. import (
  3. "github.com/emqx/kuiper/xstream/api"
  4. )
  5. type StateType int
  6. const (
  7. MEMORY StateType = iota
  8. )
  9. type StateContext interface {
  10. IncrCounter(key string, amount int) error
  11. GetCounter(key string) (int, error)
  12. PutState(key string, value interface{}) error
  13. GetState(key string) (interface{}, error)
  14. DeleteState(key string) error
  15. }
  16. // If StateType is invalid, return a
  17. func NewStateContext(st StateType, logger api.Logger) StateContext {
  18. switch st {
  19. case MEMORY:
  20. return newMemoryState()
  21. default:
  22. logger.Warnf("request for invalid state type %d, return MemoryState instead", st)
  23. return newMemoryState()
  24. }
  25. return nil
  26. }