diff options
| author | Ivan Alejandro <ivanalejandro0@gmail.com> | 2013-09-20 17:28:25 -0300 | 
|---|---|---|
| committer | Ivan Alejandro <ivanalejandro0@gmail.com> | 2013-09-20 17:28:25 -0300 | 
| commit | 1f0f8efc4cb985c082b3b8fe7b3dc45aed047a47 (patch) | |
| tree | 8d96c7a374c91699c55fb8c5b609aac222a94e74 /src/leap/bitmask/services/connections.py | |
| parent | 9568093138c85212e15d50ade5d5fc7dcec9ff6e (diff) | |
| parent | 222ce2a1513a3776b3277ded365672d7d43ad2e4 (diff) | |
Merge branch 'release-0.3.3'
Conflicts:
	pkg/requirements.pip
	setup.py
	src/leap/bitmask/config/leapsettings.py
Diffstat (limited to 'src/leap/bitmask/services/connections.py')
| -rw-r--r-- | src/leap/bitmask/services/connections.py | 125 | 
1 files changed, 125 insertions, 0 deletions
diff --git a/src/leap/bitmask/services/connections.py b/src/leap/bitmask/services/connections.py new file mode 100644 index 00000000..f3ab9e8e --- /dev/null +++ b/src/leap/bitmask/services/connections.py @@ -0,0 +1,125 @@ +# -*- coding: utf-8 -*- +# connections.py +# Copyright (C) 2013 LEAP +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program.  If not, see <http://www.gnu.org/licenses/>. +""" +Abstract LEAP connections. +""" +# TODO use zope.interface instead +from abc import ABCMeta + +from PySide import QtCore + +from leap.common.check import leap_assert + +_tr = QtCore.QObject().tr + + +class State(object): +    """ +    Abstract state class +    """ +    __metaclass__ = ABCMeta + +    label = None +    short_label = None + +""" +The different services should declare a ServiceConnection class that +inherits from AbstractLEAPConnection, so an instance of such class +can be used to inform the StateMachineBuilder of the particularities +of the state transitions for each particular connection. + +In the future, we will extend this class to allow composites in connections, +so we can apply conditional logic to the transitions. +""" + + +class AbstractLEAPConnection(object): +    """ +    Abstract LEAP Connection class. + +    This class is likely to undergo heavy transformations +    in the coming releases, to better accomodate the use cases +    of the different connections that we use in the Bitmask +    client. +    """ +    __metaclass__ = ABCMeta + +    _connection_name = None + +    @property +    def name(self): +        """ +        Name of the connection +        """ +        con_name = self._connection_name +        leap_assert(con_name is not None) +        return con_name + +    _qtsigs = None + +    @property +    def qtsigs(self): +        """ +        Object that encapsulates the Qt Signals emitted +        by this connection. +        """ +        return self._qtsigs + +    # XXX for conditional transitions with composites, +    #     we might want to add +    #     a field with dependencies: what this connection +    #     needs for (ON) state. +    # XXX Look also at child states in the state machine. +    #depends = () + +    # Signals that derived classes +    # have to implement. + +    # Commands +    do_connect_signal = None +    do_disconnect_signal = None + +    # Intermediate stages +    connecting_signal = None +    disconnecting_signal = None + +    # Complete stages +    connected_signal = None +    disconnected_signal = None + +    # Bypass stages +    connection_died_signal = None + +    class Disconnected(State): +        """Disconnected state""" +        label = _tr("Disconnected") +        short_label = _tr("OFF") + +    class Connected(State): +        """Connected state""" +        label = _tr("Connected") +        short_label = _tr("ON") + +    class Connecting(State): +        """Connecting state""" +        label = _tr("Connecting") +        short_label = _tr("...") + +    class Disconnecting(State): +        """Disconnecting state""" +        label = _tr("Disconnecting") +        short_label = _tr("...")  | 
