public static void Process() { DelayedObjectManager pDelayMan = DelayedObjectManager.PrivGetInstance(); CollObserver pNode = pDelayMan.head; while (pNode != null) { // Fire off listener pNode.Execute(); pNode = (CollObserver)pNode.pNext; } // remove pNode = pDelayMan.head; CollObserver pTmp = null; while (pNode != null) { pTmp = pNode; pNode = (CollObserver)pNode.pNext; // remove pDelayMan.PrivDetach(pTmp, ref pDelayMan.head); } }
public void Notify() { CollObserver pNode = this.pHead; while (pNode != null) { // Fire off listener pNode.Notify(); pNode = (CollObserver)pNode.pNext; } }
//---------------------------------------------------------------------------------- // Private Methods //---------------------------------------------------------------------------------- private void PrivDetach(CollObserver node, ref CollObserver head) { // protection Debug.Assert(node != null); if (node.pPrev != null) { // middle or last node node.pPrev.pNext = node.pNext; } else { // first head = (CollObserver)node.pNext; } if (node.pNext != null) { // middle node node.pNext.pPrev = node.pPrev; } }
// ---------------- Methods ---------------- public void Attach(CollObserver pObserver) { Debug.Assert(pObserver != null); pObserver.pSubject = this; //add to the front if (this.pHead == null) { pHead = pObserver; pObserver.pPrev = null; pObserver.pNext = null; } else { pObserver.pNext = this.pHead; this.pHead.pPrev = pObserver; this.pHead = pObserver; } }
//---------------------------------------------------------------------------------- // Static Methods //---------------------------------------------------------------------------------- public static void Attach(CollObserver observer) { // protection Debug.Assert(observer != null); DelayedObjectManager pDelayMan = DelayedObjectManager.PrivGetInstance(); // add to front if (pDelayMan.head == null) { pDelayMan.head = observer; observer.pNext = null; observer.pPrev = null; } else { observer.pNext = pDelayMan.head; observer.pPrev = null; pDelayMan.head.pPrev = observer; pDelayMan.head = observer; } }
public void Detach(CollObserver pObserver) { }
// ---------------- Constructor ---------------- public CollSubject() { this.pHead = null; this.pObjA = null; this.pObjB = null; }
public void Attach(CollObserver pObserver) { // delegate this.poSubject.Attach(pObserver); }
//---------------------------------------------------------------------------------- // Constructor //---------------------------------------------------------------------------------- private DelayedObjectManager() { this.head = null; }