123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package yamux
- import (
- "fmt"
- "net"
- )
- // hasAddr is used to get the address from the underlying connection
- type hasAddr interface {
- LocalAddr() net.Addr
- RemoteAddr() net.Addr
- }
- // yamuxAddr is used when we cannot get the underlying address
- type yamuxAddr struct {
- Addr string
- }
- func (*yamuxAddr) Network() string {
- return "yamux"
- }
- func (y *yamuxAddr) String() string {
- return fmt.Sprintf("yamux:%s", y.Addr)
- }
- // Addr is used to get the address of the listener.
- func (s *Session) Addr() net.Addr {
- return s.LocalAddr()
- }
- // LocalAddr is used to get the local address of the
- // underlying connection.
- func (s *Session) LocalAddr() net.Addr {
- addr, ok := s.conn.(hasAddr)
- if !ok {
- return &yamuxAddr{"local"}
- }
- return addr.LocalAddr()
- }
- // RemoteAddr is used to get the address of remote end
- // of the underlying connection
- func (s *Session) RemoteAddr() net.Addr {
- addr, ok := s.conn.(hasAddr)
- if !ok {
- return &yamuxAddr{"remote"}
- }
- return addr.RemoteAddr()
- }
- // LocalAddr returns the local address
- func (s *Stream) LocalAddr() net.Addr {
- return s.session.LocalAddr()
- }
- // RemoteAddr returns the remote address
- func (s *Stream) RemoteAddr() net.Addr {
- return s.session.RemoteAddr()
- }
|