def superClasses(softpkg): if softpkg.type() == ComponentTypes.RESOURCE: name = 'Resource' package = 'ossie.resource' elif softpkg.type() == ComponentTypes.DEVICE: name = 'Device' package = 'ossie.device' for port in softpkg.providesPorts(): idl = IDLInterface(port.repid()) if idl.namespace() == 'FRONTEND': if idl.interface().find('DigitalTuner') != -1 or \ idl.interface().find('AnalogTuner') != -1 or \ idl.interface().find('FrontendTuner') != -1: name = 'frontend.FrontendTunerDevice' elif softpkg.type() == ComponentTypes.LOADABLEDEVICE: name = 'LoadableDevice' package = 'ossie.device' elif softpkg.type() == ComponentTypes.EXECUTABLEDEVICE: name = 'ExecutableDevice' package = 'ossie.device' else: raise ValueError, 'Unsupported software component type', softpkg.type() classes = [{'name': name, 'package': package}] if softpkg.descriptor().supports('IDL:CF/AggregateDevice:1.0'): classes.append({'name': 'AggregateDevice', 'package': 'ossie.device'}) return classes
def hasAnalogTunerProvidesPorts(self, softpkg): for port in softpkg.providesPorts(): idl = IDLInterface(port.repid()) if idl.namespace() == 'FRONTEND': if idl.interface().find('AnalogTuner') != -1: return True return False
def getInterfaceNamespaces(self, softpkg): # The CF interfaces are already assumed as part of REDHAWK seen = set(['CF', 'ExtendedCF', 'ExtendedEvent']) for interface in softpkg.descriptor().interfaces(): namespace = IDLInterface(interface.repid).namespace() # Assume that omg.org interfaces are available as part of the ORB. if namespace in seen or namespace.startswith('omg.org/Cos'): continue seen.add(namespace) yield namespace
def _mapComponent(self, softpkg): pycomp = {} pycomp['userclass'] = self.userClass(softpkg) idl = IDLInterface(softpkg.descriptor().repid().repid) pycomp['interface'] = idl.interface() pycomp['operations'] = idl.operations() pycomp['attributes'] = idl.attributes() pycomp.update(self.getNamespace(idl)) return pycomp
def _mapComponent(self, softpkg): cppcomp = {} idl = IDLInterface(softpkg.descriptor().repid().repid) cppcomp['baseclass'] = self.baseClass(softpkg) cppcomp['userclass'] = self.userClass(softpkg) cppcomp['superclass'] = self.superClass(softpkg) cppcomp['interfacedeps'] = tuple(self.getInterfaceDependencies(softpkg)) idl = IDLInterface(softpkg.descriptor().repid().repid) cppcomp['namespace'] = self.getNamespace(idl) cppcomp['interface'] = idl.interface() cppcomp['operations'] = self.getOperations(idl) cppcomp['header'] = self.getHeader(idl) return cppcomp
def __init__(self, port): self.idl = IDLInterface(port.repid()) self.namespace = self.idl.namespace() self.interface = self.idl.interface() if port.isProvides(): self.direction = 'provides' else: self.direction = 'uses'
def getImplementedInterfaces(softpkg): deviceinfo = set() # Ensure that parent interfaces also gets added (so, e.g., a device # with a DigitalTuner should also report that it's an AnalogTuner # and FrontendTuner) inherits = { 'DigitalTuner': ('AnalogTuner', 'FrontendTuner'), 'AnalogTuner': ('FrontendTuner',) } for port in softpkg.providesPorts(): idl = IDLInterface(port.repid()) # Ignore non-FRONTEND intefaces if idl.namespace() != 'FRONTEND': continue interface = idl.interface() deviceinfo.add(interface) for parent in inherits.get(interface, []): deviceinfo.add(parent) return deviceinfo
def _mapComponent(self, softpkg): javacomp = {} idl = IDLInterface(softpkg.descriptor().repid().repid) javacomp['interface'] = idl.interface() javacomp['operations'] = self.operations(idl) javacomp['attributes'] = self.attributes(idl) javacomp.update(self.getNamespace(idl)) javacomp['package'] = self.package userclass = softpkg.name() baseclass = userclass + '_base' javacomp['baseclass'] = {'name': baseclass, 'file': baseclass+'.java'} javacomp['userclass'] = {'name': userclass, 'file': userclass+'.java'} javacomp['superclass'] = self.superclass(softpkg) javacomp['mainclass'] = java.qualifiedName(userclass, self.package) javacomp['jarfile'] = softpkg.name() + '.jar' javacomp['interfacedeps'] = list(self.getInterfaceDependencies(softpkg)) javacomp['interfacejars'] = self.getInterfaceJars(softpkg) return javacomp
class PortGenerator(object): @classmethod def match(cls, port): return False @classmethod def generator(cls, port): return cls(port) def __init__(self, port): self.idl = IDLInterface(port.repid()) self.namespace = self.idl.namespace() self.interface = self.idl.interface() if port.isProvides(): self.direction = 'provides' else: self.direction = 'uses' def get_template(self, template): loader = self.loader() env = CodegenEnvironment(loader=loader, **template.options()) env.filters.update(template.filters()) return env.get_template(template.template) def loader(self): raise NotImplementedError, self.__class__.__name__+'.loader' def hasImplementation(self): return self._implementation() is not None def implementation(self): template = self._implementation() return self.get_template(template) def _implementation(self): return None
def _mapComponent(self, softpkg): pycomp = {} pycomp['userclass'] = self.userClass(softpkg) idl = IDLInterface(softpkg.descriptor().repid().repid) pycomp['interface'] = idl.interface() pycomp['operations'] = idl.operations() pycomp['attributes'] = idl.attributes() module = python.idlModule(idl.namespace()) poamod = python.poaModule(idl.namespace()) pycomp['imports'] = (module, poamod) pycomp['baseclass'] = poamod.split('.')[-1] + '.' + idl.interface() return pycomp
def match(self, port): interface = IDLInterface(port.repid()) if interface.namespace() != self.NAMESPACE: return False return interface.interface().startswith('data')
def generator(self, port): interface = IDLInterface(port.repid()).interface() return FrontendPortGenerator(port)
def match(self, port): return IDLInterface(port.repid()).namespace() == self.NAMESPACE
def generator(self, port): interface = IDLInterface(port.repid()).interface() if port.isUses(): return GenericUsesPortGenerator(port) return FrontendPortGenerator(port)
def match(self, port): return IDLInterface(port.repid()).namespace() == self.NAMESPACE and ( not port.isProvides())
def hasProvidesPushPacket(self, softpkg): for port in softpkg.providesPorts(): idl = IDLInterface(port.repid()) if idl.namespace() == 'BULKIO' and idl.interface().startswith('data'): return True return False