Example #1
0
 def __init__(self):
     self.n = 4
     self.customers = 0
     self.mutex = Lock()
     self.barberAttention = Lock()
     self.haircutStart = Barrier(2, timeout=None)
     self.haircutFinished = Barrier(2, timeout=None)
Example #2
0
    def __init__(self, room):

        super().__init__()

        self.room = room
        self.exception = None

        self.__lastping = self.__lastpong = 0

        agent = "Volafile-API/" + __version__

        self.headers.update({"User-Agent": agent})
        self.cookies.update({"allow-download": "1"})

        self.lock = RLock()
        self.__conn_barrier = Barrier(2)
        self.listeners = defaultdict(Listeners)
        self.must_process = False
        self.__queues_enabled = True

        self.__ping_interval = 20  # default

        self.proto = Protocol(self)
        self.handler = Handler(self)
        self.last_ack = self.proto.max_id
    def __init__(self, n_threads=4, initial_port=19997, q_table_version=0,
                 batch_size=None, learner=None, explorer=None):
        self.barrier = Barrier(n_threads + 1, timeout=720)
        self.n_threads = n_threads
        self.initial_port = initial_port
        self.batch_size = batch_size

        self.controller = MyActionValueTable(q_table_version)
        if learner is None:
            self.learner = Q(0.5, 0.9)
        else:
            self.learner = learner

        if explorer is None:
            self.explorer = self.learner.explorer = EpsilonGreedyExplorer(0.2, 0.998)
        else:
            self.explorer = self.learner.explorer = explorer
        self.agent = LearningAgent(self.controller, self.learner)
        # Logger initialization
        self.logger = logging.getLogger('master_logger')
        self.logger.setLevel(logging.DEBUG)
        self.logger.addHandler(logging.FileHandler(Utils.DATA_PATH + 'learning-tables/master.log'))
        self.failed_simulations = []
        self.n_episodes = 0
        self.simulations = []
        self.initialize_simulations()
Example #4
0
    def __init__(self,
                 event: Event = Event(),
                 start_thread: bool = None,
                 **kwargs):
        """Override the Thread.__init__.

        默认设置为守护进程,也可以添加Thread的参数。
        """

        # Default barrier.
        # The parties is 2 thread : main thread and sub thread.
        self.barrier = Barrier(2)

        # The optional arguments: shared event.
        self.event = event
        self.event.set()

        # Default daemon.
        daemon = dict(kwargs).pop('daemon', True)
        Thread.__init__(self, daemon=daemon, **kwargs)
        # Thread.__init__(self, **kwargs)

        # The optional arguments: start_thread
        # start_thread = dict(kwargs).pop('start_thread', initial_start_thread)

        flag = start_thread if start_thread is not None else initial_start_thread
        if flag:
            Thread.start(self)
Example #5
0
 def __init__(self, index: int, callback: Callable[[Sound, int], None]):
     self._logger = create_logger(f"Recognizer{index}")
     self._barrier = Barrier(2)
     self._index = index
     self._callback = callback
     self._stop = False
     Thread(target=self._run).start()
Example #6
0
def using_multiply_thread():
    print(glob_var)

    # define global
    global barriers
    barriers = (
        None,  # start from index 1
        None,  # the first thread need't barrier
        Barrier(2),
        Barrier(2),
    )

    # create thread
    threads = (
        Thread(target=func1),
        Thread(target=func2),
        Thread(target=func3),
    )
    # start sub_thread
    for thread in threads:
        thread.start()
    # wait sub thread complete
    for thread in threads:
        thread.join()

    print(glob_var)
Example #7
0
def worker(bar:Barrier):
    logging.info("I am working-Number of waiting: {}".format(bar.n_waiting)) # numbers of threads stuck at barrier: once it;s 3, it will start
    try:
        bar.wait()  # if timeout, barrier will abort and broken
    except threading.BrokenBarrierError:
        logging.info('Broken Error')
    logging.info("Job done - Number of waiting: {}".format(bar.n_waiting))
Example #8
0
class OAuthHttpServer(HTTPServer):
    """Utility base class for coordinating between handlers and the CLI"""

    def __init__(
        self,
        server_address: Tuple[str, int],
        request_handler_class: Callable[..., BaseRequestHandler],
        on_request_cb: Callable[[BaseRequestHandler], None] | None,
    ):
        super().__init__(server_address, request_handler_class)
        self._on_request_cb = on_request_cb
        self.error_result = None
        self.success_result = None

        timeout_seconds = REQUEST_TIMEOUT.total_seconds()
        self._request_started_barrier = Barrier(2, timeout=timeout_seconds)
        self._request_finished_barrier = Barrier(2, timeout=timeout_seconds)

    def wait_for_request_started(self):
        self._request_started_barrier.wait()

    def wait_for_request_finished(self):
        self._request_finished_barrier.wait()

    def on_request(self, handler: BaseRequestHandler):
        if self._on_request_cb:
            self._on_request_cb(handler)

    def finish_with_error(self, error_result: str):
        self.error_result = error_result

    def finish_with_success(self, success_result: str):
        self.success_result = success_result
Example #9
0
    def __init__(self, func: Callable[[any], any], preload: Iterable = None,
                 keep=False, progress=False, size=os.cpu_count() * 2 + 1):
        """
        parallel run func with multi-threading

        :param func: target method to run, need receive an arg
        :param preload: preload any args
        :param keep: whether or not keep thread while queue is empty
                     if keep=False, thread will auto close while task end
        :param size: how much thread to parallel run
        """
        self.method = func
        self.keep = keep
        self.size = size
        self.queue = Queue()
        self.tasks = []
        self.progress = progress
        self.tqdm = None

        self._is_start = Event()
        self._is_stop = Event()

        self.callbacks = [self._tasks_done_notify]
        self._tasks_done = Barrier(size, action=self._tasks_done_callback)

        self._results = Queue()
        self._results_gen = None

        for item in preload or []:
            self.queue.put(item)

        self.total = self.queue.qsize()
        self.count = 0
    def test_connection_acceptance(self):
        """Verify that when at attempt is made to connect to a session bridge it is accepted.

        This test has to perform some ear-wiggling and hop-dart behaviour to
        make sure it waits until the event loop has called the accept() method
        before it tries to check to see if the accept() method has been called
        (hence the thread barrier).  Also, because the real socket accept
        operation does not get performed, the mock accept() call can be
        executed several times by the server before we get around to actually
        checking up on it and we only care that it's called at least once, hence
        the 'called_once' flag.
        """
        barrier = Barrier(2, timeout=0.5)
        called_once = False
        real_session_address = launcher.translate_to_real_address(self._fake_session_socket)

        def fake_accept(*args, called_once=called_once):
            if not called_once:
                called_once = True
                barrier.wait()
            sock = socket(AF_UNIX, SOCK_STREAM)
            return (sock, 'xyzzy')

        with patch('libertine.launcher.session.socket.accept', side_effect=fake_accept) as mock_accept:
            with SessionEventLoopRunning(self._session):
                sock = socket(AF_UNIX, SOCK_STREAM)
                sock.connect(real_session_address)
                with suppress(BrokenBarrierError):
                    barrier.wait()
            self.assertThat(mock_accept.called, Equals(True), "accept() not called")
Example #11
0
 def __init__(self):
     self.loop = None
     self.condition = Condition()
     barrier = Barrier(2)
     self.thread = Thread(daemon=True, target=lambda: self._loop(barrier))
     self.thread.start()
     barrier.wait()
Example #12
0
    def __init__(self, tellos: List[Tello]):
        """Initialize a TelloSwarm instance

		Arguments:
			tellos: list of [Tello][tello] instances
		"""
        self.tellos = tellos
        self.barrier = Barrier(len(tellos))
        self.funcBarrier = Barrier(len(tellos) + 1)
        self.funcQueues = [Queue() for tello in tellos]

        def worker(i):
            queue = self.funcQueues[i]
            tello = self.tellos[i]

            while True:
                func = queue.get()
                self.funcBarrier.wait()
                func(i, tello)
                self.funcBarrier.wait()

        self.threads = []
        for i, tello in enumerate(tellos):
            thread = Thread(target=worker, daemon=True, args=(i, ))
            thread.start()
            self.threads.append(thread)
Example #13
0
def isql_job(act: Action, b: Barrier, lock: Lock, result_list: List[str]):
    dml_script = """
     set bail on;
     set list on;
     set term ^;
     execute block returns(ins_progress int) as
       declare n int = 100000;
     begin
       ins_progress=0;
       while (n > 0) do
       begin
         insert into test(s) values(rpad('', 500, uuid_to_char(gen_uuid())));

         ins_progress = ins_progress + 1;
         if (mod(ins_progress, 100) = 0) then suspend;

         n = n - 1;
       end
     end
     ^ set term ;^
     quit;
     """
    b.wait()
    result: CompletedProcess = run([
        act.vars['isql'], '-user', act.db.user, '-password', act.db.password,
        act.db.dsn
    ],
                                   input=dml_script,
                                   encoding='utf8',
                                   stdout=PIPE,
                                   stderr=STDOUT)
    with lock:
        result_list.append(result.stdout)
Example #14
0
    def simulate_policy(self):

        simulators = []
        barrier = Barrier(self.n_threads + 1)
        for i in range(self.n_threads):
            executor = PolicyExecutor(self.initial_port + i, self.n_episodes,
                                      barrier, self.dtmc_generator.policy)
            simulators.append(executor)
            executor.start()
        barrier.wait()
        counters = {
            'goal': 0,
            'far': 0,
            'fallen': 0,
            'collided': 0,
            'unknown': 0
        }
        for sim in simulators:
            self._add_to_t_table(sim.t_table)
            #  self._add_to_t_table(sim.t_table)
            print(sim.counters)
            for key, value in sim.counters.items():
                counters[key] += value

        self.logger.info('Simulation values: {}'.format(counters))

        self.dtmc_generator.trans_prob_dict = self.dtmc_generator.compute_transition_probabilities_dict(
            self.transition_counters)
        self.t_table.save('data/repair/t-table-{}.pkl'.format(self.itr))
        subprocess.Popen('pkill vrep', shell=True)

        return counters
