'Change the session state.
Session starts with SESSION_NOT_AUTHED state
and then comes through
SESSION_AUTHED, SESSION_BOUND, SESSION_OPENED and SESSION_CLOSED states.'

def set_session_state(self, newstate):

    if (self._session_state < newstate):
        if ((self._session_state < SESSION_AUTHED) and (newstate >= SESSION_AUTHED)):
            self._stream_pos_queued = self._stream_pos_sent
        self._session_state = newstate
