""" Module that contains simple client access to Matcher service
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

__RCSID__ = "c59810311 (2021-10-01 10:44:25 +0200) Chris Burr <christopher.burr@cern.ch>"

from DIRAC.Core.Base.Client import Client, createClient
from DIRAC.Core.Utilities.DEncode import ignoreEncodeWarning
from DIRAC.Core.Utilities.JEncode import strToIntDict


@createClient("WorkloadManagement/Matcher")
class MatcherClient(Client):

    """Exposes the functionality available in the WorkloadManagement/MatcherHandler

    This inherits the DIRAC base Client for direct execution of server functionality.
    The following methods are available (although not visible here).

    """

    def __init__(self, **kwargs):
        """Simple constructor"""

        super(MatcherClient, self).__init__(**kwargs)
        self.setServer("WorkloadManagement/Matcher")

    @ignoreEncodeWarning
    def getMatchingTaskQueues(self, resourceDict):
        """Return all task queues that match the resourceDict"""
        res = self._getRPC().getMatchingTaskQueues(resourceDict)

        if res["OK"]:
            # Cast the string back to int
            res["Value"] = strToIntDict(res["Value"])
        return res

    @ignoreEncodeWarning
    def getActiveTaskQueues(self):
        """Return all active task queues"""
        res = self._getRPC().getActiveTaskQueues()

        if res["OK"]:
            # Cast the string back to int
            res["Value"] = strToIntDict(res["Value"])
        return res