class Services(object): def __init__( self ): self.interface_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../common/interface')) self.server_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) self.dynamic_module_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../../dynamic_modules')) self.iface_registry = IfaceRegistry() self.type_registry_registry = TypeRegistryRegistry(dict(builtins=builtin_type_registry())) self.type_repository = TypeRepository(self.interface_dir, self.iface_registry, self.type_registry_registry) self.module_manager = ModuleManager(self, self.type_registry_registry) self.route_storage = RouteStorage(PhonyRouteRepository()) self.resources_loader = PhonyResourcesLoader() self.remoting = Remoting(self.iface_registry) self.module_manager.register_meta_hook() self._load_type_modules() self._load_server_modules() self._register_transports() def _load_type_modules( self ): for module_name in [ 'code_repository', ]: fpath = os.path.join(self.interface_dir, module_name + TYPE_MODULE_EXT) self.type_repository.load_module(module_name, fpath) def _load_server_modules( self ): for module_name in [ 'client_code_repository', ]: fpath = os.path.join(self.server_dir, module_name + DYN_MODULE_EXT) with open(fpath) as f: source = f.read() package = 'hyperapp.server' module = tModule(id=module_name, package=package, deps=[], satisfies=[], source=source, fpath=fpath) self.module_manager.add_code_module(module) def _register_transports( self ): for module in [tcp_transport, encrypted_transport]: module.register_transports(self.remoting.transport_registry, self)