/// <summary> /// Sends a UDP datagram to GrayLog2 server /// </summary> /// <param name="target">IP Endpoint of the of the target GrayLog2 server</param> /// <param name="message">Message (in JSON) to log</param> public void Send(Uri endPoint, string message) { var compressedMessage = CompressMessage(message); if (compressedMessage.Length > MaxMessageSizeInUdp) { var numberOfChunksRequired = compressedMessage.Length / MaxMessageSizeInChunk + 1; if (numberOfChunksRequired > MaxNumberOfChunksAllowed) { return; } var messageId = GenerateMessageId(compressedMessage); for (var i = 0; i < numberOfChunksRequired; i++) { var skip = i * MaxMessageSizeInChunk; var messageChunkHeader = ConstructChunkHeader(messageId, i, numberOfChunksRequired); var messageChunkData = compressedMessage.Skip(skip).Take(MaxMessageSizeInChunk).ToArray(); var messageChunkFull = new byte[messageChunkHeader.Length + messageChunkData.Length]; messageChunkHeader.CopyTo(messageChunkFull, 0); messageChunkData.CopyTo(messageChunkFull, messageChunkHeader.Length); _transportClient.Send(messageChunkFull, messageChunkFull.Length, endPoint); } } else { _transportClient.Send(compressedMessage, compressedMessage.Length, endPoint); } }
public void Send(string login) { _clientInfo.Login = login; string serializedMessages = JsonConvert.SerializeObject(Container.GetContainer(nameof(ConnectionRequest), new ConnectionRequest(login))); _transportClient.Send(Container.GetContainer(nameof(ConnectionRequest), new ConnectionRequest(login))); }
/// <summary> /// Sends a UDP datagram to GrayLog2 server. /// </summary> /// <param name="serverIpAddress">IP address of the target GrayLog2 server.</param> /// <param name="serverPort">Port number of the target GrayLog2 instance.</param> /// <param name="message">Message (in JSON) to log.</param> public void Send(string serverIpAddress, int serverPort, string message) { var compressedMessage = CompressMessage(message); if (compressedMessage.Length > MaxMessageSizeInUdp) { _transportClient.Send(CreateChunks(compressedMessage), serverIpAddress, serverPort); } else { _transportClient.Send(compressedMessage, compressedMessage.Length, serverIpAddress, serverPort); } }
/// <summary> /// Sends a TCP datagram to GrayLog server /// </summary> /// <param name="ipEndPoint">IP Endpoint of the of the target GrayLog2 server</param> /// <param name="message">Message (in JSON) to log</param> public void Send(IPEndPoint ipEndPoint, string message) { //add null byte to signal end of message var msg = message + "\0"; _transportClient.Send(Encoding.ASCII.GetBytes(msg), msg.Length, ipEndPoint); }
/// <summary> /// Sends a UDP datagram to a LogStash server /// </summary> /// <param name="target">IP Endpoint of the of the target LogStash server</param> /// <param name="message">Message (in JSON) to log</param> public void Send(IPEndPoint target, string message) { var ipEndPoint = target; var compressedMessage = Encoding.UTF8.GetBytes(message); _transportClient.Send(compressedMessage, compressedMessage.Length, ipEndPoint); }
/// <summary> /// Sends a TCP Message to GrayLog2 server /// </summary> /// <param name="target">IP Endpoint of the of the target GrayLog2 server</param> /// <param name="message">Message (in JSON) to log</param> public void Send(IPEndPoint target, string message) { var ipEndPoint = target; var messageAsBytes = Encoding.UTF8.GetBytes(message.Replace("\n", "")); _transportClient.Send(messageAsBytes, messageAsBytes.Length, ipEndPoint); }
/// <summary> /// Sends the specified target. /// </summary> /// <param name="message">The message.</param> /// <exception cref="System.ArgumentException">message was too long</exception> /// <exception cref="ArgumentException">message was too long</exception> public Task Send(string message) { byte[] compressedMessage = message.Compress(); IList <byte[]> chunks = _chunkConverter.ConvertToChunks(compressedMessage); var sendTasks = chunks.Select(c => _transportClient.Send(c)); return(Task.WhenAll(sendTasks.ToArray())); }
/// <summary> /// Sends the specified target. /// </summary> /// <param name="message">The message.</param> /// <exception cref="System.ArgumentException">message was too long</exception> /// <exception cref="ArgumentException">message was too long</exception> public void Send(string message) { byte[] compressedMessage = message.Compress(); IList <byte[]> chunks = _chunkConverter.ConvertToChunks(compressedMessage); foreach (byte[] chunk in chunks) { _transportClient.Send(chunk); } }
/// <inheritdoc /> public Task Send(string message) { //Not support chunking and compressed payloads ='( var payload = System.Text.Encoding.UTF8.GetBytes(message); Array.Resize(ref payload, payload.Length + 1); payload[payload.Length - 1] = 0x00; return(_tcpClient.Send(payload)); }
/// <summary> /// Sends a UDP datagram to GrayLog2 server /// </summary> /// <param name="target">IP Endpoint of the of the target GrayLog2 server</param> /// <param name="message">Message (in JSON) to log</param> public void Send(IPEndPoint target, string message, int?overrideMaxUdpPackageSize = null) { var ipEndPoint = target; var compressedMessage = CompressMessage(message); int maxUdpSize = overrideMaxUdpPackageSize ?? MaxMessageSizeInUdp; int maxMessageSize = maxUdpSize - 12; if (compressedMessage.Length > maxUdpSize) { //Our compressed message is too big to fit in a single datagram. Need to chunk... //https://github.com/Graylog2/graylog2-docs/wiki/GELF "Chunked GELF" var numberOfChunksRequired = compressedMessage.Length / maxMessageSize + 1; if (numberOfChunksRequired > MaxNumberOfChunksAllowed) { return; } var messageId = GenerateMessageId(compressedMessage); for (var i = 0; i < numberOfChunksRequired; i++) { var skip = i * maxMessageSize; var messageChunkHeader = ConstructChunkHeader(messageId, i, numberOfChunksRequired); var messageChunkData = compressedMessage.Skip(skip).Take(maxMessageSize).ToArray(); var messageChunkFull = new byte[messageChunkHeader.Length + messageChunkData.Length]; messageChunkHeader.CopyTo(messageChunkFull, 0); messageChunkData.CopyTo(messageChunkFull, messageChunkHeader.Length); _transportClient.Send(messageChunkFull, messageChunkFull.Length, ipEndPoint); } } else { _transportClient.Send(compressedMessage, compressedMessage.Length, ipEndPoint); } }
/// <summary> /// Sends a UDP datagram to GrayLog2 server /// </summary> /// <param name="serverIpAddress">IP address of the target GrayLog2 server</param> /// <param name="serverPort">Port number of the target GrayLog2 instance</param> /// <param name="message">Message (in JSON) to log</param> public void Send(string serverIpAddress, int serverPort, string message) { var ipAddress = IPAddress.Parse(serverIpAddress); var ipEndPoint = new IPEndPoint(ipAddress, serverPort); var compressedMessage = CompressMessage(message); if (compressedMessage.Length > MaxMessageSizeInUdp) { //Our compressed message is too big to fit in a single datagram. Need to chunk... //https://github.com/Graylog2/graylog2-docs/wiki/GELF "Chunked GELF" var numberOfChunksRequired = compressedMessage.Length / MaxMessageSizeInChunk + 1; if (numberOfChunksRequired > MaxNumberOfChunksAllowed) { return; } var messageId = GenerateMessageId(compressedMessage); for (var i = 0; i < numberOfChunksRequired; i++) { var skip = i * MaxMessageSizeInChunk; var messageChunkHeader = ConstructChunkHeader(messageId, i, numberOfChunksRequired); var messageChunkData = compressedMessage.Skip(skip).Take(MaxMessageSizeInChunk).ToArray(); var messageChunkFull = new byte[messageChunkHeader.Length + messageChunkData.Length]; messageChunkHeader.CopyTo(messageChunkFull, 0); messageChunkData.CopyTo(messageChunkFull, messageChunkHeader.Length); _transportClient.Send(messageChunkFull, messageChunkFull.Length, ipEndPoint); } } else { _transportClient.Send(compressedMessage, compressedMessage.Length, ipEndPoint); } }
public Task Send(string message) { return(_transportClient.Send(message)); }
public void AddChat(List <string> namesOfClients) { namesOfClients.Insert(0, _clientInfo.Login); _transportClient.Send(Container.GetContainer(nameof(AddChatRequest), new AddChatRequest(_clientInfo.Login, namesOfClients))); }
public void ConnectToChat(int numberChat) { _transportClient.Send(Container.GetContainer(nameof(ConnectToChatRequest), new ConnectToChatRequest(_clientInfo.Login, numberChat))); }