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; private System.Windows.Forms.Button btBindSimple; private System.Windows.Forms.Button btUnbind; public IvyTest() { // // Requis pour la prise en charge du Concepteur Windows Forms // InitializeComponent(); bus = new Ivy("C# TESTBUS", "Testbus ready",this); bus.Debug = true; bus.clientConnected += new Ivy.ClientConnectedHandler( connect ); bus.clientDisconnected += new Ivy.ClientDisconnectedHandler( disconnect ); bus.addBinding +=new IvyBus.Ivy.ClientAddBindingHandler(bus_addBinding); bus.removeBinding +=new IvyBus.Ivy.ClientAddBindingHandler(bus_removeBinding); bus.dieReceived += new Ivy.DieHandler( die ); bus.directMessageReceived += new Ivy.DirectMessageHandler( directMessage ); bus.start(null); } /// /// 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.btUnbind = new System.Windows.Forms.Button(); this.btBindSimple = 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(24, 16); this.label1.TabIndex = 0; this.label1.Text = "exp:"; // // 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(32, 0); this.tbRegexp.Name = "tbRegexp"; this.tbRegexp.Size = new System.Drawing.Size(216, 20); this.tbRegexp.TabIndex = 2; this.tbRegexp.Text = "(.*)"; this.tbRegexp.TextChanged += new System.EventHandler(this.tbRegexp_TextChanged); // // 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(232, 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(384, 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(248, 0); this.btBind.Name = "btBind"; this.btBind.Size = new System.Drawing.Size(40, 32); this.btBind.TabIndex = 5; this.btBind.Text = "bind regexp"; 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(312, 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); // // btUnbind // this.btUnbind.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btUnbind.Location = new System.Drawing.Point(336, 0); this.btUnbind.Name = "btUnbind"; this.btUnbind.Size = new System.Drawing.Size(48, 24); this.btUnbind.TabIndex = 7; this.btUnbind.Text = "unbind"; this.btUnbind.Click += new System.EventHandler(this.btUnbind_Click); // // btBindSimple // this.btBindSimple.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btBindSimple.Location = new System.Drawing.Point(288, 0); this.btBindSimple.Name = "btBindSimple"; this.btBindSimple.Size = new System.Drawing.Size(40, 32); this.btBindSimple.TabIndex = 8; this.btBindSimple.Text = "bind simple"; this.btBindSimple.Click += new System.EventHandler(this.ExpressionCB); // // IvyTest // this.AcceptButton = this.btSend; this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(384, 266); this.Controls.Add(this.btBindSimple); this.Controls.Add(this.btUnbind); 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, byte[] arg) { append(client.ApplicationName + " direct Message " + id + arg); } public void RegexpCB(System.Object event_sender, System.EventArgs e) { // ajoute la nouvelle regex string regexp = tbRegexp.Text; regexp.Trim(); int regexp_id = bus.bindMsg(regexp, new Ivy.MessageHandler(receive)); tbRegexp.Text = ""; append( "bind("+regexp_id+") ->"+regexp); } public void ExpressionCB(System.Object event_sender, System.EventArgs e) { // ajoute la nouvelle regex string expression = tbRegexp.Text; expression.Trim(); int regexp_id = bus.bindSimpleMsg(expression, new Ivy.MessageHandler(receive)); tbRegexp.Text = ""; append( "bind("+regexp_id+") ->"+expression); } private void receive(IvyClient client, IvyArgument args) { string receive_str = "client " + client.ApplicationName + " envoie: ["; for (int i = 0; i < args.Length; i++) { receive_str += args[i].Value+ ","; } receive_str = receive_str.TrimEnd(new char[] { ',' }); receive_str += "]"; append(receive_str); } 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 != ""); } private void tbRegexp_TextChanged(object sender, System.EventArgs e) { bool enable = (tbRegexp.Text != ""); btBind.Enabled = enable; btBindSimple.Enabled = enable; btUnbind.Enabled = enable; } private void btUnbind_Click(object sender, System.EventArgs e) { // enleve la regex string regexp = tbRegexp.Text; bool removed = bus.unBindMsg( regexp ); if ( removed ) { append( "unbind("+regexp+")"); tbRegexp.Text = ""; } else { append( "unbind can't find binding ("+regexp+")"); } } private void bus_addBinding(IvyClient app, string arg) { append( app.ApplicationName + " add binding '"+arg+"'"); } private void bus_removeBinding(IvyClient app, string arg) { append( app.ApplicationName + " remove binding '"+arg+"'"); } } }