using System;
using System.Text;
namespace SocketHttpListener
{
///
/// Contains the event data associated with a event.
///
///
/// A event occurs when the receives
/// a text or binary data frame.
/// If you want to get the received data, you access the or
/// property.
///
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
///
/// Gets the received data as a .
///
///
/// A that contains the received data.
///
public string Data
{
get
{
return _data;
}
}
///
/// Gets the received data as an array of .
///
///
/// An array of that contains the received data.
///
public byte[] RawData
{
get
{
return _rawData;
}
}
///
/// Gets the type of the received data.
///
///
/// One of the values, indicates the type of the received data.
///
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
}
}