public static void GraphiteSend(string host, int port, string key, int value)
        {
            IPAddress address = Helpers.ParseAddress(host);

            using (var pipe = new TcpPipe(address, port))
            {
                try
                {
                    pipe.Send(GraphiteFormatter.Format(key, value));
                }
                catch (InvalidOperationException exception)
                {
                    SqlContext.Pipe.Send(exception.Message);
                }
            }
        }
        public static void GraphiteSendSeries(string host, int port, string series, out string returnString)
        {
            IPAddress address = Helpers.ParseAddress(host);

            using (var pipe = new TcpPipe(address, port))
            {
                returnString = string.Empty;

                try
                {
                    var doc = new XmlDocument();
                    doc.LoadXml(series);

                    int count = 0;

                    foreach (XmlNode node in doc.DocumentElement)
                    {
                        if (node.ChildNodes.Count != 2)
                        {
                            continue;
                        }

                        string value = GraphiteFormatter.Format(node.FirstChild.InnerText, Convert.ToInt32(node.LastChild.InnerText));
                        if (pipe.Send(value))
                        {
                            count += 1;
                        }
                    }

                    returnString = count + " values sent";
                }
                catch (FormatException exception)
                {
                    SqlContext.Pipe.Send(exception.Message);

                    returnString = exception.Message;
                }
                catch (InvalidOperationException exception)
                {
                    SqlContext.Pipe.Send(exception.Message);

                    returnString = exception.Message;
                }
            }
        }