| 100 | ) |
| 101 | |
| 102 | func (s *Router) FillSlot(m *models.Slot) error { |
| 103 | s.mu.Lock() |
| 104 | defer s.mu.Unlock() |
| 105 | if s.closed { |
| 106 | return ErrClosedRouter |
| 107 | } |
| 108 | if m.Id < 0 || m.Id >= MaxSlotNum { |
| 109 | return ErrInvalidSlotId |
| 110 | } |
| 111 | var method forwardMethod |
| 112 | switch m.ForwardMethod { |
| 113 | default: |
| 114 | return ErrInvalidMethod |
| 115 | case models.ForwardSync: |
| 116 | method = &forwardSync{} |
| 117 | case models.ForwardSemiAsync: |
| 118 | method = &forwardSemiAsync{} |
| 119 | } |
| 120 | s.fillSlot(m, false, method) |
| 121 | return nil |
| 122 | } |
| 123 | |
| 124 | func (s *Router) KeepAlive() error { |
| 125 | s.mu.RLock() |