From c3fc27f7a17628dc013dd7399f12a7e1c0297666 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Mon, 30 Oct 2017 12:36:31 +0100 Subject: [PATCH] comments --- app/proxyman/mux/reader.go | 7 +++++++ app/proxyman/mux/session.go | 2 ++ 2 files changed, 9 insertions(+) diff --git a/app/proxyman/mux/reader.go b/app/proxyman/mux/reader.go index af421325d..5b01a4906 100644 --- a/app/proxyman/mux/reader.go +++ b/app/proxyman/mux/reader.go @@ -7,6 +7,7 @@ import ( "v2ray.com/core/common/serial" ) +// ReadMetadata reads FrameMetadata from the given reader. func ReadMetadata(reader io.Reader) (*FrameMetadata, error) { metaLen, err := serial.ReadUint16(reader) if err != nil { @@ -25,11 +26,13 @@ func ReadMetadata(reader io.Reader) (*FrameMetadata, error) { return ReadFrameFrom(b.Bytes()) } +// PacketReader is an io.Reader that reads whole chunk of Mux frames every time. type PacketReader struct { reader io.Reader eof bool } +// NewPacketReader creates a new PacketReader. func NewPacketReader(reader io.Reader) *PacketReader { return &PacketReader{ reader: reader, @@ -37,6 +40,7 @@ func NewPacketReader(reader io.Reader) *PacketReader { } } +// Read implements buf.Reader. func (r *PacketReader) Read() (buf.MultiBuffer, error) { if r.eof { return nil, io.EOF @@ -61,11 +65,13 @@ func (r *PacketReader) Read() (buf.MultiBuffer, error) { return buf.NewMultiBufferValue(b), nil } +// StreamReader reads Mux frame as a stream. type StreamReader struct { reader io.Reader leftOver int } +// NewStreamReader creates a new StreamReader. func NewStreamReader(reader io.Reader) *StreamReader { return &StreamReader{ reader: reader, @@ -73,6 +79,7 @@ func NewStreamReader(reader io.Reader) *StreamReader { } } +// Read implmenets buf.Reader. func (r *StreamReader) Read() (buf.MultiBuffer, error) { if r.leftOver == 0 { r.leftOver = -1 diff --git a/app/proxyman/mux/session.go b/app/proxyman/mux/session.go index 4e425f84f..8704a0d43 100644 --- a/app/proxyman/mux/session.go +++ b/app/proxyman/mux/session.go @@ -122,6 +122,7 @@ func (m *SessionManager) Close() { m.sessions = nil } +// Session represents a client connection in a Mux connection. type Session struct { input ray.InputStream output ray.OutputStream @@ -137,6 +138,7 @@ func (s *Session) Close() { s.parent.Remove(s.ID) } +// NewReader creates a buf.Reader based on the transfer type of this Session. func (s *Session) NewReader(reader io.Reader) buf.Reader { if s.transferType == protocol.TransferTypeStream { return NewStreamReader(reader)