コード例 #1
0
ファイル: UdpTransport.cs プロジェクト: rhk98/JustEat.StatsD
        public bool Send(IEnumerable <string> metrics)
        {
            var data = EventArgsPool.Pop();

            //firehose alert! -- keep it moving!
            if (data == null)
            {
                return(false);
            }

            try
            {
                data.RemoteEndPoint      = _endpointSource.GetEndpoint();
                data.SendPacketsElements = metrics.ToMaximumBytePackets()
                                           .Select(bytes => new SendPacketsElement(bytes, 0, bytes.Length, true))
                                           .ToArray();

                using (var udpClient = GetUdpClient())
                {
                    udpClient.Client.Connect(data.RemoteEndPoint);
                    udpClient.Client.SendPacketsAsync(data);
                }

                Trace.TraceInformation("statsd: {0}", string.Join(",", metrics));

                return(true);
            }
            //fire and forget, so just eat intermittent failures / exceptions
            catch (Exception e)
            {
                Trace.TraceError("General Exception when sending metric data to statsD :- Message : {0}, Inner Exception {1}, StackTrace {2}.", e.Message, e.InnerException, e.StackTrace);
            }

            return(false);
        }
コード例 #2
0
        public bool Send(IEnumerable <string> metrics)
        {
            try
            {
                var endpoint = _endpointSource.GetEndpoint();
                var packets  = metrics.ToMaximumBytePackets();

                using (var socket = MakeIpDatagramSocket())
                {
                    foreach (var packet in packets)
                    {
                        socket.SendTo(packet, endpoint);
                    }
                }

                Trace.TraceInformation("statsd: {0}", string.Join(",", metrics));
                return(true);
            }
            //fire and forget, so just eat intermittent failures / exceptions
            catch (Exception e)
            {
                Trace.TraceError("General Exception when sending metric data to statsD :- Message : {0}, Inner Exception {1}, StackTrace {2}.", e.Message, e.InnerException, e.StackTrace);
            }

            return(false);
        }
コード例 #3
0
 public IPEndPoint GetEndpoint()
 {
     if (NeedsRead())
     {
         _cachedValue = _inner.GetEndpoint();
         _expiry      = DateTime.UtcNow.Add(_cacheDuration);
     }
     return(_cachedValue);
 }
コード例 #4
0
        public void Send(string metric)
        {
            var endpoint = _endpointSource.GetEndpoint();
            var bytes    = Encoding.UTF8.GetBytes(metric);

            using (var socket = CreateSocket())
            {
                socket.SendTo(bytes, endpoint);
            }
        }
コード例 #5
0
        public void Send(IEnumerable <string> metrics)
        {
            var endpoint = _endpointSource.GetEndpoint();
            var packets  = metrics.ToMaximumBytePackets();

            using (var socket = MakeIpDatagramSocket())
            {
                foreach (var packet in packets)
                {
                    socket.SendTo(packet, endpoint);
                }
            }
        }
コード例 #6
0
ファイル: IpTransport.cs プロジェクト: dv00d00/JustEat.StatsD
        public void Send(string metric)
        {
            if (string.IsNullOrWhiteSpace(metric))
            {
                return;
            }

            var endpoint = _endpointSource.GetEndpoint();
            var bytes    = Encoding.UTF8.GetBytes(metric);

            using (var socket = CreateSocket())
            {
                socket.SendTo(bytes, endpoint);
            }
        }
コード例 #7
0
        public void Send(IEnumerable <string> metrics)
        {
            var data = EventArgsPool.Pop();

            //firehose alert! -- keep it moving!
            if (data == null)
            {
                return;
            }

            data.RemoteEndPoint      = _endpointSource.GetEndpoint();
            data.SendPacketsElements = metrics.ToMaximumBytePackets()
                                       .Select(bytes => new SendPacketsElement(bytes, 0, bytes.Length, true))
                                       .ToArray();

            using (var udpClient = GetUdpClient())
            {
                udpClient.Client.Connect(data.RemoteEndPoint);
                udpClient.Client.SendPacketsAsync(data);
            }
        }
コード例 #8
0
        /// <inheritdoc />
        public void Send(string metric)
        {
            if (string.IsNullOrWhiteSpace(metric))
            {
                return;
            }

            var bytes    = Encoding.UTF8.GetBytes(metric);
            var endpoint = _endpointSource.GetEndpoint();

            var socket = _socketPool.PopOrCreate();

            try
            {
                socket.SendTo(bytes, endpoint);
            }
            catch (Exception)
            {
                socket.Dispose();
                throw;
            }

            _socketPool.Push(socket);
        }