/// <summary> /// TBD /// </summary> /// <param name="cell">TBD</param> public void ReplaceWith(ICell cell) { lock (_lock) { try { DrainSysMsgQueue(cell); while (_messageQueue.Count > 0) { // roughly equal to what "poll" does var e = _messageQueue.First.Value; _messageQueue.RemoveFirst(); cell.SendMessage(e.Sender, e.Message); // drain sysmsgQueue in case a msg enqueues a sys msg DrainSysMsgQueue(cell); } } finally { _self.SwapUnderlying(cell); } } }
public void ReplaceWith(ICell cell) { lock (_lock) { try { foreach (var envelope in _messageQueue) { cell.Post(envelope.Sender, envelope.Message); } } finally { _self.SwapUnderlying(cell); } } }
public void ReplaceWith(ICell cell) { lock (_lock) { try { DrainSysMsgQueue(cell); foreach (var envelope in _messageQueue) { cell.SendMessage(envelope.Sender, envelope.Message); // drain sysmsgQueue in case a msg enqueues a sys msg DrainSysMsgQueue(cell); } } finally { _self.SwapUnderlying(cell); } } }