| | |
| | | |
| | | func (c *simpleCache) getPositionByTime(timestamp int64) (runData ElevatorRunData) { |
| | | node := c.data.Back() // 从链表尾部开始 |
| | | if node == nil { |
| | | return |
| | | } |
| | | |
| | | for node != nil { |
| | | if data, ok := node.Value.(ElevatorRunData); ok { |
| | | if data.Timestamp >= timestamp { |
| | |
| | | } |
| | | |
| | | func (c *simpleCache) getMovePosition(timestamp int64, floor string) (runData ElevatorRunData) { |
| | | logger.Debug("getMovePosition") |
| | | node := c.data.Back() // 从链表末尾开始 |
| | | if node == nil { |
| | | return |
| | | } |
| | | |
| | | // 找到最近的符合时间戳的节点 |
| | | for node != nil { |
| | |
| | | if current, ok := node.Value.(ElevatorRunData); ok && current.Timestamp >= timestamp { |
| | | for node != nil { |
| | | if nextNode := node.Next(); nextNode != nil { |
| | | logger.Debug("next node %v", nextNode.Value.(ElevatorRunData)) |
| | | if nextData, ok := nextNode.Value.(ElevatorRunData); ok { |
| | | if nextData.Floor == floor { |
| | | node = nextNode // 向前移动节点 |