queueMessage queues an SSEMessage to be written
(msg SSEMessage)
| 246 | |
| 247 | // queueMessage queues an SSEMessage to be written |
| 248 | func (h *SSEHandlerCh) queueMessage(msg SSEMessage) error { |
| 249 | h.lock.Lock() |
| 250 | closed := h.closed |
| 251 | h.lock.Unlock() |
| 252 | |
| 253 | if closed { |
| 254 | return fmt.Errorf("SSE handler is closed") |
| 255 | } |
| 256 | |
| 257 | if err := h.Err(); err != nil { |
| 258 | return err |
| 259 | } |
| 260 | |
| 261 | select { |
| 262 | case h.writeCh <- msg: |
| 263 | return nil |
| 264 | case <-h.ctx.Done(): |
| 265 | return h.ctx.Err() |
| 266 | default: |
| 267 | return fmt.Errorf("write channel is full") |
| 268 | } |
| 269 | } |
| 270 | |
| 271 | // WriteData queues data to be written in SSE format |
| 272 | func (h *SSEHandlerCh) WriteData(data string) error { |
no test coverage detected