~didrocks/ubuntuone-client/dont-suffer-zg-crash

« back to all changes in this revision

Viewing changes to ubuntuone/syncdaemon/states.py

  • Committer: Bazaar Package Importer
  • Author(s): Rodney Dawes
  • Date: 2009-06-30 12:00:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090630120000-by806ovmw3193qe8
Tags: upstream-0.90.3
ImportĀ upstreamĀ versionĀ 0.90.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# ubuntuone.syncdaemon.states - SyncDaemon states
 
2
#
 
3
# Author: John Lenton <john.lenton@canonical.com>
 
4
#
 
5
# Copyright 2009 Canonical Ltd.
 
6
#
 
7
# This program is free software: you can redistribute it and/or modify it
 
8
# under the terms of the GNU General Public License version 3, as published
 
9
# by the Free Software Foundation.
 
10
#
 
11
# This program is distributed in the hope that it will be useful, but
 
12
# WITHOUT ANY WARRANTY; without even the implied warranties of
 
13
# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
 
14
# PURPOSE.  See the GNU General Public License for more details.
 
15
#
 
16
# You should have received a copy of the GNU General Public License along
 
17
# with this program.  If not, see <http://www.gnu.org/licenses/>.
 
18
"""
 
19
The states of the SyncDaemon
 
20
"""
 
21
 
 
22
class BadTransition(Exception):
 
23
    """
 
24
    An event arrived that the state didn't know how to handle.
 
25
    """
 
26
 
 
27
class UndefinedState(Exception):
 
28
    """
 
29
    The target state doesn't exist.
 
30
    """
 
31
 
 
32
class SyncDaemonState(object):
 
33
    """
 
34
    A SyncDaemon state.
 
35
    """
 
36
    def __repr__(self):
 
37
        return '<%s %s>' % (self.__class__.__name__,
 
38
                            self.name)
 
39
 
 
40
    def __init__(self, name, description,
 
41
                 sys_net_connected_trn, sys_connect_trn,
 
42
                 sys_net_disconnected_trn, sys_disconnect_trn,
 
43
                 sys_connection_lost_trn,
 
44
                 is_error=False, is_connected=False, is_online=False,
 
45
                 enter=None,
 
46
                 **other_transitions):
 
47
        self.name = name
 
48
        self.description = description
 
49
        self.is_error = is_error
 
50
        self.is_connected = is_connected
 
51
        self.is_online = is_online
 
52
        self.enter = enter
 
53
        self.transitions = dict(SYS_NET_CONNECTED=sys_net_connected_trn,
 
54
                                SYS_CONNECT=sys_connect_trn,
 
55
                                SYS_NET_DISCONNECTED=sys_net_disconnected_trn,
 
56
                                SYS_DISCONNECT=sys_disconnect_trn,
 
57
                                SYS_CONNECTION_LOST=sys_connection_lost_trn,
 
58
                                **other_transitions)
 
59
 
 
60
    def next(self, event):
 
61
        """
 
62
        Determine the next state, given the current state and the event.
 
63
        That makes us a Moore FSM, right?
 
64
        """
 
65
        if event in self.transitions:
 
66
            new = self.transitions[event]
 
67
            if new in globals():
 
68
                return globals()[new]
 
69
            else:
 
70
                raise UndefinedState("State %s is undefined" % new)
 
71
        else:
 
72
            raise BadTransition("State %s can't handle the %s event"
 
73
                                % (self.name, event))
 
74
 
 
75
class NonActiveConnectedSDState(SyncDaemonState):
 
76
    """
 
77
    States that handle network disconnections with no cleanup
 
78
    required.
 
79
    """
 
80
    def __init__(self, name, description, is_online=False, with_q=None,
 
81
                 **other_transitions):
 
82
        ready_waiting = 'READY_WAITING'
 
83
        ready_w_network = 'READY_WITH_NETWORK'
 
84
        start_connecting = 'START_CONNECTING'
 
85
        if with_q is not None:
 
86
            ready_waiting += '_WITH_' + with_q
 
87
            ready_w_network += '_WITH_' + with_q
 
88
            start_connecting += '_WITH_' + with_q
 
89
        if name.startswith('START_'):
 
90
            same = name[6:]
 
91
        else:
 
92
            same = name
 
93
        super(NonActiveConnectedSDState, self).__init__(name, description,
 
94
                                                        same, same,
 
95
                                                        ready_waiting,
 
96
                                                        ready_w_network,
 
97
                                                        start_connecting,
 
98
                                                        is_connected=True,
 
99
                                                        is_online=is_online,
 
100
                                                        **other_transitions)
 
101
 
 
102
class WorkingSDState(SyncDaemonState):
 
103
    """
 
104
    States that handle network disconnections by doing cleanup.
 
105
    """
 
106
    def __init__(self, name, description, **other_transitions):
 
107
        super(WorkingSDState, self).__init__(
 
108
            name, description, name, name,
 
109
            'START_CLEANUP_WAITING',
 
110
            'START_CONNECTED_CLEANUP',
 
111
            'START_CLEANUP_WAITING_WITH_NETWORK',
 
112
            is_connected=True, is_online=True,
 
113
            **other_transitions)
 
114
 
 
115
class AQErrorState(SyncDaemonState):
 
116
    """
 
117
    States that are errors.
 
118
    """
 
119
    def __init__(self, name, description):
 
120
        super(AQErrorState, self).__init__(name, description,
 
121
                                           name, name, name, name, name,
 
122
                                           is_error=True)
 
123
 
 
124
    def next(self, event):
 
125
        """
 
126
        The next state of an error is always itself.
 
127
        """
 
128
        return self
 
129
 
 
130
 
 
131
INIT = SyncDaemonState(
 
132
    'INIT', 'just initialized',
 
133
    'INIT_WITH_NETWORK', 'INIT_WAITING',
 
134
    'INIT', 'INIT', 'INIT',
 
135
    SYS_WAIT_FOR_LOCAL_RESCAN='READING',
 
136
    )
 
137
 
 
138
INIT_WITH_NETWORK = SyncDaemonState(
 
139
    'INIT_WITH_NETWORK',
 
140
    'just initialized, but already has network',
 
141
    'INIT_WITH_NETWORK', 'INIT_WAITING_WITH_NETWORK',
 
142
    'INIT', 'INIT_WITH_NETWORK', 'INIT_WITH_NETWORK',
 
143
    SYS_WAIT_FOR_LOCAL_RESCAN='READING_WITH_NETWORK',
 
144
    )
 
145
 
 
146
INIT_WAITING = SyncDaemonState(
 
147
    'INIT_WAITING',
 
148
    'just initialized, but the user already wants to connect',
 
149
    'INIT_WAITING_WITH_NETWORK', 'INIT_WAITING',
 
150
    'INIT_WAITING', 'INIT', 'INIT_WAITING',
 
151
    SYS_WAIT_FOR_LOCAL_RESCAN='READING_WAITING',
 
152
    )
 
153
 
 
154
INIT_WAITING_WITH_NETWORK = SyncDaemonState(
 
155
    'INIT_WAITING_WITH_NETWORK',
 
156
    'just initialized, user wants to connect, and network is available',
 
157
    'INIT_WAITING_WITH_NETWORK', 'INIT_WAITING_WITH_NETWORK',
 
158
    'INIT_WAITING', 'INIT_WITH_NETWORK', 'INIT_WAITING_WITH_NETWORK',
 
159
    SYS_WAIT_FOR_LOCAL_RESCAN='READING_WAITING_WITH_NETWORK',
 
160
    )
 
161
 
 
162
READING = SyncDaemonState(
 
163
    'READING',
 
164
    'doing local rescan',
 
165
    'READING_WITH_NETWORK', 'READING_WAITING',
 
166
    'READING', 'READING', 'READING',
 
167
    SYS_LOCAL_RESCAN_DONE='READY_FOR_NETWORK',
 
168
    SYS_META_QUEUE_WAITING='READING_WITH_METAQ',
 
169
    SYS_CONTENT_QUEUE_WAITING='READING_WITH_CONTQ',
 
170
    )
 
171
 
 
172
READING_WITH_METAQ = SyncDaemonState(
 
173
    'READING_WITH_METAQ',
 
174
    'doing local rescan, meta_q waiting',
 
175
    'READING_WITH_NETWORK_WITH_METAQ', 'READING_WAITING_WITH_METAQ',
 
176
    'READING_WITH_METAQ', 'READING_WITH_METAQ', 'READING_WITH_METAQ',
 
177
    SYS_LOCAL_RESCAN_DONE='READY_FOR_NETWORK_WITH_METAQ',
 
178
    SYS_CONTENT_QUEUE_WAITING='READING_WITH_BOTHQ',
 
179
    )
 
180
 
 
181
READING_WITH_CONTQ = SyncDaemonState(
 
182
    'READING_WITH_CONTQ',
 
183
    'doing local rescan, content_q waiting',
 
184
    'READING_WITH_NETWORK_WITH_CONTQ', 'READING_WAITING_WITH_CONTQ',
 
185
    'READING_WITH_CONTQ', 'READING_WITH_CONTQ', 'READING_WITH_CONTQ',
 
186
    SYS_LOCAL_RESCAN_DONE='READY_FOR_NETWORK_WITH_CONTQ',
 
187
    SYS_META_QUEUE_WAITING='READING_WITH_BOTHQ',
 
188
    SYS_CONTENT_QUEUE_WAITING='READING_WITH_CONTQ',
 
189
    )
 
