From ac07b961058ec5a84e3541cdd6b4c756982ecdc4 Mon Sep 17 00:00:00 2001 From: Sean Maddison Date: Fri, 30 Sep 2016 08:57:38 +0200 Subject: [PATCH] ManagerEvent layout and formatting changes --- .../Manager/Event/ManagerEvent.cs | 283 ++++++++---------- 1 file changed, 122 insertions(+), 161 deletions(-) diff --git a/Asterisk.2013/Asterisk.NET/Manager/Event/ManagerEvent.cs b/Asterisk.2013/Asterisk.NET/Manager/Event/ManagerEvent.cs index 1f298eb..71a8bc6 100644 --- a/Asterisk.2013/Asterisk.NET/Manager/Event/ManagerEvent.cs +++ b/Asterisk.2013/Asterisk.NET/Manager/Event/ManagerEvent.cs @@ -1,178 +1,139 @@ using System; -using System.Text; using System.Collections.Generic; namespace AsterNET.Manager.Event { - /// - /// Abstract base class for all Events that can be received from the Asterisk server.
- /// Events contain data pertaining to an event generated from within the Asterisk - /// core or an extension module.
- /// There is one conrete subclass of ManagerEvent per each supported Asterisk - /// Event. - ///
- public abstract class ManagerEvent : EventArgs, IParseSupport - { - private DateTime dateReceived; - private string privilege; - private string server; - private double timestamp; + /// + /// Abstract base class for all Events that can be received from the Asterisk server.
+ /// Events contain data pertaining to an event generated from within the Asterisk + /// core or an extension module.
+ /// There is one conrete subclass of ManagerEvent per each supported Asterisk Event. + /// + /// Channel / Privilege / UniqueId are not common to all events and should be moved to + /// derived event classes. + ///
+ public abstract class ManagerEvent : EventArgs, IParseSupport + { + #region Common Event Properties - private string uniqueId; - private string channel; - private ManagerConnection src; - protected Dictionary attributes; + /// + /// Store all unknown (without setter) keys from manager event.
+ /// Use in default Parse method + ///
+ public Dictionary Attributes { get; set; } - #region Constructors - public ManagerEvent() - { - this.dateReceived = DateTime.Now; - } + /// + /// Get/Set the name of the channel. + /// + public string Channel { get; set; } + /// + /// Get/Set the point in time this event was received from the Asterisk server.
+ /// Pseudo events that are not directly received from the asterisk server + /// (for example ConnectEvent and DisconnectEvent) may return null. + ///
+ public DateTime DateReceived { get; set; } + + /// + /// Get/Set the AMI authorization class of this event.
+ /// This is one or more of system, call, log, verbose, command, agent or user. + /// Multiple privileges are separated by comma.
+ /// Note: This property is not available from Asterisk 1.0 servers. + ///
+ public string Privilege { get; set; } + + /// + /// Specify a server to which to send your commands (x.x.x.x or hostname).
+ /// This should match the server name specified in your config file's "host" entry. + /// If you do not specify a server, the proxy will pick the first one it finds -- fine in single-server configurations. + ///
+ public string Server { get; set; } + + /// + /// The ManagerConnection the Event was sourced from. + /// + public ManagerConnection Source { get; set; } + + /// + /// Returns the timestamp for this event.
+ /// The timestamp property is available in Asterisk since 1.4 + /// if enabled in manager.conf by setting timestampevents = yes. + /// In contains the time the event was generated in seconds since the epoch. + ///
+ public double Timestamp { get; set; } + + /// + /// Get/Set the unique id of the channel. + /// + public string UniqueId { get; set; } + + #endregion + + #region Constructors + /// + /// Creates a new ManagerEvent. Source already set. + /// + public ManagerEvent() + { + this.DateReceived = DateTime.Now; + } + + /// + /// Creates a new ManagerEvent + /// + /// ManagerConnection passed through in the event. public ManagerEvent(ManagerConnection source) - : this() - { - this.src = source as ManagerConnection; - } - #endregion + : this() + { + this.Source = source; + } + #endregion + #region Methods - #region Attributes - /// - /// Store all unknown (without setter) keys from manager event.
- /// Use in default Parse method . - ///
- public Dictionary Attributes - { - get { return attributes; } - } - #endregion + /// + /// Unknown properties parser + /// + /// key name + /// key value + /// true - value parsed, false - can't parse value + public virtual bool Parse(string key, string value) + { + if (Attributes == null) + { + Attributes = new Dictionary(); + } - #region Server - /// - /// Specify a server to which to send your commands (x.x.x.x or hostname).
- /// This should match the server name specified in your config file's "host" entry. - /// If you do not specify a server, the proxy will pick the first one it finds -- fine in single-server configurations. - ///
- public string Server - { - get { return server; } - set { server = value; } - } - #endregion + if (Attributes.ContainsKey(key)) + { + Attributes[key] += string.Concat(Common.LINE_SEPARATOR, value); // Key already presents, add with delimiter + } + else + { + Attributes.Add(key, value); + } - #region Timestamp - /// - /// Returns the timestamp for this event.
- /// The timestamp property is available in Asterisk since 1.4 - /// if enabled in manager.conf by setting timestampevents = yes. - /// In contains the time the event was generated in seconds since the epoch. - ///
- public double Timestamp - { - get { return this.timestamp; } - set { this.timestamp = value; } - } - #endregion + return true; + } - #region DateReceived - /// - /// Get/Set the point in time this event was received from the Asterisk server.
- /// Pseudo events that are not directly received from the asterisk server - /// (for example ConnectEvent and DisconnectEvent) may return null. - ///
- public DateTime DateReceived - { - get { return this.dateReceived; } - set { this.dateReceived = value; } - } - #endregion + /// + /// Unknown properties parser. + /// + /// dictionary + /// updated dictionary + public virtual Dictionary ParseSpecial(Dictionary attributes) + { + return attributes; + } - #region Privilege - /// - /// Get/Set the AMI authorization class of this event.
- /// This is one or more of system, call, log, verbose, command, agent or user. - /// Multiple privileges are separated by comma.
- /// Note: This property is not available from Asterisk 1.0 servers. - ///
- public string Privilege - { - get { return privilege; } - set { this.privilege = value; } - } - #endregion - - #region Source - /// - /// Event source. - /// - public ManagerConnection Source - { - get { return this.src; } - } - #endregion - - #region UniqueId - /// - /// Get/Set the unique id of the channel. - /// - public string UniqueId - { - get { return uniqueId; } - set { this.uniqueId = value; } - } - #endregion - - #region Channel - /// - /// Get/Set the name of the channel. - /// - public string Channel - { - get { return channel; } - set { this.channel = value; } - } - #endregion - - - #region Parse(string key, string value) - /// - /// Unknown properties parser - /// - /// key name - /// key value - /// true - value parsed, false - can't parse value - public virtual bool Parse(string key, string value) - { - if (attributes == null) - attributes = new Dictionary(); - - if (attributes.ContainsKey(key)) - // Key already presents, add with delimiter - attributes[key] += string.Concat(Common.LINE_SEPARATOR, value); - else - attributes.Add(key, value); - return true; - } - #endregion - - #region ParseSpecial(Dictionary attributes) - /// - /// Unknown properties parser - /// - /// dictionary - /// updated dictionary - public virtual Dictionary ParseSpecial(Dictionary attributes) - { - return attributes; - } - #endregion - - #region ToString() + /// + /// Convert all properties to string + /// + /// All event details and properties as a string public override string ToString() - { - return Helper.ToString(this); - } - #endregion - } + { + return Helper.ToString(this); + } + #endregion + } }