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; // } //} }
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); }