190
 
 
191
READING_WITH_BOTHQ = SyncDaemonState(
 
192
    'READING_WITH_BOTHQ',
 
193
    'doing local rescan, both _q\'s waiting',
 
194
    'READING_WITH_NETWORK_WITH_BOTHQ', 'READING_WAITING_WITH_BOTHQ',
 
195
    'READING_WITH_BOTHQ', 'READING_WITH_BOTHQ', 'READING_WITH_BOTHQ',
 
196
    SYS_LOCAL_RESCAN_DONE='READY_FOR_NETWORK_WITH_BOTHQ',
 
197
    SYS_CONTENT_QUEUE_WAITING='READING_WITH_BOTHQ',
 
198
    )
 
199
 
 
200
READING_WITH_NETWORK = SyncDaemonState(
 
201
    'READING_WITH_NETWORK',
 
202
    'doing local rescan; network is available',
 
203
    'READING_WITH_NETWORK', 'READING_WAITING_WITH_NETWORK',
 
204
    'READING', 'READING_WITH_NETWORK', 'READING_WITH_NETWORK',
 
205
    SYS_LOCAL_RESCAN_DONE='READY_WITH_NETWORK',
 
206
    SYS_META_QUEUE_WAITING='READING_WITH_NETWORK_WITH_METAQ',
 
207
    SYS_CONTENT_QUEUE_WAITING='READING_WITH_NETWORK_WITH_CONTQ',
 
208
    )
 
209
 
 
210
READING_WITH_NETWORK_WITH_METAQ = SyncDaemonState(
 
211
    'READING_WITH_NETWORK_WITH_METAQ',
 
212
    'doing local rescan; network is available, meta_q waiting',
 
213
    'READING_WITH_NETWORK_WITH_METAQ',
 
214
    'READING_WAITING_WITH_NETWORK_WITH_METAQ',
 
215
    'READING_WITH_METAQ', 'READING_WITH_NETWORK_WITH_METAQ',
 
216
    'READING_WITH_NETWORK_WITH_METAQ',
 
217
    SYS_LOCAL_RESCAN_DONE='READY_WITH_NETWORK_WITH_METAQ',
 
218
    SYS_CONTENT_QUEUE_WAITING='READING_WITH_NETWORK_WITH_BOTHQ',
 
219
    )
 
220
 
 
221
READING_WITH_NETWORK_WITH_CONTQ = SyncDaemonState(
 
222
    'READING_WITH_NETWORK_WITH_CONTQ',
 
223
    'doing local rescan; network is available, content_q waiting',
 
224
    'READING_WITH_NETWORK_WITH_CONTQ',
 
225
    'READING_WAITING_WITH_NETWORK_WITH_CONTQ',
 
226
    'READING_WITH_CONTQ', 'READING_WITH_NETWORK_WITH_CONTQ',
 
227
    'READING_WITH_NETWORK_WITH_CONTQ',
 
228
    SYS_LOCAL_RESCAN_DONE='READY_WITH_NETWORK_WITH_CONTQ',
 
229
    SYS_META_QUEUE_WAITING='READING_WITH_NETWORK_WITH_BOTHQ',
 
230
    SYS_CONTENT_QUEUE_WAITING='READING_WITH_NETWORK_WITH_CONTQ',
 
231
    )
 
232
 
 
233
READING_WITH_NETWORK_WITH_BOTHQ = SyncDaemonState(
 
234
    'READING_WITH_NETWORK_WITH_BOTHQ',
 
235
    'doing local rescan; network is available, both _q\'s waiting',
 
236
    'READING_WITH_NETWORK_WITH_BOTHQ',
 
237
    'READING_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
238
    'READING_WITH_BOTHQ', 'READING_WITH_NETWORK_WITH_BOTHQ',
 
239
    'READING_WITH_NETWORK_WITH_BOTHQ',
 
240
    SYS_LOCAL_RESCAN_DONE='READY_WITH_NETWORK_WITH_BOTHQ',
 
241
    SYS_CONTENT_QUEUE_WAITING='READING_WITH_NETWORK_WITH_BOTHQ',
 
242
    )
 
243
 
 
244
READING_WAITING = SyncDaemonState(
 
245
    'READING_WAITING',
 
246
    'doing local rescan; user wants to connect',
 
247
    'READING_WAITING_WITH_NETWORK', 'READING_WAITING',
 
248
    'READING_WAITING', 'READING', 'READING_WAITING',
 
249
    SYS_LOCAL_RESCAN_DONE='READY_WAITING',
 
250
    SYS_META_QUEUE_WAITING='READING_WAITING_WITH_METAQ',
 
251
    SYS_CONTENT_QUEUE_WAITING='READING_WAITING_WITH_CONTQ',
 
252
    )
 
253
 
 
254
READING_WAITING_WITH_METAQ = SyncDaemonState(
 
255
    'READING_WAITING_WITH_METAQ',
 
256
    'doing local rescan; user wants to connect, meta_q waiting',
 
257
    'READING_WAITING_WITH_NETWORK_WITH_METAQ', 'READING_WAITING_WITH_METAQ',
 
258
    'READING_WAITING_WITH_METAQ', 'READING_WITH_METAQ',
 
259
    'READING_WAITING_WITH_METAQ',
 
260
    SYS_LOCAL_RESCAN_DONE='READY_WAITING_WITH_METAQ',
 
261
    SYS_CONTENT_QUEUE_WAITING='READING_WAITING_WITH_BOTHQ',
 
262
    )
 
263
 
 
264
READING_WAITING_WITH_CONTQ = SyncDaemonState(
 
265
    'READING_WAITING_WITH_CONTQ',
 
266
    'doing local rescan; user wants to connect, content_q waiting',
 
267
    'READING_WAITING_WITH_NETWORK_WITH_CONTQ', 'READING_WAITING_WITH_CONTQ',
 
268
    'READING_WAITING_WITH_CONTQ', 'READING_WITH_CONTQ',
 
269
    'READING_WAITING_WITH_CONTQ',
 
270
    SYS_LOCAL_RESCAN_DONE='READY_WAITING_WITH_CONTQ',
 
271
    SYS_META_QUEUE_WAITING='READING_WAITING_WITH_BOTHQ',
 
272
    SYS_CONTENT_QUEUE_WAITING='READING_WAITING_WITH_CONTQ',
 
273
    )
 
274
 
 
275
READING_WAITING_WITH_BOTHQ = SyncDaemonState(
 
276
    'READING_WAITING_WITH_BOTHQ',
 
277
    'doing local rescan; user wants to connect, both _q\'s waiting',
 
278
    'READING_WAITING_WITH_NETWORK_WITH_BOTHQ', 'READING_WAITING_WITH_BOTHQ',
 
279
    'READING_WAITING_WITH_BOTHQ', 'READING_WITH_BOTHQ',
 
280
    'READING_WAITING_WITH_BOTHQ',
 
281
    SYS_LOCAL_RESCAN_DONE='READY_WAITING_WITH_BOTHQ',
 
282
    SYS_CONTENT_QUEUE_WAITING='READING_WAITING_WITH_BOTHQ',
 
283
    )
 
284
 
 
285
READING_WAITING_WITH_NETWORK = SyncDaemonState(
 
286
    'READING_WAITING_WITH_NETWORK',
 
287
    'doing local rescan; user wants to connect, and network is available',
 
288
    'READING_WAITING_WITH_NETWORK', 'READING_WAITING_WITH_NETWORK',
 
289
    'READING_WAITING', 'READING_WITH_NETWORK',
 
290
    'READING_WAITING_WITH_NETWORK',
 
291
    SYS_LOCAL_RESCAN_DONE='START_CONNECTING',
 
292
    SYS_META_QUEUE_WAITING='READING_WAITING_WITH_NETWORK_WITH_METAQ',
 
293
    SYS_CONTENT_QUEUE_WAITING='READING_WAITING_WITH_NETWORK_WITH_CONTQ',
 
294
    )
 
295
 
 
296
READING_WAITING_WITH_NETWORK_WITH_METAQ = SyncDaemonState(
 
297
    'READING_WAITING_WITH_NETWORK_WITH_METAQ',
 
298
    'doing local rescan; user wants to connect, network is available,'
 
299
        ' meta_q waiting',
 
300
    'READING_WAITING_WITH_NETWORK_WITH_METAQ',
 
301
    'READING_WAITING_WITH_NETWORK_WITH_METAQ',
 
302
    'READING_WAITING_WITH_METAQ', 'READING_WITH_NETWORK_WITH_METAQ',
 
303
    'READING_WAITING_WITH_NETWORK_WITH_METAQ',
 
304
    SYS_LOCAL_RESCAN_DONE='START_CONNECTING_WITH_METAQ',
 
305
    SYS_CONTENT_QUEUE_WAITING='READING_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
306
    )
 
