You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.8 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ProxyCore.Messages
{
public class Message
{
internal Message(bool isNaturalMessage)
{
IsNaturalMessage = isNaturalMessage;
}
/// <summary>
/// Contents of the message.
/// </summary>
public string Msg
{
get
{
return _msg;
}
set
{
_msg = value;
MsgNoColor = _msg == null ? null : Colors.RemoveColors(_msg, false);
}
}
private string _msg;
/// <summary>
/// If this is set ignore message and send this byte data instead. Color codes
/// will not be parsed by server and this is sent as is.
/// </summary>
public byte[] MsgData = null;
/// <summary>
/// This is message but without colors. Used for triggering non-ansi triggers.
/// </summary>
internal string MsgNoColor = null;
/// <summary>
/// Which clients should receive the message. This is a mask for security levels.
/// For example value "3" would only send this message to security level 1 and 2.
/// Set ulong.MaxValue (default) to send to all clients or 0 to send to noone.
/// This field is ignored when sending message to Aardwolf (as a command).
/// </summary>
public ulong AuthMask = ulong.MaxValue;
/// <summary>
/// This setting is used to send the message to specific clients (using client ID).
/// Enter new uint[] { 0 } to send to Aardwolf and null to send to all clients (default).
/// </summary>
public uint[] Clients = null;
/// <summary>
/// Is this message natural (client entered command or Aardwolf sent message) or
/// is it generated by us, meaning Aardwolf did not send this and client did not enter
/// it as a command.
/// </summary>
public readonly bool IsNaturalMessage;
/// <summary>
/// What kind of line ending do we send with this message (default \n\r).
/// </summary>
public string LineEnding = "\n\r";
/// <summary>
/// When was message generated (send time may vary by some milliseconds)
/// </summary>
public readonly DateTime Timestamp = DateTime.Now;
/// <summary>
/// Options for message.
/// </summary>
public MessageFlags Flags = MessageFlags.None;
}
[Flags]
public enum MessageFlags
{
None = 0,
/// <summary>
/// This is a GMCP message the main module will be in Msg and the data will be in MsgData.
/// </summary>
GMCP = 0x1,
}
}