public void SerializeTo(ref StatsServiceCheck sc, SerializedMetric serializedMetric)
        {
            serializedMetric.Reset();

            var builder = serializedMetric.Builder;

            string processedName    = EscapeName(sc.Name);
            string processedMessage = EscapeMessage(sc.ServiceCheckMessage);

            builder.Append("_sc|");
            builder.Append(processedName);
            builder.AppendFormat(CultureInfo.InvariantCulture, "|{0}", sc.Status);

            if (sc.Timestamp != null)
            {
                builder.AppendFormat(CultureInfo.InvariantCulture, "|d:{0}", sc.Timestamp.Value);
            }

            SerializerHelper.AppendIfNotNull(builder, "|h:", sc.Hostname);

            _serializerHelper.AppendTags(builder, sc.Tags);

            // Note: this must always be appended to the result last.
            SerializerHelper.AppendIfNotNull(builder, "|m:", processedMessage);

            sc.ServiceCheckMessage = TruncateMessageIfRequired(sc.Name, builder, sc.TruncateIfTooLong, processedMessage);
            if (sc.ServiceCheckMessage != null)
            {
                sc.TruncateIfTooLong = true;
                SerializeTo(ref sc, serializedMetric);
            }
        }
        private static SerializedMetric Serialize(
            string name,
            int status,
            int?timestamp              = null,
            string hostname            = null,
            string[] tags              = null,
            string serviceCheckMessage = null,
            bool truncateIfTooLong     = false)
        {
            var statsServiceCheck = new StatsServiceCheck
            {
                Name                = name,
                Status              = status,
                Timestamp           = timestamp,
                Hostname            = hostname,
                ServiceCheckMessage = serviceCheckMessage,
                TruncateIfTooLong   = truncateIfTooLong,
                Tags                = tags,
            };
            var serializer       = CreateSerializer();
            var serializedMetric = new SerializedMetric();

            serializer.SerializeTo(ref statsServiceCheck, serializedMetric);
            return(serializedMetric);
        }