307
 
 
308
READING_WAITING_WITH_NETWORK_WITH_CONTQ = SyncDaemonState(
 
309
    'READING_WAITING_WITH_NETWORK_WITH_CONTQ',
 
310
    'doing local rescan; user wants to connect, network is available,'
 
311
        ' content_q waiting',
 
312
    'READING_WAITING_WITH_NETWORK_WITH_CONTQ',
 
313
    'READING_WAITING_WITH_NETWORK_WITH_CONTQ',
 
314
    'READING_WAITING_WITH_CONTQ', 'READING_WITH_NETWORK_WITH_CONTQ',
 
315
    'READING_WAITING_WITH_NETWORK_WITH_CONTQ',
 
316
    SYS_LOCAL_RESCAN_DONE='START_CONNECTING_WITH_CONTQ',
 
317
    SYS_META_QUEUE_WAITING='READING_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
318
    SYS_CONTENT_QUEUE_WAITING='READING_WAITING_WITH_NETWORK_WITH_CONTQ',
 
319
    )
 
320
 
 
321
READING_WAITING_WITH_NETWORK_WITH_BOTHQ = SyncDaemonState(
 
322
    'READING_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
323
    'doing local rescan; user wants to connect, network is available,'
 
324
        ' both _q\'s waiting',
 
325
    'READING_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
326
    'READING_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
327
    'READING_WAITING_WITH_BOTHQ', 'READING_WITH_NETWORK_WITH_BOTHQ',
 
328
    'READING_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
329
    SYS_LOCAL_RESCAN_DONE='START_CONNECTING_WITH_BOTHQ',
 
330
    SYS_CONTENT_QUEUE_WAITING='READING_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
331
    )
 
332
 
 
333
READY_FOR_NETWORK = SyncDaemonState(
 
334
    'READY_FOR_NETWORK',
 
335
    'ready to connect as soon as the user says so and the network comes up.',
 
336
    'READY_WITH_NETWORK', 'READY_WAITING',
 
337
    'READY_FOR_NETWORK', 'READY_FOR_NETWORK', 'READY_FOR_NETWORK',
 
338
    SYS_META_QUEUE_WAITING='READY_FOR_NETWORK_WITH_METAQ',
 
339
    SYS_CONTENT_QUEUE_WAITING='READY_FOR_NETWORK_WITH_CONTQ',
 
340
    )
 
341
 
 
342
READY_FOR_NETWORK_WITH_METAQ = SyncDaemonState(
 
343
    'READY_FOR_NETWORK_WITH_METAQ',
 
344
    'ready to connect as soon as the user says so and the network comes up.'
 
345
    + ' Meta queue is waiting.',
 
346
    'READY_WITH_NETWORK_WITH_METAQ', 'READY_WAITING_WITH_METAQ',
 
347
    'READY_FOR_NETWORK_WITH_METAQ', 'READY_FOR_NETWORK_WITH_METAQ',
 
348
    'READY_FOR_NETWORK_WITH_METAQ',
 
349
    SYS_CONTENT_QUEUE_WAITING='READY_FOR_NETWORK_WITH_BOTHQ',
 
350
    )
 
351
 
 
352
READY_FOR_NETWORK_WITH_CONTQ = SyncDaemonState(
 
353
    'READY_FOR_NETWORK_WITH_CONTQ',
 
354
    'ready to connect as soon as the user says so and the network comes up.'
 
355
    + ' Content queue is waiting.',
 
356
    'READY_WITH_NETWORK_WITH_CONTQ', 'READY_WAITING_WITH_CONTQ',
 
357
    'READY_FOR_NETWORK_WITH_CONTQ', 'READY_FOR_NETWORK_WITH_CONTQ',
 
358
    'READY_FOR_NETWORK_WITH_CONTQ',
 
359
    SYS_META_QUEUE_WAITING='READY_FOR_NETWORK_WITH_BOTHQ',
 
360
    SYS_CONTENT_QUEUE_WAITING='READY_FOR_NETWORK_WITH_CONTQ',
 
361
    )
 
362
 
 
363
READY_FOR_NETWORK_WITH_BOTHQ = SyncDaemonState(
 
364
    'READY_FOR_NETWORK_WITH_BOTHQ',
 
365
    'ready to connect as soon as the user says so and the network comes up.'
 
366
    + ' Both request queues are waiting.',
 
367
    'READY_WITH_NETWORK_WITH_BOTHQ', 'READY_WAITING_WITH_BOTHQ',
 
368
    'READY_FOR_NETWORK_WITH_BOTHQ', 'READY_FOR_NETWORK_WITH_BOTHQ',
 
369
    'READY_FOR_NETWORK_WITH_BOTHQ',
 
370
    SYS_CONTENT_QUEUE_WAITING='READY_FOR_NETWORK_WITH_BOTHQ',
 
371
    )
 
372
 
 
373
READY_WITH_NETWORK = SyncDaemonState(
 
374
    'READY_WITH_NETWORK',
 
375
    'ready to connect, network is up, user is yet to push "go"',
 
376
    'READY_WITH_NETWORK', 'START_CONNECTING',
 
377
    'READY_FOR_NETWORK', 'READY_WITH_NETWORK', 'READY_WITH_NETWORK',
 
378
    SYS_META_QUEUE_WAITING='READY_WITH_NETWORK_WITH_METAQ',
 
379
    SYS_CONTENT_QUEUE_WAITING='READY_WITH_NETWORK_WITH_CONTQ',
 
380
    )
 
381
 
 
382
READY_WITH_NETWORK_WITH_METAQ = SyncDaemonState(
 
383
    'READY_WITH_NETWORK_WITH_METAQ',
 
384
    'ready to connect, network up, meta_q waiting, user yet to push "go"',
 
385
    'READY_WITH_NETWORK_WITH_METAQ', 'START_CONNECTING_WITH_METAQ',
 
386
    'READY_FOR_NETWORK_WITH_METAQ', 'READY_WITH_NETWORK_WITH_METAQ',
 
387
    'READY_WITH_NETWORK_WITH_METAQ',
 
388
    SYS_META_QUEUE_WAITING='READY_WITH_NETWORK_WITH_METAQ',
 
389
    SYS_CONTENT_QUEUE_WAITING='READY_WITH_NETWORK_WITH_BOTHQ',
 
390
    )
 
391
 
 
392
READY_WITH_NETWORK_WITH_CONTQ = SyncDaemonState(
 
393
    'READY_WITH_NETWORK_WITH_CONTQ',
 
394
    'ready to connect, network up, content_q waiting, user yet to push "go"',
 
395
    'READY_WITH_NETWORK_WITH_CONTQ', 'START_CONNECTING_WITH_CONTQ',
 
396
    'READY_FOR_NETWORK_WITH_CONTQ', 'READY_WITH_NETWORK_WITH_CONTQ',
 
397
    'READY_WITH_NETWORK_WITH_CONTQ',
 
398
    SYS_META_QUEUE_WAITING='READY_WITH_NETWORK_WITH_BOTHQ',
 
399
    SYS_CONTENT_QUEUE_WAITING='READY_WITH_NETWORK_WITH_CONTQ',
 
400
    )
 
401
 
 
402
READY_WITH_NETWORK_WITH_BOTHQ = SyncDaemonState(
 
403
    'READY_WITH_NETWORK_WITH_BOTHQ',
 
404
    'ready to connect, network up, both _q\'s waiting, user yet to push "go"',
 
405
    'READY_WITH_NETWORK_WITH_BOTHQ', 'START_CONNECTING_WITH_BOTHQ',
 
406
    'READY_FOR_NETWORK_WITH_BOTHQ', 'READY_WITH_NETWORK_WITH_BOTHQ',
 
407
    'READY_WITH_NETWORK_WITH_BOTHQ',
 
408
    SYS_META_QUEUE_WAITING='READY_WITH_NETWORK_WITH_BOTHQ',
 
409
    SYS_CONTENT_QUEUE_WAITING='READY_WITH_NETWORK_WITH_BOTHQ',
 
410
    )
 
411
 
 
412
READY_WAITING = SyncDaemonState(
 
413
    'READY_WAITING',
 
414
    'ready to connect; user said "go", network is down',
 
415
    'START_CONNECTING', 'READY_WAITING',
 
416
    'READY_WAITING', 'READY_FOR_NETWORK', 'READY_WAITING',
 
417
    SYS_META_QUEUE_WAITING='READY_WAITING_WITH_METAQ',
 
418
    SYS_CONTENT_QUEUE_WAITING='READY_WAITING_WITH_CONTQ',
 
419
)
 
420
 
 
421
READY_WAITING_WITH_METAQ = SyncDaemonState(
 
422
    'READY_WAITING_WITH_METAQ',
 
423
    'ready to connect; user said "go", network is down, meta_q waiting',
 
424
    'START_CONNECTING_WITH_METAQ', 'READY_WAITING_WITH_METAQ',
 
425
    'READY_WAITING_WITH_METAQ', 'READY_FOR_NETWORK_WITH_METAQ',
 
426
    'READY_WAITING_WITH_METAQ',
 
427
    SYS_CONTENT_QUEUE_WAITING='READY_WAITING_WITH_BOTHQ',
 
428
)
 
429
 
 
430
READY_WAITING_WITH_CONTQ = SyncDaemonState(
 
431
    'READY_WAITING_WITH_CONTQ',
 
432
    'ready to connect; user said "go", network is down, content_q waiting',
 
433
    'START_CONNECTING_WITH_CONTQ', 'READY_WAITING_WITH_CONTQ',
 
434
    'READY_WAITING_WITH_CONTQ', 'READY_FOR_NETWORK_WITH_CONTQ',
 
435
    'READY_WAITING_WITH_CONTQ',
 
436
    SYS_META_QUEUE_WAITING='READY_WAITING_WITH_METAQ',
 
437
    SYS_CONTENT_QUEUE_WAITING='READY_WAITING_WITH_CONTQ',
 
438
)
 
