| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package engineio
- import (
- "github.com/googollee/go-engine.io/parser"
- "io"
- "sync"
- )
- type connReader struct {
- *parser.PacketDecoder
- closeChan chan struct{}
- }
- func newConnReader(d *parser.PacketDecoder, closeChan chan struct{}) *connReader {
- return &connReader{
- PacketDecoder: d,
- closeChan: closeChan,
- }
- }
- func (r *connReader) Close() error {
- if r.closeChan == nil {
- return nil
- }
- r.closeChan <- struct{}{}
- r.closeChan = nil
- return nil
- }
- type connWriter struct {
- io.WriteCloser
- locker *sync.Mutex
- }
- func newConnWriter(w io.WriteCloser, locker *sync.Mutex) *connWriter {
- return &connWriter{
- WriteCloser: w,
- locker: locker,
- }
- }
- func (w *connWriter) Close() error {
- defer func() {
- if w.locker != nil {
- w.locker.Unlock()
- w.locker = nil
- }
- }()
- return w.WriteCloser.Close()
- }
|