From ed244e95a6bc3520a561f2fe1befce35ddae3660 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Fri, 22 Apr 2016 19:05:45 +0700 Subject: [PATCH] use the new AckHandlers in the Session --- session.go | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/session.go b/session.go index 378d427b..3f4ae612 100644 --- a/session.go +++ b/session.go @@ -32,17 +32,16 @@ type Session struct { unpacker *packetUnpacker packer *packetPacker batchMode bool - - // TODO: Remove - EntropyReceived ackhandler.EntropyAccumulator } // NewSession makes a new session func NewSession(conn *net.UDPConn, v protocol.VersionNumber, connectionID protocol.ConnectionID, sCfg *handshake.ServerConfig, streamCallback StreamCallback) PacketHandler { session := &Session{ - Connection: conn, - streamCallback: streamCallback, - Streams: make(map[protocol.StreamID]*Stream), + Connection: conn, + streamCallback: streamCallback, + Streams: make(map[protocol.StreamID]*Stream), + outgoingAckHandler: ackhandler.NewOutgoingPacketAckHandler(), + incomingAckHandler: ackhandler.NewIncomingPacketAckHandler(), } cryptoStream, _ := session.NewStream(1) @@ -70,13 +69,8 @@ func (s *Session) HandlePacket(addr *net.UDPAddr, publicHeaderBinary []byte, pub return err } - // s.incomingAckHandler.ReceivedPacket(publicHeader.PacketNumber, packet.entropyBit) - // s.SendFrame(s.incomingAckHandler.DequeueAckFrame()) - s.EntropyReceived.Add(publicHeader.PacketNumber, packet.entropyBit) - s.SendFrame(&frames.AckFrame{ - LargestObserved: publicHeader.PacketNumber, - Entropy: s.EntropyReceived.Get(), - }) + s.incomingAckHandler.ReceivedPacket(publicHeader.PacketNumber, packet.entropyBit) + s.SendFrame(s.incomingAckHandler.DequeueAckFrame()) for _, ff := range packet.frames { var err error @@ -84,7 +78,8 @@ func (s *Session) HandlePacket(addr *net.UDPAddr, publicHeaderBinary []byte, pub case *frames.StreamFrame: err = s.handleStreamFrame(frame) case *frames.AckFrame: - // s.outgoingAckHandler.ReceivedAck(frame) + err = s.outgoingAckHandler.ReceivedAck(frame) + // ToDo: send right error in ConnectionClose frame case *frames.ConnectionCloseFrame: fmt.Printf("%#v\n", frame) case *frames.StopWaitingFrame: @@ -150,11 +145,11 @@ func (s *Session) sendPackets() error { if packet == nil { return nil } - // s.outgoingAckHandler.SentPacket(&ackhandler.Packet{ - // PacketNumber: packet.number, - // Plaintext: packet.payload, - // EntropyBit: packet.entropyBit, - // }) + s.outgoingAckHandler.SentPacket(&ackhandler.Packet{ + PacketNumber: packet.number, + Plaintext: packet.payload, + EntropyBit: packet.entropyBit, + }) fmt.Printf("-> Sending packet %d (%d bytes)\n", packet.number, len(packet.raw)) _, err = s.Connection.WriteToUDP(packet.raw, s.CurrentRemoteAddr) if err != nil {