simplify the session constructor

This commit is contained in:
Marten Seemann
2019-10-27 14:05:04 +07:00
parent 416fe8364e
commit 3fd8175918

View File

@@ -203,15 +203,6 @@ var newSession = func(
} }
s.preSetup() s.preSetup()
s.sentPacketHandler = ackhandler.NewSentPacketHandler(0, s.rttStats, s.traceCallback, s.logger) s.sentPacketHandler = ackhandler.NewSentPacketHandler(0, s.rttStats, s.traceCallback, s.logger)
s.streamsMap = newStreamsMap(
s,
s.newFlowController,
uint64(s.config.MaxIncomingStreams),
uint64(s.config.MaxIncomingUniStreams),
s.perspective,
s.version,
)
s.framer = newFramer(s.streamsMap, s.version)
initialStream := newCryptoStream() initialStream := newCryptoStream()
handshakeStream := newCryptoStream() handshakeStream := newCryptoStream()
oneRTTStream := newPostHandshakeCryptoStream(s.framer) oneRTTStream := newPostHandshakeCryptoStream(s.framer)
@@ -247,10 +238,8 @@ var newSession = func(
s.perspective, s.perspective,
s.version, s.version,
) )
s.cryptoStreamManager = newCryptoStreamManager(cs, initialStream, handshakeStream, oneRTTStream)
s.postSetup()
s.unpacker = newPacketUnpacker(cs, s.version) s.unpacker = newPacketUnpacker(cs, s.version)
s.cryptoStreamManager = newCryptoStreamManager(cs, initialStream, handshakeStream, oneRTTStream)
return s return s
} }
@@ -306,15 +295,6 @@ var newClientSession = func(
s.cryptoStreamHandler = cs s.cryptoStreamHandler = cs
s.cryptoStreamManager = newCryptoStreamManager(cs, initialStream, handshakeStream, oneRTTStream) s.cryptoStreamManager = newCryptoStreamManager(cs, initialStream, handshakeStream, oneRTTStream)
s.unpacker = newPacketUnpacker(cs, s.version) s.unpacker = newPacketUnpacker(cs, s.version)
s.streamsMap = newStreamsMap(
s,
s.newFlowController,
uint64(s.config.MaxIncomingStreams),
uint64(s.config.MaxIncomingUniStreams),
s.perspective,
s.version,
)
s.framer = newFramer(s.streamsMap, s.version)
s.packer = newPacketPacker( s.packer = newPacketPacker(
s.destConnID, s.destConnID,
s.srcConnID, s.srcConnID,
@@ -339,7 +319,6 @@ var newClientSession = func(
s.packer.SetToken(token.data) s.packer.SetToken(token.data)
} }
} }
s.postSetup()
return s return s
} }
@@ -357,14 +336,15 @@ func (s *session) preSetup() {
s.logger, s.logger,
) )
s.earlySessionReadyChan = make(chan struct{}) s.earlySessionReadyChan = make(chan struct{})
if s.config.QuicTracer != nil { s.streamsMap = newStreamsMap(
s.traceCallback = func(ev quictrace.Event) { s,
s.config.QuicTracer.Trace(s.origDestConnID, ev) s.newFlowController,
} uint64(s.config.MaxIncomingStreams),
} uint64(s.config.MaxIncomingUniStreams),
} s.perspective,
s.version,
func (s *session) postSetup() { )
s.framer = newFramer(s.streamsMap, s.version)
s.receivedPackets = make(chan *receivedPacket, protocol.MaxSessionUnprocessedPackets) s.receivedPackets = make(chan *receivedPacket, protocol.MaxSessionUnprocessedPackets)
s.closeChan = make(chan closeError, 1) s.closeChan = make(chan closeError, 1)
s.sendingScheduled = make(chan struct{}, 1) s.sendingScheduled = make(chan struct{}, 1)
@@ -378,6 +358,12 @@ func (s *session) postSetup() {
s.sessionCreationTime = now s.sessionCreationTime = now
s.windowUpdateQueue = newWindowUpdateQueue(s.streamsMap, s.connFlowController, s.framer.QueueControlFrame) s.windowUpdateQueue = newWindowUpdateQueue(s.streamsMap, s.connFlowController, s.framer.QueueControlFrame)
if s.config.QuicTracer != nil {
s.traceCallback = func(ev quictrace.Event) {
s.config.QuicTracer.Trace(s.origDestConnID, ev)
}
}
} }
// run the session main loop // run the session main loop