internal override EarliestFirstSystemMessageList SystemDrain(LatestFirstSystemMessageList newContents) { return SystemMessageList.ENil; }
private LatestFirstSystemMessageList UnstashAll() { var unstashed = _sysMsgStash; _sysMsgStash = SystemMessageList.LNil; return unstashed; }
public void SendSystemMessage(ISystemMessage message) { lock (_lock) { var cell = _self.Underlying; if (CellIsReady(cell)) { cell.SendSystemMessage(message); } else { _sysMsgQueue = _sysMsgQueue + (SystemMessage)message; Mailbox.DebugPrint("{0} temp queueing system message {1}", Self, message); } } }
protected void Stash(SystemMessage msg) { Assert.Assert(msg.Unlinked); _sysMsgStash = _sysMsgStash + msg; }
private void DrainSysMsgQueue(ICell cell) { while (_sysMsgQueue.NonEmpty) { var sysQ = _sysMsgQueue.Reverse; _sysMsgQueue = SystemMessageList.LNil; while (sysQ.NonEmpty) { var msg = sysQ.Head; sysQ = sysQ.Tail; msg.Unlink(); cell.SendSystemMessage(msg); } } }