[PATCH] Re: Remove weird SigListener class

Nicolas Sebrecht nicolas.s-dev at laposte.net
Sun May 8 13:28:40 BST 2011

On Sat, May 07, 2011 at 05:40:32PM +0200, Sebastian Spaeth wrote:
> The SigListener class was used to queue folders that we need to sync and
> to receive "resync" and "abort" signals. It was undocumented and weird
> and we had to pass "siglisteners" through the whole program.
> Simply do away with it, and make 2 functions in the Account() class:
> set_abort_event and get_abort_event which can be used to set and check
> for such signals. This way we do not need to pass siglisteners all over
> the place. Tested Blinkenlights and TTYUI uis to make sure that SIGUSR1
> and SIGUSR2 actually still work.
> Document those signals in MANUAL.rst. They were completly undocumented.

Very appreciated.

> This simplifies the code and interdependencies by passing less stuff
> around. Removes an undocumented and weirdly named class.
> Signed-off-by: Sebastian Spaeth <Sebastian at SSpaeth.de>
> ---
> Really, had *ANYONE* really understood what the completly undocumented
> SigListener class was doing?

Actually this class made always me feel "don't worry about that,
OfflineIMAP work".

>                              It was first and foremost used as a
> FolderQueue, but then it would also be send signals. We can really do
> away with a Queue() for folders, we can simply iterate through them as
> we get a nice iterator back from getfolders() anyway.
> Signals are now sent to the Accout() class and that deals with either
> aborting sleep or aborting the autorefresh mode. Those signals were
> completely undocumented so I added documentation for them too.
> Despite me adding lots of code documentation to places, this patch saves
> us 40 lines of code overall.

Looks OK.

> This is the last big patch that I sent, so that Ethan can then focus
> on the IDLE integration.

Someone told me he already heard that during last days. :-)

>  docs/MANUAL.rst                 |   13 +++
>  offlineimap/accounts.py         |  195 ++++++++++++++++----------------------
>  offlineimap/init.py             |   37 +++-----
>  offlineimap/syncmaster.py       |   14 +--
>  offlineimap/threadutil.py       |    4 -
>  offlineimap/ui/Blinkenlights.py |    4 +-
>  offlineimap/ui/Curses.py        |    4 +-
>  offlineimap/ui/UIBase.py        |   22 ++---
>  8 files changed, 127 insertions(+), 166 deletions(-)
> diff --git a/docs/MANUAL.rst b/docs/MANUAL.rst
> index 9ef4eea..77a90d7 100644
> --- a/docs/MANUAL.rst
> +++ b/docs/MANUAL.rst
> @@ -262,6 +262,19 @@ MachineUI generates output in a machine-parsable format.  It is designed
>  for other programs that will interface to OfflineIMAP.
> +Signals
> +=======
> +
> +OfflineImap listens to the unix signals SIGUSR1 and SIGUSR2. If sent a

Look nicer with a newline and a blank line before the second sentence.
No need a resend.

Actually, this is the only thing I could find while reviewing this

> +SIGUSR1 it will abort any current (or next future) sleep of all accounts
> +that are configured to "autorefresh". In effect, this will trigger a
> +full sync of all accounts to be performed as soon as possible.
> +
> +If sent a SIGUSR2, it will stop "autorefresh mode" for all
> +accounts. That is, accounts will abort any current sleep and will exit
> +after a currently running synchronization has finished. This signal can
> +be used to gracefully exit out of a running offlineimap "daemon".
> +
>  ==========

Topic applied.

Nicolas Sebrecht

More information about the OfflineIMAP-project mailing list