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;
///
/// Variable nécessaire au concepteur.
///
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;
}
///
/// Nettoyage des ressources utilisées.
///
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
///
/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
/// le contenu de cette méthode avec l'éditeur de code.
///
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
}