439
 
 
440
READY_WAITING_WITH_BOTHQ = SyncDaemonState(
 
441
    'READY_WAITING_WITH_BOTHQ',
 
442
    'ready to connect; user said "go", network is down, both _q\'s waiting',
 
443
    'START_CONNECTING_WITH_BOTHQ', 'READY_WAITING_WITH_BOTHQ',
 
444
    'READY_WAITING_WITH_BOTHQ', 'READY_FOR_NETWORK_WITH_BOTHQ',
 
445
    'READY_WAITING_WITH_BOTHQ',
 
446
    SYS_CONTENT_QUEUE_WAITING='READY_WAITING_WITH_BOTHQ',
 
447
)
 
448
 
 
449
START_CONNECTING = SyncDaemonState(
 
450
    'START_CONNECTING',
 
451
    'started waiting for the socket to come up',
 
452
    'CONNECTING', 'CONNECTING',
 
453
    'READY_WAITING', 'READY_WITH_NETWORK', 'START_CONNECTING',
 
454
    SYS_CONNECTION_MADE='START_CONNECTED',
 
455
    SYS_META_QUEUE_WAITING='CONNECTING_WITH_METAQ',
 
456
    SYS_CONTENT_QUEUE_WAITING='CONNECTING_WITH_CONTQ',
 
457
    enter=lambda m: m.action_q.connect(),
 
458
    )
 
459
 
 
460
START_CONNECTING_WITH_METAQ = SyncDaemonState(
 
461
    'START_CONNECTING_WITH_METAQ',
 
462
    'started waiting for the socket to come up; meta_q waiting',
 
463
    'CONNECTING_WITH_METAQ', 'CONNECTING_WITH_METAQ',
 
464
    'READY_WAITING_WITH_METAQ', 'READY_WITH_NETWORK_WITH_METAQ',
 
465
    'START_CONNECTING_WITH_METAQ',
 
466
    SYS_CONNECTION_MADE='START_CONNECTED_WITH_METAQ',
 
467
    SYS_CONTENT_QUEUE_WAITING='CONNECTING_WITH_BOTHQ',
 
468
    enter=lambda m: m.action_q.connect(),
 
469
    )
 
470
 
 
471
START_CONNECTING_WITH_CONTQ = SyncDaemonState(
 
472
    'START_CONNECTING_WITH_CONTQ',
 
473
    'started waiting for the socket to come up; content_q waiting',
 
474
    'CONNECTING_WITH_CONTQ', 'CONNECTING_WITH_CONTQ',
 
475
    'READY_WAITING_WITH_CONTQ', 'READY_WITH_NETWORK_WITH_CONTQ',
 
476
    'START_CONNECTING_WITH_CONTQ',
 
477
    SYS_CONNECTION_MADE='START_CONNECTED_WITH_CONTQ',
 
478
    SYS_META_QUEUE_WAITING='CONNECTING_WITH_BOTHQ',
 
479
    SYS_CONTENT_QUEUE_WAITING='CONNECTING_WITH_CONTQ',
 
480
    enter=lambda m: m.action_q.connect(),
 
481
    )
 
482
 
 
483
START_CONNECTING_WITH_BOTHQ = SyncDaemonState(
 
484
    'START_CONNECTING_WITH_BOTHQ',
 
485
    'started waiting for the socket to come up; both _q\'s waiting',
 
486
    'CONNECTING_WITH_BOTHQ', 'CONNECTING_WITH_BOTHQ',
 
487
    'READY_WAITING_WITH_BOTHQ', 'READY_WITH_NETWORK_WITH_BOTHQ',
 
488
    'START_CONNECTING_WITH_BOTHQ',
 
489
    SYS_CONNECTION_MADE='START_CONNECTED_WITH_BOTHQ',
 
490
    SYS_CONTENT_QUEUE_WAITING='CONNECTING_WITH_BOTHQ',
 
491
    enter=lambda m: m.action_q.connect(),
 
492
    )
 
493
 
 
494
CONNECTING = SyncDaemonState(
 
495
    'CONNECTING',
 
496
    'waiting for the socket to come up',
 
497
    'CONNECTING', 'CONNECTING',
 
498
    'READY_WAITING', 'READY_WITH_NETWORK', 'START_CONNECTING',
 
499
    SYS_CONNECTION_MADE='START_CONNECTED',
 
500
    SYS_META_QUEUE_WAITING='CONNECTING_WITH_METAQ',
 
501
    SYS_CONTENT_QUEUE_WAITING='CONNECTING_WITH_CONTQ',
 
502
    )
 
503
 
 
504
CONNECTING_WITH_METAQ = SyncDaemonState(
 
505
    'CONNECTING_WITH_METAQ',
 
506
    'waiting for the socket to come up; meta_q waiting',
 
507
    'CONNECTING_WITH_METAQ', 'CONNECTING_WITH_METAQ',
 
508
    'READY_WAITING_WITH_METAQ', 'READY_WITH_NETWORK_WITH_METAQ',
 
509
    'START_CONNECTING_WITH_METAQ',
 
510
    SYS_CONNECTION_MADE='START_CONNECTED_WITH_METAQ',
 
511
    SYS_CONTENT_QUEUE_WAITING='CONNECTING_WITH_BOTHQ',
 
512
    )
 
513
 
 
514
CONNECTING_WITH_CONTQ = SyncDaemonState(
 
515
    'CONNECTING_WITH_CONTQ',
 
516
    'waiting for the socket to come up; content_q waiting',
 
517
    'CONNECTING_WITH_CONTQ', 'CONNECTING_WITH_CONTQ',
 
518
    'READY_WAITING_WITH_CONTQ', 'READY_WITH_NETWORK_WITH_CONTQ',
 
519
    'START_CONNECTING_WITH_CONTQ',
 
520
    SYS_CONNECTION_MADE='START_CONNECTED_WITH_CONTQ',
 
521
    SYS_META_QUEUE_WAITING='CONNECTING_WITH_BOTHQ',
 
522
    SYS_CONTENT_QUEUE_WAITING='CONNECTING_WITH_CONTQ',
 
523
    )
 
524
 
 
525
CONNECTING_WITH_BOTHQ = SyncDaemonState(
 
526
    'CONNECTING_WITH_BOTHQ',
 
527
    'waiting for the socket to come up; both _q\'s waiting',
 
528
    'CONNECTING_WITH_BOTHQ', 'CONNECTING_WITH_BOTHQ',
 
529
    'READY_WAITING_WITH_BOTHQ', 'READY_WITH_NETWORK_WITH_BOTHQ',
 
530
    'START_CONNECTING_WITH_BOTHQ',
 
531
    SYS_CONNECTION_MADE='START_CONNECTED_WITH_BOTHQ',
 
532
    SYS_CONTENT_QUEUE_WAITING='CONNECTING_WITH_BOTHQ',
 
533
    )
 
534
 
 
535
START_CONNECTED = NonActiveConnectedSDState(
 
536
    'START_CONNECTED',
 
537
    'socket came up! start checking protocol version',
 
538
    SYS_PROTOCOL_VERSION_ERROR='BAD_VERSION',
 
539
    SYS_PROTOCOL_VERSION_OK='START_AUTHENTICATING',
 
540
    SYS_META_QUEUE_WAITING='CONNECTED_WITH_METAQ',
 
541
    SYS_CONTENT_QUEUE_WAITING='CONNECTED_WITH_CONTQ',
 
542
    enter=lambda m: m.check_version(),
 
543
    )
 
544
 
 
545
START_CONNECTED_WITH_METAQ = NonActiveConnectedSDState(
 
546
    'START_CONNECTED_WITH_METAQ',
 
547
    'socket came up! start checking protocol version; meta_q waiting',
 
548
    with_q='METAQ',
 
549
    SYS_PROTOCOL_VERSION_ERROR='BAD_VERSION',
 
550
    SYS_PROTOCOL_VERSION_OK='START_AUTHENTICATING_WITH_METAQ',
 
551
    SYS_CONTENT_QUEUE_WAITING='CONNECTED_WITH_BOTHQ',
 
552
    enter=lambda m: m.check_version(),
 
553
    )
 
554
 
 
555
START_CONNECTED_WITH_CONTQ = NonActiveConnectedSDState(
 
556
    'START_CONNECTED_WITH_CONTQ',
 
557
    'socket came up! start checking protocol version; content_q waiting',
 
558
    with_q='CONTQ',
 
559
    SYS_PROTOCOL_VERSION_ERROR='BAD_VERSION',
 
560
    SYS_PROTOCOL_VERSION_OK='START_AUTHENTICATING_WITH_CONTQ',
 
561
    SYS_META_QUEUE_WAITING='CONNECTED_WITH_BOTHQ',
 
562
    SYS_CONTENT_QUEUE_WAITING='CONNECTED_WITH_CONTQ',
 
563
    enter=lambda m: m.check_version(),
 
564
    )
 
