예제 #1
0
    def __handler_delete_peer(self, request, context):
        util.logger.spam(
            f"rs_admin_service:__handler_delete_peer target({request.message})"
        )
        self.__admin_manager.save_channel_manage_data(json.loads(request.meta))

        peer_target = request.message
        channel_manager_data = json.loads(request.meta)
        channel_manager = ObjectManager().rs_service.channel_manager
        for channel in channel_manager_data:
            util.logger.spam(
                f"rs_admin_service:__handler_delete_peer channel({channel})")
            channel_manager.get_peer_manager(channel).\
                remove_peer_by_target(channel_manager, peer_target)

        return loopchain_pb2.Message(code=message_code.Response.success)
예제 #2
0
    def GetPeerList(self, request, context):
        """현재 RadioStation 에 접속된 Peer 목록을 구한다.

        :param request: CommonRequest
        :param context:
        :return: PeerList
        """
        channel_manager = ObjectManager().rs_service.channel_manager
        channel_name = conf.LOOPCHAIN_DEFAULT_CHANNEL if not request.channel else request.channel

        if channel_name in channel_manager.get_channel_list():
            peer_manager: PeerManager = channel_manager.get_peer_manager(channel_name)
            peer_list_dumped = peer_manager.peer_list_data.dump()
        else:
            peer_list_dumped = PeerListData().dump()

        return loopchain_pb2.PeerList(
            peer_list=peer_list_dumped
        )