55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package hopp
|
|
|
|
import "net"
|
|
import "context"
|
|
import "github.com/quic-go/quic-go"
|
|
|
|
var _ MultiConn = quicMultiConn { }
|
|
type quicMultiConn struct {
|
|
underlying quic.Connection
|
|
}
|
|
|
|
func (conn quicMultiConn) Close() error {
|
|
return conn.underlying.CloseWithError(0, "good bye")
|
|
}
|
|
|
|
func (conn quicMultiConn) LocalAddr() net.Addr {
|
|
return conn.underlying.LocalAddr()
|
|
}
|
|
|
|
func (conn quicMultiConn) RemoteAddr() net.Addr {
|
|
return conn.underlying.RemoteAddr()
|
|
}
|
|
|
|
func (conn quicMultiConn) AcceptStream(ctx context.Context) (Stream, error) {
|
|
strea, err := conn.underlying.AcceptStream(ctx)
|
|
if err != nil { return nil, err }
|
|
return quicStream { underlying: strea }, nil
|
|
}
|
|
|
|
func (conn quicMultiConn) OpenStream() (Stream, error) {
|
|
strea, err := conn.underlying.OpenStream()
|
|
if err != nil { return nil, err }
|
|
return quicStream { underlying: strea }, nil
|
|
}
|
|
|
|
type quicStream struct {
|
|
underlying quic.Stream
|
|
}
|
|
|
|
func (strea quicStream) Read(buffer []byte) (n int, err error) {
|
|
return strea.underlying.Read(buffer)
|
|
}
|
|
|
|
func (strea quicStream) Write(buffer []byte) (n int, err error) {
|
|
return strea.underlying.Read(buffer)
|
|
}
|
|
|
|
func (strea quicStream) Close() error {
|
|
return strea.underlying.Close()
|
|
}
|
|
|
|
func (strea quicStream) ID() int64 {
|
|
return int64(strea.underlying.StreamID())
|
|
}
|