예제 #1
0
        private static void SendToServer(string server, int port, IEnumerable <string> metrics, bool stream)
        {
            UdpMessenger messenger = null;
            SimpleObjectPool <UdpMessenger> serverPool = null;

            try
            {
                serverPool = _messengerPool.GetOrAdd(string.Format(CultureInfo.InvariantCulture, "{0}:{1}", server, port),
                                                     new SimpleObjectPool <UdpMessenger>(3, pool => new UdpMessenger(server, port)));
                messenger = serverPool.Pop();

                //all used up, sorry!
                if (null == messenger)
                {
                    return;
                }

                if (stream)
                {
                    messenger.StreamMetrics(metrics);
                }
                else
                {
                    messenger.SendMetrics(metrics);
                }
            }
            finally
            {
                if (null != serverPool && null != messenger)
                {
                    serverPool.Push(messenger);
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Will stream the given metrics in the specified format, breaking up the metrics into 10 packets at a time, where multiple metrics may
        /// comprise a single packet.  This call is appropriate for infinite IEnumerables.
        /// </summary>
        /// <exception cref="ArgumentNullException">	Thrown when the metrics are null. </exception>
        /// <param name="metrics">	The metrics. </param>
        public void Stream(IEnumerable <IMetric> metrics)
        {
            if (null == metrics)
            {
                throw new ArgumentNullException("metrics");
            }

            _messenger.StreamMetrics(metrics.ToStrings(_key, _format));
        }