コード例 #1
0
    def create_driver(
            self,  # pylint: disable=R0913
            p_module: str,
            p_queue_factory: AbstractQueueFactory,
            p_processor_factory: AbstractProcessorFactory,
            p_puller_factory: AbstractPullerFactory,
            p_pusher_factory: AbstractPusherFactory) -> AbstractDriver:
        """ Creates a new driver object """
        if p_module == "" or p_module is None:
            raise DriverCreationError(
                DriverCreationError.ErrorCode.parameter_missing)

        candidates = Inspector.get_classes_in_module(
            p_module, exclude_classes=["AbstractDriver"])
        for candidate in candidates:
            try:
                obj_instance = candidate(p_queue_factory, p_processor_factory,
                                         p_puller_factory, p_pusher_factory)
                if isinstance(obj_instance, AbstractDriver):
                    return obj_instance
            except Exception:  # pylint: disable=W0703
                pass

        raise DriverCreationError(
            DriverCreationError.ErrorCode.cant_create_instance,
            p_module=p_module)
コード例 #2
0
    def create_database(
            self,  # pylint: disable=R0913
            p_module: str,
            p_client_id: str,
            p_log: Log,
            p_passenger_factory: AbstractPassengerFactory,
            p_arguments: dict) -> AbstractDatabase:
        """ Default method for database creation """
        if p_module == "" or p_module is None:
            raise DatabaseCreationError(
                DatabaseCreationError.ErrorCode.parameter_missing)

        if p_client_id is None:
            client_id = ""
        else:
            client_id = p_client_id

        candidates = Inspector.get_classes_in_module(
            p_module, exclude_classes=["AbstractDatabase", "datetime"])

        for candidate in candidates:
            try:
                obj_instance = candidate(client_id, p_log, p_passenger_factory,
                                         p_arguments)
                if isinstance(obj_instance, AbstractDatabase):
                    return obj_instance
            except Exception:  # pylint: disable=W0703
                continue

        raise DatabaseCreationError(
            DatabaseCreationError.ErrorCode.cant_create_instance,
            p_module=p_module,
            p_client_id=p_client_id)
コード例 #3
0
    def create_dispatcher(
            self,
            p_module: str = None,
            p_ticket: DispatcherTicket = None) -> AbstractDispatcher:
        """ Dispatcher factory """

        if p_module == "" or p_module is None:
            dispatcher_module = PrimalDispatcherFactory._DEFAULT_DISPATCHER
        else:
            dispatcher_module = p_module

        if p_ticket is None:
            dispatcher_ticket = DispatcherTicket()
        else:
            dispatcher_ticket = p_ticket

        candidates = Inspector.get_classes_in_module(
            dispatcher_module, exclude_classes=["AbstractDispatcher"])

        for candidate in candidates:
            try:
                obj_instance = candidate(dispatcher_ticket)
                if isinstance(obj_instance, AbstractDispatcher):
                    return obj_instance
            except Exception:  # pylint: disable=W0703
                pass

        raise DispatcherCreationError(
            DispatcherCreationError.ErrorCode.cant_create_instance,
            p_module=dispatcher_module)
コード例 #4
0
    def create_pusher(self, p_module: str, p_log: Log) -> AbstractPusher:
        """ Creates a new pusher object """
        if p_module == "" or p_module is None:
            raise PusherCreationError(
                PusherCreationError.ErrorCode.parameter_missing)

        candidates = Inspector.get_classes_in_module(
            p_module, exclude_classes=["AbstractPusher"])
        for candidate in candidates:
            try:
                obj_instance = candidate(p_log)
                if isinstance(obj_instance, AbstractPusher):
                    return obj_instance
            except Exception:  # pylint: disable=W0703
                pass

        raise PusherCreationError(
            PusherCreationError.ErrorCode.cant_create_instance,
            p_module=p_module)
コード例 #5
0
    def create_passenger(self, p_module: str) -> AbstractPassenger:
        """ Default passenger factory """
        if p_module == "" or p_module is None:
            raise PassengerCreationError(PassengerCreationError.ErrorCode.parameter_missing)

        candidates = Inspector.get_classes_in_module(p_module, exclude_classes=["AbstractPassenger"]) # pylint: disable=C0301
        for candidate in candidates:
            try:
                obj_instance = candidate(p_passenger_module=p_module)
                if obj_instance.__module__ != p_module:
                    continue
                if isinstance(obj_instance, AbstractPassenger):
                    return obj_instance
            except Exception: # pylint: disable=W0703
                pass

        raise PassengerCreationError(
            PassengerCreationError.ErrorCode.cant_create_instance,
            p_module=p_module)
コード例 #6
0
    def create_puller(self, p_module: str, p_log: Log) -> AbstractPuller:
        """ Puller factory """
        if p_module == "" or p_module is None:
            raise PullerCreationError(PullerCreationError.ErrorCode.parameter_missing)

        candidates = Inspector.get_classes_in_module(p_module, exclude_classes=["AbstractPuller"])

        for candidate in candidates:
            try:
                obj_instance = candidate(p_log)
                if isinstance(obj_instance, AbstractPuller) and obj_instance.__module__ == p_module:
                    return obj_instance
            except AbstractPullerError as puller_error:
                raise puller_error
            except Exception: # pylint: disable=W0703
                continue

        raise PullerCreationError(
            PullerCreationError.ErrorCode.cant_create_instance,
            p_module=p_module)
コード例 #7
0
    def create_queue(self, p_module: str, p_database: AbstractDatabase,
                     p_log: Log) -> AbstractQueue:
        """ Queue factory """

        if p_module == "" or p_module is None or p_database is None or p_log is None:
            raise QueueCreationError(
                QueueCreationError.ErrorCode.parameter_missing,
                p_module=str(p_module))

        candidates = Inspector.get_classes_in_module(
            p_module, exclude_classes=["AbstractQueue"])
        for candidate in candidates:
            try:
                obj_instance = candidate(p_database, p_log)
                if isinstance(obj_instance, AbstractQueue):
                    return obj_instance
            except Exception:  # pylint: disable=W0703
                continue

        raise QueueCreationError(
            QueueCreationError.ErrorCode.cant_create_instance,
            p_module=p_module)