Example #15
0
    def wrapper(self, *args, **kw):
        """Wraps instance method to be called on loop thread"""

        # Just return when already on the event thread
        if self.thread.ident == get_ident():
            return func(self, *args, **kw)

        barrier = Barrier(2)
        result = None
        ex = None

        def call():
            """Calls function on loop thread"""
            nonlocal result, ex
            try:
                result = func(self, *args, **kw)
            except Exception as exc:
                ex = exc
            finally:
                barrier.wait()

        self.loop.call_soon_threadsafe(call)
        barrier.wait()
        if ex:
            raise ex or Exception("Unknown error")
        return result
Example #16
0
 def setUp(self) -> None:
     super(TestSuiteRuntimeServer, self).setUp()
     self.scheduler.ws_data_mgr = DataStoreMgr(self.scheduler)
     for name in self.scheduler.config.taskdefs:
         task_proxy = create_task_proxy(task_name=name,
                                        suite_config=self.suite_config,
                                        is_startup=True)
         warnings = self.task_pool.insert_tasks(items=[task_proxy.identity],
                                                stopcp=None,
                                                no_check=False)
         assert 0 == warnings
     self.task_pool.release_runahead_tasks()
     self.scheduler.ws_data_mgr.initiate_data_model()
     self.workflow_id = self.scheduler.ws_data_mgr.workflow_id
     create_auth_files(self.suite_name)  # auth keys are required for comms
     barrier = Barrier(2, timeout=10)
     self.server = SuiteRuntimeServer(self.scheduler,
                                      context=SERVER_CONTEXT,
                                      threaded=True,
                                      barrier=barrier,
                                      daemon=True)
     self.server.public_priv = Priv.CONTROL
     self.server.start(*PORT_RANGE)
     # barrier.wait() doesn't seem to work properly here
     # so this workaround will do
     while barrier.n_waiting < 1:
         sleep(0.2)
     barrier.wait()
     sleep(0.5)
Example #17
0
def count_down(cnt: int, b: threading.Barrier):
    b.wait()
    t = time.time()
    while cnt > 0:
        cnt -= 1
    delta = time.time() - t
    print(f"time taken {delta}")
Example #18
0
    def __init__(self,
                 gamesize=10000,
                 nbSpherePnj=100,
                 nbMaxSpherePnj=1000,
                 minTailleSpheresPnj=100,
                 maxTailleSpheresPnj=1000):
        """
        gamesize                Taille du jeu en unités metriques (la carte est carrée)
        nbSpherePnj             nombre de spheres qu'a le PNJ au début
        nbMaxSpherePnj          nombre maximum de spheres qu'a le PNJ
        minTailleSpheresPnj     taille minimum d'une Sphere du PNJ
        maxTailleSpheresPnj     taille maximum d'une Sphere du PNJ
        """
        self.lockmanger = Lock()
        Thread.__init__(self)
        self.game = Game(gamesize, nbSpherePnj, nbMaxSpherePnj,
                         minTailleSpheresPnj, maxTailleSpheresPnj)

        self.data = self.game.toJson()
        self.scores = self.game.scoresJson()

        self.aManger = []

        self.nbth = 0

        self.joueursAAdd = []

        #B2 barriere d'étape
        self.barrierEtape = Barrier(0, action=self.randomPnj)
        #B1 barriere de tours
        self.barrierManger = Barrier(0, action=self.manger)
        #barriere de spheres a manger
        self.barrierTours = Barrier(0, action=self.updateNbTh)

        self.debutTours = time.time()
Example #19
0
    def __init__(self):

        self._h2o = Barrier(3)
        self._atom_h = Semaphore(2)
        self._atom_o = Semaphore(1)

        pass
Example #20
0
    def wrapper(self, *args, **kw):
        """Wraps instance method to be called on loop thread"""

        # Just return when already on the event thread
        if self.thread.ident == get_ident():
            return func(self, *args, **kw)

        barrier = Barrier(2)
        result = None
        ex = None

        def call():
            """Calls function on loop thread"""
            nonlocal result, ex
            try:
                result = func(self, *args, **kw)
            except Exception as exc:
                ex = exc
            finally:
                barrier.wait()

        self.loop.call_soon_threadsafe(call)
        barrier.wait()
        if ex:
            raise ex or Exception("Unknown error")
        return result
Example #21
0
 def __init__(self):
   self.dc_count = 0
   self.dc_waiting = Semaphore(0)
   self.marvel_count = 0
   self.marvel_waiting = Semaphore(0)
   self.lock = Lock()
   self.barrier = Barrier(4)
   self.ride_count = 0
Example #22
0
 def __init__(self):
     self.loop = None
     self.condition = Condition()
     barrier = Barrier(2)
     self.awaken = Awakener(self.condition)
     self.thread = Thread(daemon=True, target=lambda: self._loop(barrier))
     self.thread.start()
     barrier.wait()
Example #23
0
class Boat():
    def __init__(self, cap):
        self.cap = cap
        self._mutex = Lock()  # mutex
        self._serfqueue = Semaphore(4)  # fila de serfs
        self._hackerqueue = Semaphore(4)  # fila de hackers
        self._barrier = Barrier(4)  # barreira
        self._n_hackers = 0  # numero de hackers
        self._n_serfs = 0  # numero de serfs
        self._is_captain = False

    def wait_hacker(self):
        self._hackerqueue.acquire()

    def wait_serf(self):
        self._serfqueue.acquire()

    def release_hacker(self):
        self._hackerqueue.release()

    def release_serf(self):
        self._serfqueue.release()

    def signal_barrier(self):
        self._barrier.wait()

    def wait_mutex(self):
        self._mutex.acquire()

    def release_mutex(self):
        self._mutex.release()

    def status_captain(self, estado):
        self._is_captain = estado

    def get_total(self):
        return self._n_hackers + self._n_serfs

    def get_n_serfs(self):
        return self._n_serfs

    def increment_serfs(self):
        self._n_serfs += 1

    def decrement_serfs(self):
        self._n_serfs -= 1

    def get_n_hackers(self):
        return self._n_hackers

    def increment_hackers(self):
        self._n_hackers += 1

    def decrement_hackers(self):
        self._n_hackers -= 1

    def print_boat_fleet(self):
        print('h:', self.get_n_hackers(), ', s:', self.get_n_serfs())
Example #24
0
class ThreadedProcessor:
    def __init__(self, processor, scale):
        self.processor = processor
        self.scale = scale
        self.iqueue = janus.Queue(maxsize=self.scale)
        self.oqueue = janus.Queue(maxsize=self.scale)
        self.barrier = Barrier(self.scale)

    async def __call__(self, messages):
        async for channel, message in self.run_threads(messages):
            yield channel, message

    async def run_threads(self, messages):
        asyncio.ensure_future(self.thread_feeder(messages))
        self.threads = dict(
            (i, Thread(target=self.thread_consumer, args=(i, )).start())
            for i in range(self.scale))
        queue_iter = aiter(self.oqueue.async_q.get, (None, pipe.EOT))
        async for channel, message in queue_iter:
            self.oqueue.async_q.task_done()
            yield channel, message

        # Empty queue of threads' EOTs
        for i in range(self.scale):
            if i:  # skip the one already consumed by aiter above
                await self.oqueue.async_q.get()
            self.oqueue.async_q.task_done()
            # print(f'thread {i} EOT received back')

        while self.threads:  # FIXME: join threads instead, and move or retire del self.threads[]
            asyncio.sleep(
                0.1
            )  # ... while at it, catch exceptions and clean up queue with task_done  # noqa: E501
        # print(f'all threads stopped')

    async def thread_feeder(self, messages):
        async for (channel, message) in messages:
            # TODO: recreate dead threads, report thread failures
            await self.iqueue.async_q.put((channel, message))
        for i in range(self.scale):
            await self.iqueue.async_q.put((None, pipe.EOT))
            # print(f'thread {i} EOT sent')

    def thread_consumer(self, threadnum):  # runs in thread
        # print(f'thread {threadnum} started')
        queue_iter = iter(self.iqueue.sync_q.get, (None, pipe.EOT))
        for channel, message in self.processor(queue_iter):
            self.iqueue.sync_q.task_done()
            self.oqueue.sync_q.put((channel, message))
        # print(f'thread {threadnum} EOT received')
        self.iqueue.sync_q.task_done(
        )  # for EOT which does not make it past queue iterator
        # print(f'thread {threadnum} task done')
        self.barrier.wait()
        self.oqueue.sync_q.put(
            (None, pipe.EOT))  # TODO: use threading.Event to send just one
        # print(f'thread {threadnum} EOT sent back')
        del self.threads[threadnum]
 def __init__(self):
     self.__currentSimTime = None
     self.__previousSimTime = None
     self.__events = None
     self.__subscribers = {}
     self.__syncBarrier = Barrier(1)  # (1): Simulator Control Blocks too
     self.__syncLock = Lock()
     self.__isStarted = False
     self.__cleared = True
 def unsubscribe(self, name):
     self.__syncLock.acquire()
     if self.__syncBarrier.n_waiting != 0 and not self.__syncBarrier.broken:
         raise Exception(
             name, "tried to unsubscribe during runtime (syncBarrier has",
             self.__syncBarrier.n_waiting, "threads waiting)")
     del self.__subscribers[name]
     self.__syncBarrier = Barrier(self.__syncBarrier.parties - 1)
     self.__syncLock.release()
Example #27
0
 def __init__(self, cap):
     self.cap = cap
     self._mutex = Lock()  # mutex
     self._serfqueue = Semaphore(4)  # fila de serfs
     self._hackerqueue = Semaphore(4)  # fila de hackers
     self._barrier = Barrier(4)  # barreira
     self._n_hackers = 0  # numero de hackers
     self._n_serfs = 0  # numero de serfs
     self._is_captain = False
