Ejemplo n.º 1
0
        public virtual void AddConsumer(IBaseInput consumer)
        {
            ITimeSpaceInput timeSpaceConsumer = consumer as ITimeSpaceInput;

            if (timeSpaceConsumer == null)
            {
                throw new ArgumentException("Must be a ITimeSpaceInput - may need to add adaptor");
            }

            // Create list of consumers
            if (_consumers == null)
            {
                _consumers = new List <ITimeSpaceInput>();
            }

            // consumer should not be already added
            if (_consumers.Contains(timeSpaceConsumer))
            {
                throw new Exception("consumer \"" + consumer.Caption +
                                    "\" has already been added to \"" + Caption);
            }

            // Check if this consumer can be added
            if (!ExchangeItemHelper.ConsumerCanBeAdded(_consumers, timeSpaceConsumer))
            {
                throw new Exception("consumer \"" + consumer.Caption +
                                    "\" can not be added to \"" + Caption +
                                    "\", because it is incompatible with existing consumers");
            }

            _consumers.Add(timeSpaceConsumer);


            if (consumer.Provider != this)
            {
                consumer.Provider = this;
            }
            //// TODO (JG): EXPERIMENTAL CODE
            //if (consumer is IBaseMultiInput)
            //{
            //    ((IBaseMultiInput)consumer).AddProvider(this);
            //}
            //else
            //{
            //    if (consumer.Provider != this)
            //    {
            //        consumer.Provider = this;
            //    }
            //}
        }
Ejemplo n.º 2
0
        public virtual ITimeSpaceValueSet GetValues(IBaseExchangeItem querySpecifier)
        {
            ITimeSpaceExchangeItem timeSpaceQuery = querySpecifier as ITimeSpaceExchangeItem;

            if (timeSpaceQuery == null)
            {
                throw new ArgumentException("Must be an ITimeSpaceExchangeItem - an adaptor may be required");
            }
            if (!ExchangeItemHelper.OutputAndInputElementSetsFit(this, timeSpaceQuery))
            {
                throw new Exception("ElementSet of output item \"" + Id +
                                    "\" does not fit the ElementSet of requesting item \"" + querySpecifier.Id);
            }

            if (!ExchangeItemHelper.OutputAndInputTimeSetsFit(this, timeSpaceQuery))
            {
                throw new Exception("TimeSet of output item \"" + Id +
                                    "\" does not fit the TimeSet of requesting item \"" + querySpecifier.Id);
            }

            return(Values);
        }