[Freeswitch-svn] [commit] r8817 - in freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk: EventWatcher FreeSwitch.EventSocket.Test FreeSwitchEventSocket FreeSwitchEventSocket/ChannelEvents FreeSwitchEventSocket/Commands FreeSwitchEventSocket/Events FreeSwitchEventSocket/SipEvents
Freeswitch SVN
verifier at freeswitch.org
Mon Jun 23 11:53:52 EDT 2008
Author: verifier
Date: Mon Jun 23 11:53:51 2008
New Revision: 8817
Added:
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.Designer.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.resx
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelPark.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventSessionCrash.cs
Modified:
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/EventWatcher.csproj
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Program.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/Program.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/ChannelEvent.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelAnswer.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelApplication.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelBridge.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelCreate.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelDestroy.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecute.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecuteComplete.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelHangup.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOriginate.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOutgoing.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelProgress.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelState.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnbridge.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnpark.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventCodec.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmf.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmfStatus.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelInfo.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Originate.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventManager.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventBase.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/FreeSwitch.EventSocket.csproj
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PartyInfo.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PlainEventMsg.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresence.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceIn.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceOut.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceProbe.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventRoster.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaExpire.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaRegister.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/SipEvent.cs
freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/StringParser.cs
Log:
Completed EventWatcher, added ToString to most of the events (now showing relevant info). Recoded EventParser to be thread safe. EventParser/EventSocket now queues up all incoming data and parses it as soon as possible (true async handling)
Added: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.Designer.cs
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.Designer.cs Mon Jun 23 11:53:51 2008
@@ -0,0 +1,129 @@
+namespace EventWatcher
+{
+ partial class ChannelWatcher
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+ this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+ this.tv = new System.Windows.Forms.TreeView();
+ this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel();
+ this.tb = new System.Windows.Forms.RichTextBox();
+ this.toolStrip1.SuspendLayout();
+ this.splitContainer1.Panel1.SuspendLayout();
+ this.splitContainer1.Panel2.SuspendLayout();
+ this.splitContainer1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // toolStrip1
+ //
+ this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripLabel1});
+ this.toolStrip1.Location = new System.Drawing.Point(0, 0);
+ this.toolStrip1.Name = "toolStrip1";
+ this.toolStrip1.Size = new System.Drawing.Size(961, 25);
+ this.toolStrip1.TabIndex = 3;
+ this.toolStrip1.Text = "toolStrip1";
+ //
+ // splitContainer1
+ //
+ this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.splitContainer1.Location = new System.Drawing.Point(0, 25);
+ this.splitContainer1.Name = "splitContainer1";
+ this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
+ //
+ // splitContainer1.Panel1
+ //
+ this.splitContainer1.Panel1.Controls.Add(this.tb);
+ //
+ // splitContainer1.Panel2
+ //
+ this.splitContainer1.Panel2.Controls.Add(this.tv);
+ this.splitContainer1.Size = new System.Drawing.Size(961, 622);
+ this.splitContainer1.SplitterDistance = 307;
+ this.splitContainer1.TabIndex = 4;
+ //
+ // tv
+ //
+ this.tv.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tv.FullRowSelect = true;
+ this.tv.Location = new System.Drawing.Point(0, 0);
+ this.tv.Name = "tv";
+ this.tv.ShowLines = false;
+ this.tv.ShowPlusMinus = false;
+ this.tv.ShowRootLines = false;
+ this.tv.Size = new System.Drawing.Size(961, 311);
+ this.tv.TabIndex = 2;
+ //
+ // toolStripLabel1
+ //
+ this.toolStripLabel1.Name = "toolStripLabel1";
+ this.toolStripLabel1.Size = new System.Drawing.Size(37, 22);
+ this.toolStripLabel1.Text = "Rensa";
+ this.toolStripLabel1.Click += new System.EventHandler(this.toolStripLabel1_Click);
+ //
+ // tb
+ //
+ this.tb.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tb.Location = new System.Drawing.Point(0, 0);
+ this.tb.Name = "tb";
+ this.tb.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedBoth;
+ this.tb.Size = new System.Drawing.Size(961, 307);
+ this.tb.TabIndex = 0;
+ this.tb.Text = "";
+ this.tb.WordWrap = false;
+ //
+ // ChannelWatcher
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(961, 647);
+ this.Controls.Add(this.splitContainer1);
+ this.Controls.Add(this.toolStrip1);
+ this.Name = "ChannelWatcher";
+ this.Text = "ChannelWatcher";
+ this.Load += new System.EventHandler(this.ChannelWatcher_Load);
+ this.toolStrip1.ResumeLayout(false);
+ this.toolStrip1.PerformLayout();
+ this.splitContainer1.Panel1.ResumeLayout(false);
+ this.splitContainer1.Panel2.ResumeLayout(false);
+ this.splitContainer1.ResumeLayout(false);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.ToolStrip toolStrip1;
+ private System.Windows.Forms.ToolStripLabel toolStripLabel1;
+ private System.Windows.Forms.SplitContainer splitContainer1;
+ private System.Windows.Forms.TreeView tv;
+ private System.Windows.Forms.RichTextBox tb;
+
+ }
+}
\ No newline at end of file
Added: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.cs
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.cs Mon Jun 23 11:53:51 2008
@@ -0,0 +1,160 @@
+using System;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Windows.Forms;
+using FreeSwitch.EventSocket;
+
+namespace EventWatcher
+{
+ public partial class ChannelWatcher : Form
+ {
+ private EventManager _mgr = new EventManager();
+ private Color _currentColor = 0;
+ StringBuilder sb = new StringBuilder();
+
+ public ChannelWatcher()
+ {
+ InitializeComponent();
+ }
+
+ private void ChannelWatcher_Load(object sender, EventArgs e)
+ {
+ _mgr.Start("localhost");
+ _mgr.Subscribe(Event.All);
+ _mgr.EventReceived += OnPreSwitchEvent;
+ ClearTb();
+ // AddText("bajs");
+ }
+
+ private void OnPreSwitchEvent(EventBase theEvent)
+ {
+ if (tv.InvokeRequired)
+ BeginInvoke((MethodInvoker)delegate { OnSwitchEvent(theEvent); });
+ else
+ OnSwitchEvent(theEvent);
+ }
+
+ private void ClearTb()
+ {
+ /*
+{\rtf1\ansi\ansicpg1252\deff0\deflang1053
+ {\colortbl ;\red128\green0\blue0;\red0\green128\blue0;\red0\green0\blue255;\red0\green0\blue255;}
+ {\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}
+\viewkind4\uc1\pard\f0\fs17 Hello\cf1\b <\cf3\b0 (Wor"ld")\cf1\b >\cf0\b0 \par
+}
+ */
+ sb.Length = 0;
+ sb.Append(
+ @"{\rtf1\ansi\ansicpg1252\deff0\deflang1053"
+ + @"{\colortbl ;\red0\green0\blue0;\red128\green0\blue0;\red0\green128\blue0;\red0\green0\blue255;\red0\green0\blue255;}"
+ + @"{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}"
+ + @"\viewkind4\uc1\pard\f0\fs20\par \par}");
+ tb.Rtf = sb.ToString();
+ }
+
+ public enum Color
+ {
+ None,
+ Black,
+ Red,
+ Green,
+ Blue
+ }
+
+
+
+ [DllImport("user32.dll")]
+ public static extern bool LockWindowUpdate(IntPtr hWndLock);
+
+ private void AddText(string text)
+ {
+ text = text.Replace("\\", "\\\\").Replace("{", "\\{").Replace("}", "\\}");
+ string colored = string.Empty;
+ bool inQ = false;
+ bool bold = false;
+ foreach (char ch in text)
+ {
+ Color color = Color.None;
+ if (inQ)
+ {
+ if (ch == '"')
+ {
+ inQ = false;
+ color = Color.Black;
+ }
+ }
+ else if (char.IsLetter(ch))
+ color = Color.Black;
+ else if (Char.IsDigit(ch))
+ color = Color.Blue;
+ else if (ch == '"')
+ {
+ inQ = true;
+ color = Color.Green;
+ }
+ else
+ {
+ bold = true;
+ color = Color.Red;
+ }
+
+ if (color != Color.None)
+ SetColor(ref colored, color, bold);
+
+ if (ch == ')')
+ colored += ' ';
+ colored += ch;
+ if (ch == ')')
+ colored += ' ';
+ }
+ sb.Length = sb.Length - 5;
+ sb.AppendLine(colored);
+ sb.Append("\\par\\par}");
+ LockWindowUpdate(tb.Handle);
+ tb.Rtf = sb.ToString();
+ tb.SelectionStart = tb.Text.Length;
+ tb.ScrollToCaret();
+ LockWindowUpdate(IntPtr.Zero);
+ //ScrollToEnd(tb);
+
+ }
+
+ private void SetColor(ref string text, Color color, bool bold)
+ {
+ if (color != _currentColor)
+ {
+ text += "\\cf" + (int) color;
+ //if (bold)
+ // text += "\\b";
+ text += " ";
+ _currentColor = color;
+ }
+ }
+
+ private void OnSwitchEvent(EventBase theEvent)
+ {
+ AddText(theEvent.ToString());
+
+ ChannelEvent evt = theEvent as ChannelEvent;
+ if (evt == null)
+ return;
+
+ TreeNode node = tv.Nodes[evt.UniqueId];
+ if (node == null)
+ {
+ tv.Nodes.Add(evt.UniqueId, evt.ToString());
+ node = tv.Nodes[evt.UniqueId];
+ node.Tag = evt;
+ node.ToolTipText = evt.ToString().Replace(".", "\r\n");
+ }
+ node.Nodes.Add(new TreeNode(evt.ToString()));
+ }
+
+ private void toolStripLabel1_Click(object sender, EventArgs e)
+ {
+ tv.Nodes.Clear();
+ ClearTb();
+ }
+ }
+}
\ No newline at end of file
Added: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.resx
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/ChannelWatcher.resx Mon Jun 23 11:53:51 2008
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+</root>
\ No newline at end of file
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/EventWatcher.csproj
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/EventWatcher.csproj (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/EventWatcher.csproj Mon Jun 23 11:53:51 2008
@@ -40,6 +40,12 @@
<Compile Include="Call.cs" />
<Compile Include="CallManager.cs" />
<Compile Include="CallStateEvent.cs" />
+ <Compile Include="ChannelWatcher.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="ChannelWatcher.Designer.cs">
+ <DependentUpon>ChannelWatcher.cs</DependentUpon>
+ </Compile>
<Compile Include="Extension.cs" />
<Compile Include="Form1.cs">
<SubType>Form</SubType>
@@ -52,6 +58,10 @@
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
+ <EmbeddedResource Include="ChannelWatcher.resx">
+ <SubType>Designer</SubType>
+ <DependentUpon>ChannelWatcher.cs</DependentUpon>
+ </EmbeddedResource>
<EmbeddedResource Include="Form1.resx">
<SubType>Designer</SubType>
<DependentUpon>Form1.cs</DependentUpon>
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Program.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Program.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/Program.cs Mon Jun 23 11:53:51 2008
@@ -14,7 +14,7 @@
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new Form1());
+ Application.Run(new ChannelWatcher());
}
}
}
\ No newline at end of file
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/Program.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/Program.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitch.EventSocket.Test/Program.cs Mon Jun 23 11:53:51 2008
@@ -1,8 +1,7 @@
using System;
-using System.Collections.Generic;
+using System.Collections.Specialized;
using System.IO;
-using System.Reflection;
-using System.Text;
+using System.Threading;
namespace FreeSwitch.EventSocket.Test
{
@@ -10,18 +9,70 @@
{
static void Main(string[] args)
{
- EventManager mgr = new EventManager();
+ /*EventManager mgr = new EventManager();
mgr.Subscribe(Events.GetChannelEvents());
mgr.Start("localhost");
Console.ReadLine();
+ */
+ Program p = new Program();
+ p.Test();
- string buffer = File.ReadAllText("..\\..\\..\\watcherRaw.log");
- int bufLen = buffer.Length;
+ }
+
+ private int _counter;
+ private EventParser _parser;
+ Random _rand = new Random((int)DateTime.Now.Ticks);
+
+ public void Test()
+ {
+ _parser = new EventParser();
+ string text = File.ReadAllText("C:\\mymsgs.txt");
+ Thread[] threads = new Thread[5];
+ for (int i = 0; i < 5; ++i)
+ threads[i] = new Thread(FeedStream);
+
+ while (StreamFeeder(ref text)) ;
+ //Parse(text);
+/*
+ Parse(File.ReadAllText("C:\\events1.txt"));
+ Parse(File.ReadAllText("C:\\events2.txt"));
+ Parse(File.ReadAllText("C:\\events3.txt"));
+*/
+ }
+
+ public void FeedStream()
+ {
+
+ }
+ public bool StreamFeeder(ref string text)
+ {
+ int length;
+ if (text.Length < 5)
+ length = text.Length;
+ else
+ length = _rand.Next(text.Length / 2);
+
+ string myText = text.Substring(0, length);
+ Parse(myText);
+ text = text.Remove(0, length);
+ return text.Length > 0;
+ }
+
+ public void Parse(string text)
+ {
+ _parser.Append(text);
+ PlainEventMsg msg = _parser.ParseOne();
+ while (msg != null)
+ {
+ ++_counter;
+
+ NameValueCollection pars = msg.ParseBody(true);
+ Console.WriteLine(pars["event-name"]);
+
+ msg = _parser.ParseOne();
+ }
- EventParser ep = new EventParser(buffer);
- //int cnt = 0;
- EventSocket es = new EventSocket();
- es.Setup();
+
}
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/ChannelEvent.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/ChannelEvent.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/ChannelEvent.cs Mon Jun 23 11:53:51 2008
@@ -1,7 +1,3 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace FreeSwitch.EventSocket
{
public class ChannelEvent : EventBase
@@ -62,5 +58,12 @@
return true;
}
+
+ public override string ToString()
+ {
+ return
+ "ChannelEvent(" + _uniqueId + " [" + _callDirection + "] " + _answerState +
+ ", channelInfo{" + _channelInfo + "})";
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelAnswer.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelAnswer.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelAnswer.cs Mon Jun 23 11:53:51 2008
@@ -2,5 +2,9 @@
{
public class EventChannelAnswer : EventChannelState
{
+ public override string ToString()
+ {
+ return "ChannelAnswer." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelApplication.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelApplication.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelApplication.cs Mon Jun 23 11:53:51 2008
@@ -1,10 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace FreeSwitch.EventSocket
{
public class EventChannelApplication : EventChannelState
{
+ public override string ToString()
+ {
+ return "ChannelApplication." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelBridge.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelBridge.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelBridge.cs Mon Jun 23 11:53:51 2008
@@ -1,10 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace FreeSwitch.EventSocket
{
public class EventChannelBridge : EventChannelState
{
+ public override string ToString()
+ {
+ return "ChannelBridge." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelCreate.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelCreate.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelCreate.cs Mon Jun 23 11:53:51 2008
@@ -2,5 +2,9 @@
{
public class EventChannelCreate : ChannelEvent
{
+ public override string ToString()
+ {
+ return "ChannelCreate." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelDestroy.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelDestroy.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelDestroy.cs Mon Jun 23 11:53:51 2008
@@ -1,10 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace FreeSwitch.EventSocket
{
public class EventChannelDestroy : EventChannelState
{
+ public override string ToString()
+ {
+ return "ChannelDestroy." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecute.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecute.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecute.cs Mon Jun 23 11:53:51 2008
@@ -28,5 +28,10 @@
return true;
}
+
+ public override string ToString()
+ {
+ return "EventChannelExecute(" + _appName + ", '" + _arguments + "')." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecuteComplete.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecuteComplete.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelExecuteComplete.cs Mon Jun 23 11:53:51 2008
@@ -28,6 +28,11 @@
return true;
}
+
+ public override string ToString()
+ {
+ return "ExecuteComplete(" + _appName + ", '" + _arguments + "')." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelHangup.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelHangup.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelHangup.cs Mon Jun 23 11:53:51 2008
@@ -33,6 +33,10 @@
return true;
}
+ public override string ToString()
+ {
+ return "ChannelHangup(" + _hangupCause + ")." + base.ToString();
+ }
}
public enum HangupCause
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOriginate.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOriginate.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOriginate.cs Mon Jun 23 11:53:51 2008
@@ -1,11 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace FreeSwitch.EventSocket
{
public class EventChannelOriginate : ChannelEvent
{
-
+ public override string ToString()
+ {
+ return "ChannelOriginate." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOutgoing.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOutgoing.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelOutgoing.cs Mon Jun 23 11:53:51 2008
@@ -1,11 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace FreeSwitch.EventSocket
{
public class EventChannelOutgoing : EventChannelState
{
-
+ public override string ToString()
+ {
+ return "ChannelOutgoing." + base.ToString();
+ }
}
}
Added: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelPark.cs
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelPark.cs Mon Jun 23 11:53:51 2008
@@ -0,0 +1,10 @@
+namespace FreeSwitch.EventSocket
+{
+ public class EventChannelPark : EventChannelState
+ {
+ public override string ToString()
+ {
+ return "ChannelPark." + base.ToString();
+ }
+ }
+}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelProgress.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelProgress.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelProgress.cs Mon Jun 23 11:53:51 2008
@@ -1,10 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace FreeSwitch.EventSocket
{
public class EventChannelProgress : EventChannelState
{
+ public override string ToString()
+ {
+ return "ChannelProgress" + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelState.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelState.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelState.cs Mon Jun 23 11:53:51 2008
@@ -2,8 +2,15 @@
{
public class EventChannelState : ChannelEvent
{
- private PartyInfo _caller = new PartyInfo();
- private PartyInfo _originator = new PartyInfo();
+ private const string Yes = "yes";
+ private const string CallerTag = "caller-";
+ private const string OriginatorTag = "originator-";
+ private const string OriginateeTag = "originatee-";
+ private const string OtherLegTag = "other-leg-";
+ private const string ScreenBitTag = "screen-bit";
+ private PartyInfo _caller = PartyInfo.Empty;
+ private PartyInfo _originator = PartyInfo.Empty;
+ private PartyInfo _otherLeg = PartyInfo.Empty;
private bool _screenBit = false;
/// <summary>
@@ -34,30 +41,58 @@
set { _screenBit = value; }
}
+ /// <summary>
+ /// Other leg of call.
+ /// </summary>
+ public PartyInfo OtherLeg
+ {
+ get { return _otherLeg; }
+ set { _otherLeg = value; }
+ }
+
public override bool ParseCommand(string name, string value)
{
- if (name == "screen-bit")
+ if (name == ScreenBitTag)
{
- ScreenBit = value == "yes";
+ ScreenBit = value == Yes;
return true;
}
- else if (name.Length > 11 && name.Substring(0, 11) == "originator-"
- || name.Length > 11 && name.Substring(0, 11) == "originatee-")
+ else if (name.Length > 11 && name.Substring(0, 11) == OriginatorTag
+ || name.Length > 11 && name.Substring(0, 11) == OriginateeTag)
{
- if (_originator == null)
+ if (_originator == PartyInfo.Empty)
_originator = new PartyInfo();
return _originator.Parse(name.Substring(11), value);
}
- else if (name.Length > 7 && name.Substring(0, 7) == "caller-")
+ else if (name.Length > 7 && name.Substring(0, 7) == CallerTag)
{
- if (_caller == null)
+ if (_caller == PartyInfo.Empty)
_caller = new PartyInfo();
return _caller.Parse(name.Substring(7), value);
}
+ else if (name.Length > 10 && name.Substring(0, 10) == OtherLegTag)
+ {
+ if (_otherLeg == PartyInfo.Empty)
+ _otherLeg = new PartyInfo();
+
+ return _otherLeg.Parse(name.Substring(10), value);
+ }
else
return base.ParseCommand(name, value);
}
+
+ public override string ToString()
+ {
+ string temp = "ChannelState(";
+ if (Caller != PartyInfo.Empty)
+ temp += " Caller{" + Caller + "}";
+ if (Originator != PartyInfo.Empty)
+ temp += " Originator{" + Originator + "}";
+ if (OtherLeg != PartyInfo.Empty)
+ temp += " OtherLeg{" + OtherLeg + "}";
+ return temp + ")." + base.ToString();
+ }
}
}
\ No newline at end of file
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnbridge.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnbridge.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnbridge.cs Mon Jun 23 11:53:51 2008
@@ -1,10 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace FreeSwitch.EventSocket
{
public class EventChannelUnbridge : EventChannelState
{
+ public override string ToString()
+ {
+ return "ChannelUnbridge." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnpark.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnpark.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelUnpark.cs Mon Jun 23 11:53:51 2008
@@ -1,10 +1,10 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace FreeSwitch.EventSocket
{
public class EventChannelUnpark : EventChannelState
{
+ public override string ToString()
+ {
+ return "ChannelUnpark." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventCodec.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventCodec.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventCodec.cs Mon Jun 23 11:53:51 2008
@@ -2,5 +2,9 @@
{
public class EventCodec : EventChannelState
{
+ public override string ToString()
+ {
+ return "Codec." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmf.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmf.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmf.cs Mon Jun 23 11:53:51 2008
@@ -31,5 +31,10 @@
return base.ParseCommand(name, value);
}
+
+ public override string ToString()
+ {
+ return "Dtmf(" + _digit + ")." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmfStatus.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmfStatus.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventDtmfStatus.cs Mon Jun 23 11:53:51 2008
@@ -27,5 +27,10 @@
return base.ParseCommand(name, value);
}
+
+ public override string ToString()
+ {
+ return "DtmfStatus." + base.ToString();
+ }
}
}
Added: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventSessionCrash.cs
==============================================================================
--- (empty file)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventSessionCrash.cs Mon Jun 23 11:53:51 2008
@@ -0,0 +1,10 @@
+namespace FreeSwitch.EventSocket.ChannelEvents
+{
+ public class EventSessionCrash : ChannelEvent
+ {
+ public override string ToString()
+ {
+ return "SessionCrash." + base.ToString();
+ }
+ }
+}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelInfo.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelInfo.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelInfo.cs Mon Jun 23 11:53:51 2008
@@ -9,8 +9,10 @@
SoftExecute, // Channel is in a passive transmit state
Execute, // Channel is executing it's dialplan
ExchangeMedia, // Channel is exchanging media
+ Park,
ConsumeMedia, // Channel is consuming media
Hibernate, // Channel is in a sleep state
+ Reset,
Hangup, // Channel is flagged for hangup and ready to end
Done, // Channel is ready to be destroyed and out of the state machine
Unknown
@@ -21,9 +23,9 @@
{
private ChannelState _state;
private int _stateNumber;
- private string _profile;
- private string _address;
- private string _hostName;
+ private string _profile = string.Empty;
+ private string _address = string.Empty;
+ private string _hostName = string.Empty;
private string _protocol = string.Empty;
private string _readCodecName;
private int _readCodecRate;
@@ -209,10 +211,12 @@
case "CS_SOFT_EXECUTE": return ChannelState.SoftExecute;
case "CS_EXECUTE": return ChannelState.Execute;
case "CS_EXCHANGE_MEDIA": return ChannelState.ExchangeMedia;
+ case "CS_PARK": return ChannelState.Park;
case "CS_CONSUME_MEDIA": return ChannelState.ConsumeMedia;
case "CS_HIBERNATE": return ChannelState.Hibernate;
case "CS_HANGUP": return ChannelState.Hangup;
case "CS_DONE": return ChannelState.Done;
+ case "CS_RESET": return ChannelState.Reset;
default: return ChannelState.Unknown;
}
}
@@ -221,5 +225,10 @@
{
return "Unknown";
}
+
+ public override string ToString()
+ {
+ return _address + "@" + _hostName + ": " + _state;
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Originate.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Originate.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/Originate.cs Mon Jun 23 11:53:51 2008
@@ -25,6 +25,7 @@
private readonly IList<ChannelVariable> _variables = new List<ChannelVariable>();
private string _callerIdName = null;
private string _callerIdNumber = null;
+ private bool _varsAdded = false;
public Originate()
{}
@@ -73,9 +74,13 @@
{
get
{
- _variables.Add(new ChannelVariable("origination_caller_id_name", CallerIdName ?? _caller.Extension));
- if (!string.IsNullOrEmpty(_callerIdNumber))
- _variables.Add(new ChannelVariable("origination_caller_id_number", _callerIdNumber));
+ if (!_varsAdded)
+ {
+ _variables.Add(new ChannelVariable("origination_caller_id_name", CallerIdName ?? _caller.Extension));
+ if (!string.IsNullOrEmpty(_callerIdNumber))
+ _variables.Add(new ChannelVariable("origination_caller_id_number", _callerIdNumber));
+ _varsAdded = true;
+ }
string variables = string.Empty;
foreach (ChannelVariable var in _variables)
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventManager.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventManager.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventManager.cs Mon Jun 23 11:53:51 2008
@@ -13,8 +13,8 @@
{
private readonly EventSocket _socket = new EventSocket();
public event EventHandler EventReceived;
- private EventsWriter _writer;
- private TextWriter _myWriter;
+ private readonly EventsWriter _writer;
+ private readonly TextWriter _rawLog;
public string Password
{
set { _socket.Password = value; }
@@ -22,13 +22,14 @@
public EventManager()
{
- _writer = MyWriter;
- _myWriter = new StreamWriter(new FileStream("C:\\temp\\WatcherRow.log", FileMode.Create, FileAccess.Write, FileShare.ReadWrite));
+ _writer = RawWriter;
+ _rawLog = new StreamWriter(new FileStream("C:\\temp\\WatcherRaw.log", FileMode.Create, FileAccess.Write, FileShare.ReadWrite));
}
- private void MyWriter(string text)
+ private void RawWriter(string text)
{
- _myWriter.Write(text);
+ _rawLog.Write(text);
+ _rawLog.Flush();
}
@@ -68,7 +69,7 @@
protected void OnMessage(PlainEventMsg msg)
{
- NameValueCollection parameters = msg.BodyToNameValue(true);
+ NameValueCollection parameters = msg.ParseBody(true);
string eventName = parameters["event-name"];
if (eventName == null)
return;
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventParser.cs Mon Jun 23 11:53:51 2008
@@ -1,99 +1,190 @@
-using EventSocketParser;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
namespace FreeSwitch.EventSocket
{
public class EventParser
{
- private PlainEventMsg _msg;
- private readonly StringParser _parser;
+ private static readonly char[] BugWorkaround = {'C', 'o', 'n', 't', 'e', 'n', 't', '-'};
+ private readonly StringBuilder _text = new StringBuilder();
+ private readonly Queue<string> _piecesToAppend = new Queue<string>();
- public EventParser(string text)
+ public string Text
{
- _parser = new StringParser(text);
+ get { return _text.ToString(); }
}
- public PlainEventMsg ParseMessage()
+ internal static void ParseHeaders(PlainEventMsg msg, string header)
{
- _parser.ClearSavedPositions();
- _msg = new PlainEventMsg();
-
- // Save pos if we cant parse the whole message
- _parser.SavePos();
-
- ReadHeader();
- if (!_msg.ValidateHeader())
- {
- _parser.RestorePos();
- return null;
- }
-
- // skip empty line between body and header
- _parser.ReadLine(true);
-
- // we got no body.
- if (_msg.ContentLength == -1)
- return _msg;
-
- // Unfortunately, \n\n doesnt appear after all content.
- if (_msg.ContentLength != 0)
- _msg.Body = _parser.Read(_msg.ContentLength);
- else
- _msg.Body = _parser.ReadToEmptyLine();
-
- // assume that we have not got a complete packet yet.
- if (!_msg.Validate())
- {
- _parser.RestorePos();
- return null;
- }
-
- return _msg;
- }
-
- public bool ReadHeader()
- {
- // skip empty lines
- while (!_parser.EOF && _parser.PeekWord(true, true) == string.Empty)
- _parser.ReadLine(false);
-
- if (_parser.EOF)
- return false;
-
- string name = _parser.Read(':', true);
+ StringParser parser = new StringParser(header);
+ string name = parser.Read(':', true);
while (name != string.Empty)
{
switch (name)
{
case "Content-Length":
- _msg.ContentLength = int.Parse(_parser.ReadLine(true));
+ msg.ContentLength = int.Parse(parser.ReadLine(true));
break;
case "Content-Type":
- _msg.ContentType = _parser.ReadLine(true);
+ msg.ContentType = parser.ReadLine(true);
break;
case "Reply-Text":
- _msg.Body = _parser.ReadLine();
+ msg.Body = parser.ReadLine(true);
break;
}
// empty line == end of header
- if (_parser.EOL)
+ if (parser.EOL)
break;
- name = _parser.Read(':', true);
+ name = parser.Read(':', true);
}
+ }
+ /*
+ private int IsLineBreaks(int pos)
+ {
+ if (pos > 0 && Text[pos] == '\n' && Text[pos - 1] == '\n')
+ return 1;
+ if (pos > 3 && Text[pos] == '\n' && Text[pos - 1] == '\r'
+ && Text[pos - 2] == '\n' && Text[pos - 3] == '\r')
+ return 3;
+ return 0;
+ }
+ */
+ public void Clear()
+ {
+ lock (Text)
+ _text.Length = 0;
+ }
- return _msg.ContentType != string.Empty;
+ private void IgnoreLineBreaks(ref int i)
+ {
+ while (i < Text.Length && (Text[i] == '\n' || Text[i] == '\r'))
+ ++i;
}
- public void Append(string value)
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ /// <exception cref="InvalidDataException">If parsing failed due to invalid format.</exception>
+ public PlainEventMsg ParseOne()
{
- _parser.RemoveUsedContent();
- _parser.Append(value);
+ // Move queue to text
+ lock (_piecesToAppend)
+ {
+ while (_piecesToAppend.Count > 0)
+ _text.Append(_piecesToAppend.Dequeue());
+ }
+
+ PlainEventMsg plainEvent;
+ lock (Text)
+ {
+ int i = 0;
+
+ // find complete header
+ bool found = false;
+ for (; i < Text.Length - 1; ++i)
+ {
+ if (Text[i] == '\n' && Text[i+1] == '\n')
+ {
+ found = true;
+ break;
+ }
+ }
+ if (!found)
+ return null;
+
+ // extract header
+ char[] chars = new char[i];
+ Text.CopyTo(0, chars, 0, i);
+ string headers = new string(chars);
+#if DEBUG
+ Console.WriteLine("====================================");
+ Console.WriteLine("Headers: ");
+ Console.WriteLine(headers);
+#endif
+ IgnoreLineBreaks(ref i);
+
+ plainEvent = new PlainEventMsg();
+ ParseHeaders(plainEvent, headers);
+
+ // we got a body?
+ if (plainEvent.ContentLength > 0)
+ {
+ // Start of Empty header bugfix
+ // FS seems to send a header with content-length without sending an actual body
+ // this will eat that kind of header.
+ if (Text.Length >= BugWorkaround.Length + i)
+ {
+ found = true;
+ for (int index = 0; index < BugWorkaround.Length; ++index)
+ {
+ if (Text[index + i] != BugWorkaround[index])
+ {
+ found = false;
+ break;
+ }
+ }
+ if (found)
+ {
+ Text.Remove(0, i);
+ Console.WriteLine("Removing empty content header.");
+ return null;
+ }
+ }
+ // end of bugfix.
+
+ // not enough data for body.
+ if (plainEvent.ContentLength + i > Text.Length)
+ return null;
+
+ // extract body
+ chars = new char[plainEvent.ContentLength];
+ Text.CopyTo(i, chars, 0, plainEvent.ContentLength);
+ plainEvent.Body = new string(chars);
+
+ // check for errors.
+ int pos = plainEvent.Body.IndexOf("\n\n");
+ if (pos < plainEvent.Body.Length - 2)
+ {
+ Console.WriteLine("Fucked up event");
+ Console.WriteLine("Header");
+ Console.WriteLine(headers);
+ Console.WriteLine("Body");
+ Console.WriteLine(plainEvent.Body);
+ Console.WriteLine("=========================== EVERYTHING in _text ==============================");
+ Console.WriteLine(Text);
+ throw new InvalidDataException("Fucked up event: " + Text);
+ }
+
+#if DEBUG
+ Console.WriteLine("Body:");
+ Console.WriteLine(plainEvent.Body);
+#endif
+ if (plainEvent.Body.Length < plainEvent.ContentLength)
+ throw new InvalidDataException("Body contents are too small!");
+
+ // Move forward to next header
+ i += plainEvent.ContentLength;
+ IgnoreLineBreaks(ref i);
+ }
+
+
+ // remove header( + body) from buffer
+ Text.Remove(0, i);
+ }
+
+ return plainEvent;
}
- public void Clear()
+
+ public void Append(string text)
{
- _parser.Clear();
+ lock (_piecesToAppend)
+ _piecesToAppend.Enqueue(text);
}
}
}
\ No newline at end of file
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/EventSocket.cs Mon Jun 23 11:53:51 2008
@@ -24,18 +24,30 @@
private bool _autoConnect = true;
private Events _events;
private string _hostName;
- private readonly EventParser _parser = new EventParser(string.Empty);
+ private readonly EventParser _parser = new EventParser();
public event DataHandler DataReceived;
private string _password = "ClueCon";
private int _port = 8021;
- private object _lockobj = new object();
+ private readonly object _lockobj = new object();
private readonly byte[] _readBuffer = new byte[8192];
- private string _temp = string.Empty;
- private Socket _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ private Socket _socket;
private NetworkStream _stream;
private Timer _timer;
private bool _authed = false;
const int RetryTimeout = 5000;
+ private bool _parsing = false;
+
+ public EventSocket()
+ {
+ CreateSocket();
+ }
+
+ private void CreateSocket()
+ {
+ _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ _socket.NoDelay = true;
+ _socket.ReceiveBufferSize = 65535;
+ }
public string Password
{
@@ -112,15 +124,18 @@
private void OnReadCompleted(IAsyncResult ar)
{
- int bytesRead;
+ string inbuffer;
try
{
- bytesRead = _stream.EndRead(ar);
+ int bytesRead = _stream.EndRead(ar);
if (bytesRead == 0)
{
HandleDisconnect();
return;
}
+ inbuffer = Encoding.ASCII.GetString(_readBuffer, 0, bytesRead);
+ _parser.Append(inbuffer);
+ BeginRead();
}
catch (IOException)
{
@@ -129,14 +144,22 @@
return;
}
- string text = Encoding.ASCII.GetString(_readBuffer, 0, bytesRead);
if (DataReceived != null)
- DataReceived(text);
- _temp += text;
- _parser.Append(text);
- ParseMessages();
+ DataReceived(inbuffer);
- _stream.BeginRead(_readBuffer, 0, _readBuffer.Length, OnReadCompleted, null);
+ try
+ {
+ ParseMessages();
+ }
+ catch (InvalidDataException)
+ {
+ HandleDisconnect();
+ }
+ catch (ArgumentException)
+ {
+ Console.WriteLine(_parser.Text);
+ HandleDisconnect();
+ }
}
/// <summary>
@@ -176,39 +199,56 @@
_stream.Write(bytes, 0, bytes.Length);
}
+ static readonly object locker = new object();
private void ParseMessages()
{
- PlainEventMsg msg = _parser.ParseMessage();
- while (msg != null)
+
+ lock (locker)
{
- if (msg.ContentType == "auth/request")
- {
- AuthCommand cmd = new AuthCommand(_password);
- cmd.ReplyReceived += OnAuthed;
- _commands.Enqueue(cmd);
- Write(cmd + "\n\n");
- }
- else if (msg.ContentType == "command/reply"
- || msg.ContentType == "api/response")
+ if (_parsing)
+ return;
+ _parsing = true;
+ }
+
+ try
+ {
+ PlainEventMsg msg = _parser.ParseOne();
+ while (msg != null)
{
- if (_commands.Count > 0)
+ if (msg.ContentType == "auth/request")
{
- CmdBase cmd = _commands.Dequeue();
- cmd.HandleReply(cmd.CreateReply(msg.Body));
+ AuthCommand cmd = new AuthCommand(_password);
+ cmd.ReplyReceived += OnAuthed;
+ _commands.Enqueue(cmd);
+ Write(cmd + "\n\n");
+ }
+ else if (msg.ContentType == "command/reply"
+ || msg.ContentType == "api/response")
+ {
+ if (_commands.Count > 0)
+ {
+ CmdBase cmd = _commands.Dequeue();
+ cmd.HandleReply(cmd.CreateReply(msg.Body.Trim()));
+ }
+ else
+ {
+ Console.ForegroundColor = ConsoleColor.Red;
+ Console.WriteLine("Got command reply or api response, but no actual command/api: " + msg.Body);
+ Console.ForegroundColor = ConsoleColor.Gray;
+ }
}
else
{
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("Got command reply or api response, but no actual command/api: " + msg.Body);
- Console.ForegroundColor = ConsoleColor.Gray;
+ if (MessageReceived != null)
+ MessageReceived(msg);
}
- }
- else
- {
- if (MessageReceived != null)
- MessageReceived(msg);
- }
- msg = _parser.ParseMessage();
+ msg = _parser.ParseOne();
+ }
+ }
+ finally
+ {
+ lock (locker)
+ _parsing = false;
}
}
@@ -223,7 +263,7 @@
_parser.Clear();
_authed = false;
_socket.Close();
- _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+ CreateSocket();
if (_stream != null)
{
_stream.Dispose();
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventBase.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventBase.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Events/EventBase.cs Mon Jun 23 11:53:51 2008
@@ -155,5 +155,10 @@
}
return true;
}
+
+ public override string ToString()
+ {
+ return "Base(" + m_name + ")";
+ }
}
}
\ No newline at end of file
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/FreeSwitch.EventSocket.csproj
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/FreeSwitch.EventSocket.csproj (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/FreeSwitch.EventSocket.csproj Mon Jun 23 11:53:51 2008
@@ -43,10 +43,12 @@
<Compile Include="ChannelEvents\EventChannelBridge.cs" />
<Compile Include="ChannelEvents\ChannelEvent.cs" />
<Compile Include="ChannelEvents\EventChannelAnswer.cs" />
+ <Compile Include="ChannelEvents\EventChannelPark.cs" />
<Compile Include="ChannelEvents\EventChannelProgress.cs" />
<Compile Include="ChannelEvents\EventChannelUnbridge.cs" />
<Compile Include="ChannelEvents\EventChannelUnpark.cs" />
<Compile Include="ChannelEvents\EventCodec.cs" />
+ <Compile Include="ChannelEvents\EventSessionCrash.cs" />
<Compile Include="ChannelInfo.cs" />
<Compile Include="Commands\AnyCommand.cs">
</Compile>
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PartyInfo.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PartyInfo.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PartyInfo.cs Mon Jun 23 11:53:51 2008
@@ -1,12 +1,9 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace FreeSwitch.EventSocket
{
public class PartyInfo
{
- private string m_userName = string.Empty;
+ public static PartyInfo Empty = new PartyInfo();
+ private string _userName = string.Empty;
private string m_dialplan = string.Empty;
private string m_callerIdName = string.Empty;
private string m_callerIdNumber = string.Empty;
@@ -14,14 +11,14 @@
private string m_uniqueId = string.Empty;
private string m_source = string.Empty;
private string m_context = string.Empty;
- private string m_channelName = string.Empty;
+ private string _channelName = string.Empty;
private bool m_screenBit;
private bool m_privacyHideName;
private bool m_privacyHideNumber;
public PartyInfo()
{
- m_userName = string.Empty;
+ _userName = string.Empty;
m_dialplan = string.Empty;
m_callerIdName = string.Empty;
}
@@ -70,8 +67,8 @@
public string ChannelName
{
- get { return m_channelName; }
- set { m_channelName = value; }
+ get { return _channelName; }
+ set { _channelName = value; }
}
public bool ScreenBit
@@ -94,8 +91,8 @@
public string UserName
{
- get { return m_userName; }
- set { m_userName = value; }
+ get { return _userName; }
+ set { _userName = value; }
}
public bool Parse(string name, string value)
@@ -103,7 +100,7 @@
switch (name)
{
case "username":
- m_userName = value;
+ _userName = value;
break;
case "dialplan":
Dialplan = value;
@@ -146,5 +143,11 @@
}
+ public override string ToString()
+ {
+ return _channelName + "(" + CallerIdName + "/" + CallerIdNumber + ") id: "+UniqueId+", destination: " + DestinationNumber;
+
+ }
+
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PlainEventMsg.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PlainEventMsg.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/PlainEventMsg.cs Mon Jun 23 11:53:51 2008
@@ -1,6 +1,5 @@
using System;
using System.Collections.Specialized;
-using EventSocketParser;
namespace FreeSwitch.EventSocket
{
@@ -50,7 +49,7 @@
}
- public NameValueCollection BodyToNameValue(bool urlDecodeValues)
+ public NameValueCollection ParseBody(bool urlDecodeValues)
{
NameValueCollection items = new NameValueCollection();
StringParser parser = new StringParser(_body);
@@ -64,7 +63,7 @@
{
items.Add(name.ToLower(), Uri.UnescapeDataString(value));
}
- catch (UriFormatException)
+ catch (UriFormatException)
{
// add the value unformatted
items.Add(name.ToLower(), value);
@@ -77,4 +76,4 @@
return items;
}
}
-}
+}
\ No newline at end of file
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresence.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresence.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresence.cs Mon Jun 23 11:53:51 2008
@@ -10,7 +10,7 @@
//private string _expires; //not "presencein/register", "presenceout/register"
private string _eventType = string.Empty;
private string _login = string.Empty;
- private EventChannelState _channelState;
+ private EventChannelState _channelState = new EventChannelState();
public string Login
{
@@ -71,6 +71,7 @@
* */
public override bool ParseCommand(string name, string value)
{
+ bool res = _channelState.ParseCommand(name, value);
switch (name)
{
case "status":
@@ -87,6 +88,7 @@
break;
default:
+
if (name.Length > 7 && name.Substring(0, 7) == "caller-")
{
if (Caller == null)
@@ -98,15 +100,16 @@
if (base.ParseCommand(name, value))
return true;
else
- {
- if (_channelState == null)
- _channelState = new EventChannelState();
- return _channelState.ParseCommand(name, value);
- }
+ return res;
}
}
return true;
}
+
+ public override string ToString()
+ {
+ return "Presence(" + _login + ", " + _status + ")." + _channelState + "." + base.ToString();
+ }
}
}
\ No newline at end of file
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceIn.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceIn.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceIn.cs Mon Jun 23 11:53:51 2008
@@ -2,5 +2,9 @@
{
public class EventPresenceIn : EventPresence
{
+ public override string ToString()
+ {
+ return "PresenceIn." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceOut.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceOut.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceOut.cs Mon Jun 23 11:53:51 2008
@@ -2,7 +2,11 @@
{
public class EventPresenceOut : EventPresence
{
-
+ public override string ToString()
+ {
+ return "PresenceOut." + base.ToString();
+ }
+
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceProbe.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceProbe.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresenceProbe.cs Mon Jun 23 11:53:51 2008
@@ -6,5 +6,11 @@
{
class EventPresenceProbe : EventPresence
{
+ public override string ToString()
+ {
+ return "PresenceProbe." + base.ToString();
+ }
+
}
+
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventRoster.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventRoster.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventRoster.cs Mon Jun 23 11:53:51 2008
@@ -1,7 +1,3 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
namespace FreeSwitch.EventSocket
{
class EventRoster : SipEvent
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaExpire.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaExpire.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaExpire.cs Mon Jun 23 11:53:51 2008
@@ -59,5 +59,10 @@
return true;
}
+
+ public override string ToString()
+ {
+ return "SofiaExpire(" + _userName + "@" + _domain + ")." + base.ToString();
+ }
}
}
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaRegister.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaRegister.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventSofiaRegister.cs Mon Jun 23 11:53:51 2008
@@ -88,5 +88,12 @@
}
return true;
}
+
+ public override string ToString()
+ {
+ return "SofiaRegister(" + _user + "@" + _domain + ", " + _expires + ")." + base.ToString();
+ }
}
+
+
}
\ No newline at end of file
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/SipEvent.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/SipEvent.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/SipEvent.cs Mon Jun 23 11:53:51 2008
@@ -35,5 +35,10 @@
}
return true;
}
+
+ public override string ToString()
+ {
+ return "Sip(" + _from + ")." + base.ToString();
+ }
}
}
\ No newline at end of file
Modified: freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/StringParser.cs
==============================================================================
--- freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/StringParser.cs (original)
+++ freeswitch/trunk/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/StringParser.cs Mon Jun 23 11:53:51 2008
@@ -1,6 +1,6 @@
using System.Collections.Generic;
-namespace EventSocketParser
+namespace FreeSwitch.EventSocket
{
internal class StringParser
{
@@ -44,12 +44,8 @@
public void RestorePos()
{
- _pos = _savedPositions.Pop();
- }
-
- public void RemoveSavedPos()
- {
- _savedPositions.Pop();
+ if (_savedPositions.Count > 0)
+ _pos = _savedPositions.Pop();
}
public void ClearSavedPositions()
@@ -59,17 +55,19 @@
private bool IsEOF(int pos)
{
- return pos >= _text.Length - 1;
+ return pos >= _text.Length;
}
public bool IsEmptyLine(bool skipWhitespaces)
{
if (EOF)
return false;
- else if (_pos == _text.Length - 1)
+ else if (_pos < _text.Length - 1)
return _text[_pos] == '\n';
- else
+ else if (_pos < _text.Length - 2)
return _text[_pos] == '\r' && _text[_pos + 1] == '\n';
+
+ return false;
}
public string PeekWord(bool skipWS, bool stopAtEOL)
@@ -126,10 +124,10 @@
int endpos = _pos;
_pos = pos;
- // Move to after new line chars
- if (_text[_pos] == '\r')
- _pos += 2;
- else
+ // Move to after new line chars
+ if (!EOF && _text[_pos] == '\r')
+ ++_pos;
+ if (!EOF && _text[_pos] == '\n')
++_pos;
// .. and the result is line without whitespaces at the end and without new line chars.
@@ -196,6 +194,9 @@
private int TrimEnd()
{
+ if (EOF)
+ return _pos;
+
int pos = _pos;
while (IsWS(_text[pos]))
--pos;
@@ -216,7 +217,9 @@
private bool IsEOL()
{
- if (_text[_pos] == '\r' && _text[_pos + 1] == '\n')
+ if (EOF)
+ return true;
+ if (_text[_pos] == '\r')
return true;
else if (_text[_pos] == '\n')
return true;
More information about the Freeswitch-svn
mailing list