Example #28
0
    def __init__(self):
        self.democrat_count = self.republican_count = 0
        self.democrat_lock = Semaphore(0)
        self.republican_lock = Semaphore(0)

        self.lock = Lock()
        self.barrier = Barrier(4)

        self.ride_id = 0
Example #29
0
def manage_data_t(b: threading.Barrier):
    app_ = new_app()
    name = threading.currentThread().getName()
    b.wait()
    t = time.time()
    result = app_.send_task('tasks.data', args=())
    data = result.get()
    t2 = time.time()
    delta = t2 - t
    logging.info(f'{name} The Overall time taken is {delta}')
Example #30
0
def startBuffer(config):
    stopEvent = Event()
    barrier = Barrier(3)#Three threads. Main, Server, Signal
    finalise = True
    setGlobalVariable(stopEvent, barrier, finalise)
    # Call server function
    bs = BufferServer(config.socket_port, config.max_connection, 
            stopEvent, barrier, config.timeout, config.timer_seconds, 
            config.urldatabase, config.user, config.password)
    bs.start()
    barrier.wait()
Example #31
0
def run_now(experiment: Experiment, probe: Probe, configuration: Configuration,
            secrets: Secrets, done: threading.Barrier) -> None:
    try:
        run = execute_activity(experiment=experiment,
                               probe=probe,
                               configuration=configuration,
                               secrets=secrets)
    finally:
        done.wait()

    interrupt_experiment_on_unhealthy_probe(probe, run, configuration, secrets)
Example #32
0
    def init(self, media_player):
        """
        Sets up the PiFace CAD 2 module.
        :param media_player: instance of MediaPlayer class which is being controlled
        :return: None
        """
        self._media_player = media_player

        # https://github.com/piface/pifacedigitalio/issues/27
        self._listeners_barrier = Barrier(2)
        self._listeners_wait_for_deactivation_thread = Thread(target=self._switch_listener_wait_for_deactivation,
                                                              args=[])
        self._listeners_wait_for_deactivation_thread.setDaemon(True)
        self._listeners_wait_for_deactivation_thread.start()
        self._switch_listener = pifacecad.SwitchEventListener()
        self._switch_listener.register(0, pifacecad.IODIR_ON,
                                       lambda event: self._clear_and_call(media_player.prev_branch))
        self._switch_listener.register(1, pifacecad.IODIR_ON,
                                       lambda event: self._clear_and_call(media_player.next_branch))
        self._switch_listener.register(2, pifacecad.IODIR_ON,
                                       lambda event: media_player.volume_down())
        self._switch_listener.register(3, pifacecad.IODIR_ON,
                                       lambda event: media_player.volume_up())
        self._switch_listener.register(5, pifacecad.IODIR_ON,
                                       lambda event: media_player.play_pause())
        self._switch_listener.register(6, pifacecad.IODIR_ON,
                                       lambda event: self._clear_and_call(media_player.prev_track))
        self._switch_listener.register(7, pifacecad.IODIR_ON,
                                       lambda event: self._clear_and_call(media_player.next_track))
        self._switch_listener.activate()
        try:
            self._ir_listener = pifacecad.IREventListener(self._config['NAME'])
            self._ir_listener.register('play_pause', lambda event: call_and_sleep(media_player.play_pause))
            self._ir_listener.register('next_track',
                                       lambda event: call_and_sleep(self._clear_and_call, media_player.next_track))
            self._ir_listener.register('prev_track',
                                       lambda event: call_and_sleep(self._clear_and_call, media_player.prev_track))
            self._ir_listener.register('next_branch',
                                       lambda event: call_and_sleep(self._clear_and_call, media_player.next_branch))
            self._ir_listener.register('prev_branch',
                                       lambda event: call_and_sleep(self._clear_and_call, media_player.prev_branch))
            self._ir_listener.register('eject', lambda event: call_and_sleep(media_player.stop))
            self._ir_listener.register('volume_up', lambda event: call_and_sleep(media_player.volume_up))
            self._ir_listener.register('volume_down', lambda event: call_and_sleep(media_player.volume_down))
            self._ir_listener.activate()
        except Exception:
            print('LIRC cannot be initialized.')
        self._cad.lcd.clear()
        self._cad.lcd.backlight_on()
        self._cad.lcd.write('Loading')
        self._write_info_thread = Thread(target=self._write_info_thread_func)
        self._write_info_thread.setDaemon(True)
        self._write_info_thread.start()
Example #33
0
class H2O:
    def __init__(self):
        self.b = Barrier(3)
        self.h = Semaphore(2)
        self.o = Semaphore(1)

    def hydrogen(self, releaseHydrogen: 'Callable[[], None]') -> None:
        self.h.acquire()
		self.b.wait()
        # releaseHydrogen() outputs "H". Do not change or remove this line.
        releaseHydrogen()
        self.h.release()
Example #34
0
def infer_async_thread_proc(
        net, exec_net: ExecutableNetwork, dev_thread_request_id: int,
        image_list: list, first_image_index: int, last_image_index: int,
        num_total_inferences: int, result_list: list, result_index: int,
        start_barrier: threading.Barrier, end_barrier: threading.Barrier,
        simultaneous_infer_per_thread: int, infer_result_queue: queue.Queue,
        input_blob, output_blob):

    # Sync with the main start barrier
    start_barrier.wait()

    # Start times for the fps counter
    start_time = time.time()
    end_time = start_time

    handle_list = [None] * simultaneous_infer_per_thread
    image_index = first_image_index
    image_result_start_index = 0

    inferences_per_req = int(num_total_inferences /
                             simultaneous_infer_per_thread)
    # For each thread, 6 async inference requests will be created
    for outer_index in range(0, inferences_per_req):
        # Start the simultaneous async inferences
        for infer_id in range(0, simultaneous_infer_per_thread):
            new_request_id = dev_thread_request_id + infer_id
            handle_list[infer_id] = exec_net.start_async(
                request_id=new_request_id,
                inputs={input_blob: image_list[image_index]})
            image_index += 1
            if (image_index > last_image_index):
                image_index = first_image_index

        # Wait for the simultaneous async inferences to finish.
        for wait_index in range(0, simultaneous_infer_per_thread):
            infer_status = handle_list[wait_index].wait()
            result = handle_list[wait_index].outputs[output_blob]
            top_index = numpy.argsort(result, axis=1)[0, -1:][::-1]
            top_index = top_index[0]
            prob = result[0][top_index]
            infer_result_queue.put((top_index, prob))

            handle_list[wait_index] = None

    # Save the time spent on inferences within this inference thread and associated reader thread
    end_time = time.time()
    total_inference_time = end_time - start_time
    result_list[result_index] = total_inference_time

    print("Thread " + str(result_index) + " end barrier reached")

    # Wait for all inference threads to finish
    end_barrier.wait()
Example #35
0
    def __init__(self):
        self.send_msg_flag = True
        builtins.FileName = time.strftime('%Y-%m-%d-%H%M%S_log')
        builtins.SendMsg_dic = [{} for i in range(number_of_servers)]
        builtins.received_flag = [False for i in range(number_of_servers)]
        builtins.AverageTime = ['' for i in range(number_of_servers)]
        builtins.MaxTime = ['' for i in range(number_of_servers)]
#        builtins.Send_Finished_flag = [False for i in range(number_of_servers)]
        builtins.F = ('log/' + FileName)
        self.B = Barrier(number_of_servers)
        self.received_B = Barrier(number_of_servers)
#        self.Send_B = Barrier(Send_Servers)

        self.main()
