mirror of
https://github.com/go-i2p/go-sam-go.git
synced 2025-06-07 09:03:18 -04:00
32 lines
659 B
Go
32 lines
659 B
Go
package raw
|
|
|
|
import (
|
|
"github.com/samber/oops"
|
|
)
|
|
|
|
func (s *RawSession) Listen() (*RawListener, error) {
|
|
s.mu.RLock()
|
|
defer s.mu.RUnlock()
|
|
|
|
if s.closed {
|
|
return nil, oops.Errorf("session is closed")
|
|
}
|
|
|
|
logger := log.WithField("id", s.ID())
|
|
logger.Debug("Creating RawListener")
|
|
|
|
listener := &RawListener{
|
|
session: s,
|
|
reader: s.NewReader(),
|
|
acceptChan: make(chan *RawConn, 10), // Buffer for incoming connections
|
|
errorChan: make(chan error, 1),
|
|
closeChan: make(chan struct{}),
|
|
}
|
|
|
|
// Start accepting raw connections in a goroutine
|
|
go listener.acceptLoop()
|
|
|
|
logger.Debug("Successfully created RawListener")
|
|
return listener, nil
|
|
}
|