Пример #1
0
    #create network hosts
    host_1 = Host('H1')
    object_L.append(host_1)
    host_2 = Host('H2')
    object_L.append(host_2)

    #create routers and routing tables for connected clients (subnets)
    encap_tbl_D = {
    }  # table used to encapsulate network packets into MPLS frames
    frwd_tbl_D = {}  # table used to forward MPLS frames
    decap_tbl_D = {
    }  # table used to decapsulate network packets from MPLS frames
    router_a = Router(name='RA',
                      intf_capacity_L=[500, 500],
                      encap_tbl_D=encap_tbl_D,
                      frwd_tbl_D=frwd_tbl_D,
                      decap_tbl_D=decap_tbl_D,
                      max_queue_size=router_queue_size)
    object_L.append(router_a)

    encap_tbl_D = {}
    frwd_tbl_D = {}
    decap_tbl_D = {}
    router_b = Router(name='RB',
                      intf_capacity_L=[500, 100],
                      encap_tbl_D=encap_tbl_D,
                      frwd_tbl_D=frwd_tbl_D,
                      decap_tbl_D=decap_tbl_D,
                      max_queue_size=router_queue_size)
    object_L.append(router_b)
Пример #2
0
    def __init__(self):

        ''' 
        input the scenario here. make sure the configuration files 
        are in the correct folder! 
        '''
        self.scenario = "default"

        ''' time management '''
        self.start_time = 3600 * 5
        self.current_time = self.start_time + 0
        self.speed = 5
        self.timestring = str(datetime.timedelta(seconds=math.floor(self.current_time)))

        self.debugbatch = pyglet.graphics.Batch()
        
        ''' setup, check and clear resources '''
        self.resources = ResourceSetup(self.scenario)
        self.spatial_db = self.resources.mongo_connection['spatial_db']
        
        ''' 
        import static geodata directly (every other import is done 
        via the appropriate manager classes
        '''
        self.importer = Importer("thesis_db", "thesis", "thesis")
        self.extent = self.importer.set_global_extent("street_network")
        self.roads = self.importer.read_line_layer("street_network")
        self.buildings_footprint = self.importer.read_line_layer("buildings_line")

        ''' create building centroids '''
        self.building_manager = BuildingManager(self, 
            self.importer.read_point_layer(
            "buildings_centroid", attributes=["building_id"]), 
            "config/"+self.scenario+"/building_attributes.json")

        ''' create actor manager '''
        self.actor_manager = ActorManager(self)

        ''' create routable network (coarse routing and between vectors as edge attributes) '''
        self.router = Router(self)
        self.router.create_routable_network_from_line_data(self.roads)
        self.router.create_lane_collsion_data()

        ''' create parking lots via the lot manager. initial config is provided via config json '''
        self.lots = self.importer.read_line_layer("parking_lots", attributes=["lot_permis", "lot_type", "lot_tech"])
        self.lot_manager = LotManager(self, self.lots, 
            "config/"+self.scenario+"/lot_init_fill.json", 
            "config/"+self.scenario+"/actor_attributes.json")

        ''' create spawners from config json file. See config for details'''
        self.spawner = Spawner(self, "config/"+self.scenario+"/actor_spawn.json", 
            "config/"+self.scenario+"/actor_attributes.json", 
            "config/"+self.scenario+"/exit_nodes.json")

        ''' display objects '''
        self.window = pyglet.window.Window(width=1000, height=600)
        self.window.set_location(10, 10)
        self.camera = Camera((200, 500), 50, 0, 1000)
        self.graphics = Graphics()
        self.fps_display = pyglet.clock.ClockDisplay()

        ''' create displayable batches '''
        self.buildings_footprint_batch = self.graphics.create_pyglet_line_batch(
            self.buildings_footprint, (200, 200, 200))
        self.router.create_pyglet_batch_from_network()

        ''' debug options '''
        self.debug_layer = None
        self.click_debug = None
        self.stop = False

        ''' GUI '''
        #self.gui = Frame(Theme('/Users/anresources/gui/'), w=1000, h=600)
        #self.window.push_handlers(self.gui)
        self.current_actor = None

        ''' mouse management '''
        self.mouse = []