From 79ba43bbdbd3ddf148619130ac63dde36faf95ae Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sat, 16 Apr 2016 18:34:16 +0700 Subject: [PATCH] move all frames to separate package --- example/main.go | 9 +++++---- ack_frame.go => frames/ack_frame.go | 2 +- ack_frame_test.go => frames/ack_frame_test.go | 2 +- .../connection_close_frame.go | 2 +- .../connection_close_frame_test.go | 2 +- frame.go => frames/frame.go | 2 +- frames/frames_suite_test.go | 13 +++++++++++++ .../stop_waiting_frame.go | 2 +- .../stop_waiting_frame_test.go | 2 +- stream_frame.go => frames/stream_frame.go | 2 +- .../stream_frame_test.go | 2 +- session.go | 17 +++++++++-------- 12 files changed, 36 insertions(+), 21 deletions(-) rename ack_frame.go => frames/ack_frame.go (99%) rename ack_frame_test.go => frames/ack_frame_test.go (99%) rename connection_close_frame.go => frames/connection_close_frame.go (98%) rename connection_close_frame_test.go => frames/connection_close_frame_test.go (98%) rename frame.go => frames/frame.go (85%) create mode 100644 frames/frames_suite_test.go rename stop_waiting_frame.go => frames/stop_waiting_frame.go (98%) rename stop_waiting_frame_test.go => frames/stop_waiting_frame_test.go (97%) rename stream_frame.go => frames/stream_frame.go (99%) rename stream_frame_test.go => frames/stream_frame_test.go (99%) diff --git a/example/main.go b/example/main.go index 29411e505..3c1c801f0 100644 --- a/example/main.go +++ b/example/main.go @@ -9,6 +9,7 @@ import ( "golang.org/x/net/http2/hpack" "github.com/lucas-clemente/quic-go" + "github.com/lucas-clemente/quic-go/frames" "github.com/lucas-clemente/quic-go/protocol" ) @@ -31,7 +32,7 @@ func main() { } } -func handleStream(frame *quic.StreamFrame) []quic.Frame { +func handleStream(frame *frames.StreamFrame) []frames.Frame { h2r := bytes.NewReader(frame.Data) var reply bytes.Buffer h2framer := http2.NewFramer(&reply, h2r) @@ -53,17 +54,17 @@ func handleStream(frame *quic.StreamFrame) []quic.Frame { EndHeaders: true, BlockFragment: replyHeaders.Bytes(), }) - headerStreamFrame := &quic.StreamFrame{ + headerStreamFrame := &frames.StreamFrame{ StreamID: frame.StreamID, Data: reply.Bytes(), FinBit: true, } - dataStreamFrame := &quic.StreamFrame{ + dataStreamFrame := &frames.StreamFrame{ StreamID: h2frame.Header().StreamID, Data: []byte("Hello World!"), FinBit: true, } - return []quic.Frame{headerStreamFrame, dataStreamFrame} + return []frames.Frame{headerStreamFrame, dataStreamFrame} } diff --git a/ack_frame.go b/frames/ack_frame.go similarity index 99% rename from ack_frame.go rename to frames/ack_frame.go index 966f67966..6080ce402 100644 --- a/ack_frame.go +++ b/frames/ack_frame.go @@ -1,4 +1,4 @@ -package quic +package frames import ( "bytes" diff --git a/ack_frame_test.go b/frames/ack_frame_test.go similarity index 99% rename from ack_frame_test.go rename to frames/ack_frame_test.go index af01b52fe..1d9e822f2 100644 --- a/ack_frame_test.go +++ b/frames/ack_frame_test.go @@ -1,4 +1,4 @@ -package quic +package frames import ( "bytes" diff --git a/connection_close_frame.go b/frames/connection_close_frame.go similarity index 98% rename from connection_close_frame.go rename to frames/connection_close_frame.go index d9eca2bc9..9d4847146 100644 --- a/connection_close_frame.go +++ b/frames/connection_close_frame.go @@ -1,4 +1,4 @@ -package quic +package frames import ( "bytes" diff --git a/connection_close_frame_test.go b/frames/connection_close_frame_test.go similarity index 98% rename from connection_close_frame_test.go rename to frames/connection_close_frame_test.go index cb94a87e8..5e50e04c0 100644 --- a/connection_close_frame_test.go +++ b/frames/connection_close_frame_test.go @@ -1,4 +1,4 @@ -package quic +package frames import ( "bytes" diff --git a/frame.go b/frames/frame.go similarity index 85% rename from frame.go rename to frames/frame.go index db21aa5ec..44a4f1277 100644 --- a/frame.go +++ b/frames/frame.go @@ -1,4 +1,4 @@ -package quic +package frames import "bytes" diff --git a/frames/frames_suite_test.go b/frames/frames_suite_test.go new file mode 100644 index 000000000..0cf2be13a --- /dev/null +++ b/frames/frames_suite_test.go @@ -0,0 +1,13 @@ +package frames + +import ( + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + + "testing" +) + +func TestCrypto(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "Frames Suite") +} diff --git a/stop_waiting_frame.go b/frames/stop_waiting_frame.go similarity index 98% rename from stop_waiting_frame.go rename to frames/stop_waiting_frame.go index 5289d484c..2446b39e8 100644 --- a/stop_waiting_frame.go +++ b/frames/stop_waiting_frame.go @@ -1,4 +1,4 @@ -package quic +package frames import ( "bytes" diff --git a/stop_waiting_frame_test.go b/frames/stop_waiting_frame_test.go similarity index 97% rename from stop_waiting_frame_test.go rename to frames/stop_waiting_frame_test.go index 670cd59ef..b3185d5d8 100644 --- a/stop_waiting_frame_test.go +++ b/frames/stop_waiting_frame_test.go @@ -1,4 +1,4 @@ -package quic +package frames import ( "bytes" diff --git a/stream_frame.go b/frames/stream_frame.go similarity index 99% rename from stream_frame.go rename to frames/stream_frame.go index 5d0fa1fac..afc011505 100644 --- a/stream_frame.go +++ b/frames/stream_frame.go @@ -1,4 +1,4 @@ -package quic +package frames import ( "bytes" diff --git a/stream_frame_test.go b/frames/stream_frame_test.go similarity index 99% rename from stream_frame_test.go rename to frames/stream_frame_test.go index 8de47c996..994990b72 100644 --- a/stream_frame_test.go +++ b/frames/stream_frame_test.go @@ -1,4 +1,4 @@ -package quic +package frames import ( "bytes" diff --git a/session.go b/session.go index bc69bc1e8..9f341556b 100644 --- a/session.go +++ b/session.go @@ -6,12 +6,13 @@ import ( "fmt" "net" + "github.com/lucas-clemente/quic-go/frames" "github.com/lucas-clemente/quic-go/handshake" "github.com/lucas-clemente/quic-go/protocol" ) // StreamCallback gets a stream frame and returns a reply frame -type StreamCallback func(*StreamFrame) []Frame +type StreamCallback func(*frames.StreamFrame) []frames.Frame // A Session is a QUIC session type Session struct { @@ -61,7 +62,7 @@ func (s *Session) HandlePacket(addr *net.UDPAddr, publicHeaderBinary []byte, pub } s.Entropy.Add(publicHeader.PacketNumber, privateFlag&0x01 > 0) - s.SendFrames([]Frame{&AckFrame{ + s.SendFrames([]frames.Frame{&frames.AckFrame{ LargestObserved: uint64(publicHeader.PacketNumber), Entropy: s.Entropy.Get(), }}) @@ -82,7 +83,7 @@ func (s *Session) HandlePacket(addr *net.UDPAddr, publicHeaderBinary []byte, pub if typeByte&0x80 == 0x80 { // STREAM fmt.Println("Detected STREAM") - frame, err := ParseStreamFrame(r) + frame, err := frames.ParseStreamFrame(r) if err != nil { return err } @@ -98,7 +99,7 @@ func (s *Session) HandlePacket(addr *net.UDPAddr, publicHeaderBinary []byte, pub return err } if reply != nil { - s.SendFrames([]Frame{&StreamFrame{StreamID: 1, Data: reply}}) + s.SendFrames([]frames.Frame{&frames.StreamFrame{StreamID: 1, Data: reply}}) } } else { replyFrames := s.streamCallback(frame) @@ -109,7 +110,7 @@ func (s *Session) HandlePacket(addr *net.UDPAddr, publicHeaderBinary []byte, pub continue } else if typeByte&0xC0 == 0x40 { // ACK fmt.Println("Detected ACK") - frame, err := ParseAckFrame(r) + frame, err := frames.ParseAckFrame(r) if err != nil { return err } @@ -121,14 +122,14 @@ func (s *Session) HandlePacket(addr *net.UDPAddr, publicHeaderBinary []byte, pub return errors.New("Detected CONGESTION_FEEDBACK") } else if typeByte&0x06 == 0x06 { // STOP_WAITING fmt.Println("Detected STOP_WAITING") - _, err := ParseStopWaitingFrame(r, publicHeader.PacketNumberLen) + _, err := frames.ParseStopWaitingFrame(r, publicHeader.PacketNumberLen) if err != nil { return err } // ToDo: react to receiving this frame } else if typeByte&0x02 == 0x02 { // CONNECTION_CLOSE fmt.Println("Detected CONNECTION_CLOSE") - frame, err := ParseConnectionCloseFrame(r) + frame, err := frames.ParseConnectionCloseFrame(r) if err != nil { return err } @@ -144,7 +145,7 @@ func (s *Session) HandlePacket(addr *net.UDPAddr, publicHeaderBinary []byte, pub } // SendFrames sends a number of frames to the client -func (s *Session) SendFrames(frames []Frame) error { +func (s *Session) SendFrames(frames []frames.Frame) error { var framesData bytes.Buffer framesData.WriteByte(0) // TODO: entropy for _, f := range frames {