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()) }