MCPcopy Create free account
hub / github.com/Cyinx/einx / Run

Method Run

network/keep_alive.go:110–148  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

108}
109
110func (p *PingMgr) Run() {
111 defer p.recover()
112 var ticker = time.NewTicker(time.Duration(CHECKTIME) * time.Millisecond)
113 timer_manager := p.timer_manager
114 ev_queue := p.ev_queue
115 event_chan := ev_queue.SemaChan()
116 event_list := p.event_list
117 for {
118
119 atomic.StoreInt64(&nowTick, time.Now().Unix())
120
121 if p.event_index >= p.event_count {
122 p.event_count = ev_queue.Get(event_list, uint32(KEEP_ALIVE_POLL_COUNT))
123 p.event_index = 0
124 }
125
126 for p.event_index < p.event_count {
127 ping_event := event_list[p.event_index].(*PingEventMsg)
128 event_list[p.event_index] = nil
129 p.event_index++
130 p.handle_event(ping_event)
131 ping_event.Reset()
132 p.event_pool.Put(ping_event)
133 }
134
135 timer_manager.Execute(256)
136
137 if ev_queue.WaitNotify() == false {
138 continue
139 }
140
141 select {
142 case <-event_chan:
143 case <-ticker.C:
144 }
145
146 ev_queue.WaiterWake()
147 }
148}
149
150func (p *PingMgr) handle_event(e *PingEventMsg) {
151 linker := e.Sender

Callers 1

recoverMethod · 0.95

Calls 9

recoverMethod · 0.95
handle_eventMethod · 0.95
SemaChanMethod · 0.80
ExecuteMethod · 0.80
WaitNotifyMethod · 0.80
WaiterWakeMethod · 0.80
GetMethod · 0.65
ResetMethod · 0.65
PutMethod · 0.45

Tested by

no test coverage detected