コード例 #1
0
 def sender_processor(self):
     """Override EventLink.sender_processor."""
     while True:
         event = yield from receive()
         # print('Threading Event Adapter sending: {}'.format(event))
         yield from self.after_send(event)
         self.semaphore_to_send.release()
コード例 #2
0
ファイル: processors.py プロジェクト: ethanjli/phylline
def incrementer_proceed(last_received=[None]):
    """Increment every received number."""
    while True:
        number = yield from receive()
        yield from send(number + 1)
        yield from proceed()  # this basically does nothing
        last_received[0] = number
コード例 #3
0
ファイル: processors.py プロジェクト: ethanjli/phylline
def incrementer_wait(last_received=[None]):
    """Increment every received number."""
    while True:
        number = yield from receive()
        yield from send(number + 1)
        yield from wait(
        )  # wait until data is added to the receive queue before proceeding
        last_received[0] = number
コード例 #4
0
 def sender_processor(self):
     """Event sender echo processor."""
     while True:
         event = yield from receive()
         data_event = self.get_link_data(event, 'loopback')
         data_event = self.make_link_data(data_event.data, 'loopback',
                                          event)
         self._event_link._receiver.send(data_event)
         yield from self.after_receive(
             data_event)  # for correctness in automatic pipeline
コード例 #5
0
ファイル: links.py プロジェクト: ethanjli/phylline
 def sender_processor(self, chunk_separator, begin_chunk_separator):
     """Event sender processor."""
     while True:
         event = yield from receive()
         data_event = self.get_link_data(event, 'down')
         event = data_event.data
         if len(event) == 0:
             continue
         stream_contents = event + chunk_separator
         if begin_chunk_separator:
             stream_contents = chunk_separator + stream_contents
         self._stream_link.write(stream_contents)
コード例 #6
0
ファイル: clocked.py プロジェクト: ethanjli/phylline
    def sender_processor(self):
        """Event sender processor.

        Make sure to yield from after_send() at the end of the loop to expose
        any generated events for consumption by the layer below.
        """
        while True:
            event = yield from receive()
            self.update_clock_time(event)
            self._enqueue_data_event(event, 'down')
            yield from self._flush_event_queue('down')
            yield from self._issue_clock_request('down')
コード例 #7
0
 def receiver_processor(self):
     """Event receiver echo processor."""
     while True:
         event = yield from receive()
         if isinstance(event, LinkException):
             print('Ignoring exception: {}'.format(event))
             continue
         data_event = self.get_link_data(event, 'loopback')
         # print('Echoing: {}'.format(data_event))
         data_event = self.make_link_data(data_event.data, 'loopback',
                                          event)
         self._event_link._sender.send(data_event)
         yield from self.after_send(
             event)  # for correctness in automatic pipeline
コード例 #8
0
ファイル: events.py プロジェクト: ethanjli/phylline
    def sender_processor(self):
        """Event sender processor.

        Make sure to yield from after_send() with any generated event to expose
        it for consumption by the layer below.
        """
        while True:
            event = yield from receive()
            if self.sender_event_passthrough:
                # print('Event Link sending: {}'.format(event))
                yield from self.after_send(event)
            else:
                data_event = self.get_link_data(event, 'down')
                # print('Event Link sending: {}'.format(data_event))
                data_event = self.make_link_data(data_event.data, 'down', event)
                yield from self.after_send(data_event)
コード例 #9
0
ファイル: events.py プロジェクト: ethanjli/phylline
    def receiver_processor(self):
        """Event receiver processor.

        Make sure to yield from after_receive() with any generated event to expose
        it for for consumption by the layer above.
        """
        while True:
            event = yield from receive()
            if self.receiver_event_passthrough or isinstance(event, LinkException):
                # print('Event Link received: {}'.format(event))
                yield from self.after_receive(event)
            else:
                data_event = self.get_link_data(event, 'up')
                # print('Event Link received: {}'.format(data_event))
                data_event = self.make_link_data(data_event.data, 'up', event)
                yield from self.after_receive(data_event)
コード例 #10
0
 def sender_processor(self, chunk_separator, begin_chunk_separator):
     """Override ChunkedStreamLink.sender_processor."""
     while True:
         event = yield from receive()
         data_event = self.get_link_data(event, 'down')
         if data_event.type not in self.SENDABLE_TYPES:
             self.logger.error('{} cannot send data of type {}!'.format(
                 self.__class__.__qualname__, data_event.type_string))
             continue
         payload = data_event.data
         if len(payload) == 0:
             continue
         self.sender_counter['send'] += 1
         stream_contents = payload + chunk_separator
         if begin_chunk_separator:
             stream_contents = chunk_separator + stream_contents
         self.logger.debug('Writing: {}'.format(hex_bytes(stream_contents)))
         self._update_send_length_stats(stream_contents)
         self._stream_link.write(stream_contents)
コード例 #11
0
 def sender_processor(self):
     """Event sender processor."""
     while True:
         try:
             event = yield from receive()
             try:
                 self.sender_counter['send'] += 1
                 for event in self.sender_process(event):
                     if isinstance(event, LinkException):
                         self.sender_counter['error'] += 1
                     else:
                         self.sender_counter['to_send'] += 1
                     yield from self.after_send(event)
             except Exception as e:
                 self.logger.exception(
                     'Uncaught sender exception due to: {}'.format(event))
                 self.receiver_counter['error_uncaught'] += 1
         except Exception as e:
             self.logger.exception('Uncaught sender exception!')
             self.sender_counter['error_uncaught'] += 1
コード例 #12
0
ファイル: processors.py プロジェクト: ethanjli/phylline
def incrementer(last_received=[None]):
    """Increment every received number."""
    while True:
        number = yield from receive()
        yield from send(number + 1)
        last_received[0] = number
コード例 #13
0
ファイル: processors.py プロジェクト: ethanjli/phylline
 def invalid_late():
     while True:
         number = yield from receive()
         yield number + 1
コード例 #14
0
ファイル: processors.py プロジェクト: ethanjli/phylline
def incrementer_return():
    """Increment every received number."""
    number = yield from receive()
    yield from send(number + 1)
    return 10 * number