예제 #1
0
    def __init__(self, radar, maproute):
        self.radar = radar
        self.neigh = radar.neigh
        self.maproute = maproute

        self.service = {}

        self.remotable_funcs = [self.pid_getall]
        self.events = Event(['P2P_HOOKED'])
예제 #2
0
    def __init__(self, radar, maproute):

        self.radar = radar
        self.neigh = radar.neigh
        self.maproute = maproute

        self.neigh.events.listen('NEIGH_NEW', self.etp_new_changed)
        self.neigh.events.listen('NEIGH_REM_CHGED', self.etp_new_changed)
        self.neigh.events.listen('NEIGH_DELETED', self.etp_new_dead)

        self.events = Event(['ETP_EXECUTED', 'NET_COLLISION'])

        self.remotable_funcs = [self.etp_exec]
예제 #3
0
    def __init__(self, radar, maproute, etp, coordnode, nics):
        self.radar = radar
        self.neigh = radar.neigh
        self.maproute = maproute
        self.etp = etp
        self.coordnode= coordnode
        self.nics = nics

        self.events = Event(['HOOKED'])

        etp.events.listen('ETP_EXECUTED', self.communicating_vessels)
        etp.events.listen('NET_COLLISION', self.hook)

        self.remotable_funcs = [self.communicating_vessels,
                                self.highest_free_nodes]
예제 #4
0
    def __init__(self, neigh, maproute):
        self.maproute = maproute
        self.neigh = neigh
        self.multipath = settings.MULTIPATH

        self.events = Event(['KRNL_NEIGH_NEW'])

        self.route_new = apply_wakeup_on_event(self.route_new,
                                               events=[(self.neigh.events,
                                                        'NEIGH_NEW'),
                                                       (self.events,
                                                        'KRNL_NEIGH_NEW')])

        self.maproute.events.listen('ROUTE_NEW', self.route_new)
        self.maproute.events.listen('ROUTE_DELETED', self.route_deleted)
        self.maproute.events.listen('ROUTE_REM_CHGED', self.route_rem_changed)

        self.neigh.events.listen('NEIGH_NEW', self.neigh_new)
        self.neigh.events.listen('NEIGH_DELETED', self.neigh_deleted)
        self.neigh.events.listen('NEIGH_REM_CHGED', self.neigh_rem_changed)
예제 #5
0
    def __init__(self, max_neigh=settings.MAX_NEIGH, xtimemod=xtime):
        """  max_neigh: maximum number of neighbours we can have """

        self.max_neigh = max_neigh
        # variation on neighbours' rtt greater than this will be notified
        self.rtt_variation_threshold = 0.1
        # ip_table
        self.ip_table = {}
        # Remote client instances table
        self.ntk_client = {}  # ip : rpc.TCPClient(ipstr)
        # IP => ID translation table
        self.translation_table = {}
        # IP => netid
        self.netid_table = {}
        # the events we raise
        self.events = Event(['NEIGH_NEW', 'NEIGH_DELETED', 'NEIGH_REM_CHGED'])
        # time module
        self.xtime = xtimemod

        self.remotable_funcs = [self.ip_change]
예제 #6
0
    def __init__(self, levels, gsize, dataclass, me=None):
        """Initialise the map

        If me = None, then self.me is set to a random nip (ntk ip)
        """

        self.levels = levels   # Number of levels
        self.gsize = gsize     # How many nodes are contained in a gnode
        self.dataclass = dataclass
        self.me = me        # Ourself. self.me[lvl] is the ID of our
                            # (g)node of level lvl
        # Choose a random nip
        if me is None:
            self.me = self.nip_rand()

        # The member self.node[l][i] is a node of level l and its ID is i
        self.node = [[None] * self.gsize for i in xrange(self.levels)]
        # Number of nodes of each level, that is:
        #   self.node_nb[i] = number of (g)nodes inside the gnode self.me[i+1]
        self.node_nb = [0] * self.levels

        self.events = Event(['NODE_NEW', 'NODE_DELETED', 'ME_CHANGED'])
예제 #7
0
    def __init__(self, broadcast, xtime):
        """
            broadcast: an instance of the RPCBroadcast class to manage broadcast
            sending xtime: a wrap.xtime module
        """

        self.xtime = xtime
        self.broadcast = broadcast

        # how many bouquet we have already sent
        self.bouquet_numb = 0
        # when we sent the broadcast packets
        self.bcast_send_time = 0
        # when the replies arrived
        self.bcast_arrival_time = {}
        # max_bouquet: how many packets does each bouquet contain?
        self.max_bouquet = settings.MAX_BOUQUET
        # max_wait_time: the maximum time we can wait for a reply, in seconds
        self.max_wait_time = settings.MAX_WAIT_TIME
        # max_neigh: maximum number of neighbours we can have
        self.max_neigh = settings.MAX_NEIGH
        # our neighbours
        self.neigh = Neighbour(self.max_neigh, self.xtime)

        # Send a SCAN_DONE event each time a sent bouquet has been completely
        # collected
        self.events = Event(['SCAN_DONE'])

        # Our netid. It's a random id used to detect network collisions.
        self.netid = -1

        # If set to True, this module will reply to radar queries sent by our
        # neighbours.
        self.do_reply = False

        self.remotable_funcs = [self.reply, self.time_register]

        self.ntkd_id = randint(0, 2**32 - 1)
예제 #8
0
 def setUp(self):
     self.events = Event(['A', 'B'])