MCPcopy
hub / github.com/q191201771/lal / disposeInactiveSessions

Method disposeInactiveSessions

pkg/logic/group__.go:426–500  ·  view source on GitHub ↗

--------------------------------------------------------------------------------------------------------------------- disposeInactiveSessions 关闭不活跃的session

(tickCount uint32)

Source from the content-addressed store, hash-verified

424
425// disposeInactiveSessions 关闭不活跃的session
426func (group *Group) disposeInactiveSessions(tickCount uint32) {
427 if group.psPubSession != nil {
428 if group.psPubTimeoutSec == 0 {
429 // noop
430 // 没有超时逻辑
431 } else {
432 if group.psPubPrevInactiveCheckTick == -1 ||
433 tickCount-uint32(group.psPubPrevInactiveCheckTick) >= group.psPubTimeoutSec {
434
435 if readAlive, _ := group.psPubSession.IsAlive(); !readAlive {
436 Log.Warnf("[%s] session timeout. session=%s", group.UniqueKey, group.psPubSession.UniqueKey())
437 group.psPubSession.Dispose()
438 }
439
440 group.psPubPrevInactiveCheckTick = int64(tickCount)
441 }
442 }
443 }
444
445 // 以下都是以 CheckSessionAliveIntervalSec 为间隔的清理逻辑
446
447 if tickCount%CheckSessionAliveIntervalSec != 0 {
448 return
449 }
450
451 if group.rtmpPubSession != nil {
452 if readAlive, _ := group.rtmpPubSession.IsAlive(); !readAlive {
453 Log.Warnf("[%s] session timeout. session=%s", group.UniqueKey, group.rtmpPubSession.UniqueKey())
454 group.rtmpPubSession.Dispose()
455 }
456 }
457 if group.rtspPubSession != nil {
458 if readAlive, _ := group.rtspPubSession.IsAlive(); !readAlive {
459 Log.Warnf("[%s] session timeout. session=%s", group.UniqueKey, group.rtspPubSession.UniqueKey())
460 group.rtspPubSession.Dispose()
461 }
462 }
463
464 group.disposeInactivePullSession()
465
466 for session := range group.rtmpSubSessionSet {
467 if _, writeAlive := session.IsAlive(); !writeAlive {
468 Log.Warnf("[%s] session timeout. session=%s", group.UniqueKey, session.UniqueKey())
469 session.Dispose()
470 }
471 }
472 for session := range group.rtspSubSessionSet {
473 if _, writeAlive := session.IsAlive(); !writeAlive {
474 Log.Warnf("[%s] session timeout. session=%s", group.UniqueKey, session.UniqueKey())
475 session.Dispose()
476 }
477 }
478
479 for session := range group.httpflvSubSessionSet {
480 if _, writeAlive := session.IsAlive(); !writeAlive {
481 Log.Warnf("[%s] session timeout. session=%s", group.UniqueKey, session.UniqueKey())
482 session.Dispose()
483 }

Callers 1

TickMethod · 0.95

Calls 4

IsAliveMethod · 0.65
UniqueKeyMethod · 0.65
DisposeMethod · 0.65

Tested by

no test coverage detected