writer.go 509 B

123456789101112131415161718192021222324252627282930313233
  1. package polling
  2. import (
  3. "errors"
  4. "io"
  5. )
  6. func MakeSendChan() chan bool {
  7. return make(chan bool, 1)
  8. }
  9. type Writer struct {
  10. io.WriteCloser
  11. server *Polling
  12. }
  13. func NewWriter(w io.WriteCloser, server *Polling) *Writer {
  14. return &Writer{
  15. WriteCloser: w,
  16. server: server,
  17. }
  18. }
  19. func (w *Writer) Close() error {
  20. if w.server.getState() != stateNormal {
  21. return errors.New("use of closed network connection")
  22. }
  23. select {
  24. case w.server.sendChan <- true:
  25. default:
  26. }
  27. return w.WriteCloser.Close()
  28. }