예제 #1
0
 async def put_body_chunk(self, chunk):
     ASSERT.true(self._has_begun)
     ASSERT.is_not(self._send_mechanism, _SendMechanisms.SENDFILE)
     self._send_mechanism = _SendMechanisms.SEND
     await self._headers_sent.wait()
     if chunk:
         await self._send_all(chunk)
예제 #2
0
 def _join(self, task, trap):
     ASSERT.is_(trap.kind, traps.Traps.JOIN)
     ASSERT.is_(trap.task._kernel, self)
     ASSERT.is_not(trap.task, task)  # You can't join yourself.
     if trap.task.is_completed():
         self._ready_tasks.append(TaskReady(task, None, None))
     else:
         self._task_completion_blocker.block(trap.task, task)
예제 #3
0
파일: bases.py 프로젝트: clchiou/garage
def do_startup():
    varz = startup.call()
    main = varz[LABELS.main]
    kwargs = {}
    for parameter in inspect.signature(main).parameters.values():
        if parameter.annotation is parameter.empty:
            ASSERT.is_not(parameter.default, parameter.empty)
        else:
            kwargs[parameter.name] = varz[parameter.annotation]
    return main, kwargs
예제 #4
0
파일: wsgi_apps.py 프로젝트: clchiou/garage
 async def write(self, data):
     if self._body.is_closed():
         raise ResponseClosed('response is closed')
     ASSERT.is_not(self._send_mechanism, _SendMechanisms.SENDFILE)
     self._set_send_mechanism(_SendMechanisms.SEND)
     if not data:
         return 0
     if self.is_uncommitted():
         return self._precommit.write_nonblocking(data)
     try:
         await self._body.put(data)
     except queues.Closed:
         # Re-raise ValueError like other file-like classes.
         raise ResponseClosed('response is closed') from None
     return len(data)
예제 #5
0
파일: blockers.py 프로젝트: clchiou/garage
 def block(self, source, task):
     """Record that ``task`` is joining on ``source`` task."""
     ASSERT.isinstance(source, tasks.Task)
     ASSERT.is_not(source, task)  # A task can't join on itself.
     ASSERT.false(source.is_completed())
     return super().block(source, task)
예제 #6
0
 def __init__(self, type, doc=None, **kwargs):  # pylint: disable=redefined-builtin
     ASSERT.is_not(type, None.__class__)
     super().__init__(type=type, doc=doc, **kwargs)
예제 #7
0
파일: wsgi_apps.py 프로젝트: clchiou/garage
 def _set_send_mechanism(self, mechanism):
     ASSERT.is_not(mechanism, _SendMechanisms.UNDECIDED)
     self._send_mechanism = mechanism
     self._send_mechanism_decided.set()
예제 #8
0
 async def put_body_chunk(self, chunk):
     ASSERT.is_not(self._send_mechanism, _SendMechanisms.SENDFILE)
     self._send_mechanism = _SendMechanisms.SEND
     if chunk:
         await self._chunks.put(chunk)