Part of lp.codehosting.puller.scheduler View In Hierarchy
The wire protocol for receiving events from the puller worker.
The wire-level protocol is a series of netstrings.
At the next level up, the protocol consists of messages which each look
like this::
[method-name] [number-of-arguments] [arguments]+
Thus the instance is always in one of three states::
[0] Waiting for command name.
[1] Waiting for argument count.
[2] Waiting for an argument.
In state [0], we are waiting for a command name. When we get one, we
store it in self._current_command and move into state [1].
In state [1], we are waiting for an argument count. When we receive a
message, we try to convert it to an integer. If we fail in this, we call
unexpectedError(). Otherwise, if it's greater than zero, we store the
number in self._expected_args and go into state [2] or if it's zero
execute the command (see below).
In state [2], we are waiting for an argument. When we receive one, we
append it to self._current_args. If len(self._current_args) ==
self._expected_args, execute the command.
"Executing the command" means looking for a method called
do_<command name> on self.puller_protocol and calling it with
*self._current_args. If this raises, call
self.puller_protocol.unexpectedError().
The method _resetState() forces us back into state [0].
| Method | __init__ | Undocumented |
| Method | dataReceived | See NetstringReceiver.dataReceived. |
| Method | stringReceived | See NetstringReceiver.stringReceived. |
| Method | _resetState | Force into the 'waiting for command' state. |