565
 
 
566
START_CONNECTED_WITH_BOTHQ = NonActiveConnectedSDState(
 
567
    'START_CONNECTED_WITH_BOTHQ',
 
568
    'socket came up! start checking protocol version both _q\'s waiting',
 
569
    with_q='BOTHQ',
 
570
    SYS_PROTOCOL_VERSION_ERROR='BAD_VERSION',
 
571
    SYS_PROTOCOL_VERSION_OK='START_AUTHENTICATING_WITH_BOTHQ',
 
572
    SYS_CONTENT_QUEUE_WAITING='CONNECTED_WITH_BOTHQ',
 
573
    enter=lambda m: m.check_version(),
 
574
    )
 
575
 
 
576
CONNECTED = NonActiveConnectedSDState(
 
577
    'CONNECTED',
 
578
    'socket came up! checking protocol version',
 
579
    SYS_PROTOCOL_VERSION_ERROR='BAD_VERSION',
 
580
    SYS_PROTOCOL_VERSION_OK='START_AUTHENTICATING',
 
581
    SYS_META_QUEUE_WAITING='CONNECTED_WITH_METAQ',
 
582
    SYS_CONTENT_QUEUE_WAITING='CONNECTED_WITH_CONTQ',
 
583
    )
 
584
 
 
585
CONNECTED_WITH_METAQ = NonActiveConnectedSDState(
 
586
    'CONNECTED_WITH_METAQ',
 
587
    'socket came up! checking protocol version; meta_q waiting',
 
588
    with_q='METAQ',
 
589
    SYS_PROTOCOL_VERSION_ERROR='BAD_VERSION',
 
590
    SYS_PROTOCOL_VERSION_OK='START_AUTHENTICATING_WITH_METAQ',
 
591
    SYS_CONTENT_QUEUE_WAITING='CONNECTED_WITH_BOTHQ',
 
592
    )
 
593
 
 
594
CONNECTED_WITH_CONTQ = NonActiveConnectedSDState(
 
595
    'CONNECTED_WITH_CONTQ',
 
596
    'socket came up! checking protocol version; content_q waiting',
 
597
    with_q='CONTQ',
 
598
    SYS_PROTOCOL_VERSION_ERROR='BAD_VERSION',
 
599
    SYS_PROTOCOL_VERSION_OK='START_AUTHENTICATING_WITH_CONTQ',
 
600
    SYS_META_QUEUE_WAITING='CONNECTED_WITH_BOTHQ',
 
601
    SYS_CONTENT_QUEUE_WAITING='CONNECTED_WITH_CONTQ',
 
602
    )
 
603
 
 
604
CONNECTED_WITH_BOTHQ = NonActiveConnectedSDState(
 
605
    'CONNECTED_WITH_BOTHQ',
 
606
    'socket came up! checking protocol version both _q\'s waiting',
 
607
    with_q='BOTHQ',
 
608
    SYS_PROTOCOL_VERSION_ERROR='BAD_VERSION',
 
609
    SYS_PROTOCOL_VERSION_OK='START_AUTHENTICATING_WITH_BOTHQ',
 
610
    SYS_CONTENT_QUEUE_WAITING='CONNECTED_WITH_BOTHQ',
 
611
    )
 
612
 
 
613
BAD_VERSION = AQErrorState(
 
614
    'BAD_VERSION',
 
615
    'Protocol version mismatch. You probably need to upgrade',
 
616
    )
 
617
 
 
618
START_AUTHENTICATING = NonActiveConnectedSDState(
 
619
    'START_AUTHENTICATING',
 
620
    'Start doing the OAuth dance',
 
621
    SYS_OAUTH_OK='SCANNING_START',
 
622
    SYS_OAUTH_ERROR='AUTH_FAILED',
 
623
    SYS_META_QUEUE_WAITING='AUTHENTICATING_WITH_METAQ',
 
624
    SYS_CONTENT_QUEUE_WAITING='AUTHENTICATING_WITH_CONTQ',
 
625
    enter=lambda m: m.authenticate(),
 
626
    )
 
627
 
 
628
START_AUTHENTICATING_WITH_METAQ = NonActiveConnectedSDState(
 
629
    'START_AUTHENTICATING_WITH_METAQ',
 
630
    'Start doing the OAuth dance; meta_q waiting',
 
631
    with_q='METAQ',
 
632
    SYS_OAUTH_OK='SCANNING_START_WITH_METAQ',
 
633
    SYS_OAUTH_ERROR='AUTH_FAILED',
 
634
    SYS_CONTENT_QUEUE_WAITING='AUTHENTICATING_WITH_BOTHQ',
 
635
    enter=lambda m: m.authenticate(),
 
636
    )
 
637
 
 
638
START_AUTHENTICATING_WITH_CONTQ = NonActiveConnectedSDState(
 
639
    'START_AUTHENTICATING_WITH_CONTQ',
 
640
    'Start doing the OAuth dance; content_q waiting',
 
641
    with_q='CONTQ',
 
642
    SYS_OAUTH_OK='SCANNING_START_WITH_CONTQ',
 
643
    SYS_OAUTH_ERROR='AUTH_FAILED',
 
644
    SYS_META_QUEUE_WAITING='AUTHENTICATING_WITH_BOTHQ',
 
645
    SYS_CONTENT_QUEUE_WAITING='AUTHENTICATING_WITH_CONTQ',
 
646
    enter=lambda m: m.authenticate(),
 
647
    )
 
648
 
 
649
START_AUTHENTICATING_WITH_BOTHQ = NonActiveConnectedSDState(
 
650
    'START_AUTHENTICATING_WITH_BOTHQ',
 
651
    'Start doing the OAuth dance; both _q\'s waiting',
 
652
    with_q='CONTQ',
 
653
    SYS_OAUTH_OK='SCANNING_START_WITH_BOTHQ',
 
654
    SYS_OAUTH_ERROR='AUTH_FAILED',
 
655
    SYS_CONTENT_QUEUE_WAITING='AUTHENTICATING_WITH_BOTHQ',
 
656
    enter=lambda m: m.authenticate(),
 
657
    )
 
658
 
 
659
AUTHENTICATING = NonActiveConnectedSDState(
 
660
    'AUTHENTICATING',
 
661
    'Doing the OAuth dance',
 
662
    SYS_OAUTH_OK='SCANNING_START',
 
663
    SYS_OAUTH_ERROR='AUTH_FAILED',
 
664
    SYS_META_QUEUE_WAITING='AUTHENTICATING_WITH_METAQ',
 
665
    SYS_CONTENT_QUEUE_WAITING='AUTHENTICATING_WITH_CONTQ',
 
666
    )
 
667
 
 
668
AUTHENTICATING_WITH_METAQ = NonActiveConnectedSDState(
 
669
    'AUTHENTICATING_WITH_METAQ',
 
670
    'Doing the OAuth dance; meta_q waiting',
 
671
    with_q='METAQ',
 
672
    SYS_OAUTH_OK='SCANNING_START_WITH_METAQ',
 
673
    SYS_OAUTH_ERROR='AUTH_FAILED',
 
674
    SYS_CONTENT_QUEUE_WAITING='AUTHENTICATING_WITH_BOTHQ',
 
675
    )
 
676
 
 
677
AUTHENTICATING_WITH_CONTQ = NonActiveConnectedSDState(
 
678
    'AUTHENTICATING_WITH_CONTQ',
 
679
    'Doing the OAuth dance; content_q waiting',
 
680
    with_q='CONTQ',
 
681
    SYS_OAUTH_OK='SCANNING_START_WITH_CONTQ',
 
682
    SYS_OAUTH_ERROR='AUTH_FAILED',
 
683
    SYS_META_QUEUE_WAITING='AUTHENTICATING_WITH_BOTHQ',
 
684
    SYS_CONTENT_QUEUE_WAITING='AUTHENTICATING_WITH_CONTQ',
 
685
    )
 
686
 
 
687
AUTHENTICATING_WITH_BOTHQ = NonActiveConnectedSDState(
 
688
    'AUTHENTICATING_WITH_BOTHQ',
 
689
    'Doing the OAuth dance; both _q\'s waiting',
 
690
    with_q='CONTQ',
 
691
    SYS_OAUTH_OK='SCANNING_START_WITH_BOTHQ',
 
692
    SYS_OAUTH_ERROR='AUTH_FAILED',
 
693
    SYS_CONTENT_QUEUE_WAITING='AUTHENTICATING_WITH_BOTHQ',
 
694
    )
 
695
 
 
696
AUTH_FAILED = AQErrorState(
 
697
    'AUTH_FAILED',
 
698
    'OAuth failed')
 
699
 
 
700
UNKNOWN_ERROR = AQErrorState(
 
701
    'UNKNOWN_ERROR',
 
702
    "Some kind of strange error happened and I can't continue")
 
703
 
 
704
SCANNING_START = NonActiveConnectedSDState(
 
705
    'SCANNING_START',
 
706
    'start doing server rescan',
 
707
    SYS_SERVER_RESCAN_STARTING='SCANNING',
 
708
    SYS_META_QUEUE_WAITING='SCANNING_WITH_METAQ',
 
709
    SYS_CONTENT_QUEUE_WAITING='SCANNING_WITH_CONTQ',
 
710
    enter=lambda m: m.server_rescan(),
 
711
    )
 
