Пример #1
0
        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);
            }
        }
Пример #2
0
        private void TryToCommenceService()
        {
            if (m_input.Connector == null)
            {
                return;
            }
            object nextServiceObject = m_input.OwnerTake(null);

            if (nextServiceObject != null)
            {
                Process(nextServiceObject);
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
 private object OnDataPullOut(IOutputPort op, object selector)
 {
     return(m_input.OwnerTake(selector));
 }                                                                                                            // Forces an upstream read.