コード例 #1
0
        public EntityService(string description, Distribution <double> distribution) : base(description)
        {
            this.distribution = distribution;

            //Pravimo selfEdge
            selfEdge = base.ConnectToBlock(this);
        }
コード例 #2
0
        public EntityGenerator(string description, Distribution <double> distribution) : base(description)
        {
            this.distribution = distribution;

            //Connecting this block to itself
            selfEdge = base.ConnectToBlock(this);
        }
コード例 #3
0
        /// <summary>
        /// Callback metoda kojom servis moze da javi odgovarajucem bloku da je spreman
        /// za opsluzivanje sledeceg entiteta. Pravilno postavljanje ovog signala je
        /// pod kontrolom korisnika.
        /// </summary>
        /// <param name="block"></param>
        public void SetCallback(EventBlock block)
        {
            if (callbackEdge != null)
            {
                throw new Exception("Entity service can have only one callback.");
            }

            callbackEdge = Simulator.ConnectBlocks(this, block);
        }
コード例 #4
0
        /// <summary>
        /// Podrska za povezivanje blokova EB simulatora.
        /// </summary>
        /// <param name="first"></param>
        /// <param name="second"></param>
        /// <returns></returns>
        public EventEdge <EventBlock> ConnectBlocks(EventBlock first, EventBlock second)
        {
            EventEdge <EventBlock> newEdge = new EventEdge <EventBlock>(first, second);

            EventGraph.AddVerticesAndEdge(newEdge);

            foreach (EventBlock ev in new EventBlock[] { first, second })
            {
                if (ev is IEventObservable <DataPairArgs> && !Observer.DataPairs.ContainsKey(ev))
                {
                    (ev as IEventObservable <DataPairArgs>).Attach(Observer.OnNotify);
                    Observer.DataPairs.Add(ev, new List <Tuple <double, double> >());
                }

                else if (ev is IEventObservable <DataValueArgs> && !Observer.DataValues.ContainsKey(ev))
                {
                    (ev as IEventObservable <DataValueArgs>).Attach(Observer.OnNotify);
                    Observer.DataValues.Add(ev, new List <double>());
                }
            }

            return(newEdge);
        }
コード例 #5
0
 public void AddEventAndEdge(EventEdge <AbstractEvent> edge)
 {
     EventGraph.AddVerticesAndEdge(edge);
 }