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 })); }
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); }