listener.go 912 B

1234567891011121314151617181920212223242526272829303132333435
  1. package httpsession
  2. import "errors"
  3. type AfterCreatedListener interface {
  4. OnAfterCreated(*Session)
  5. }
  6. type BeforeReleaseListener interface {
  7. OnBeforeRelease(*Session)
  8. }
  9. func (manager *Manager) AddListener(listener interface{}) error {
  10. switch listener.(type) {
  11. case AfterCreatedListener:
  12. manager.afterCreatedListeners[listener.(AfterCreatedListener)] = true
  13. case BeforeReleaseListener:
  14. manager.beforeReleaseListeners[listener.(BeforeReleaseListener)] = true
  15. default:
  16. return errors.New("Unknow listener type")
  17. }
  18. return nil
  19. }
  20. func (manager *Manager) RemoveListener(listener interface{}) error {
  21. switch listener.(type) {
  22. case AfterCreatedListener:
  23. delete(manager.afterCreatedListeners, listener.(AfterCreatedListener))
  24. case BeforeReleaseListener:
  25. delete(manager.beforeReleaseListeners, listener.(BeforeReleaseListener))
  26. default:
  27. return errors.New("Unknow listener type")
  28. }
  29. return nil
  30. }