From d0580f63fdf9a5b56f103ac756fe8d3e1d1263c6 Mon Sep 17 00:00:00 2001 From: fcolin Date: Thu, 1 Feb 2007 09:53:49 +0000 Subject: Utilisateur : Fcolin Date : 23/06/06 Heure : 11:12 Créé Commentaire: (vss 1) --- CSharp/Ivy/IvyFilter/Filter.cs | 119 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 CSharp/Ivy/IvyFilter/Filter.cs diff --git a/CSharp/Ivy/IvyFilter/Filter.cs b/CSharp/Ivy/IvyFilter/Filter.cs new file mode 100644 index 0000000..1e4fbed --- /dev/null +++ b/CSharp/Ivy/IvyFilter/Filter.cs @@ -0,0 +1,119 @@ + +using System; +using IvyBus; +using System.Threading; +using Gnu; + +namespace IvyFilter +{ + class Filter + { + + internal Ivy bus; + + [STAThread] + public static void Main(System.String[] args) + { + GetOpt opt = new GetOpt(args, "b:n:t:"); + System.String domain = Ivy.GetDomain(null); + int nb = 10000; + int t = 1000; + Arg a; + while ((a = opt.NextArg() )!= null) + { + switch (a.Flag) + { + + case 'b': + domain = a.Parameter; + break; + + case 't': + t = int.Parse(a.Parameter); + break; + + case 'n': + nb = int.Parse(a.Parameter); + break; + + default: + System.Environment.Exit(0); + break; + + } + } + new Filter(domain, nb, t, true); + } + + private int nbmsg; + private int bounded = 0, unbounded = 0; + private string[] filter = new string[] { "GetDummy" }; + + public Filter(string domain, int n, int t, bool f) + { + System.Console.Out.WriteLine("trying Filter on " + n + " messages, " + t + " ms delay"); + nbmsg = n; + bus = new Ivy("Filter", "Filter ready"); + if (f) + bus.SentMessageFilter.AddRange(filter); + bus.BindingAdd += new EventHandler(bus_BindingAdd); + bus.BindingRemove += new EventHandler(bus_BindingRemove); + bus.BindingFilter += new EventHandler(bus_BindingFilter); + bus.Start(domain); + /* attend une seconde ou deux */ + try + { + Thread.Sleep(2000); + } + catch (System.Threading.ThreadInterruptedException ) + { + } + System.Console.Out.WriteLine(bounded + " bounded subscriptions, " + unbounded + " unbounded"); + System.Console.Out.WriteLine(bus.IvyClients.Count + " clients"); + DateTime debut = System.DateTime.Now; + TimeSpan total = new TimeSpan(); + DateTime debutlocal = System.DateTime.Now; + DateTime finlocal = System.DateTime.Now; + for (int i = 0; i < n; i++) + { + try + { + // System.out.println("sending msg"); + debutlocal = System.DateTime.Now; + bus.SendMsg("GetDummy message"); + finlocal = System.DateTime.Now; + total += finlocal - debutlocal; + Thread.Sleep( t ); + } + catch (IvyException ) + { + System.Environment.Exit(-1); + } + catch (ThreadInterruptedException ) + { + } + } + System.Console.Out.WriteLine(((f) ? "[filtered] " : "[non filtered] ") + total + "ms elapsed, " + (finlocal - debut) + " ms total out of " + n * t); + bus.Stop(); + if (f == true) + new Filter(domain, n, t, false); // relance le même test sans filtre + System.Console.ReadLine(); + } + + void bus_BindingFilter(object sender, IvyEventArgs e) + { + unbounded++; + } + + void bus_BindingRemove(object sender, IvyEventArgs e) + { + bounded--; + } + + void bus_BindingAdd(object sender, IvyEventArgs e) + { + bounded++; + } + + } +} \ No newline at end of file -- cgit v1.1