make some session fields private

This commit is contained in:
Lucas Clemente
2016-04-25 17:40:55 +02:00
parent ecbec2dcc6
commit f9c90382a4
2 changed files with 26 additions and 28 deletions

View File

@@ -27,18 +27,17 @@ type StreamCallback func(*Session, *Stream)
type Session struct {
streamCallback StreamCallback
Connection *net.UDPConn
CurrentRemoteAddr *net.UDPAddr
connection *net.UDPConn
currentRemoteAddr *net.UDPAddr
Streams map[protocol.StreamID]*Stream
streams map[protocol.StreamID]*Stream
streamsMutex sync.RWMutex
outgoingAckHandler ackhandler.OutgoingPacketAckHandler
incomingAckHandler ackhandler.IncomingPacketAckHandler
unpacker *packetUnpacker
packer *packetPacker
batchMode bool
unpacker *packetUnpacker
packer *packetPacker
receivedPackets chan receivedPacket
}
@@ -46,9 +45,9 @@ type Session struct {
// 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,
connection: conn,
streamCallback: streamCallback,
Streams: make(map[protocol.StreamID]*Stream),
streams: make(map[protocol.StreamID]*Stream),
outgoingAckHandler: ackhandler.NewOutgoingPacketAckHandler(),
incomingAckHandler: ackhandler.NewIncomingPacketAckHandler(),
receivedPackets: make(chan receivedPacket),
@@ -83,8 +82,8 @@ func (s *Session) Run() {
func (s *Session) handlePacket(addr *net.UDPAddr, publicHeader *PublicHeader, r *bytes.Reader) error {
// TODO: Only do this after authenticating
if addr != s.CurrentRemoteAddr {
s.CurrentRemoteAddr = addr
if addr != s.currentRemoteAddr {
s.currentRemoteAddr = addr
}
packet, err := s.unpacker.Unpack(publicHeader.Raw, publicHeader, r)
@@ -134,7 +133,7 @@ func (s *Session) handleStreamFrame(frame *frames.StreamFrame) error {
return errors.New("Session: 0 is not a valid Stream ID")
}
s.streamsMutex.RLock()
stream, existingStream := s.Streams[frame.StreamID]
stream, existingStream := s.streams[frame.StreamID]
s.streamsMutex.RUnlock()
if !existingStream {
@@ -161,7 +160,6 @@ func (s *Session) Close(e error) error {
if ok {
errorCode = quicError.ErrorCode
}
s.batchMode = false
return s.QueueFrame(&frames.ConnectionCloseFrame{
ErrorCode: errorCode,
ReasonPhrase: reasonPhrase,
@@ -182,7 +180,7 @@ func (s *Session) sendPacket() error {
EntropyBit: packet.entropyBit,
})
fmt.Printf("-> Sending packet %d (%d bytes)\n", packet.number, len(packet.raw))
_, err = s.Connection.WriteToUDP(packet.raw, s.CurrentRemoteAddr)
_, err = s.connection.WriteToUDP(packet.raw, s.currentRemoteAddr)
if err != nil {
return err
}
@@ -200,10 +198,10 @@ func (s *Session) NewStream(id protocol.StreamID) (*Stream, error) {
s.streamsMutex.Lock()
defer s.streamsMutex.Unlock()
stream := NewStream(s, id)
if s.Streams[id] != nil {
if s.streams[id] != nil {
return nil, fmt.Errorf("Session: stream with ID %d already exists", id)
}
s.Streams[id] = stream
s.streams[id] = stream
return stream, nil
}
@@ -211,6 +209,6 @@ func (s *Session) NewStream(id protocol.StreamID) (*Stream, error) {
// and has fininshed reading its data.
func (s *Session) closeStream(id protocol.StreamID) {
s.streamsMutex.Lock()
s.Streams[id] = nil
s.streams[id] = nil
s.streamsMutex.Unlock()
}

View File

@@ -19,7 +19,7 @@ var _ = Describe("Session", func() {
BeforeEach(func() {
callbackCalled = false
session = &Session{
Streams: make(map[protocol.StreamID]*Stream),
streams: make(map[protocol.StreamID]*Stream),
streamCallback: func(*Session, *Stream) { callbackCalled = true },
}
})
@@ -30,10 +30,10 @@ var _ = Describe("Session", func() {
StreamID: 5,
Data: []byte{0xde, 0xca, 0xfb, 0xad},
})
Expect(session.Streams).To(HaveLen(1))
Expect(session.streams).To(HaveLen(1))
Expect(callbackCalled).To(BeTrue())
p := make([]byte, 4)
_, err := session.Streams[5].Read(p)
_, err := session.streams[5].Read(p)
Expect(err).ToNot(HaveOccurred())
Expect(p).To(Equal([]byte{0xde, 0xca, 0xfb, 0xad}))
})
@@ -43,16 +43,16 @@ var _ = Describe("Session", func() {
StreamID: 5,
Data: []byte{0xde, 0xca},
})
Expect(session.Streams).To(HaveLen(1))
Expect(session.streams).To(HaveLen(1))
Expect(callbackCalled).To(BeTrue())
session.handleStreamFrame(&frames.StreamFrame{
StreamID: 5,
Offset: 2,
Data: []byte{0xfb, 0xad},
})
Expect(session.Streams).To(HaveLen(1))
Expect(session.streams).To(HaveLen(1))
p := make([]byte, 4)
_, err := session.Streams[5].Read(p)
_, err := session.streams[5].Read(p)
Expect(err).ToNot(HaveOccurred())
Expect(p).To(Equal([]byte{0xde, 0xca, 0xfb, 0xad}))
})
@@ -63,15 +63,15 @@ var _ = Describe("Session", func() {
Data: []byte{0xde, 0xca, 0xfb, 0xad},
FinBit: true,
})
Expect(session.Streams).To(HaveLen(1))
Expect(session.Streams[5]).ToNot(BeNil())
Expect(session.streams).To(HaveLen(1))
Expect(session.streams[5]).ToNot(BeNil())
Expect(callbackCalled).To(BeTrue())
p := make([]byte, 4)
_, err := session.Streams[5].Read(p)
_, err := session.streams[5].Read(p)
Expect(err).To(Equal(io.EOF))
Expect(p).To(Equal([]byte{0xde, 0xca, 0xfb, 0xad}))
Expect(session.Streams).To(HaveLen(1))
Expect(session.Streams[5]).To(BeNil())
Expect(session.streams).To(HaveLen(1))
Expect(session.streams[5]).To(BeNil())
})
It("rejects streams that existed previously", func() {
@@ -80,7 +80,7 @@ var _ = Describe("Session", func() {
Data: []byte{},
FinBit: true,
})
_, err := session.Streams[5].Read([]byte{0})
_, err := session.streams[5].Read([]byte{0})
Expect(err).To(Equal(io.EOF))
err = session.handleStreamFrame(&frames.StreamFrame{
StreamID: 5,