(pkt *stack.PacketBuffer)
| 61 | } |
| 62 | |
| 63 | func (q *queue) Write(pkt *stack.PacketBuffer) tcpip.Error { |
| 64 | q.mu.RLock() |
| 65 | defer q.mu.RUnlock() |
| 66 | if q.closed { |
| 67 | return &tcpip.ErrClosedForSend{} |
| 68 | } |
| 69 | select { |
| 70 | case q.c <- pkt.IncRef(): |
| 71 | return nil |
| 72 | case <-q.closedCh: |
| 73 | pkt.DecRef() |
| 74 | return &tcpip.ErrClosedForSend{} |
| 75 | } |
| 76 | } |
| 77 | |
| 78 | func (q *queue) Drain() int { |
| 79 | c := 0 |