private void _TryToPullServiceObject(IExecutive exec, object obj) { if (m_input.Connector == null) { return; } object serviceObject = m_input.OwnerPeek(null); if (serviceObject == null) { return; } lock (this){ if (m_pending) { return; } if (RequiresAsyncEvents) { m_pending = true; } } if (OnCanWeProcessServiceObject(this, serviceObject)) { serviceObject = m_input.OwnerTake(null); OnPreCommencementSetup(this, serviceObject); m_pending = false; Process(serviceObject); } }
private void TryToCommenceService() { if (m_input.Connector == null) { return; } object nextServiceObject = m_input.OwnerTake(null); if (nextServiceObject != null) { Process(nextServiceObject); } }
private object OnDataRequested(IOutputPort op, object selector) { Debug.Write(Name + " was just asked for data by "); if (Out.Peer != null) { Debug.WriteLine(((IHasName)Out.Peer.Owner).Name); } else { Debug.WriteLine("some non-connected element."); } if (m_in.Peer != null) { Debug.WriteLine("I will ask " + ((IHasName)In.Peer.Owner).Name + "..."); return(m_in.OwnerTake(null)); } else { string data = RandomString(); Debug.WriteLine("Since I have no predecessor, I'll make up some data. How about " + data + "..."); return(data); } }
private object OnDataPullOut(IOutputPort op, object selector) { return(m_input.OwnerTake(selector)); } // Forces an upstream read.