# coding: utf-8

"""
    Flink API Client

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: 1.0.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six


class TaskManagerMetricsInfo(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'heap_used': 'int',
        'heap_committed': 'int',
        'heap_max': 'int',
        'non_heap_used': 'int',
        'non_heap_committed': 'int',
        'non_heap_max': 'int',
        'direct_count': 'int',
        'direct_used': 'int',
        'direct_max': 'int',
        'mapped_count': 'int',
        'mapped_used': 'int',
        'mapped_max': 'int',
        'memory_segments_available': 'int',
        'memory_segments_total': 'int',
        'garbage_collectors': 'list[GarbageCollectorInfo]'
    }

    attribute_map = {
        'heap_used': 'heapUsed',
        'heap_committed': 'heapCommitted',
        'heap_max': 'heapMax',
        'non_heap_used': 'nonHeapUsed',
        'non_heap_committed': 'nonHeapCommitted',
        'non_heap_max': 'nonHeapMax',
        'direct_count': 'directCount',
        'direct_used': 'directUsed',
        'direct_max': 'directMax',
        'mapped_count': 'mappedCount',
        'mapped_used': 'mappedUsed',
        'mapped_max': 'mappedMax',
        'memory_segments_available': 'memorySegmentsAvailable',
        'memory_segments_total': 'memorySegmentsTotal',
        'garbage_collectors': 'garbageCollectors'
    }

    def __init__(self, heap_used=None, heap_committed=None, heap_max=None, non_heap_used=None, non_heap_committed=None, non_heap_max=None, direct_count=None, direct_used=None, direct_max=None, mapped_count=None, mapped_used=None, mapped_max=None, memory_segments_available=None, memory_segments_total=None, garbage_collectors=None):  # noqa: E501
        """TaskManagerMetricsInfo - a model defined in Swagger"""  # noqa: E501
        self._heap_used = None
        self._heap_committed = None
        self._heap_max = None
        self._non_heap_used = None
        self._non_heap_committed = None
        self._non_heap_max = None
        self._direct_count = None
        self._direct_used = None
        self._direct_max = None
        self._mapped_count = None
        self._mapped_used = None
        self._mapped_max = None
        self._memory_segments_available = None
        self._memory_segments_total = None
        self._garbage_collectors = None
        self.discriminator = None
        if heap_used is not None:
            self.heap_used = heap_used
        if heap_committed is not None:
            self.heap_committed = heap_committed
        if heap_max is not None:
            self.heap_max = heap_max
        if non_heap_used is not None:
            self.non_heap_used = non_heap_used
        if non_heap_committed is not None:
            self.non_heap_committed = non_heap_committed
        if non_heap_max is not None:
            self.non_heap_max = non_heap_max
        if direct_count is not None:
            self.direct_count = direct_count
        if direct_used is not None:
            self.direct_used = direct_used
        if direct_max is not None:
            self.direct_max = direct_max
        if mapped_count is not None:
            self.mapped_count = mapped_count
        if mapped_used is not None:
            self.mapped_used = mapped_used
        if mapped_max is not None:
            self.mapped_max = mapped_max
        if memory_segments_available is not None:
            self.memory_segments_available = memory_segments_available
        if memory_segments_total is not None:
            self.memory_segments_total = memory_segments_total
        if garbage_collectors is not None:
            self.garbage_collectors = garbage_collectors

    @property
    def heap_used(self):
        """Gets the heap_used of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The heap_used of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._heap_used

    @heap_used.setter
    def heap_used(self, heap_used):
        """Sets the heap_used of this TaskManagerMetricsInfo.


        :param heap_used: The heap_used of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._heap_used = heap_used

    @property
    def heap_committed(self):
        """Gets the heap_committed of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The heap_committed of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._heap_committed

    @heap_committed.setter
    def heap_committed(self, heap_committed):
        """Sets the heap_committed of this TaskManagerMetricsInfo.


        :param heap_committed: The heap_committed of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._heap_committed = heap_committed

    @property
    def heap_max(self):
        """Gets the heap_max of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The heap_max of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._heap_max

    @heap_max.setter
    def heap_max(self, heap_max):
        """Sets the heap_max of this TaskManagerMetricsInfo.


        :param heap_max: The heap_max of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._heap_max = heap_max

    @property
    def non_heap_used(self):
        """Gets the non_heap_used of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The non_heap_used of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._non_heap_used

    @non_heap_used.setter
    def non_heap_used(self, non_heap_used):
        """Sets the non_heap_used of this TaskManagerMetricsInfo.


        :param non_heap_used: The non_heap_used of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._non_heap_used = non_heap_used

    @property
    def non_heap_committed(self):
        """Gets the non_heap_committed of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The non_heap_committed of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._non_heap_committed

    @non_heap_committed.setter
    def non_heap_committed(self, non_heap_committed):
        """Sets the non_heap_committed of this TaskManagerMetricsInfo.


        :param non_heap_committed: The non_heap_committed of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._non_heap_committed = non_heap_committed

    @property
    def non_heap_max(self):
        """Gets the non_heap_max of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The non_heap_max of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._non_heap_max

    @non_heap_max.setter
    def non_heap_max(self, non_heap_max):
        """Sets the non_heap_max of this TaskManagerMetricsInfo.


        :param non_heap_max: The non_heap_max of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._non_heap_max = non_heap_max

    @property
    def direct_count(self):
        """Gets the direct_count of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The direct_count of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._direct_count

    @direct_count.setter
    def direct_count(self, direct_count):
        """Sets the direct_count of this TaskManagerMetricsInfo.


        :param direct_count: The direct_count of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._direct_count = direct_count

    @property
    def direct_used(self):
        """Gets the direct_used of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The direct_used of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._direct_used

    @direct_used.setter
    def direct_used(self, direct_used):
        """Sets the direct_used of this TaskManagerMetricsInfo.


        :param direct_used: The direct_used of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._direct_used = direct_used

    @property
    def direct_max(self):
        """Gets the direct_max of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The direct_max of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._direct_max

    @direct_max.setter
    def direct_max(self, direct_max):
        """Sets the direct_max of this TaskManagerMetricsInfo.


        :param direct_max: The direct_max of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._direct_max = direct_max

    @property
    def mapped_count(self):
        """Gets the mapped_count of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The mapped_count of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._mapped_count

    @mapped_count.setter
    def mapped_count(self, mapped_count):
        """Sets the mapped_count of this TaskManagerMetricsInfo.


        :param mapped_count: The mapped_count of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._mapped_count = mapped_count

    @property
    def mapped_used(self):
        """Gets the mapped_used of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The mapped_used of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._mapped_used

    @mapped_used.setter
    def mapped_used(self, mapped_used):
        """Sets the mapped_used of this TaskManagerMetricsInfo.


        :param mapped_used: The mapped_used of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._mapped_used = mapped_used

    @property
    def mapped_max(self):
        """Gets the mapped_max of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The mapped_max of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._mapped_max

    @mapped_max.setter
    def mapped_max(self, mapped_max):
        """Sets the mapped_max of this TaskManagerMetricsInfo.


        :param mapped_max: The mapped_max of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._mapped_max = mapped_max

    @property
    def memory_segments_available(self):
        """Gets the memory_segments_available of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The memory_segments_available of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._memory_segments_available

    @memory_segments_available.setter
    def memory_segments_available(self, memory_segments_available):
        """Sets the memory_segments_available of this TaskManagerMetricsInfo.


        :param memory_segments_available: The memory_segments_available of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._memory_segments_available = memory_segments_available

    @property
    def memory_segments_total(self):
        """Gets the memory_segments_total of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The memory_segments_total of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: int
        """
        return self._memory_segments_total

    @memory_segments_total.setter
    def memory_segments_total(self, memory_segments_total):
        """Sets the memory_segments_total of this TaskManagerMetricsInfo.


        :param memory_segments_total: The memory_segments_total of this TaskManagerMetricsInfo.  # noqa: E501
        :type: int
        """

        self._memory_segments_total = memory_segments_total

    @property
    def garbage_collectors(self):
        """Gets the garbage_collectors of this TaskManagerMetricsInfo.  # noqa: E501


        :return: The garbage_collectors of this TaskManagerMetricsInfo.  # noqa: E501
        :rtype: list[GarbageCollectorInfo]
        """
        return self._garbage_collectors

    @garbage_collectors.setter
    def garbage_collectors(self, garbage_collectors):
        """Sets the garbage_collectors of this TaskManagerMetricsInfo.


        :param garbage_collectors: The garbage_collectors of this TaskManagerMetricsInfo.  # noqa: E501
        :type: list[GarbageCollectorInfo]
        """

        self._garbage_collectors = garbage_collectors

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(TaskManagerMetricsInfo, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, TaskManagerMetricsInfo):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
