Exemplo n.º 1
0
        public bool SendMessage(ILogMessage message, string hostOrIp, int port)
        {
            try
            {
                var endpoint = GetEndPoint(hostOrIp, port);
                using (var socket = new Socket(endpoint.AddressFamily, GetSocketType(), GetProtocolType()))
                {
                    var data = message.GetBytes();

                    if (data.Length > socket.SendBufferSize)
                    {
                        Console.WriteLine(message);
                        data = data.SubArray(socket.SendBufferSize);
                    }

                    socket.SendTo(data, endpoint);
                    return(true);
                }
            }
            catch (SocketException se)
            {
                Console.WriteLine(se);
                Console.WriteLine(message);
                return(false);
            }
        }
        public Task <bool> SendMessageAsync(ILogMessage message, string hostOrIp, int port)
        {
            return(Task.Run(() =>
            {
                try
                {
                    var endpoint = GetEndPoint(hostOrIp, port);

                    if (endpoint == null)
                    {
                        return false;
                    }

                    using (var socket = new Socket(endpoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp))
                    {
                        socket.Connect(endpoint);
                        if (!socket.Connected)
                        {
                            return false;
                        }

                        var data = message.GetBytes();

                        if (data.Length > socket.SendBufferSize)
                        {
                            Console.WriteLine($"Max Buffer Size {socket.SendBufferSize}. Data packets length is currently: {data.Length}");
                            Console.WriteLine(message);

                            // HACK: To ensure that the data packet fits in the buffer size
                            data = data.SubArray(socket.SendBufferSize);
                        }

                        socket.SendTo(data, SocketFlags.None, endpoint);
                        return true;
                    }
                }
                catch (SocketException se)
                {
                    Console.WriteLine(se);
                    Console.WriteLine(message);
                    return false;
                }
#if DEBUG
                catch (System.Exception e)
                {
                    Debug.WriteLine(e);
                    return false;
                }
#endif
            }));
        }
Exemplo n.º 3
0
        internal static Queue <LogMessage> GetLogs(ILogMessage currentMessage)
        {
            var cacheFile            = new FileInfo(LogCacheFile);
            Queue <LogMessage> cache = cacheFile.Exists ? ReadCache() : new Queue <LogMessage>();

            if (currentMessage != null)
            {
                if (!(currentMessage is LogMessage currentLogMessage))
                {
                    currentLogMessage = new LogMessage
                    {
                        Message     = Encoding.Default.GetString(currentMessage.GetBytes()),
                        MessageType = currentMessage.GetType().Name
                    };
                }

                cache.Enqueue(currentLogMessage);
            }

            SaveCache(cache);
            return(cache);
        }