/usr/lib/python3/dist-packages/axolotl/state/sessionrecord.py is in python3-axolotl 0.1.39-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | # -*- coding: utf-8 -*-
from . import storageprotos_pb2 as storageprotos
from .sessionstate import SessionState
class SessionRecord:
ARCHIVED_STATES_MAX_LENGTH = 40
def __init__(self, sessionState=None, serialized=None):
"""
:type sessionState: SessionState
:type serialized: str
"""
self.previousStates = []
if sessionState:
self.sessionState = sessionState
self.fresh = False
elif serialized:
record = storageprotos.RecordStructure()
record.ParseFromString(serialized)
self.sessionState = SessionState(record.currentSession)
self.fresh = False
for previousStructure in record.previousSessions:
self.previousStates.append(SessionState(previousStructure))
else:
self.fresh = True
self.sessionState = SessionState()
def hasSessionState(self, version, aliceBaseKey):
if self.sessionState.getSessionVersion() == version and aliceBaseKey == self.sessionState.getAliceBaseKey():
return True
for state in self.previousStates:
if state.getSessionVersion() == version and aliceBaseKey == state.getAliceBaseKey():
return True
return False
def getSessionState(self):
return self.sessionState
def getPreviousSessionStates(self):
return self.previousStates
def isFresh(self):
return self.fresh
def archiveCurrentState(self):
self.promoteState(SessionState())
def promoteState(self, promotedState):
self.previousStates.insert(0, self.sessionState)
self.sessionState = promotedState
if len(self.previousStates) > self.__class__.ARCHIVED_STATES_MAX_LENGTH:
self.previousStates.pop()
def setState(self, sessionState):
self.sessionState = sessionState
def serialize(self):
previousStructures = [previousState.getStructure() for previousState in self.previousStates]
record = storageprotos.RecordStructure()
record.currentSession.MergeFrom(self.sessionState.getStructure())
record.previousSessions.extend(previousStructures)
return record.SerializeToString()
|