123456789101112131415161718192021222324252627282930313233343536 |
- package service
- import (
- "io"
- "net"
- )
- type tcpListener struct {
- port uint16
- s *Service
- addr *net.TCPAddr
- accept chan net.Conn
- }
- func (l *tcpListener) Accept() (net.Conn, error) {
- conn, ok := <-l.accept
- if !ok {
- return nil, io.EOF
- }
- return conn, nil
- }
- func (l *tcpListener) Close() error {
- l.s.mu.Lock()
- defer l.s.mu.Unlock()
- delete(l.s.mu.listeners, uint16(l.addr.Port))
- close(l.accept)
- return nil
- }
- // Addr returns the listener's network address.
- func (l *tcpListener) Addr() net.Addr {
- return l.addr
- }
|