Example #36
0
 def __init__(self,version,parent = None):
     '''
     Costruisce una finestra principale di Thinkzone.
     Ha bisogno di alcuni parametri per avviarsi.
     @param version: La versione del programma. 
     '''
     self.__VERSION__ = version
     logging.basicConfig(filename="thinkzone_gui.log",format='%(asctime)s | Loglevel: %(levelname)s | %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
     self._logger = logging.getLogger()
     self._logger.setLevel(logging.DEBUG)
     self._logger.info("Inizio nuova sessione")
     QtGui.QMainWindow.__init__(self,parent)
     self.ui = finestraprincipale.Ui_MainWindow()
     self.setupUi(self)
     spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
     self.layoutTextarea.addItem(spacerItem)
     
     #setup finestre di dialogo
     self._loginDialog = loginDialog.Login(self)
     self._aboutDialog = aboutDialog.aboutDial(self)
     self._aboutDialog.labelVersion.setText("Version: "+self.__VERSION__)
     #connettori
     self._barrier = Barrier(2, timeout=200)
     self._connettore._barrier = self._barrier
     self._postPlexer = PostPlexer(self._connettore)
     self._connettore._postPlexer = self._postPlexer
     #connessione di tutti i segnali
     QtCore.QObject.connect(self.buttonCrea,QtCore.SIGNAL('pressed()'), self._inviaCreazione)
     QtCore.QObject.connect(self.actionLogin,QtCore.SIGNAL("triggered()"),self._loginDialog.show)
     QtCore.QObject.connect(self.actionInformazioni_su,QtCore.SIGNAL("triggered()"),self._aboutDialog.show)
     QtCore.QObject.connect(self._connettore,QtCore.SIGNAL('nuovoPost(int)'),self._creapost,2)
     self._creapost(0)
     self.layout_titolo.addWidget(self._postPlexer._postids[0])
Example #37
0
	def main(self):
		global cad, p1, listener
		cad = pifacecad.PiFaceCAD()
		cad.lcd.clear()
		p1.init()
		p1.homeScreen()

		#Note from pifacecad github:
		#listener cannot deactivate itself so we have to wait until it has finished using a barrier
		global end_barrier
		end_barrier = Barrier(2)

		listener = pifacecad.SwitchEventListener(chip=cad)
		for i in range(8):
			listener.register(i, pifacecad.IODIR_FALLING_EDGE, p1.setParameters)

		listener.activate()
		end_barrier.wait() #Waiting until exit activated in the S5 method

		#Exit
		listener.deactivate()
Example #38
0
    def wrapper(self, *args, **kw):
        """Wraps instance method to be called on loop thread"""
        barrier = Barrier(2)
        result = None
        ex = None

        def call():
            """Calls function on loop thread"""
            # pylint: disable=star-args,broad-except
            nonlocal result, ex
            try:
                result = func(self, *args, **kw)
            except Exception as exc:
                ex = exc
            barrier.wait()

        self.loop.call_soon_threadsafe(call)
        barrier.wait()
        if ex:
            raise ex or Exception("Unknown error")
        return result
    def test_async_can_run_in_different_thread(self, mock):
        b = Barrier(2, timeout=5)

        def block_response(response_dict):
            def callback(request, context):
                b.wait()
                body = request.body
                request_json = json.loads(body)
                response_dict['id'] = request_json['id']
                context.status_code = 200
                return response_dict

            return callback

        mock.register_uri('POST', "http://server/api/", [
            {'status_code': 200, 'json': insert_id(
                {"error": None, "jsonrpc": "2.0", "id": {},
                 "result": {"report_token": "08d7d7bc608848668b3afa6b528a45d8"}})},

            {'status_code': 200, 'json': block_response(
                {"error": None, "jsonrpc": "2.0", "id": {},
                 "result": {"status": "processing"}})},

            {'status_code': 200, 'json': insert_id(
                {"error": None, "jsonrpc": "2.0", "id": {},
                 "result": {"status": "ready"}})},

            {'status_code': 200, 'json': insert_id(
                {"error": None, "jsonrpc": "2.0", "id": {},
                 "result": {"report": "success"}})},
        ])
        response = self.client.test.task(_sleep_interval=0.5, _async=True)
        b.wait()
        self.assertIsInstance(response, Future)
        self.assertTrue(response.running())
        done, not_done = concurrent.futures.wait([response], timeout=5)
        self.assertGreater(len(done), 0)
        self.assertIsInstance(response.result(), dict)
Example #40
0
 def __init__(self):
     '''
     Constructor
     
     Attributes:
         windows (list): Holds references to the Frames from wxPython
             created for testing.
     '''
     self.windows = []
     
     self._syncBarrier = Barrier(2, timeout = 5)
     self._nextTitleNumber = 1
     self._wxApp = None
     self._wxThread = None
    def setUp(self):
        """Set up an even loop fixture to watch for signals from spawned tasks. """
        super().setUp()
        self._sigchld_caught = False

        def noopSignalHandler(*args):
            pass
        original_sigchld_handler = signal.signal(signal.SIGCHLD, noopSignalHandler)
        self.addCleanup(lambda: signal.signal(signal.SIGCHLD, original_sigchld_handler))

        sig_r_fd, sig_w_fd = os.pipe2(os.O_NONBLOCK | os.O_CLOEXEC)
        signal.set_wakeup_fd(sig_w_fd)

        pre_loop_barrier = Barrier(2)
        self._post_loop_barrier = Barrier(2)

        def loop():
            pre_loop_barrier.wait(1)
            selector = DefaultSelector()
            selector.register(sig_r_fd, EVENT_READ)
            with suppress(StopIteration):
                while True:
                    events = selector.select(timeout=5)
                    if len(events) == 0:
                        raise StopIteration
                    for key, mask in events:
                        if key.fd == sig_r_fd:
                            data = os.read(sig_r_fd, 4)
                            self._sigchld_caught = True
                            raise StopIteration
            self._post_loop_barrier.wait(1)

        test_loop = Thread(target=loop)
        self.addCleanup(lambda: test_loop.join(1))
        test_loop.start()
        pre_loop_barrier.wait(1)
Example #42
0
 def test_serverFiveOrLessClient(self):
     global sharedListData
     # Create stop event
     stopEvent = Event()
     # Create server barrier
     sBarrier = Barrier(2)
     # Create server
     bs = BufferServer(13001, 5, stopEvent, sBarrier, 5, 5, "http://localhost:8000", "quiltro", "perroCallejero")
     streamingList = ObjectList()
     streamingList.append(Streaming(randomStreaming(1)))
     bs.communicator.service.postStreamings(streamingList)
     searchList = ObjectList()
     searchList.append(Search(randomSearch(1)))
     bs.communicator.service.postSearches(searchList)
     bs.start()
     # Create barrier for N clients
     randomClients = randomInteger(3) + 2
     cBarrier = Barrier(randomClients + 1)
     # Create N clients
     for i in range(0, randomClients):
         thread.start_new_thread(oneThread, (cBarrier, fakeClient, 
             bs.getHostName(), 13001, ))
     cBarrier.wait()
     time.sleep(5)
     # stop server
     stopEvent.set()
     # Wait for server
     sBarrier.wait()
     time.sleep(5)
     # Get data and compare
     numberTweets = len(bs.globalBuffer.localBuffer.tweetList.list)
     numberUsers = len(bs.globalBuffer.localBuffer.userList.list)
     numberTweetStreaming = len(bs.globalBuffer.localBuffer.tweetStreamingList.list)
     numberTweetSearch = len(bs.globalBuffer.localBuffer.tweetSearchList.list)
     self.assertEqual(numberTweets, 0)
     self.assertEqual(numberUsers, 0)
     self.assertEqual(numberTweetStreaming, 0)
     self.assertEqual(numberTweetSearch, 0)
     # count originals
     originalNumberTweets = 0
     originalNumberUsers = 0
     originalNumberTweetStreaming = 0
     originalNumberTweetSearch = 0
     lb = LocalBuffer()
     for i in range(0, randomClients):
         lb = countData(lb, sharedListData[i*4 + 0], sharedListData[i*4 + 1],
             sharedListData[i*4 + 2], sharedListData[i*4 + 3])
     originalNumberTweets += len(lb.tweetList.list)
     originalNumberUsers += len(lb.userList.list)
     originalNumberTweetStreaming += len(lb.tweetStreamingList.list)
     originalNumberTweetSearch += len(lb.tweetSearchList.list)
     self.assertEqual(originalNumberTweets, bs.communicator.sentTweets)
     self.assertEqual(originalNumberUsers, bs.communicator.sentUsers)
     self.assertEqual(originalNumberTweetStreaming, bs.communicator.sentTweetStreamings)
     self.assertEqual(originalNumberTweetSearch, bs.communicator.sentTweetSearches)
Example #43
0
 def test_latest_data(self):
     """
     Cached should store the data, which generation was started at the latest point in time.
     """
     def create_generator(event, sync, data):
         def generator(_old_data):
             sync.wait()
             event.wait()
             return data
         return generator
     def create_thread(func):
         def run():
             with cache_patcher() as cache:
                 cached = TestCached(func)
         th = Thread(target=run)
         th.start()
         return th
     # thread 1 starts to create some data
     event1 = Event()
     sync1 = Barrier(2, timeout=1)
     data1 = "Wrong data"
     t1 = create_thread(create_generator(event1, sync1, data1))
     sync1.wait()
     # thread 2 starts to create some data
     event2 = Event()
     sync2 = Barrier(2, timeout=1)
     data2 = "Correct data"
     t2 = create_thread(create_generator(event2, sync2, data2))
     sync2.wait()
     # thread 1 completes and stores data
     event1.set()
     t1.join()
     # thread 2 completes and stores updated data
     event2.set()
     t2.join()
     # thread 3 reads data from thread 2
     cached3 = TestCached(lambda x: "Ignored data")
     self.assertEqual(cached3.data, data2)
Example #44
0
    listener.register(ROCKER_LEFT, pifacecad.IODIR_ON, platypi.previous_option)
    listener.register(ROCKER_PUSH, pifacecad.IODIR_ON, platypi.do_option)
    return listener


def init_cad():
    print('Creating CAD')
    cad = pifacecad.PiFaceCAD()
    cad.lcd.blink_off()
    cad.lcd.cursor_off()
    return cad


if __name__ == '__main__':
    cad = init_cad()
    pp = PlatyPi(cad, PPMOD_DIR, 'PlatyPi v{}'.format(VERSION))
    pp.start()

    global exit_barrier
    exit_barrier = Barrier(2)

    listener = register_buttons(cad, pp)

    listener.activate()
    print('1st wait()')
    exit_barrier.wait()

    pp.close()
    listener.deactivate()

    sys.exit(0)
Example #45
0
def start_framework(args):
    global _netobj, _setup_ok
    setup_logging(args.debug, args.logfile)

    if args.listif:
        devlist = _assemble_device_list(args)
        dlist = [ str(d) for d in devlist ]
        log_info("Devices found: {}".format(','.join(dlist)))
        return

    # assume testmode if compile flag is set
    testmode = False
    if args.compile or args.tests:
        testmode = True

    args.codearg = _parse_codeargs(args.codearg)

    if args.verbose:
        VerboseOutput.enable()

    if args.cli:
        t = Topology()
        if args.topology:
            try:
                t = load_from_file(args.topology)
            except FileNotFoundError:
                print ("No such file {} exists to load topology.".format(args.topology))
                return
        run_simulation(t)
        return

    waiters = 1 
    if args.app:
        waiters += 1 
    barrier = Barrier(waiters)

    if args.app:
        ApplicationLayer._init()
        _appt = Thread(target=_start_app, args=(args.app,barrier))
        _appt.start()

    if args.app:
        args.fwconfig = []
    elif args.fwconfig is None or len(args.fwconfig) == 0:
        args.fwconfig = ('all',)

    if testmode:
        if args.compile:
            if args.usercode:
                log_info("You specified user code to run with compile flag, "
                         "but I'm just doing compile.")
            for scenario in args.compile:
                log_info("Compiling scenario {}".format(scenario))
                compile_scenario(scenario)
        else:
            if not args.usercode:
                log_failure("In test mode, but not user code supplied.")
                return
            global platform
            platform = sys.platform
            setattr(sys, "origplatform", platform)
            setattr(sys, "platform", "test")
            with Firewall([], args.fwconfig):
                _setup_ok = True
                barrier.wait() 
                main_test(args)
    else:
        if sys.platform != 'win32' and os.geteuid() != 0:
            log_warn("You're running in real mode, but not as root.  "
                "You should expect errors, but I'm going to "
                "continue anyway.")

        devlist = _assemble_device_list(args)

        if not devlist:
            log_failure("There are no network interfaces I can use after "
                        "processing include/exclude lists")
            alldevs = make_device_list([], [])
            log_failure("Here are all the interfaces I see on your system: "
                        "{}".format(', '.join(list(alldevs))))
            barrier.wait()
            return

        with Firewall(devlist, args.fwconfig):
            _setup_ok = True
            barrier.wait()
            _netobj = LLNetReal(devlist)
            main_real(args.usercode, _netobj, args)
class TestLauncherServiceTask(TestLauncher):
    """Verify the expected bahaviour of launch tasks."""

    def setUp(self):
        """Set up an even loop fixture to watch for signals from spawned tasks. """
        super().setUp()
        self._sigchld_caught = False

        def noopSignalHandler(*args):
            pass
        original_sigchld_handler = signal.signal(signal.SIGCHLD, noopSignalHandler)
        self.addCleanup(lambda: signal.signal(signal.SIGCHLD, original_sigchld_handler))

        sig_r_fd, sig_w_fd = os.pipe2(os.O_NONBLOCK | os.O_CLOEXEC)
        signal.set_wakeup_fd(sig_w_fd)

        pre_loop_barrier = Barrier(2)
        self._post_loop_barrier = Barrier(2)

        def loop():
            pre_loop_barrier.wait(1)
            selector = DefaultSelector()
            selector.register(sig_r_fd, EVENT_READ)
            with suppress(StopIteration):
                while True:
                    events = selector.select(timeout=5)
                    if len(events) == 0:
                        raise StopIteration
                    for key, mask in events:
                        if key.fd == sig_r_fd:
                            data = os.read(sig_r_fd, 4)
                            self._sigchld_caught = True
                            raise StopIteration
            self._post_loop_barrier.wait(1)

        test_loop = Thread(target=loop)
        self.addCleanup(lambda: test_loop.join(1))
        test_loop.start()
        pre_loop_barrier.wait(1)

    def test_service_sends_SIGCHLD_on_exit(self):
        """Verify a SIGCHLD signal gets raised when the service exits.

        Runs a fast-exiting 'service' (which should finish on its own in a
        reasonable time) and verifies that a SIGCHLD is raised.
        """
        config = launcher.TaskConfig(launcher.TaskType.LAUNCH_SERVICE, ("/bin/true"))
        task = launcher.LaunchServiceTask(config)
        task.start()
        self._post_loop_barrier.wait(1)
        self.assertThat(self._sigchld_caught, Equals(True))
        
    def test_service_stop_exits_program(self):
        """Verify the service exists when stopped.
        
        Runs a long-running service (which should not normally finish on its
        own) and verifies that a SIGCHLD is received after calling stop() on the
        task.
        """
        config = launcher.TaskConfig(launcher.TaskType.LAUNCH_SERVICE, ("/usr/bin/yes"))
        task = launcher.LaunchServiceTask(config)
        task.start()
        sleep(0.05)
        task.stop()
        self._post_loop_barrier.wait(1)
        self.assertThat(self._sigchld_caught, Equals(True))
Example #47
0
class TestWindowCreator(object):
    '''
    Creates and cleans up windows to use for testing.
    '''

    def __init__(self):
        '''
        Constructor
        
        Attributes:
            windows (list): Holds references to the Frames from wxPython
                created for testing.
        '''
        self.windows = []
        
        self._syncBarrier = Barrier(2, timeout = 5)
        self._nextTitleNumber = 1
        self._wxApp = None
        self._wxThread = None
    
    
    def create(self, titleBase = 'TestWindow', numWindows = 1):
        '''
        Creates operating system windows (Frames in wxPython).
        Adds them to the list in the public 'windows' property.
        
        Every calls to create() should eventually end in a call to
        destroy_all(). This method cannot be called twice without
        a call to destroy_all() after the first call.
        
        Args:
            titleBase (Optional[str]): The left part of the created
                window titles. A number is added to the end (right)
                of the base title. Default is "TestWindow".
            numWindows (Optional[int]): The number of windows to create.
                Default is 1.
                
        Raises:
            RuntimeError: If two calls are made to create() without
                a destroy_all() call between them.
        '''
        
        if self._wxApp:
            raise RuntimeError('Caught attempt to call create() a second '
                               'time without first calling destroy_all().')
        
        self._wxApp = wx.App(False)
        
        # Create the windows (Frames) and add them to the public
        # windows list.
        for i in range(0, numWindows):
            windowTitle = titleBase + str(self._nextTitleNumber)
            self.windows.append(
                wx.Frame(None, wx.ID_ANY, windowTitle)
            )
            self.windows[i].Show()
            self._nextTitleNumber += 1
        
        # Run the wxPython main loop in a different thread.
        # One reason is that it loops indefinitely and would block
        # other code from running in the main thread.
        def wx_creation_thread_target():
            nonlocal self
            self._wxApp.MainLoop()
            
        # Start the wxPython thread as a daemon so it should exit
        # even if the main thread unexpectedly exits first.
        self._wxThread = Thread(
            target = wx_creation_thread_target,
            daemon = True
        )
        self._wxThread.start()
        
        # _Thread synchronization 1_
        # Make sure the wxPython thread waits in the barrier after
        # processing the window (Frame) creation.
        wx.CallAfter(self._syncBarrier.wait)
        # Make sure this main thread waits in the barrier until the
        # wxPython thread is finished with the window (Frame) creation.
        self._syncBarrier.wait()
        
        # We synchronized at the barrier. Reset the barrier for next time.
        self._syncBarrier.reset()
        
    def destroy_all(self):
        '''
        Destroys all created windows (wxPython Frames) and the wxPython
            App object.
        
        Does not reset the window title numbers.
        
        Note: As of 2015-6, this method doesn't actually work correctly.
            The spawned wxPython threads and windows only die when
            the main thread dies.
        '''       
        
        # Destroy the windows (Frames) in the wxPython thread.
        for window in self.windows:
            window.Destroy()

        wx.Exit()
        # We need some way to wake up the wxPython thread and tell it
        # to die, but an easy way does not seem to exist yet.
        #wx.WakeUpMainThread()

        # Empty the public list of windows.
        self.windows.clear()
        
        # Mark the wxPython App and thread as killed.
        self._wxApp = None
        self._wxThread = None
Example #48
0
            print(
                "MPlayer wurde nicht gefunden. Bitte mit folgendem Befehl installieren: "
                "'sudo apt-get install mplayer'")
            sys.exit(1)
        else:
            raise  # Something else went wrong while trying to run `mplayer`

    cad = pifacecad.PiFaceCAD()
    global radio
    radio = Radio(cad)
    radio.play()

    # listener cannot deactivate itself so we have to wait until it has
    # finished using a barrier.
    global end_barrier
    end_barrier = Barrier(2)

    # wait for button presses
    switchlistener = pifacecad.SwitchEventListener(chip=cad)
    for pstation in range(4):
        switchlistener.register(
            pstation, pifacecad.IODIR_ON, radio_preset_switch)
    switchlistener.register(4, pifacecad.IODIR_ON, end_barrier.wait)
    switchlistener.register(5, pifacecad.IODIR_ON, radio.toggle_playing)
    switchlistener.register(6, pifacecad.IODIR_ON, radio.previous_station)
    switchlistener.register(7, pifacecad.IODIR_ON, radio.next_station)

    irlistener = pifacecad.IREventListener(
        prog="pifacecad-radio-example",
        lircrc="/usr/share/doc/python3-pifacecad/examples/radiolircrc")
    for i in range(4):
Example #49
0
    def hibernate(self):
        #If inactive put the display in waiting state
        self.currentState = LCD_SM.waiting.run()
        self.t.cancel()
    

if __name__ == "__main__":

    cad = pifacecad.PiFaceCAD()
    LCD_SM = LCD_SM(cad)

    # listener cannot deactivate itself so we have to wait until it has
    # finished using a barrier.
    global end_barrier
    end_barrier = Barrier(2)


    # wait for button presses
    switchlistener = pifacecad.SwitchEventListener(chip=cad)
    switchlistener.register(0, pifacecad.IODIR_ON, LCD_SM.run, SETTLE_TIME)
    switchlistener.register(1, pifacecad.IODIR_ON, LCD_SM.run, SETTLE_TIME)
    switchlistener.register(2, pifacecad.IODIR_ON, LCD_SM.run, SETTLE_TIME)
    switchlistener.register(3, pifacecad.IODIR_ON, LCD_SM.run, SETTLE_TIME)
    switchlistener.register(4, pifacecad.IODIR_ON, LCD_SM.run, SETTLE_TIME)
    switchlistener.register(5, pifacecad.IODIR_ON, LCD_SM.run, SETTLE_TIME)
    switchlistener.register(6, pifacecad.IODIR_ON, LCD_SM.run, SETTLE_TIME)
    switchlistener.register(7, pifacecad.IODIR_ON, LCD_SM.run, SETTLE_TIME)

    switchlistener.activate()
    end_barrier.wait()  # wait unitl exit
Example #50
0

# ----------------------------


cad = pifacecad.PiFaceCAD()
# Radio initialisieren
countStations = len(Stations)
radio = Radio(cad, lastStationFile, lastStationPath, countStations)
# Radio weidergabe starten
radio.play()


# listener cannot deactivate itself so we have to wait until it has finished using a barrier.
global end_barrier
end_barrier = Barrier(2)


# Register Buttons
listener = pifacecad.SwitchEventListener(chip=cad)
for i in range(0, 4, 1):
    listener.register(i, pifacecad.IODIR_ON, radio.toggle)
listener.register(4, pifacecad.IODIR_ON, end_barrier.wait)
listener.register(5, pifacecad.IODIR_ON, radio.toggle)
listener.register(6, pifacecad.IODIR_ON, radio.previous_station)
listener.register(7, pifacecad.IODIR_ON, radio.next_station)

listener.activate()

# wait unitl exit
end_barrier.wait()
Example #51
0
    menus.change_menu(int(event.ir_code))


if __name__ == "__main__":
    cad = pifacecad.PiFaceCAD()
    global menus
    menus = Menus(cad)
    hexagrams = Hexagrams(cad)
    display_lcd = DisplayLCD(cad)
    cad.lcd.blink_off()
    cad.lcd.cursor_off()
#
    # listener cannot deactivate itself so we have to wait until it has
    # finished using a barrier.
    global end_barrier
    end_barrier = Barrier(2)
#
    # wait for button presses
    switchlistener = pifacecad.SwitchEventListener(chip=cad)
    for menuid in range(4):
        switchlistener.register(
           menuid, pifacecad.IODIR_ON, menu_select_switch)
    switchlistener.register(4, pifacecad.IODIR_ON, menus.back)
    switchlistener.register(5, pifacecad.IODIR_ON, menus.confirm)
    switchlistener.register(6, pifacecad.IODIR_ON, menus.previous_item)
    switchlistener.register(7, pifacecad.IODIR_ON, menus.next_item)
#
    irlistener = pifacecad.IREventListener(
        prog="i-ching-hexagrams",
        lircrc="/usr/share/doc/scifipi-i-ching/ichinglircrc")
    for i in range(4):
Example #52
0
		if event.pin_num == 1:
			resolutionS2.S2(self)
			print("haha!")
			p1.printRes()
		else:
			pass

	def printRes(self):
		print(v1.resolutionW)
		print(v1.resolutionH)

if __name__ == '__main__': 
	p1 = callAll(cad)
	cad.lcd.clear()

	#Note from pifacecad github:
	#listener cannot deactivate itself so we have to wait until it has finished using a barrier
	global end_barrier
	end_barrier = Barrier(2)

	listener = pifacecad.SwitchEventListener(chip=cad)

	for i in range(8):
		listener.register(i, pifacecad.IODIR_FALLING_EDGE, p1.setParameters)	

	listener.activate()
	end_barrier.wait() #Waiting until exit activated in the S5 method

	#Exit
	listener.deactivate()
class terminal_test:
    def __init__(self):
        self.send_msg_flag = True
        builtins.FileName = time.strftime('%Y-%m-%d-%H%M%S_log')
        builtins.SendMsg_dic = [{} for i in range(number_of_servers)]
        builtins.received_flag = [False for i in range(number_of_servers)]
        builtins.AverageTime = ['' for i in range(number_of_servers)]
        builtins.MaxTime = ['' for i in range(number_of_servers)]
#        builtins.Send_Finished_flag = [False for i in range(number_of_servers)]
        builtins.F = ('log/' + FileName)
        self.B = Barrier(number_of_servers)
        self.received_B = Barrier(number_of_servers)
#        self.Send_B = Barrier(Send_Servers)

        self.main()

    def main(self):
        for i in range(number_of_servers):
            def callback():
                self.stability_test(WAIT, i)
            t = threading.Thread(target=callback)
            t.daemon = True
            t.start()
            builtins.PORT += 1
            time.sleep(0.1)

    def stability_test(self,wait,id_):
        port = PORT
        rece_dict =[set() for i in range(Send_Servers)]
        check_code =[0 for i in range(Send_Servers)]

        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.bind((HOST, port))
        s.listen(1)

        tempformat = 'Listening....{0}:{1}'.format(HOST, port)
        self.printlog(builtins.F, tempformat)

        conn, addr = s.accept()

        #Display and logging address of connected
        tempformat = '{0} Connected by {1}'.format(port, addr)
        self.printlog(builtins.F, tempformat)

        #Dictionary of testing bytes
        if id_< Send_Servers:
            MessageDict = [chr(i) for i in range(128)]
            del MessageDict[10]
            for i in range(5):
                MessageDict += MessageDict


        #waiting for welcome message and display it
        WaitingForSecond = select.select([conn], [], [], 30)
        if WaitingForSecond[0]:
            StartMsg = conn.recv(4096)
            self.printlog (builtins.F, str(StartMsg))


        #start testing
        self.B.wait()

        def receive_server():

            nonlocal rece_dict
            nonlocal check_code

            while not EXIT_flag:
                try:
                    data = b''
                    try:
                        WaitingForSecond = select.select([conn], [], [], 60)
                    except ValueError:
                        pass

                    try:
                        if WaitingForSecond[0]:
                            data = conn.recv(4096)
                    except OSError:
                        pass

                    if len(data) is 0:
                        break
                    try:
                        send_id = int(chr(data[-8]))
                    except ValueError:
                        send_id = 'unknow'
                    try:
                        loop=data[-7:-1]
                        loop = int(loop)
                    except ValueError:
                        loop = 'unknow'
                    try:
                        received_time = float(data[:6])
                    except ValueError:
                        received_time = 0
                        t = 0.000

                    try:
                        rece_dict[send_id].add(loop)
                        if check_code[send_id] is -1:
                            check_code[send_id] = loop
                    except TypeError:
                        pass

                    try:
                        while len(rece_dict[send_id]) >= 3:
                            time.sleep(0.2)
                            try:
                                rece_dict[send_id].remove(check_code[send_id])
                            except KeyError:
                                self.printlog(builtins.F,'{port}----------{0} {1} has been missed!!--------------------'\
                                              .format(send_id, check_code[send_id]+1, port=port))
                                builtins.Miss[id_] += 1
                            finally:
                                check_code[send_id] += 1

                    except TypeError:
                        pass

#=================================================================
                    if received_time is not 0:
                        t = float(str(time.time())[7:14]) - received_time
                        try:
                            builtins.MaxTime[id_] = max(AverageTime[id_],t)
                            builtins.AverageTime[id_] = (builtins.AverageTime[id_]+t)/2
                        except TypeError :
                            MaxTime[id_] = AverageTime[id_] = t

                    tempformat = "{port} Received {id_} {Loop}: {0}bytes_{1:.3}s".format(len(data),t , port=port, Loop = loop+1, id_=send_id)

                    self.printlog(builtins.F, tempformat)

                    if builtins.SendMsg_dic[send_id].get(loop) != data:
                        tempformat = "-------------------------ERROR-------------------------"
                        self.printlog(builtins.F, tempformat)
                        builtins.Miss[id_] += 1

                    if wait:
                        self.received_B.wait()

                    if send_id == id_:
                        builtins.received_flag[id_] = False

                except ValueError:
                    print('111')
#                    break

            try:
                for i in range(Send_Servers):
                    while len(rece_dict[i]) > 0:
                        try:
                            rece_dict[i].remove(check_code[i])
                        except KeyError:
                            self.printlog(builtins.F,'{port}----------{0} {1} has been missed!!--------------------'\
                                          .format(i, check_code[i]+1, port=port))
                            builtins.Miss[id_] += 1
                        finally:
                            check_code[i] += 1
            except TypeError:
                pass

        tr = threading.Thread(target=receive_server)
        tr.daemon = True
        tr.start()


        if builtins.Disconn:
            self.disconnect(conn, id_)


        if id_< Send_Servers:
            time.sleep(id_*3)

        #for i in range(Loop):
        i = 0
        while i < Loop:
            try:
                if wait:
                    if not tr.is_alive():
                       raise Exception('Thread is crushed')
                    self.B.wait()

                if id_< Send_Servers:

                    _=0
                    while builtins.received_flag[id_]:
                        _ += 1
                        time.sleep(0.1)
                        if _ > 150:
                            builtins.received_flag[id_] = False

                    if wait:
                        Waiting_time = random.randint(0,10)
                        self.printlog(builtins.F, str(i+1) + ' times,  ' + 'wait ' + str(Waiting_time) + 's')
                        time.sleep(Waiting_time)


                    random_bytes = random.randint(min_bytes-15,max_bytes-15)
                    message = random.sample(MessageDict, random_bytes)
                    SendMsg = (
                               (str(time.time())[7:14] +
                               ''.join(message)+ str(id_) +
                                '{0:0>6}'.format(i)+ chr(10))
                              )
                    SendMsg = (SendMsg[:10] + str(len(SendMsg)).zfill(4)+SendMsg[14:]).encode('ascii')
                    conn.sendall(SendMsg)

                    builtins.SendMsg_dic[id_][i] = SendMsg

                    if len(SendMsg_dic[id_]) > 3:
                        del SendMsg_dic[id_][i-3]

                    builtins.received_flag[id_] = True

                    tempformat = '{port} Sent {Loop}: {0}, {1}bytes'.\
                        format(SendMsg[:20], len(SendMsg), Loop = i+1, port=port)
                    self.printlog(builtins.F, tempformat)

                i += 1
                if builtins.EXIT_flag:
                    break
            except OSError:
                if builtins.EXIT_flag:
                    break
                conn.close()
                tempformat = 'Disconnected...{0}:{1}'.format(HOST, port)
                self.printlog(builtins.F, tempformat)
                rece_dict =[set() for i in range(Send_Servers)]
                tempformat = 'Listening....{0}:{1}'.format(HOST, port)
                self.printlog(builtins.F, tempformat)
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.bind((HOST, port))
                s.listen(1)
                conn, addr = s.accept()
                tempformat = '{0} Connected by {1}'.format(port, addr)
                self.printlog(builtins.F, tempformat)

                check_code = [-1 for i in range(Send_Servers)]
                time.sleep(1)
                tr = threading.Thread(target=receive_server)
                tr.daemon = True
                tr.start()
                if builtins.Disconn:
                    self.disconnect(conn, id_)

        builtins.Send_Finished_flag[id_] = True

#        if not wait and id_ >= Send_Servers:
        while not builtins.EXIT_flag:
            while tr.is_alive():
                time.sleep(0.1)

            if not builtins.EXIT_flag:
                conn.close()
                tempformat = 'Disconnected...{0}:{1}'.format(HOST, port)
                self.printlog(builtins.F, tempformat)
                tempformat = 'Listening....{0}:{1}'.format(HOST, port)
                self.printlog(builtins.F, tempformat)
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.bind((HOST, port))
                s.listen(1)
                conn, addr = s.accept()
                tempformat = '{0} Connected by {1}'.format(port, addr)
                self.printlog(builtins.F, tempformat)

                check_code = [-1 for i in range(Send_Servers)]
                time.sleep(1)
                tr = threading.Thread(target=receive_server)
                tr.daemon = True
                tr.start()

                if builtins.Disconn:
                    self.disconnect(conn,id_)

        time.sleep(5)
        conn.close()
#        if id_< Send_Servers:
#            self.Send_B.wait()
#        builtins.EXIT_flag = True
        self.B.wait()

        tempformat = "\n{Port}\nAverage : {Avg:.3}s\
                          \nMax : {Max:.3}s\
                          \n{Miss} message has been missed"\
                          .format(Avg = AverageTime[id_],\
                                  Max = MaxTime[id_],\
                                  Port=port,\
                                  Miss = Miss[id_])

        self.printlog(builtins.F, tempformat)
#        self.B.wait()
#        while tr.is_alive():
#            time.sleep(0.1)


    def disconnect(self, conn, id_):
        if disconn_field[id_].get().strip():
            def callback():
                discount = 0
                while discount <= int(builtins.disconn_field[id_].get()):
                    time.sleep(1)
                    discount += 1
                conn.close()
            t = threading.Thread(target=callback)
            t.daemon = True
            t.start()

    def printlog(self, filename, Print_format):
        d = datetime.datetime
        t = '[{0:.12}] '.format(d.strftime(d.now(), '%H:%M:%S.%f'))
        filename = open(filename, 'a')
        filename.write(t + Print_format + '\n')
        print(t + Print_format)
        filename.close()
Example #54
0
class terminal_test:
#{{{
    def __init__(self):
        self.send_msg_flag = True
        builtins.FileName = time.strftime('%Y-%m-%d-%H%M%S_log')
        builtins.SendMsg_dic = [{} for i in range(number_of_servers)]
        builtins.received_flag = [False for i in range(number_of_servers)]
        builtins.AverageTime = ['' for i in range(number_of_servers)]
        builtins.MaxTime = ['' for i in range(number_of_servers)]
#        builtins.Send_Finished_flag = [False for i in range(number_of_servers)]
        builtins.F = ('log/' + FileName)
        self.B = Barrier(number_of_servers)
        self.received_B = Barrier(number_of_servers)
#        self.Send_B = Barrier(Send_Servers)

        self.main()
#}}}
    def main(self):
        for i in range(number_of_servers):
            def callback():
                self.stability_test(WAIT, i)
            t = threading.Thread(target=callback)
            t.daemon = True
            t.start()
            builtins.PORT += 1
            time.sleep(0.1)

    def stability_test(self,wait,id_):
        port = PORT
        rece_dict =[set() for i in range(Send_Servers)]
        check_code =[0 for i in range(Send_Servers)]

        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.bind((HOST, port))
        s.settimeout(1)
        s.listen(1)

        tempformat = 'Listening....{0}:{1}'.format(HOST, port)
        self.printlog(builtins.F, tempformat)

        while True:
            try:
                if EXIT_flag:
                    self.printlog(builtins.F, '{0} has been closed'.format(port))
                    return
                conn, addr = s.accept()
                break
            except:
                pass

        #Display and logging address of connected
        tempformat = '{0} Connected by {1}'.format(port, addr)
        self.printlog(builtins.F, tempformat)

        #Dictionary of testing bytes
        if id_< Send_Servers:
            MessageDict = [chr(i) for i in range(128)]
            del MessageDict[10]
            for i in range(5):
                MessageDict += MessageDict


        #waiting for welcome message and display it
        WaitingForSecond = select.select([conn], [], [], 30)
        if WaitingForSecond[0]:
            StartMsg = conn.recv(4096)
            self.printlog (builtins.F, str(StartMsg))


        #start testing
        self.B.wait()

        def receive_server():

            nonlocal rece_dict
            nonlocal check_code

            conn.settimeout(1)
            while not EXIT_flag:
                try:
                    data = 'start'
                    #try:
                    #    WaitingForSecond = select.select([conn], [], [], 5)
                    #except ValueError:
                    #    pass
                    try:
                    #    if WaitingForSecond[0]:
                        data = conn.recv(4096)
                    except socket.timeout:
                        continue
                    except OSError:
                        pass
                    if data is 'start':
                        continue
                    if len(data) is 0:
                        print(data)
                        break
                    send_id, loop, len_of_string, received_time, t = self.string_analysis(data)
                    if 'unknow' in (send_id, loop, len_of_string):
                        tempformat =(
                                    """{data}\n{port} Received
                                    =========unknow {0}bytes_{1:.3}s=========="""
                                    .format(len(data),t , port=port,
                                    id_=send_id, data=data)
                                    )
                        self.printlog(builtins.F, tempformat)
                        builtins.Miss[id_] += 1
                        continue
                    while len_of_string < len(data):
                        data1 = data[:len_of_string]
                        data = data[len_of_string:]
                        send_id, loop, len_of_string, received_time, t =\
                                       self.string_analysis(data)
                        send_id1, loop1, len_of_string1, received_time1, t1 =\
                                       self.string_analysis(data1)
                        try:
                            rece_dict[send_id1].add(loop1)
                            if check_code[send_id1] is -1:
                                check_code[send_id1] = loop1
                        except TypeError:
                            pass
                        if received_time1 is not 0:
                            t1 = float(str(time.time())[7:14]) - received_time1
                            try:
                                builtins.MaxTime[id_] = max(AverageTime[id_],t1)
                                builtins.AverageTime[id_] = (builtins.AverageTime[id_]+t1)/2
                            except TypeError :
                                MaxTime[id_] = AverageTime[id_] = t1
                        if builtins.SendMsg_dic[send_id1].get(loop1) == data1:
                            tempformat = (
                                """{port} Received {id_} {Loop}: (unpacked){0}bytes_{1:.3}s"""
                                         .format(len(data1),t1 , port=port,
                                         Loop = loop1+1, id_=send_id1)
                                         )
                            self.printlog(builtins.F, tempformat)
                        else :
                            tempformat = (
                                         """{port} Received {id_} {Loop}:
                                         =========WRONG {0}bytes_{1:.3}s=========="""
                                         .format(len(data1),t1 , port=port,
                                         Loop = loop1+1, id_=send_id1)
                                         )
                            self.printlog(builtins.F, tempformat)
                            builtins.Miss[id_] += 1
                    # The Check_code will be set to -1(ignore miss string during offline)
                    # when server reconnected
                    try:
                        rece_dict[send_id].add(loop)
                        if check_code[send_id] is -1:
                            check_code[send_id] = loop
                    except TypeError:
                        pass
                    if received_time is not 0:
                        t = float(str(time.time())[7:14]) - received_time
                        try:
                            builtins.MaxTime[id_] = max(AverageTime[id_],t)
                            builtins.AverageTime[id_] = (builtins.AverageTime[id_]+t)/2
                        except TypeError :
                            MaxTime[id_] = AverageTime[id_] = t
                    tempformat = "{port} Received {id_} {Loop}: {0}bytes_{1:.3}s"\
                                  . format(len(data),t , port=port, Loop = loop+1, id_=send_id)
                    self.printlog(builtins.F, tempformat)
                    #=============check received data if anything has been lost=============
                    try:
                        while len(rece_dict[send_id]) >= 3:
                            time.sleep(0.2)
                            try:
                                rece_dict[send_id].remove(check_code[send_id])
                            except KeyError:
                                self.printlog(builtins.F,\
                                '{port}----------{0} {1} has been missed!!--------------------'\
                                .format(send_id, check_code[send_id]+1, port=port))
                                builtins.Miss[id_] += 1
                            finally:
                                check_code[send_id] += 1
                    except TypeError:
                        pass
                    #======================================================================
                    if wait:
                        self.received_B.wait()
                    if send_id == id_:
                        self.received_flag[id_] = False
                #==========for testing==================================
                except ValueError:
                    print('111')
            try:
                for i in range(Send_Servers):
                    while len(rece_dict[i]) > 0:
                        try:
                            rece_dict[i].remove(check_code[i])
                        except KeyError:
                            self.printlog(builtins.F,\
                            '{port}----------{0} {1} has been missed!!--------------------'\
                            .format(i, check_code[i]+1, port=port))
                            builtins.Miss[id_] += 1
                        finally:
                            check_code[i] += 1
                        print(rece_dict[i])
            except TypeError:
                pass
        tr = threading.Thread(target=receive_server)
        tr.daemon = True
        tr.start()
        #=============================call disconnect function========================
        if builtins.Disconn:
            self.disconnect(conn, id_)
        #=============================let send_servers delay 3seconds each===========
        if id_< Send_Servers:
            time.sleep(id_*3)
        #========================make loop currect when disconnect function is ON======
        i = 0
        while i < Loop:
            try:
        #===================================check received_server is alive============
                if not tr.is_alive():
                   raise ConnectionError
                if wait:
                    self.B.wait()

                if id_< Send_Servers:

                    #continue send message if receive server has not received in 15 seconds
                    _=0
                    while builtins.received_flag[id_]:
                        _ += 1
                        time.sleep(0.1)
                        if _ > 150:
                            builtins.received_flag[id_] = False
                    #====================================================================
                    if wait:
                        Waiting_time = random.randint(0,10)
                        self.printlog(builtins.F, str(i+1) + ' times,  ' + 'wait ' + str(Waiting_time) + 's')
                        time.sleep(Waiting_time)


                    random_bytes = random.randint(min_bytes-15,max_bytes-15)
                    message = random.sample(MessageDict, random_bytes)
                    SendMsg = (
                               (str(time.time())[7:14] +
                               ''.join(message)+ str(id_) +
                                '{0:0>6}'.format(i)+ chr(10))
                              )
                    SendMsg = (SendMsg[:10] + str(len(SendMsg)).zfill(4)+SendMsg[14:]).encode('ascii')
                    conn.sendall(SendMsg)

                    builtins.SendMsg_dic[id_][i] = SendMsg

                    if len(SendMsg_dic[id_]) > 3:
                        del SendMsg_dic[id_][i-3]

                    builtins.received_flag[id_] = True

                    tempformat = '{port} Sent {Loop}: {0}, {1}bytes'.\
                        format(SendMsg[:20], len(SendMsg), Loop = i+1, port=port)
                    self.printlog(builtins.F, tempformat)

                if wait:
                    self.B.wait()
                i += 1
                if builtins.EXIT_flag:
                    break
            except ConnectionError:
                if builtins.EXIT_flag:
                    break
                conn.close()
                tempformat = 'Disconnected...{0}:{1}'.format(HOST, port)
                self.printlog(builtins.F, tempformat)
                rece_dict =[set() for i in range(Send_Servers)]
                tempformat = 'Listening....{0}:{1}'.format(HOST, port)
                self.printlog(builtins.F, tempformat)
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.bind((HOST, port))
                s.listen(1)
                conn, addr = s.accept()
                tempformat = '{0} Connected by {1}'.format(port, addr)
                self.printlog(builtins.F, tempformat)

                check_code = [-1 for i in range(Send_Servers)]
                time.sleep(1)
                tr = threading.Thread(target=receive_server)
                tr.daemon = True
                tr.start()
                if builtins.Disconn:
                    self.disconnect(conn, id_)

        builtins.Send_Finished_flag[id_] = True

#        if not wait and id_ >= Send_Servers:
        while not builtins.EXIT_flag:
            while tr.is_alive():
                time.sleep(0.2)

            if not builtins.EXIT_flag:
                conn.close()
                tempformat = 'Disconnected...{0}:{1}'.format(HOST, port)
                self.printlog(builtins.F, tempformat)
                tempformat = 'Listening....{0}:{1}'.format(HOST, port)
                self.printlog(builtins.F, tempformat)
                s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                s.bind((HOST, port))
                s.listen(1)
                conn, addr = s.accept()
                tempformat = '{0} Connected by {1}'.format(port, addr)
                self.printlog(builtins.F, tempformat)

                check_code = [-1 for i in range(Send_Servers)]
                time.sleep(1)
                tr = threading.Thread(target=receive_server)
                tr.daemon = True
                tr.start()

                if builtins.Disconn:
                    self.disconnect(conn,id_)

        time.sleep(5)
        conn.close()
#        if id_< Send_Servers:
#            self.Send_B.wait()
#        builtins.EXIT_flag = True
        self.B.wait()

        tempformat = "\n{Port}\nAverage : {Avg:.3}s\
                          \nMax : {Max:.3}s\
                          \n{Miss} message has been missed"\
                          .format(Avg = AverageTime[id_],\
                                  Max = MaxTime[id_],\
                                  Port=port,\
                                  Miss = Miss[id_])

        self.printlog(builtins.F, tempformat)
#        self.B.wait()
#        while tr.is_alive():
#            time.sleep(0.1)

    def string_analysis(self, data):
        #{{{
        try:
            send_id = int(chr(data[-8]))
        except :
            send_id = 'unknow'
        try:
            loop=data[-7:-1]
            loop = int(loop)
        except :
            loop = 'unknow'
        try:
            len_of_string = int(data[10:14])
        except :
            len_of_string = 'unknow'
        try:
            received_time = float(data[:6])
        except :
            received_time = 0
        finally:
            t = 0.000
            #print(port,'      ',len_of_string)
        return send_id, loop, len_of_string, received_time, t #}}}

    def disconnect(self, conn, id_):
        if disconn_field[id_].get().strip():
            def callback():
                discount = 0
                while discount <= int(builtins.disconn_field[id_].get()):
                    time.sleep(1)
                    discount += 1
                conn.shutdown(2)
                conn.close()
            t = threading.Thread(target=callback)
            t.daemon = True
            t.start()

    def printlog(self, filename, Print_format):
        d = datetime.datetime
        t = '[{0:.12}] '.format(d.strftime(d.now(), '%H:%M:%S.%f'))
        filename = open(filename, 'a')
        filename.write(t + Print_format + '\n')
        print(t + Print_format)
        filename.close()
import subprocess, time, zmq, json, sys
from threading import Thread, Barrier

def mogrify(topic, msg):
    """ json encode the message and prepend the topic """
    return topic + ' ' + json.dumps(msg)

ctx = zmq.Context()

sender = ctx.socket(zmq.PUB)
sender.bind('tcp://*:5557')

receiver = ctx.socket(zmq.PULL)
receiver.bind('tcp://*:5558')

barrier = Barrier(2)

def senderThread():
  time.sleep(2)
  for ps in range(0, 20, 2):
    for socks in range(0, 20, 2):
      sender.send_string(mogrify('measurement_start'
                                , { 'processes':  int(ps)
                                  , 'sockets':    int(socks)
                                  , 'messages':   int(sys.argv[2])
                                  , 'max_length': int(sys.argv[3])
                                  }))
      barrier.wait()

Thread(target=senderThread).start()
Example #56
0
class mainwindow(QtGui.QMainWindow,finestraprincipale.Ui_MainWindow):
    '''
    Classe che crea una finestra principale per il programma.
    '''
    #dialogs e finestre
    _loginDialog = None
    _aboutDialog = None
    
    _postPlexer = None
    #thread e altro
    _logger = None
    _barrier = None
    
    _connettore = Comunicazione.comunicatore()
    __VERSION__ = None

    def __init__(self,version,parent = None):
        '''
        Costruisce una finestra principale di Thinkzone.
        Ha bisogno di alcuni parametri per avviarsi.
        @param version: La versione del programma. 
        '''
        self.__VERSION__ = version
        logging.basicConfig(filename="thinkzone_gui.log",format='%(asctime)s | Loglevel: %(levelname)s | %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
        self._logger = logging.getLogger()
        self._logger.setLevel(logging.DEBUG)
        self._logger.info("Inizio nuova sessione")
        QtGui.QMainWindow.__init__(self,parent)
        self.ui = finestraprincipale.Ui_MainWindow()
        self.setupUi(self)
        spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
        self.layoutTextarea.addItem(spacerItem)
        
        #setup finestre di dialogo
        self._loginDialog = loginDialog.Login(self)
        self._aboutDialog = aboutDialog.aboutDial(self)
        self._aboutDialog.labelVersion.setText("Version: "+self.__VERSION__)
        #connettori
        self._barrier = Barrier(2, timeout=200)
        self._connettore._barrier = self._barrier
        self._postPlexer = PostPlexer(self._connettore)
        self._connettore._postPlexer = self._postPlexer
        #connessione di tutti i segnali
        QtCore.QObject.connect(self.buttonCrea,QtCore.SIGNAL('pressed()'), self._inviaCreazione)
        QtCore.QObject.connect(self.actionLogin,QtCore.SIGNAL("triggered()"),self._loginDialog.show)
        QtCore.QObject.connect(self.actionInformazioni_su,QtCore.SIGNAL("triggered()"),self._aboutDialog.show)
        QtCore.QObject.connect(self._connettore,QtCore.SIGNAL('nuovoPost(int)'),self._creapost,2)
        self._creapost(0)
        self.layout_titolo.addWidget(self._postPlexer._postids[0])
    
    def _inviaCreazione(self):
        '''
        Crea nella finestra un nuovo post.
        '''
        atti = self._postPlexer.myActivePost()
        if(atti == None):
            atti = 0
        self._logger.debug("Creazione nuovo post.")
        self._connettore._spedisci('\K'+str(atti)+'\\') # WARNING da ricontrollare meglio.

        
    def _creapost(self,idpost):
        '''
        Parsing degli ID dei post. Crea nuovi post, seleziona post precedenti e dice quando non esistono.
        '''          
        self._logger.debug("Creazione di un nuovo post con ID: "+str(idpost))
        textArea = PostWidget.postWidget(idpost)
        QtCore.QObject.connect(textArea,QtCore.SIGNAL('testoRimosso(int,int,int)'), self._connettore.spedisci_rimozione)
        QtCore.QObject.connect(textArea,QtCore.SIGNAL('testoAggiunto(int,QString,int)'), self._connettore.spedisci_aggiunta)
        self._postPlexer._postids[idpost] = textArea
        if(idpost != 0):
            self.layoutTextarea.addWidget(textArea)
            self._barrier.wait()
Example #57
0
            else:
                # The separator could have started in the current chunk but
                # finishes in the next chunk, so we need to search the
                # len(separator) - 1 last bytes of the separator again
                start_search_index = max(0, len(msg_bytes) - (len(separator) - 1))

        self.logger.debug('<-- {}'.format(msg_bytes))
        return msg_bytes


if __name__ == '__main__':
    import sys
    from threading import Barrier, BrokenBarrierError, Thread

    start_barrier = Barrier(2, timeout=5)
    end_barrier = Barrier(3, timeout=60)
    separator = b'\0\1\2\1\0'

    messages = [
        b'abcdef',
        b'1234',
        b'a', b'bc', b'de\0', b'\1\2\1\0fghi',
        b'xyzZYX',
        b'',
        b'+++',
    ]

    def server():
        logger = logging.getLogger('server')
        logger.info('server starting')
        server_socket = ChunkyStreamSocket(logging.getLogger('server.socket'))