Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        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)));
        }
Ejemplo n.º 3
0
        /// <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);
            }
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 6
0
        /// <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);
            }
        }
Ejemplo n.º 9
0
        /// <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));
        }
Ejemplo n.º 10
0
        /// <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);
            }
        }
Ejemplo n.º 11
0
        /// <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));
 }
Ejemplo n.º 13
0
 public void AddChat(List <string> namesOfClients)
 {
     namesOfClients.Insert(0, _clientInfo.Login);
     _transportClient.Send(Container.GetContainer(nameof(AddChatRequest), new AddChatRequest(_clientInfo.Login, namesOfClients)));
 }
Ejemplo n.º 14
0
 public void ConnectToChat(int numberChat)
 {
     _transportClient.Send(Container.GetContainer(nameof(ConnectToChatRequest), new ConnectToChatRequest(_clientInfo.Login, numberChat)));
 }