diff options
author | Nathan Fritz <nathan@andyet.net> | 2010-10-13 18:15:21 -0700 |
---|---|---|
committer | Nathan Fritz <nathan@andyet.net> | 2010-10-13 18:15:21 -0700 |
commit | 7ad7a29a8f08ff815164731eec50ff1cba46b07a (patch) | |
tree | 444a2d89993072a377155d8f131899a19d18dffa /sleekxmpp/xmlstream/statemachine.py | |
parent | b0e036d03c5e850af3a3c1589af7333becf54a86 (diff) | |
download | slixmpp-7ad7a29a8f08ff815164731eec50ff1cba46b07a.tar.gz slixmpp-7ad7a29a8f08ff815164731eec50ff1cba46b07a.tar.bz2 slixmpp-7ad7a29a8f08ff815164731eec50ff1cba46b07a.tar.xz slixmpp-7ad7a29a8f08ff815164731eec50ff1cba46b07a.zip |
new state machine in place
Diffstat (limited to 'sleekxmpp/xmlstream/statemachine.py')
-rw-r--r-- | sleekxmpp/xmlstream/statemachine.py | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/sleekxmpp/xmlstream/statemachine.py b/sleekxmpp/xmlstream/statemachine.py deleted file mode 100644 index 8a1aa22d..00000000 --- a/sleekxmpp/xmlstream/statemachine.py +++ /dev/null @@ -1,59 +0,0 @@ -""" - SleekXMPP: The Sleek XMPP Library - Copyright (C) 2010 Nathanael C. Fritz - This file is part of SleekXMPP. - - See the file LICENSE for copying permission. -""" -from __future__ import with_statement -import threading - -class StateMachine(object): - - def __init__(self, states=[], groups=[]): - self.lock = threading.Lock() - self.__state = {} - self.__default_state = {} - self.__group = {} - self.addStates(states) - self.addGroups(groups) - - def addStates(self, states): - with self.lock: - for state in states: - if state in self.__state or state in self.__group: - raise IndexError("The state or group '%s' is already in the StateMachine." % state) - self.__state[state] = states[state] - self.__default_state[state] = states[state] - - def addGroups(self, groups): - with self.lock: - for gstate in groups: - if gstate in self.__state or gstate in self.__group: - raise IndexError("The key or group '%s' is already in the StateMachine." % gstate) - for state in groups[gstate]: - if state in self.__state: - raise IndexError("The group %s contains a key %s which is not set in the StateMachine." % (gstate, state)) - self.__group[gstate] = groups[gstate] - - def set(self, state, status): - with self.lock: - if state in self.__state: - self.__state[state] = bool(status) - else: - raise KeyError("StateMachine does not contain state %s." % state) - - def __getitem__(self, key): - if key in self.__group: - for state in self.__group[key]: - if not self.__state[state]: - return False - return True - return self.__state[key] - - def __getattr__(self, attr): - return self.__getitem__(attr) - - def reset(self): - self.__state = self.__default_state - |