jellyfin-server/SocketHttpListener/MessageEventArgs.cs

85 lines
2.3 KiB
C#
Raw Normal View History

2016-11-11 19:55:12 +00:00
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.
2019-01-13 20:37:13 +00:00
/// 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
2016-11-11 19:55:12 +00:00
private string _data;
private Opcode _opcode;
private byte[] _rawData;
2016-11-11 19:55:12 +00:00
#endregion
2016-11-11 19:55:12 +00:00
#region Internal Constructors
2016-11-11 19:55:12 +00:00
internal MessageEventArgs(Opcode opcode, byte[] data)
{
_opcode = opcode;
_rawData = data;
_data = convertToString(opcode, data);
}
2016-11-11 19:55:12 +00:00
internal MessageEventArgs(Opcode opcode, PayloadData payload)
{
_opcode = opcode;
_rawData = payload.ApplicationData;
_data = convertToString(opcode, _rawData);
}
2016-11-11 19:55:12 +00:00
#endregion
2016-11-11 19:55:12 +00:00
#region Public Properties
2016-11-11 19:55:12 +00:00
/// <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;
2016-11-11 19:55:12 +00:00
/// <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;
2016-11-11 19:55:12 +00:00
/// <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;
2016-11-11 19:55:12 +00:00
#endregion
2016-11-11 19:55:12 +00:00
#region Private Methods
2016-11-11 19:55:12 +00:00
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();
}
2016-11-11 19:55:12 +00:00
#endregion
}
2016-11-11 19:55:12 +00:00
}