712
 
 
713
SCANNING_START_WITH_METAQ = NonActiveConnectedSDState(
 
714
    'SCANNING_START_WITH_METAQ',
 
715
    'start doing server rescan, meta queue is waiting',
 
716
    with_q='METAQ',
 
717
    SYS_SERVER_RESCAN_STARTING='SCANNING_WITH_METAQ',
 
718
    SYS_META_QUEUE_WAITING='SCANNING_WITH_METAQ',
 
719
    enter=lambda m: m.server_rescan(),
 
720
    )
 
721
 
 
722
SCANNING_START_WITH_CONTQ = NonActiveConnectedSDState(
 
723
    'SCANNING_START_WITH_CONTQ',
 
724
    'start doing server rescan, content queue waiting',
 
725
    with_q='CONTQ',
 
726
    SYS_SERVER_RESCAN_STARTING='SCANNING_WITH_CONTQ',
 
727
    SYS_META_QUEUE_WAITING='SCANNING_WITH_BOTHQ',
 
728
    SYS_CONTENT_QUEUE_WAITING='SCANNING_WITH_CONTQ',
 
729
    enter=lambda m: m.server_rescan(),
 
730
    )
 
731
 
 
732
SCANNING_START_WITH_BOTHQ = NonActiveConnectedSDState(
 
733
    'SCANNING_START_WITH_BOTHQ',
 
734
    'start doing server rescan, both request queues waiting',
 
735
    with_q='CONTQ',
 
736
    SYS_SERVER_RESCAN_STARTING='SCANNING_WITH_BOTHQ',
 
737
    SYS_CONTENT_QUEUE_WAITING='SCANNING_WITH_BOTHQ',
 
738
    enter=lambda m: m.server_rescan(),
 
739
    )
 
740
 
 
741
SCANNING = NonActiveConnectedSDState(
 
742
    'SCANNING',
 
743
    'doing server rescan',
 
744
    SYS_SERVER_RESCAN_DONE='IDLE',
 
745
    SYS_SERVER_RESCAN_STARTING='SCANNING',
 
746
    SYS_META_QUEUE_WAITING='SCANNING_WITH_METAQ',
 
747
    SYS_CONTENT_QUEUE_WAITING='SCANNING_WITH_CONTQ',
 
748
    )
 
749
 
 
750
SCANNING_WITH_METAQ = NonActiveConnectedSDState(
 
751
    'SCANNING_WITH_METAQ',
 
752
    'doing server rescan, meta queue is waiting',
 
753
    with_q='METAQ',
 
754
    SYS_SERVER_RESCAN_DONE='START_WORKING_ON_METADATA',
 
755
    SYS_SERVER_RESCAN_STARTING='SCANNING_WITH_METAQ',
 
756
    SYS_CONTENT_QUEUE_WAITING='SCANNING_WITH_BOTHQ',
 
757
    )
 
758
 
 
759
SCANNING_WITH_CONTQ = NonActiveConnectedSDState(
 
760
    'SCANNING_WITH_CONTQ',
 
761
    'doing server rescan, content queue waiting',
 
762
    with_q='CONTQ',
 
763
    SYS_SERVER_RESCAN_DONE='START_WORKING_ON_CONTENT',
 
764
    SYS_SERVER_RESCAN_STARTING='SCANNING_WITH_CONTQ',
 
765
    SYS_META_QUEUE_WAITING='SCANNING_WITH_BOTHQ',
 
766
    SYS_CONTENT_QUEUE_WAITING='SCANNING_WITH_CONTQ',
 
767
    )
 
768
 
 
769
SCANNING_WITH_BOTHQ = NonActiveConnectedSDState(
 
770
    'SCANNING_WITH_BOTHQ',
 
771
    'doing server rescan, both request queues waiting',
 
772
    with_q='CONTQ',
 
773
    SYS_SERVER_RESCAN_DONE='START_WORKING_ON_METADATA_WITH_CONTENT_WAITING',
 
774
    SYS_SERVER_RESCAN_STARTING='SCANNING_WITH_BOTHQ',
 
775
    SYS_CONTENT_QUEUE_WAITING='SCANNING_WITH_BOTHQ',
 
776
    )
 
777
 
 
778
IDLE = NonActiveConnectedSDState(
 
779
    'IDLE',
 
780
    'nothing on the wire right now',
 
781
    is_online=True,
 
782
    SYS_META_QUEUE_WAITING='START_WORKING_ON_METADATA',
 
783
    SYS_CONTENT_QUEUE_WAITING='START_WORKING_ON_CONTENT',
 
784
    )
 
785
 
 
786
START_WORKING_ON_METADATA = WorkingSDState(
 
787
    'START_WORKING_ON_METADATA',
 
788
    'start working on metadata',
 
789
    SYS_META_QUEUE_WAITING='WORKING_ON_METADATA',
 
790
    SYS_META_QUEUE_DONE='IDLE',
 
791
    SYS_CONTENT_QUEUE_WAITING='WORKING_ON_METADATA_WITH_CONTENT_WAITING',
 
792
    enter=lambda m: m.action_q.meta_queue.run(),
 
793
    )
 
794
 
 
795
WORKING_ON_METADATA = WorkingSDState(
 
796
    'WORKING_ON_METADATA',
 
797
    'working on metadata',
 
798
    SYS_META_QUEUE_WAITING='WORKING_ON_METADATA',
 
799
    SYS_META_QUEUE_DONE='IDLE',
 
800
    SYS_CONTENT_QUEUE_WAITING='WORKING_ON_METADATA_WITH_CONTENT_WAITING',
 
801
    )
 
802
 
 
803
START_WORKING_ON_CONTENT = WorkingSDState(
 
804
    'START_WORKING_ON_CONTENT',
 
805
    'start working on content',
 
806
    SYS_META_QUEUE_WAITING='START_WORKING_ON_BOTH',
 
807
    SYS_CONTENT_QUEUE_WAITING='WORKING_ON_CONTENT',
 
808
    SYS_CONTENT_QUEUE_DONE='IDLE',
 
809
    enter=lambda m: m.action_q.content_queue.run(),
 
810
    )
 
811
 
 
812
WORKING_ON_CONTENT = WorkingSDState(
 
813
    'WORKING_ON_CONTENT',
 
814
    'working on content',
 
815
    SYS_META_QUEUE_WAITING='START_WORKING_ON_BOTH',
 
816
    SYS_CONTENT_QUEUE_WAITING='WORKING_ON_CONTENT',
 
817
    SYS_CONTENT_QUEUE_DONE='IDLE',
 
818
    )
 
819
 
 
820
START_WORKING_ON_METADATA_WITH_CONTENT_WAITING = WorkingSDState(
 
821
    'START_WORKING_ON_METADATA_WITH_CONTENT_WAITING',
 
822
    'start working on metadata; content work is waiting also',
 
823
    SYS_META_QUEUE_WAITING='WORKING_ON_METADATA_WITH_CONTENT_WAITING',
 
824
    SYS_META_QUEUE_DONE='START_WORKING_ON_CONTENT',
 
825
    SYS_CONTENT_QUEUE_WAITING='WORKING_ON_METADATA_WITH_CONTENT_WAITING',
 
826
    enter=lambda m: m.action_q.meta_queue.run(),
 
827
    )
 
828
 
 
829
WORKING_ON_METADATA_WITH_CONTENT_WAITING = WorkingSDState(
 
830
    'WORKING_ON_METADATA_WITH_CONTENT_WAITING',
 
831
    'working on metadata; content work is waiting',
 
832
    SYS_META_QUEUE_WAITING='WORKING_ON_METADATA_WITH_CONTENT_WAITING',
 
833
    SYS_META_QUEUE_DONE='START_WORKING_ON_CONTENT',
 
834
    SYS_CONTENT_QUEUE_WAITING='WORKING_ON_METADATA_WITH_CONTENT_WAITING',
 
835
    )
 
836
 
 
837
START_WORKING_ON_BOTH = WorkingSDState(
 
838
    'START_WORKING_ON_BOTH',
 
839
    'start working on both content and metadata',
 
840
    SYS_META_QUEUE_WAITING='WORKING_ON_BOTH',
 
841
    SYS_META_QUEUE_DONE='WORKING_ON_CONTENT',
 
842
    SYS_CONTENT_QUEUE_WAITING='WORKING_ON_BOTH',
 
843
    SYS_CONTENT_QUEUE_DONE='WORKING_ON_METADATA',
 
844
    enter=lambda m: m.action_q.meta_queue.run(),
 
845
    )
 
846
 
 
847
WORKING_ON_BOTH = WorkingSDState(
 
848
    'WORKING_ON_BOTH',
 
849
    'working on both content and metadata',
 
850
    SYS_META_QUEUE_WAITING='WORKING_ON_BOTH',
 
851
    SYS_META_QUEUE_DONE='WORKING_ON_CONTENT',
 
852
    SYS_CONTENT_QUEUE_WAITING='WORKING_ON_BOTH',
 
853
    SYS_CONTENT_QUEUE_DONE='WORKING_ON_METADATA',
 
854
    )
 
855
 
 
856
CLEANUP = SyncDaemonState(
 
857
    'CLEANUP',
 
858
    'doing cleanup (net down, user asked for shutdown)',
 
859
    'CLEANUP_WITH_NETWORK', 'CLEANUP_WAITING',
 
860
    'CLEANUP', 'CLEANUP', 'CLEANUP',
 
861
    SYS_CLEANUP_STARTED='CLEANUP',
 
862
    SYS_CLEANUP_FINISHED='READY_FOR_NETWORK',
 
863
    SYS_META_QUEUE_WAITING='CLEANUP_WITH_METAQ',
 
864
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WITH_CONTQ',
 
865
    SYS_META_QUEUE_DONE='CLEANUP', # cancelling meta_q.head can do this
 
866
    SYS_CONTENT_QUEUE_DONE='CLEANUP', # ditto
 
867
    )
 
