Exemplo n.º 1
0
def sample_publisher(wait_for_requester_complete: Event,
                     response_count: int = 3) -> Publisher:
    async def generator() -> AsyncGenerator[Tuple[Fragment, bool], None]:
        current_response = 0
        for i in range(response_count):
            is_complete = (current_response + 1) == response_count

            message = 'Item to server from client on channel: %s' % current_response
            yield Fragment(message.encode('utf-8')), is_complete

            if is_complete:
                wait_for_requester_complete.set()
                break

            current_response += 1

    return StreamFromAsyncGenerator(generator)
Exemplo n.º 2
0
def response_stream_1(response_count: int = 3,
                      local_subscriber: Optional[Subscriber] = None):
    async def generator() -> AsyncGenerator[Tuple[Fragment, bool], None]:
        current_response = 0

        for i in range(response_count):
            is_complete = (current_response + 1) == response_count

            message = 'Item on channel: %s' % current_response
            yield Fragment(message.encode('utf-8')), is_complete

            if local_subscriber is not None:
                local_subscriber.subscription.request(2)

            if is_complete:
                break

            current_response += 1

    return StreamFromAsyncGenerator(generator)
Exemplo n.º 3
0
 async def request_channel(
     self, payload: Payload
 ) -> Tuple[Optional[Publisher], Optional[Subscriber]]:
     return StreamFromAsyncGenerator(generator), ResponderSubscriber()
Exemplo n.º 4
0
 async def request_stream(self, payload: Payload) -> Publisher:
     return StreamFromAsyncGenerator(generator)
Exemplo n.º 5
0
 async def request_stream(self, payload: Payload) -> Publisher:
     return StreamFromAsyncGenerator(
         feed, on_cancel=lambda: stream_canceled.set())
Exemplo n.º 6
0
 async def request_stream(self, payload: Payload) -> Publisher:
     return StreamFromAsyncGenerator(self.feed, delay_between_messages=self._delay)
Exemplo n.º 7
0
        async def request_channel(self, payload: Payload) -> Tuple[Optional[Publisher], Optional[Subscriber]]:
            def set_server_finished(): wait_for_server_finish.set()

            return StreamFromAsyncGenerator(generator,
                                            on_cancel=set_server_finished,
                                            on_complete=set_server_finished), None
Exemplo n.º 8
0
        async def request_stream(self, payload: Payload) -> Publisher:
            def set_server_finished(): wait_for_server_finish.set()

            return StreamFromAsyncGenerator(generator,
                                            on_cancel=set_server_finished,
                                            on_complete=set_server_finished)