mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 11:07:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			97 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="MessageEventArgs.Data"/> or
 | 
						|
  /// <see cref="MessageEventArgs.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 {
 | 
						|
      get {
 | 
						|
        return _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 {
 | 
						|
      get {
 | 
						|
        return _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 {
 | 
						|
      get {
 | 
						|
        return _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
 | 
						|
  }
 | 
						|
}
 |