Exemple #1
0
 public completeLink getNewLink(lineClass master, lineClass slave, e_TskLim limitType)
 {
     completeLink cLink = new completeLink();
     cLink.slave = slave;
     cLink.master = master;
     cLink.reinitLink(limitType);
     return cLink;
 }
Exemple #2
0
        public link_2(IConnectible precursor, IConnectible follower, e_TskLim limit, double delay)
        {
            if(delay < DELAY_MINIMUM_VALUE) throw new ArgumentException(nameof(delay));

            init_Identity();
            init_Limit(limit);
            init_Storage(follower, precursor);
            init_PrecursorDate(storage.precursor, storage.dotPrecursor);
        }
        public ILink_2 createLink(IConnectible precursor, IConnectible follower, e_TskLim limit, double delay)
        {
            if(delay < link_2.DELAY_MINIMUM_VALUE) throw new ArgumentException(nameof(delay));
            if(!Enum.IsDefined(typeof(e_TskLim), limit)) throw new ArgumentException(nameof(limit));
            if (!checkMembers(precursor, follower)) return null;

            link_2 newLink = new link_2(precursor, follower, limit, delay);
            vault.addLink(newLink);

            return newLink;
        }
Exemple #4
0
        public linkClass(IId MasterID, ILine MasterLine, IId SlaveID, ILine SlaveLine, e_TskLim limit)
        {
            if(!Enum.IsDefined(typeof(e_TskLim),limit)) throw new ArgumentNullException();
            this.limit = limit;
            _ident = new Identity(e_Entity.Link);
            delay = 0;

            init_master(MasterID, MasterLine);
            Console.WriteLine("Master initialized");
            init_slave(SlaveID, SlaveLine);
            Console.WriteLine("Slave initialized");
            init_dependence();
            Console.WriteLine("Dependence initialized");
        }
Exemple #5
0
 public bool SetLimit(e_TskLim limitType)
 {
     e_TskLim Old = limit;
     limit = limitType;
     event_LimitChanged?.Invoke(this, new ea_ValueChange<e_TskLim>(Old, limit));
     return true;
 }
Exemple #6
0
 public simpleLink(IId idMaster, ILine lMaster, IId idSlave, ILine lSlave, e_TskLim limit)
 {
     id = new Identity(e_Entity.Link);
     this.limit = limit;
     master = new simpleLMember(this, idMaster, lMaster, e_DependType.Master);
     depend = new simpleDepend(lMaster, Hlp.GetPrecursor(limit));
     slave = new simpleLMember(this, idSlave, lSlave, e_DependType.Slave);
     depend.sender = this;
 }
Exemple #7
0
 public void reinitLink(e_TskLim linkDependType)
 {
     link = new simpleLink(master, master, slave, slave, linkDependType);
 }
Exemple #8
0
        /// <summary>
        /// Метод основной инициализации (запускается первым)
        /// </summary>
        /// <param name="limit">Вид связи</param>
        /// <param name="delay">Задержка связи</param>
        protected void init_default(e_TskLim limit, double delay = 0)
        {
            //Запускать первым из инитов
            if (!Enum.IsDefined(typeof(e_TskLim), limit)) throw new ArgumentException("Wrong e_TskLim value");

            _identity = new Identity(e_Entity.Link);
            _limit = limit;
            _delay = delay;
            _state = e_LnkState.InTime;

            _master = new linkMember(this, e_DependType.Master);
            _slave = new linkMember(this, e_DependType.Slave);
        }
Exemple #9
0
        /// <summary>
        /// Конструктор экземпляра связи
        /// </summary>
        /// <param name="master">Интерфейс управляющего члена связи</param>
        /// <param name="slave">Интерфейс подчиеннного члена связи</param>
        /// <param name="limitType">Вид связи</param>
        /// <param name="delay">Задержка связи</param>
        public link(IDock master, IDock slave, e_TskLim limitType, double delay)
        {
            init_default(limitType, delay);
            init_master(master, master);
            init_slave(slave, slave);
            init_slaveDependence();

            master.connect(this);
            slave.connect(this);
        }
Exemple #10
0
 public void limitChanged(e_TskLim limit)
 {
     _follower.updateDependDot(limit);
     _precursor.updateDependDot(limit);
 }
