jellyfin-server/SocketHttpListener/MessageEventArgs.cs

103 lines
2.6 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.
/// 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
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
{
get
{
return _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
{
get
{
return _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
{
get
{
return _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
}