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 }