gateway_stram.go 884 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package backends
  2. import (
  3. "github.com/flashmob/go-guerrilla/log"
  4. "io"
  5. )
  6. type StreamBackendGateway struct {
  7. BackendGateway
  8. config *StreamBackendConfig
  9. pr *io.PipeReader
  10. pw *io.PipeWriter
  11. }
  12. type StreamBackendConfig struct {
  13. StreamSaveProcess string `json:"stream_save_process,omitempty"`
  14. }
  15. func NewStreamBackend(backendConfig BackendConfig, l log.Logger) (Backend, error) {
  16. b, err := New(backendConfig, l)
  17. if err != nil {
  18. return b, err
  19. }
  20. if bg, ok := b.(*BackendGateway); ok {
  21. sb := new(StreamBackendGateway)
  22. sb.BackendGateway = *bg
  23. return sb, nil
  24. }
  25. return b, err
  26. }
  27. func (gw *StreamBackendGateway) loadConfig(backendConfig BackendConfig) (err error) {
  28. configType := BaseConfig(&StreamBackendConfig{})
  29. bcfg, err := Svc.ExtractConfig(backendConfig, configType)
  30. if err != nil {
  31. return err
  32. }
  33. m := bcfg.(*StreamBackendConfig)
  34. gw.config = m
  35. return nil
  36. }