class documentation

class Sessions(object):

View In Hierarchy

A list of the sessions that a REVEN server tracks.

The links generated e.g. by displaying a Transition in a Jupyter Notebook will send events to all the clients listening to the currently tracked sessions.

Warnings

This object is not meant to be constructed directly. Use RevenServer.sessions instead.

Method __init__ Undocumented
Method __repr__ Undocumented
Method active A generator of the sessions to which at least one client is currently connected.
Method available A generator of the sessions known to the server.
Method publish_address Send the passed address to all clients that are listening to the currently tracked sessions.
Method publish_transition Send the passed transition to all clients that are listening to the currently tracked sessions.
Method tracked.setter Undocumented
Property tracked Property: The list of the currently tracked sessions.
Method _js_publish_address Undocumented
Method _js_publish_transition Undocumented
Method _publish_address Undocumented
Method _publish_transition Undocumented
Class Variable _instances Undocumented
Instance Variable _rvn Undocumented
Instance Variable _sessions Undocumented
def __init__(self, _rvn, sessions=None):

Undocumented

def __repr__(self):

Undocumented

def active(self):

A generator of the sessions to which at least one client is currently connected.

Information

Returns
a generator of Session objects
def available(self):

A generator of the sessions known to the server.

Information

Returns
a generator of Session objects
def publish_address(self, address=None, size=None, address_name=None, address_range=None):

Send the passed address to all clients that are listening to the currently tracked sessions.

The size and addr_name values, if provided, override the name and size values of the address' formatter. The actual response of the clients to this event is client-specific. In Axion, the published address will open an hexdump widget.

Examples

>>> # Publish address LogicalAddress(0x180, reven2.arch.x64.gs) to clients
>>> reven_server.sessions.publish_address(reven2.address.LogicalAddress(0x180, reven2.arch.x64.gs))
True

Information

Parameters
addressThe reven2.address.LogicalAddress, reven2.address.LogicalAddressSegmentIndex or reven2.address.LinearAddress to send.
sizethe size of the address, this value is e.g. used in axion to customize display mode in the hexdump, if None the address's default formatter size is used.
address_nameString, is e.g. used in axion to name the hexdump, if None the address's default formatter name is used.
address_rangeThe reven2.MemoryRange to send. address and size must be None if this parameter is used.
Returns
True if there were some clients listening, False otherwise.
def publish_transition(self, transition):

Send the passed transition to all clients that are listening to the currently tracked sessions.

The actual response of the clients to this event is client-specific. In Axion, the published transition will be selected.

Examples

>>> # Publish transition #100 to clients
>>> reven_server.sessions.publish_transition(reven_server.trace.transition(100))
True

Information

Parameters
transitionThe reven2.trace.Transition to send.
Returns
True if there were some clients listening, False otherwise.
@tracked.setter
def tracked(self, sessions=None):

Undocumented

@property
tracked =

Property: The list of the currently tracked sessions.

Examples

>>> # Access the list of currently tracked sessions
>>> reven_server.sessions.tracked
[Session('default', 1)]
>>> # Only track session 'axion' going forward
>>> reven_server.sessions.tracked = 'axion'
>>> reven_server.sessions.tracked
[Session('axion', 0)]
>>> # Add back the default session
>>> reven_server.sessions.tracked.append("default")
>>> reven_server.sessions.tracked
[Session('axion', 0), Session('default', 1)]
>>> # Follow all available sessions
>>> reven_server.sessions.tracked = reven_server.sessions.available()
>>> reven_server.sessions.tracked
[Session('test', 4), Session('default', 1), Session('axion', 0)]
def _js_publish_address(self, address_data, size, name):

Undocumented

def _js_publish_transition(self, transition_id):

Undocumented

def _publish_address(self, address, size, addr_name):

Undocumented

def _publish_transition(self, transition_id):

Undocumented

_instances: _weakref.WeakValueDictionary =

Undocumented

_rvn =

Undocumented

_sessions =

Undocumented