예제 #1
0
  def __init__(self, params):
    """ All informations about this node:
    host --> ip if the node, network_port, GUI_port, posX, posY, ar, ca, 
    ori --> a point, 
    exp --> expected number of neighbour, pseudo"""


    # event queue, used for inter-thread communication
    self.events = NotificationQueue()

    # network communication with peers is handled by this object
    netParams = params.getNetParams()
    self.peerConnector = UDPConnector("peer", self.events, netParams)

    controlParams = params.getControlParams()
    self.controlConnector = XMLRPCConnector("control", self.events, controlParams)

    # set the solipsis protocol used
    engineParams = params.getEngineParams()
    self.engine = V0_2_5_Engine(self, engineParams)

    self.controlEngine = ControlEngine(self, engineParams)
    self.internalEngine = InternalEngine(self, engineParams)
    
    position = [params.posX, params.posY]
    
    # call parent class constructor
    Entity.__init__(self, position, params.ori, params.ar, params.caliber,
                  params.pseudo)
    
    self.id = "unknown"
    
    # maximum expected number of neighbours.
    self.exp = params.exp
    
    # our IP address or 'localhost' if not specified in config file
    self.host = params.host
    
    self.alive = True
    self.logger = params.rootLogger
    
    # manage all peers
    peersParams = params.getPeersParams()
    self.peersManager = PeersManager(self, peersParams)

    # set world size in Geometry class
    Geometry.SIZE = params.world_size
    self.params=params
예제 #2
0
  def __init__(self, id="", host="", port=0, pos=Position(0,0), ori=0,
               awareness_radius=0, caliber=0, pseudo=""):
    """ Create a new Entity and keep information about it"""

    # call parent class constructor
    Entity.__init__(self,pos, ori, awareness_radius, caliber, pseudo)

    self.id   = id
    self.address = Address(host, port)
    
    # last time when we saw this peer active 
    self.activeTime = 0

    # local position is the position of this peer using a coordinate system
    # centered on the position of the node
    # this value is set-up by the peer manager
    self.localPositon = pos
    
    # set the ID of this peer
    #id = self.createId()
    #self.setId(id)
    
    # position and relative position
    #relative_position = Function.relativePosition(self.position,
    # globalvars.me.position)
    #self.local_position = [ relative_position[0] - globalvars.me.position[0],
    #relative_position[1] - globalvars.me.position[1] ]

    # two boolean variables indicating that
    # we received a message from this entity
    self.message_received = 1
    # we sent a message to this entity
    self.message_sent = 0

    # services provided by entity
    # {id_service: [desc_service, host, port], ...}
    self.services = {}
    
    # boolean confirmation of the accuracy of informations
    self.ok = 0
예제 #3
0
 def __init__(self):
     Entity.__init__(self)
     self._isConnected = False
     self._peers = {}