diff options
-rw-r--r-- | CSharp/Ivy/IvyProbe/IvyProbe.cs | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/CSharp/Ivy/IvyProbe/IvyProbe.cs b/CSharp/Ivy/IvyProbe/IvyProbe.cs new file mode 100644 index 0000000..f302062 --- /dev/null +++ b/CSharp/Ivy/IvyProbe/IvyProbe.cs @@ -0,0 +1,241 @@ +namespace IvyTest
+{
+ using System;
+ using System.Windows.Forms;
+ using IvyBus;
+
+ class IvyTest : System.Windows.Forms.Form
+ {
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox tbRegexp;
+ private System.Windows.Forms.TextBox tbMsg;
+ private System.Windows.Forms.Button btBind;
+ private System.Windows.Forms.Button btSend;
+ private System.Windows.Forms.TextBox ta;
+
+ /// <summary>
+ /// Variable nécessaire au concepteur.
+ /// </summary>
+ private System.ComponentModel.Container components = null;
+
+ internal Ivy bus;
+ internal String regexp;
+ internal int regexp_id;
+ public IvyTest()
+ {
+ //
+ // Requis pour la prise en charge du Concepteur Windows Forms
+ //
+ InitializeComponent();
+
+ regexp = "";
+ bus = new Ivy("C# TESTBUS", "Testbus ridi");
+ bus.Debug = true;
+ bus.clientConnected += new Ivy.ClientConnectedHandler( connect );
+ bus.clientDisconnected += new Ivy.ClientDisconnectedHandler( disconnect );
+ bus.dieReceived += new Ivy.DieHandler( die );
+ bus.directMessageReceived += new Ivy.DirectMessageHandler( directMessage );
+ bus.start(null);
+ regexp_id = -1;
+ }
+
+ /// <summary>
+ /// Nettoyage des ressources utilisées.
+ /// </summary>
+ protected override void Dispose( bool disposing )
+ {
+ stop();
+ bus = null;
+ if( disposing )
+ {
+ if(components != null)
+ {
+ components.Dispose();
+ }
+ }
+ base.Dispose( disposing );
+ }
+
+ #region Windows Form Designer generated code
+ /// <summary>
+ /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
+ /// le contenu de cette méthode avec l'éditeur de code.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.tbRegexp = new System.Windows.Forms.TextBox();
+ this.tbMsg = new System.Windows.Forms.TextBox();
+ this.ta = new System.Windows.Forms.TextBox();
+ this.btBind = new System.Windows.Forms.Button();
+ this.btSend = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.Location = new System.Drawing.Point(8, 8);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(40, 16);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "Regexp:";
+ //
+ // label2
+ //
+ this.label2.Location = new System.Drawing.Point(8, 248);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(56, 16);
+ this.label2.TabIndex = 1;
+ this.label2.Text = "Msg:";
+ //
+ // tbRegexp
+ //
+ this.tbRegexp.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.tbRegexp.Location = new System.Drawing.Point(64, 0);
+ this.tbRegexp.Name = "tbRegexp";
+ this.tbRegexp.Size = new System.Drawing.Size(224, 20);
+ this.tbRegexp.TabIndex = 2;
+ this.tbRegexp.Text = "regexp";
+ //
+ // tbMsg
+ //
+ this.tbMsg.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.tbMsg.Location = new System.Drawing.Point(72, 240);
+ this.tbMsg.Name = "tbMsg";
+ this.tbMsg.Size = new System.Drawing.Size(216, 20);
+ this.tbMsg.TabIndex = 3;
+ this.tbMsg.Text = "msg";
+ this.tbMsg.TextChanged += new System.EventHandler(this.tbMsg_TextChanged);
+ //
+ // ta
+ //
+ this.ta.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.ta.Location = new System.Drawing.Point(0, 32);
+ this.ta.Multiline = true;
+ this.ta.Name = "ta";
+ this.ta.Size = new System.Drawing.Size(368, 200);
+ this.ta.TabIndex = 4;
+ this.ta.Text = "";
+ //
+ // btBind
+ //
+ this.btBind.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.btBind.Location = new System.Drawing.Point(296, 0);
+ this.btBind.Name = "btBind";
+ this.btBind.Size = new System.Drawing.Size(64, 24);
+ this.btBind.TabIndex = 5;
+ this.btBind.Text = "bind";
+ this.btBind.Click += new System.EventHandler(this.RegexpCB);
+ //
+ // btSend
+ //
+ this.btSend.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.btSend.Location = new System.Drawing.Point(296, 240);
+ this.btSend.Name = "btSend";
+ this.btSend.Size = new System.Drawing.Size(64, 24);
+ this.btSend.TabIndex = 6;
+ this.btSend.Text = "Send";
+ this.btSend.Click += new System.EventHandler(this.SendCB);
+ //
+ // IvyTest
+ //
+ this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
+ this.ClientSize = new System.Drawing.Size(368, 266);
+ this.Controls.Add(this.btSend);
+ this.Controls.Add(this.btBind);
+ this.Controls.Add(this.ta);
+ this.Controls.Add(this.tbMsg);
+ this.Controls.Add(this.tbRegexp);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Name = "IvyTest";
+ this.Text = "IvyTest";
+ this.ResumeLayout(false);
+
+ }
+ #endregion
+ public void stop()
+ {
+ bus.clientConnected -= new Ivy.ClientConnectedHandler( connect );
+ bus.clientDisconnected -= new Ivy.ClientDisconnectedHandler( disconnect );
+ bus.dieReceived -= new Ivy.DieHandler( die );
+ bus.directMessageReceived -= new Ivy.DirectMessageHandler( directMessage );
+ bus.stop();
+ }
+ private void connect(IvyClient client)
+ {
+ append(client.ApplicationName + " connected ");
+ }
+ private void disconnect(IvyClient client)
+ {
+ append(client.ApplicationName + " disconnected ");
+ }
+ private bool die(IvyClient client, int id)
+ {
+ append("receive die from "+client.ApplicationName );
+ // return true terminate the application
+ return false;
+ }
+ private void directMessage(IvyClient client, int id, System.String arg)
+ {
+ append(client.ApplicationName + " direct Message " + id + arg);
+ }
+
+ public void RegexpCB(System.Object event_sender, System.EventArgs e)
+ {
+ // enlever l'ancienne regex
+ if ( regexp_id >=0 )
+ bus.unBindMsg(regexp_id);
+ // ajoute la nouvelle regex
+ regexp = tbRegexp.Text;
+ regexp.Trim();
+ regexp_id = bus.bindMsg(regexp, new Ivy.MessageHandler(receive));
+ tbRegexp.Text = "";
+ append( "bind("+regexp_id+") ->"+regexp);
+ }
+ private void receive(IvyClient client, String[] args)
+ {
+ String out_Renamed = "client " + client.ApplicationName + " envoie: [ ";
+ for (int i = 0; i < args.Length; i++)
+ out_Renamed = out_Renamed + args[i] + ((i < args.Length - 1)?" , ":"");
+ out_Renamed = out_Renamed + " ]";
+ append(out_Renamed);
+ }
+ private void append(System.String s)
+ {
+ // je mettrais bien la date, aussi.
+ ta.AppendText(s+"\r\n");
+ }
+
+ public void SendCB(System.Object event_sender, System.EventArgs e)
+ {
+ int count;
+ System.String tosend = tbMsg.Text;
+ tbMsg.Text = "";
+ count = bus.sendMsg(tosend);
+ append("Sending '" + tosend + "' count " + count);
+
+ }
+
+ [STAThread]
+ public static void Main(System.String[] args)
+ {
+ IvyTest tb = new IvyTest();
+ Application.Run(tb);
+
+ }
+
+ private void tbMsg_TextChanged(object sender, System.EventArgs e)
+ {
+ btSend.Enabled = (tbMsg.Text != "");
+ }
+
+ }
+
+ // EOF
+}
\ No newline at end of file |