mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-04 03:27:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Text;
 | 
						|
 | 
						|
namespace SocketHttpListener
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Contains the event data associated with a <see cref="WebSocket.OnMessage"/> event.
 | 
						|
    /// </summary>
 | 
						|
    /// <remarks>
 | 
						|
    /// A <see cref="WebSocket.OnMessage"/> event occurs when the <see cref="WebSocket"/> receives
 | 
						|
    /// a text or binary data frame.
 | 
						|
    /// If you want to get the received data, you access the <see cref="Data"/> or
 | 
						|
    /// <see cref="RawData"/> property.
 | 
						|
    /// </remarks>
 | 
						|
    public class MessageEventArgs : EventArgs
 | 
						|
    {
 | 
						|
        #region Private Fields
 | 
						|
 | 
						|
        private string _data;
 | 
						|
        private Opcode _opcode;
 | 
						|
        private byte[] _rawData;
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Internal Constructors
 | 
						|
 | 
						|
        internal MessageEventArgs(Opcode opcode, byte[] data)
 | 
						|
        {
 | 
						|
            _opcode = opcode;
 | 
						|
            _rawData = data;
 | 
						|
            _data = convertToString(opcode, data);
 | 
						|
        }
 | 
						|
 | 
						|
        internal MessageEventArgs(Opcode opcode, PayloadData payload)
 | 
						|
        {
 | 
						|
            _opcode = opcode;
 | 
						|
            _rawData = payload.ApplicationData;
 | 
						|
            _data = convertToString(opcode, _rawData);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Public Properties
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets the received data as a <see cref="string"/>.
 | 
						|
        /// </summary>
 | 
						|
        /// <value>
 | 
						|
        /// A <see cref="string"/> that contains the received data.
 | 
						|
        /// </value>
 | 
						|
        public string Data => _data;
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets the received data as an array of <see cref="byte"/>.
 | 
						|
        /// </summary>
 | 
						|
        /// <value>
 | 
						|
        /// An array of <see cref="byte"/> that contains the received data.
 | 
						|
        /// </value>
 | 
						|
        public byte[] RawData => _rawData;
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets the type of the received data.
 | 
						|
        /// </summary>
 | 
						|
        /// <value>
 | 
						|
        /// One of the <see cref="Opcode"/> values, indicates the type of the received data.
 | 
						|
        /// </value>
 | 
						|
        public Opcode Type => _opcode;
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Private Methods
 | 
						|
 | 
						|
        private static string convertToString(Opcode opcode, byte[] data)
 | 
						|
        {
 | 
						|
            return data.Length == 0
 | 
						|
                   ? string.Empty
 | 
						|
                   : opcode == Opcode.Text
 | 
						|
                     ? Encoding.UTF8.GetString(data, 0, data.Length)
 | 
						|
                     : opcode.ToString();
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |