def buildVirtualFeeds(feedPairs, feeders): """Build a virtual feeds dict suitable for forming part of a component config. @param feedPairs: List of virtual feeds, as name-feederName pairs. For example, [('bar:baz', 'qux')] defines one virtual feed 'bar:baz', which is provided by the component's 'qux' feed. @type feedPairs: List of (feedId, feedName) -- both strings. @param feeders: The feeders exported by this component, from the registry. @type feeders: List of str. """ ret = {} for virtual, real in feedPairs: if real not in feeders: raise errors.ConfigError('virtual feed maps to unknown feeder: ' '%s -> %s' % (virtual, real)) try: common.parseFeedId(virtual) except: raise errors.ConfigError('virtual feed name not a valid feedId: %s' % (virtual, )) ret[virtual] = real return ret
def buildVirtualFeeds(feedPairs, feeders): """Build a virtual feeds dict suitable for forming part of a component config. @param feedPairs: List of virtual feeds, as name-feederName pairs. For example, [('bar:baz', 'qux')] defines one virtual feed 'bar:baz', which is provided by the component's 'qux' feed. @type feedPairs: List of (feedId, feedName) -- both strings. @param feeders: The feeders exported by this component, from the registry. @type feeders: List of str. """ ret = {} for virtual, real in feedPairs: if real not in feeders: raise errors.ConfigError('virtual feed maps to unknown feeder: ' '%s -> %s' % (virtual, real)) try: common.parseFeedId(virtual) except: raise errors.ConfigError( 'virtual feed name not a valid feedId: %s' % (virtual, )) ret[virtual] = real return ret
def _getFeederAvatar(self, eater, feedId): # FIXME: 'get' part is confusing - this methods _modifies_ structures! flowName = eater.getParentName() compName, feedName = common.parseFeedId(feedId) ffid = common.fullFeedId(flowName, compName, feedName) feeder = None if ffid in self.feeds: feeder, feedName = self.feeds[ffid][0] self.feedDeps.add(feeder, (eater, ffid)) if feeder.getFeedId(feedName) != feedId: self.debug('chose %s for feed %s', feeder.getFeedId(feedName), feedId) return feeder, feedName
def getVirtualFeeds(self): """ Get the set of virtual feeds provided by this component. @rtype: dict of fullFeedId -> (ComponentAvatar, feederName) """ conf = self.componentState.get('config') ret = {} for feedId, feederName in conf.get('virtual-feeds', {}).items(): vComp, vFeed = common.parseFeedId(feedId) ffid = common.fullFeedId(self.getParentName(), vComp, vFeed) ret[ffid] = (self, feederName) return ret
def make_pipes(wrappers): fds = {} # feedcompname:feeder => (fd, start()) wrappersByName = dict([(wrapper.name, wrapper) for wrapper in wrappers]) def starter(wrapper, feedName, write): return lambda: wrapper.feedToFD(feedName, write) for wrapper in wrappers: eaters = wrapper.config.get("eater", {}) for eaterName in eaters: for feedId, eaterAlias in eaters[eaterName]: compName, feederName = common.parseFeedId(feedId) read, write = os.pipe() log.debug("launch", "%s: read from fd %d, write to fd %d", feedId, read, write) start = starter(wrappersByName[compName], feederName, write) fds[feedId] = (read, start) return fds
def make_pipes(wrappers): fds = {} # feedcompname:feeder => (fd, start()) wrappersByName = dict([(wrapper.name, wrapper) for wrapper in wrappers]) def starter(wrapper, feedName, write): return lambda: wrapper.feedToFD(feedName, write) for wrapper in wrappers: eaters = wrapper.config.get('eater', {}) for eaterName in eaters: for feedId, eaterAlias in eaters[eaterName]: compName, feederName = common.parseFeedId(feedId) read, write = os.pipe() log.debug('launch', '%s: read from fd %d, write to fd %d', feedId, read, write) start = starter(wrappersByName[compName], feederName, write) fds[feedId] = (read, start) return fds