Esempio n. 1
0
def type_name(obj):
    """
    Returns the C++ type to use for a given metric object.
    """

    generate_enums = getattr(obj, "_generate_enums",
                             [])  # Extra Keys? Reasons?
    if len(generate_enums):
        for name, suffix in generate_enums:
            if not len(getattr(obj, name)) and suffix == "Keys":
                return util.Camelize(obj.type) + "Metric<uint32_t>"
            else:
                return "{}Metric<{}>".format(util.Camelize(obj.type),
                                             util.Camelize(obj.name) + suffix)
    return util.Camelize(obj.type) + "Metric"
Esempio n. 2
0
 def iterencode(self, value):
     if isinstance(value, dict):
         raise ValueError("RustEncoder doesn't know dicts {}".format(
             str(value)))
     elif isinstance(value, enum.Enum):
         yield (value.__class__.__name__ + "::" +
                util.Camelize(value.name))
     elif isinstance(value, set):
         yield "vec!["
         first = True
         for subvalue in sorted(list(value)):
             if not first:
                 yield ", "
             yield from self.iterencode(subvalue)
             first = False
         yield "]"
     elif isinstance(value, list):
         yield "vec!["
         first = True
         for subvalue in list(value):
             if not first:
                 yield ", "
             yield from self.iterencode(subvalue)
             first = False
         yield "]"
     elif value is None:
         yield "None"
     elif isinstance(value, str):
         yield '"' + value + '".into()'
     else:
         yield from super().iterencode(value)
Esempio n. 3
0
def type_name(obj):
    """
    Returns the C++ type to use for a given metric object.
    """

    if getattr(obj, "labeled", False):
        return "GleanLabeled"
    return "Glean" + util.Camelize(obj.type)
Esempio n. 4
0
def class_name(obj_type):
    """
    Returns the Rust class name for a given metric or ping type.
    """
    if obj_type == "ping":
        return "Ping"
    if obj_type.startswith("labeled_"):
        obj_type = obj_type[8:]
    return util.Camelize(obj_type) + "Metric"
Esempio n. 5
0
def type_name(obj):
    """
    Returns the C++ type to use for a given metric object.
    """

    if getattr(obj, "labeled", False):
        class_name = util.Camelize(obj.type[8:])  # strips "labeled_" off the front.
        return "Labeled<impl::{}Metric>".format(class_name)
    generate_enums = getattr(obj, "_generate_enums", [])  # Extra Keys? Reasons?
    if len(generate_enums):
        for name, suffix in generate_enums:
            if not len(getattr(obj, name)) and suffix == "Keys":
                return util.Camelize(obj.type) + "Metric<uint32_t>"
            else:
                return "{}Metric<{}>".format(
                    util.Camelize(obj.type), util.Camelize(obj.name) + suffix
                )
    return util.Camelize(obj.type) + "Metric"
Esempio n. 6
0
def subtype_name(obj):
    """
    Returns the subtype name for labeled metrics.
    (e.g. 'boolean' for 'labeled_boolean').
    Returns "" for non-labeled metrics.
    """
    if getattr(obj, "labeled", False):
        type = obj.type[8:]  # strips "labeled_" off the front
        return "Glean" + util.Camelize(type)
    return ""
def type_name(obj):
    """
    Returns the Rust type to use for a given metric or ping object.
    """

    if getattr(obj, "labeled", False):
        return "LabeledMetric<{}>".format(class_name(obj.type))
    generate_enums = getattr(obj, "_generate_enums", [])  # Extra Keys? Reasons?
    if len(generate_enums):
        for name, suffix in generate_enums:
            if not len(getattr(obj, name)) and suffix == "Keys":
                return class_name(obj.type) + "::<NoExtraKeys>"
            else:
                return "{}::<{}>".format(class_name(obj.type), util.Camelize(obj.name) + suffix)
    return class_name(obj.type)
Esempio n. 8
0
def type_name(obj):
    """
    Returns the Rust type to use for a given metric or ping object.
    """

    if getattr(obj, "labeled", False):
        return "LabeledMetric<Labeled{}>".format(class_name(obj.type))
    generate_enums = getattr(obj, "_generate_enums",
                             [])  # Extra Keys? Reasons?
    if len(generate_enums):
        for name, suffix in generate_enums:
            if not len(getattr(obj, name)) and suffix == "Keys":
                return class_name(obj.type) + "<NoExtraKeys>"
            else:
                # we always use the `extra` suffix,
                # because we only expose the new event API
                suffix = "Extra"
                return "{}<{}>".format(class_name(obj.type),
                                       util.Camelize(obj.name) + suffix)
    return class_name(obj.type)
Esempio n. 9
0
 def iterencode(self, value):
     if isinstance(value, dict):
         raise ValueError("RustEncoder doesn't know dicts {}".format(
             str(value)))
     elif isinstance(value, enum.Enum):
         yield (value.__class__.__name__ + "::" +
                util.Camelize(value.name))
     elif isinstance(value, set):
         yield "vec!["
         first = True
         for subvalue in sorted(list(value)):
             if not first:
                 yield ", "
             yield from self.iterencode(subvalue)
             first = False
         yield "]"
     elif isinstance(value, list):
         yield "vec!["
         first = True
         for subvalue in list(value):
             if not first:
                 yield ", "
             yield from self.iterencode(subvalue)
             first = False
         yield "]"
     elif value is None:
         yield "None"
     elif isinstance(value, str):
         yield '"' + value + '".into()'
     elif isinstance(value, Rate):
         yield "CommonMetricData {"
         for arg_name in common_metric_data_args:
             if hasattr(value, arg_name):
                 yield f"{arg_name}: "
                 yield from self.iterencode(getattr(value, arg_name))
                 yield ", "
         yield " ..Default::default()}"
     else:
         yield from super().iterencode(value)
Esempio n. 10
0
def type_name(type):
    """
    Returns the C++ type to use for a given metric object.
    """

    return "Glean" + util.Camelize(type)
Esempio n. 11
0
def type_name(obj):
    """
    Returns the C++ type to use for a given metric object.
    """

    return util.Camelize(obj.type) + "Metric"