Exemple #11
0
            public memberStorage(IConnectible precursor, IConnectible follower, e_TskLim limit)
            {
                if(precursor == null || follower == null) throw new ArgumentNullException();
                if(!Enum.IsDefined(typeof(e_TskLim), limit)) throw new ArgumentException(nameof(limit));

                _follower = new memberData(follower, e_DependType.Slave, limit);
                _precursor = new memberData(precursor, e_DependType.Master, limit);

                follower.event_ObjectDeleted += memberRemovedHandler;
                precursor.event_ObjectDeleted += memberRemovedHandler;

                unsubscribeFollower = () => follower.event_ObjectDeleted -= memberRemovedHandler;
                unsubscribePrecursor = () => precursor.event_ObjectDeleted -= memberRemovedHandler;
            }
Exemple #12
0
 public void updateDependDot(e_TskLim limit)
 {
     dependDot = depend == e_DependType.Master ? Hlp.GetPrecursor(limit) : Hlp.GetFollower(limit);
 }
Exemple #13
0
 public memberData(IConnectible member, e_DependType type, e_TskLim limit)
 {
     this.member = member;
     depend = type;
     dependDot = depend == e_DependType.Master ? 
         Hlp.GetPrecursor(limit) : Hlp.GetFollower(limit);
 }
Exemple #14
0
 public bool SetLimit(e_TskLim limitType)
 {
     return _limit.SetLimit(limitType);
 }
Exemple #15
0
        protected void init_Limit(e_TskLim limit)
        { 
            _limit = new cLimit<e_TskLim>(this, limit);

            _limit.event_LimitChanged += limitChangedHandler;

            unsubscribeLimit = () => _limit.event_LimitChanged -= limitChangedHandler;
        }
Exemple #16
0
        public bool SetLimit(e_TskLim limitType)
        {
            if (_limit == limitType) return false;

            e_TskLim Old = _limit;
            _limit = limitType;
            event_LimitChanged?.Invoke(this, new ea_ValueChange<e_TskLim>(Old, _limit));

            return true;
        }
Exemple #17
0
 public link_2(IConnectible precursor, IConnectible follower, e_TskLim limit)
     :this(precursor, follower, limit, DELAY_MINIMUM_VALUE)
 { }
Exemple #18
0
        /// <summary>
        /// Инициализирует класс зависимости <seealso cref="Dependence"/>
        /// </summary>
        /// <param name="dependDate">Дата зависимости</param>
        /// <param name="limitType">Тип зависимости</param>
        /// <exception cref="objectAlreadyExistException">Выбрасывает исключение если класс <seealso cref="Dependence"/> уже был инициализирован</exception>
        public void init_Dependence(ILink parent, DateTime dependDate, e_TskLim limitType)
        {
            if(depend != null) throw new objectAlreadyExistException();

            date = dependDate;
            depend = new Dependence(date, cDirection, Hlp.GetDepenDot(limitType, dependType));
            depend.setSender(parent);
        }
Exemple #19
0
 /// <summary>
 /// Конструктор экземпляра связи
 /// </summary>
 /// <param name="master">Интерфейс управляющего члена связи</param>
 /// <param name="slave">Интерфейс подчиеннного члена связи</param>
 /// <param name="limitType">Вид связи</param>
 public link(IDock master, IDock slave, e_TskLim limitType)
     :this(master, slave, limitType, 0)
 { }
Exemple #20
0
 public completeLink(DateTime masterStart, double masterDuration, DateTime slaveStart, double slaveDuration,
     e_TskLim linkDependType)
 {
     master = new lineClass(masterStart, masterDuration);
     slave = new lineClass(slaveStart, slaveDuration);
     link = new simpleLink(master, master, slave, slave, linkDependType);
 }
Exemple #21
0
        /// <summary>
        /// Метод установки значения вида связи
        /// </summary>
        /// <param name="limitType">вид связи</param>
        /// <returns>Истина если новый вид связи установлен</returns>
        /// <exception cref="ArgumentException">Если значение не подходит под <seealso cref="e_TskLim"/></exception>
        public bool SetLimit(e_TskLim limitType)
        {
            if(!Enum.IsDefined(typeof(e_TskLim), limitType )) throw new ArgumentException("Wrong argument value of e_TskLim type");
            if (limitType == _limit) return false;

            e_TskLim Old = _limit;
            _limit = limitType;

            event_LimitChanged?.Invoke(this, new ea_ValueChange<e_TskLim>(Old, _limit));

            return true;
        }
Exemple #22
0
 public bool SetLimit(e_TskLim limitType)
 {
     throw new NotImplementedException();
 }