示例#1
0
    def enable_callbacks(self):
        """ enable the Agents() callback handlers for packet received events """
        if self.settings.ENABLE_INVENTORY_MANAGEMENT:
            while self.region.capabilities == {}:

                eventlet.sleep(5)

            inventory_caps = ['FetchInventory', 'WebFetchInventoryDescendents', 'FetchLib', 'FetchLibDescendents']

            if sets.Set(self.region.capabilities.keys()).intersection(inventory_caps):

                caps = dict([(capname, self.region.capabilities[capname]) for capname in inventory_caps])

                logger.info("Using the capability based inventory management mechanism")

                self.inventory = AIS(self, caps)

            else:

                logger.info("Using the UDP based inventory management mechanism")

                self.inventory = UDP_Inventory(self)

            self.inventory._parse_folders_from_login_response()   
            self.inventory.enable_callbacks()

        if self.settings.ENABLE_APPEARANCE_MANAGEMENT:

            self.appearance.enable_callbacks()

        if self.settings.ENABLE_GROUP_CHAT:

            self.group_manager.enable_callbacks()

        if self.settings.MULTIPLE_SIM_CONNECTIONS:

            onEnableSimulator_received = self.region.message_handler.register('EnableSimulator')
            onEnableSimulator_received.subscribe(self.onEnableSimulator)

            onEstablishAgentCommunication_received = self.region.message_handler.register('EstablishAgentCommunication')
            onEstablishAgentCommunication_received.subscribe(self.onEstablishAgentCommunication)

        # enable callbacks for the agent class to set up handling for related messages

        onAlertMessage_received = self.region.message_handler.register('AlertMessage')
        onAlertMessage_received.subscribe(self.onAlertMessage)

        onAgentDataUpdate_received = self.region.message_handler.register('AgentDataUpdate')
        onAgentDataUpdate_received.subscribe(self.onAgentDataUpdate)

        onAgentMovementComplete_received = self.region.message_handler.register('AgentMovementComplete')
        onAgentMovementComplete_received.subscribe(self.onAgentMovementComplete)

        onHealthMessage_received = self.region.message_handler.register('HealthMessage')
        onHealthMessage_received.subscribe(self.onHealthMessage)

        onImprovedInstantMessage_received = self.region.message_handler.register('ImprovedInstantMessage')
        onImprovedInstantMessage_received.subscribe(self.onImprovedInstantMessage)

        self.region.message_handler.register('TeleportStart').subscribe(self.simple_callback('Info'))
        self.region.message_handler.register('TeleportProgress').subscribe(self.simple_callback('Info'))
        self.region.message_handler.register('TeleportFailed').subscribe(self.simple_callback('Info'))
        self.region.message_handler.register('TeleportFinish').subscribe(self.onTeleportFinish)

        self.region.message_handler.register('OfflineNotification').subscribe(self.simple_callback('AgentBlock'))
        self.region.message_handler.register('OnlineNotification').subscribe(self.simple_callback('AgentBlock'))

        self.region.message_handler.register('MoneyBalanceReply').subscribe(self.simple_callback('MoneyData'))
        self.region.message_handler.register('RoutedMoneyBalanceReply').subscribe(self.simple_callback('MoneyData'))

        if self.settings.ENABLE_COMMUNICATIONS_TRACKING:
            onChatFromSimulator_received = self.region.message_handler.register('ChatFromSimulator')
            onChatFromSimulator_received.subscribe(self.onChatFromSimulator)

        onAvatarAnimation_received = self.region.message_handler.register('AvatarAnimation')
        onAvatarAnimation_received.subscribe(self.onAvatarAnimation)
示例#2
0
 def onAgentConnected(self, agent):
     self.inventory = UDP_Inventory(agent)
     self.filename = None
     self.xfer_list = defaultdict(str)