868
 
 
869
CLEANUP_WITH_METAQ = SyncDaemonState(
 
870
    'CLEANUP_WITH_METAQ',
 
871
    'doing cleanup (net down, user asked for shutdown, meta_q waiting)',
 
872
    'CLEANUP_WITH_NETWORK_WITH_METAQ', 'CLEANUP_WAITING_WITH_METAQ',
 
873
    'CLEANUP_WITH_METAQ', 'CLEANUP_WITH_METAQ', 'CLEANUP_WITH_METAQ',
 
874
    SYS_CLEANUP_STARTED='CLEANUP_WITH_METAQ',
 
875
    SYS_CLEANUP_FINISHED='READY_FOR_NETWORK_WITH_METAQ',
 
876
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WITH_BOTHQ',
 
877
    SYS_CONTENT_QUEUE_DONE='CLEANUP_WITH_METAQ',
 
878
    )
 
879
 
 
880
CLEANUP_WITH_CONTQ = SyncDaemonState(
 
881
    'CLEANUP_WITH_CONTQ',
 
882
    'doing cleanup (net down, user asked for shutdown, content_q waiting)',
 
883
    'CLEANUP_WITH_NETWORK_WITH_CONTQ', 'CLEANUP_WAITING_WITH_CONTQ',
 
884
    'CLEANUP_WITH_CONTQ', 'CLEANUP_WITH_CONTQ', 'CLEANUP_WITH_CONTQ',
 
885
    SYS_CLEANUP_STARTED='CLEANUP_WITH_CONTQ',
 
886
    SYS_CLEANUP_FINISHED='READY_FOR_NETWORK_WITH_CONTQ',
 
887
    SYS_META_QUEUE_WAITING='CLEANUP_WITH_BOTHQ',
 
888
    SYS_META_QUEUE_DONE='CLEANUP_WITH_CONTQ',
 
889
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WITH_CONTQ',
 
890
    )
 
891
 
 
892
CLEANUP_WITH_BOTHQ = SyncDaemonState(
 
893
    'CLEANUP_WITH_BOTHQ',
 
894
    'doing cleanup (net down, user asked for shutdown, both _q\'s waiting)',
 
895
    'CLEANUP_WITH_NETWORK_WITH_BOTHQ', 'CLEANUP_WAITING_WITH_BOTHQ',
 
896
    'CLEANUP_WITH_BOTHQ', 'CLEANUP_WITH_BOTHQ', 'CLEANUP_WITH_BOTHQ',
 
897
    SYS_CLEANUP_STARTED='CLEANUP_WITH_BOTHQ',
 
898
    SYS_CLEANUP_FINISHED='READY_FOR_NETWORK_WITH_BOTHQ',
 
899
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WITH_BOTHQ',
 
900
    )
 
901
 
 
902
START_CLEANUP_WAITING = SyncDaemonState(
 
903
    'START_CLEANUP_WAITING',
 
904
    'start doing cleanup (network dropped)',
 
905
    'CLEANUP_WAITING_WITH_NETWORK', 'CLEANUP_WAITING',
 
906
    'CLEANUP_WAITING', 'CLEANUP', 'CLEANUP_WAITING',
 
907
    SYS_CLEANUP_STARTED='CLEANUP_WAITING',
 
908
    SYS_META_QUEUE_WAITING='CLEANUP_WAITING_WITH_METAQ',
 
909
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WAITING_WITH_CONTQ',
 
910
    SYS_META_QUEUE_DONE='CLEANUP_WAITING',
 
911
    SYS_CONTENT_QUEUE_DONE='CLEANUP_WAITING',
 
912
    enter=lambda m: m.action_q.cleanup(),
 
913
    )
 
914
 
 
915
CLEANUP_WAITING = SyncDaemonState(
 
916
    'CLEANUP_WAITING',
 
917
    'doing cleanup (network dropped)',
 
918
    'CLEANUP_WAITING_WITH_NETWORK', 'CLEANUP_WAITING',
 
919
    'CLEANUP_WAITING', 'CLEANUP', 'CLEANUP_WAITING',
 
920
    SYS_CLEANUP_STARTED='CLEANUP_WAITING',
 
921
    SYS_CLEANUP_FINISHED='READY_WAITING',
 
922
    SYS_META_QUEUE_WAITING='CLEANUP_WAITING_WITH_METAQ',
 
923
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WAITING_WITH_CONTQ',
 
924
    SYS_META_QUEUE_DONE='CLEANUP_WAITING',
 
925
    SYS_CONTENT_QUEUE_DONE='CLEANUP_WAITING',
 
926
    )
 
927
 
 
928
CLEANUP_WAITING_WITH_METAQ = SyncDaemonState(
 
929
    'CLEANUP_WAITING_WITH_METAQ',
 
930
    'doing cleanup (network dropped, meta_q waiting)',
 
931
    'CLEANUP_WAITING_WITH_NETWORK_WITH_METAQ', 'CLEANUP_WAITING_WITH_METAQ',
 
932
    'CLEANUP_WAITING_WITH_METAQ', 'CLEANUP_WITH_METAQ',
 
933
    'CLEANUP_WAITING_WITH_METAQ',
 
934
    SYS_CLEANUP_STARTED='CLEANUP_WAITING_WITH_METAQ',
 
935
    SYS_CLEANUP_FINISHED='READY_WAITING_WITH_METAQ',
 
936
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WAITING_WITH_BOTHQ',
 
937
    SYS_CONTENT_QUEUE_DONE='CLEANUP_WAITING_WITH_METAQ',
 
938
    )
 
939
 
 
940
CLEANUP_WAITING_WITH_CONTQ = SyncDaemonState(
 
941
    'CLEANUP_WAITING_WITH_CONTQ',
 
942
    'doing cleanup (network dropped, content_q waiting)',
 
943
    'CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ', 'CLEANUP_WAITING_WITH_CONTQ',
 
944
    'CLEANUP_WAITING_WITH_CONTQ', 'CLEANUP_WITH_CONTQ',
 
945
    'CLEANUP_WAITING_WITH_CONTQ',
 
946
    SYS_CLEANUP_STARTED='CLEANUP_WAITING_WITH_CONTQ',
 
947
    SYS_CLEANUP_FINISHED='READY_WAITING_WITH_CONTQ',
 
948
    SYS_META_QUEUE_WAITING='CLEANUP_WAITING_WITH_BOTHQ',
 
949
    SYS_META_QUEUE_DONE='CLEANUP_WAITING_WITH_CONTQ',
 
950
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WAITING_WITH_CONTQ',
 
951
    )
 
952
 
 
953
CLEANUP_WAITING_WITH_BOTHQ = SyncDaemonState(
 
954
    'CLEANUP_WAITING_WITH_BOTHQ',
 
955
    'doing cleanup (network dropped, both _q\'s waiting)',
 
956
    'CLEANUP_WAITING_WITH_NETWORK_WITH_BOTHQ', 'CLEANUP_WAITING_WITH_BOTHQ',
 
957
    'CLEANUP_WAITING_WITH_BOTHQ', 'CLEANUP_WITH_BOTHQ',
 
958
    'CLEANUP_WAITING_WITH_BOTHQ',
 
959
    SYS_CLEANUP_STARTED='CLEANUP_WAITING_WITH_BOTHQ',
 
960
    SYS_CLEANUP_FINISHED='READY_WAITING_WITH_BOTHQ',
 
961
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WAITING_WITH_BOTHQ',
 
962
    )
 
963
 
 
964
CLEANUP_WITH_NETWORK = SyncDaemonState(
 
965
    'CLEANUP_WITH_NETWORK',
 
966
    'doing cleanup (net hiccup; user asked for shutdown)',
 
967
    'CLEANUP_WITH_NETWORK', 'CLEANUP_WAITING_WITH_NETWORK',
 
968
    'CLEANUP', 'CLEANUP_WITH_NETWORK', 'CLEANUP_WITH_NETWORK',
 
969
    SYS_CLEANUP_STARTED='CLEANUP_WITH_NETWORK',
 
970
    SYS_CLEANUP_FINISHED='READY_WITH_NETWORK',
 
971
    SYS_META_QUEUE_WAITING='CLEANUP_WITH_NETWORK_WITH_METAQ',
 
972
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WITH_NETWORK_WITH_CONTQ',
 
973
    SYS_META_QUEUE_DONE='CLEANUP_WITH_NETWORK',
 
974
    SYS_CONTENT_QUEUE_DONE='CLEANUP_WITH_NETWORK',
 
975
    )
 
