Source code for cs143sim.events

"""This module contains all event definitions.

.. autosummary::

    FlowStart
    LinkAvailable
    PacketReceipt
    PacketTimeOut
    RoutingTableOutdated
    VegasTimeOut

.. moduleauthor:: Jan Van Bruggen <jancvanbruggen@gmail.com>
.. moduleauthor:: Junlin Zhang <jancvanbruggen@gmail.com>
"""
from simpy.events import Timeout


[docs]class FlowStart(Timeout): """A :class:`~cs143sim.actors.Flow` begins generating packets :param env: SimPy simulation :class:`~simpy.core.Environment` :param float delay: time until :class:`~cs143sim.actors.Flow` starts :param flow: :class:`~cs143sim.actors.Flow` that starts """ def __init__(self, env, delay, flow): super(FlowStart, self).__init__(env=env, delay=delay) self.callbacks.append(flow.react_to_flow_start)
[docs]class LinkAvailable(Timeout): """A :class:`~cs143sim.actors.Router` finishes sending a :class:`~cs143sim.actors.Packet` on :class:`~cs143sim.actors.Link` :param env: SimPy simulation :class:`~simpy.core.Environment` :param float delay: time until :class:`~cs143sim.actors.Router` finishes :param link: :class:`~cs143sim.actors.Link` on which a :class:`~cs143sim.actors.Packet` was sent """ def __init__(self, env, delay, link): super(LinkAvailable, self).__init__(env=env, delay=delay) self.callbacks.append(link.react_to_link_available)
[docs]class PacketReceipt(Timeout): """A :class:`~cs143sim.actors.Host` or a :class:`~cs143sim.actors.Router` receives a :class:`~cs143sim.actors.Packet` on a :class:`~cs143sim.actors.Link` :param env: SimPy simulation :class:`~simpy.core.Environment` :param float delay: time until Packet begins to arrive at Router (in ms) :param receiver: :class:`~cs143sim.actors.Host` or :class:`~cs143sim.actors.Router` that receives `packet` :param packet: :class:`~cs143sim.actors.Packet` that arrives """ def __init__(self, env, delay, receiver, packet): super(PacketReceipt, self).__init__(env=env, delay=delay, value=packet) self.callbacks.append(receiver.react_to_packet_receipt)
[docs]class PacketTimeOut(Timeout): """A TLA Check if a packet time out happens :param env: SimPy simulation :class:`~simpy.core.Environment` :param float delay: time until packet timeout. :param actor: the responsing TLA """ def __init__(self, env, delay, actor, expected_time): super(PacketTimeOut, self).__init__(env, delay, value=expected_time) self.callbacks.append(actor.react_to_time_out)
[docs]class RoutingTableOutdated(Timeout): """A :class:`~cs143sim.actors.Router` updates its routing table :param env: SimPy simulation :class:`~simpy.core.Environment` :param float delay: time until :class:`~cs143sim.actors.Router` updates :param router: :class:`~cs143sim.actors.Router` that updates """ def __init__(self, env, delay, router): super(RoutingTableOutdated, self).__init__(env=env, delay=delay) self.callbacks.append(router.react_to_routing_table_outdated)
[docs]class VegasTimeOut(Timeout): """A TCP Vegas updates its window size :param env: SimPy simulation :class:`~simpy.core.Environment` :param float delay: time until updating. :param actor: the responsing TCP Vegas """ def __init__(self, env, delay, actor): super(VegasTimeOut, self).__init__(env, delay) self.callbacks.append(actor.react_to_vegas_time_out)