976
 
 
977
CLEANUP_WITH_NETWORK_WITH_METAQ = SyncDaemonState(
 
978
    'CLEANUP_WITH_NETWORK_WITH_METAQ',
 
979
    'doing cleanup (net hiccup; user asked for shutdown; meta_q waiting)',
 
980
    'CLEANUP_WITH_NETWORK_WITH_METAQ',
 
981
    'CLEANUP_WAITING_WITH_NETWORK_WITH_METAQ',
 
982
    'CLEANUP_WITH_METAQ', 'CLEANUP_WITH_NETWORK_WITH_METAQ',
 
983
    'CLEANUP_WITH_NETWORK_WITH_METAQ',
 
984
    SYS_CLEANUP_STARTED='CLEANUP_WITH_NETWORK_WITH_METAQ',
 
985
    SYS_CLEANUP_FINISHED='READY_WITH_NETWORK_WITH_METAQ',
 
986
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WITH_NETWORK_WITH_BOTHQ',
 
987
    SYS_CONTENT_QUEUE_DONE='CLEANUP_WITH_NETWORK_WITH_METAQ',
 
988
    )
 
989
 
 
990
CLEANUP_WITH_NETWORK_WITH_CONTQ = SyncDaemonState(
 
991
    'CLEANUP_WITH_NETWORK_WITH_CONTQ',
 
992
    'doing cleanup (net hiccup; user asked for shutdown; content_q waiting)',
 
993
    'CLEANUP_WITH_NETWORK_WITH_CONTQ',
 
994
    'CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ',
 
995
    'CLEANUP_WITH_CONTQ', 'CLEANUP_WITH_NETWORK_WITH_CONTQ',
 
996
    'CLEANUP_WITH_NETWORK_WITH_CONTQ',
 
997
    SYS_CLEANUP_STARTED='CLEANUP_WITH_NETWORK_WITH_CONTQ',
 
998
    SYS_CLEANUP_FINISHED='READY_WITH_NETWORK_WITH_CONTQ',
 
999
    SYS_META_QUEUE_WAITING='CLEANUP_WITH_NETWORK_WITH_BOTHQ',
 
1000
    SYS_META_QUEUE_DONE='CLEANUP_WITH_NETWORK_WITH_CONTQ',
 
1001
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WITH_NETWORK_WITH_CONTQ',
 
1002
    )
 
1003
 
 
1004
CLEANUP_WITH_NETWORK_WITH_BOTHQ = SyncDaemonState(
 
1005
    'CLEANUP_WITH_NETWORK_WITH_BOTHQ',
 
1006
    'doing cleanup (net hiccup; user asked for shutdown; both _q\'s waiting)',
 
1007
    'CLEANUP_WITH_NETWORK_WITH_BOTHQ',
 
1008
    'CLEANUP_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
1009
    'CLEANUP_WITH_BOTHQ', 'CLEANUP_WITH_NETWORK_WITH_BOTHQ',
 
1010
    'CLEANUP_WITH_NETWORK_WITH_BOTHQ',
 
1011
    SYS_CLEANUP_STARTED='CLEANUP_WITH_NETWORK_WITH_BOTHQ',
 
1012
    SYS_CLEANUP_FINISHED='READY_WITH_NETWORK_WITH_BOTHQ',
 
1013
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WITH_NETWORK_WITH_BOTHQ',
 
1014
    )
 
1015
 
 
1016
CLEANUP_WAITING_WITH_NETWORK = SyncDaemonState(
 
1017
    'CLEANUP_WAITING_WITH_NETWORK',
 
1018
    'doing cleanup (network hiccup)',
 
1019
    'CLEANUP_WAITING_WITH_NETWORK', 'CLEANUP_WAITING_WITH_NETWORK',
 
1020
    'CLEANUP_WAITING', 'CLEANUP_WITH_NETWORK',
 
1021
    'CLEANUP_WAITING_WITH_NETWORK',
 
1022
    SYS_CLEANUP_STARTED='CLEANUP_WAITING_WITH_NETWORK',
 
1023
    SYS_CLEANUP_FINISHED='START_CONNECTING',
 
1024
    SYS_META_QUEUE_WAITING='CLEANUP_WAITING_WITH_NETWORK_WITH_METAQ',
 
1025
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ',
 
1026
    SYS_META_QUEUE_DONE='CLEANUP_WAITING_WITH_NETWORK',
 
1027
    SYS_CONTENT_QUEUE_DONE='CLEANUP_WAITING_WITH_NETWORK',
 
1028
    )
 
1029
 
 
1030
START_CLEANUP_WAITING_WITH_NETWORK = SyncDaemonState(
 
1031
    'CLEANUP_WAITING_WITH_NETWORK',
 
1032
    'doing cleanup (network hiccup)',
 
1033
    'CLEANUP_WAITING_WITH_NETWORK', 'CLEANUP_WAITING_WITH_NETWORK',
 
1034
    'CLEANUP_WAITING', 'CLEANUP_WITH_NETWORK', 'CLEANUP_WAITING_WITH_NETWORK',
 
1035
    SYS_CLEANUP_STARTED='CLEANUP_WAITING_WITH_NETWORK',
 
1036
    SYS_CLEANUP_FINISHED='START_CONNECTING',
 
1037
    SYS_META_QUEUE_WAITING='CLEANUP_WAITING_WITH_NETWORK_WITH_METAQ',
 
1038
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ',
 
1039
    SYS_META_QUEUE_DONE='CLEANUP_WAITING_WITH_NETWORK',
 
1040
    SYS_CONTENT_QUEUE_DONE='CLEANUP_WAITING_WITH_NETWORK',
 
1041
    enter=lambda m: m.action_q.cleanup(),
 
1042
    )
 
1043
 
 
1044
CLEANUP_WAITING_WITH_NETWORK_WITH_METAQ = SyncDaemonState(
 
1045
    'CLEANUP_WAITING_WITH_NETWORK_WITH_METAQ',
 
1046
    'doing cleanup (network hiccup; meta_q waiting)',
 
1047
    'CLEANUP_WAITING_WITH_NETWORK_WITH_METAQ',
 
1048
    'CLEANUP_WAITING_WITH_NETWORK_WITH_METAQ',
 
1049
    'CLEANUP_WAITING_WITH_METAQ', 'CLEANUP_WITH_NETWORK_WITH_METAQ',
 
1050
    'CLEANUP_WAITING_WITH_NETWORK_WITH_METAQ',
 
1051
    SYS_CLEANUP_STARTED='CLEANUP_WAITING_WITH_NETWORK_WITH_METAQ',
 
1052
    SYS_CLEANUP_FINISHED='START_CONNECTING_WITH_METAQ',
 
1053
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
1054
    SYS_CONTENT_QUEUE_DONE='CLEANUP_WAITING_WITH_NETWORK_WITH_METAQ',
 
1055
    )
 
1056
 
 
1057
CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ = SyncDaemonState(
 
1058
    'CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ',
 
1059
    'doing cleanup (network hiccup; content_q waiting)',
 
1060
    'CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ',
 
1061
    'CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ',
 
1062
    'CLEANUP_WAITING_WITH_CONTQ', 'CLEANUP_WITH_NETWORK_WITH_CONTQ',
 
1063
    'CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ',
 
1064
    SYS_CLEANUP_STARTED='CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ',
 
1065
    SYS_CLEANUP_FINISHED='START_CONNECTING_WITH_CONTQ',
 
1066
    SYS_META_QUEUE_WAITING='CLEANUP_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
1067
    SYS_META_QUEUE_DONE='CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ',
 
1068
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WAITING_WITH_NETWORK_WITH_CONTQ',
 
1069
    )
 
1070
 
 
1071
CLEANUP_WAITING_WITH_NETWORK_WITH_BOTHQ = SyncDaemonState(
 
1072
    'CLEANUP_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
1073
    'doing cleanup (network hiccup; both _q\'s waiting)',
 
1074
    'CLEANUP_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
1075
    'CLEANUP_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
1076
    'CLEANUP_WAITING_WITH_BOTHQ', 'CLEANUP_WITH_NETWORK_WITH_BOTHQ',
 
1077
    'CLEANUP_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
1078
    SYS_CLEANUP_STARTED='CLEANUP_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
1079
    SYS_CLEANUP_FINISHED='START_CONNECTING_WITH_BOTHQ',
 
1080
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WAITING_WITH_NETWORK_WITH_BOTHQ',
 
1081
    )
 
1082
 
 
1083
 
 
1084
 
 
1085
# XXX CONNECTED_CLEANUP should use the network to do a "better" cleanup
 
1086
START_CONNECTED_CLEANUP = SyncDaemonState(
 
1087
    'START_CONNECTED_CLEANUP',
 
1088
    'start doing cleanup using the network'
 
1089
        ' (not yet implemented; actually starts a plain cleanup)',
 
1090
    'CLEANUP_WITH_NETWORK', 'CLEANUP_WAITING_WITH_NETWORK',
 
1091
    'CLEANUP', 'CLEANUP_WITH_NETWORK', 'CLEANUP_WITH_NETWORK',
 
1092
    SYS_CLEANUP_STARTED='CLEANUP_WITH_NETWORK',
 
1093
    SYS_CLEANUP_FINISHED='READY_WITH_NETWORK',
 
1094
    SYS_META_QUEUE_WAITING='CLEANUP_WITH_NETWORK_WITH_METAQ',
 
1095
    SYS_CONTENT_QUEUE_WAITING='CLEANUP_WITH_NETWORK_WITH_CONTQ',
 
1096
    SYS_META_QUEUE_DONE='CLEANUP_WITH_NETWORK',
 
1097
    SYS_CONTENT_QUEUE_DONE='CLEANUP_WITH_NETWORK',
 
1098
    enter=lambda m: m.action_q.cleanup(),
 
1099
    )