From 6e3ecf34f1bf10dcfda57a80308ff1fcfccad682 Mon Sep 17 00:00:00 2001 From: fcolin Date: Thu, 1 Feb 2007 09:55:04 +0000 Subject: Utilisateur : Fcolin Date : 13/01/06 Heure : 16:28 Archivé dans $/CSharp/Ivy/Ivy Commentaire: (vss 34) --- CSharp/Ivy/IvyPPC/Ivy.cs | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'CSharp/Ivy/IvyPPC') diff --git a/CSharp/Ivy/IvyPPC/Ivy.cs b/CSharp/Ivy/IvyPPC/Ivy.cs index d99942b..46ce746 100644 --- a/CSharp/Ivy/IvyPPC/Ivy.cs +++ b/CSharp/Ivy/IvyPPC/Ivy.cs @@ -18,6 +18,7 @@ namespace IvyBus using System.Globalization; using System.Text.RegularExpressions; using System.Text; + using System.Reflection; /// The Main bus Class /// @@ -237,12 +238,27 @@ namespace IvyBus debug = Properties.Settings.Default.IvyDebug; protocolVersion = Properties.Settings.Default.IvyProtocolVersion; #endif + } public Ivy(string name, string message, Control sync) :this( name, message ) { syncControl = sync; } - + public void AutoBinding(Type type) + { + //Get instance of the IvyBindingAttribute. + foreach (MethodInfo m in type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic)) + { + Console.WriteLine("IvyBinding Method " + m.Name); + foreach (IvyBindingAttribute attr in Attribute.GetCustomAttributes(m, typeof(IvyBindingAttribute))) + { + //TODO check paramater type MessageHandler + Console.WriteLine("IvyBinding " + attr.Expression); + bindMsg(attr.Expression, (MessageHandler)Delegate.CreateDelegate(typeof(MessageHandler), m)); + } + } + + } /// connects the Ivy bus to a domain or list of domains. /// /// @@ -481,6 +497,7 @@ namespace IvyBus /// // // for compatibility raison with old IVY + [Obsolete("Will be removed in next version")] public int bindMsg(string regexp, MessageHandler callback) { return bindMsg( regexp, callback, null); @@ -864,6 +881,12 @@ namespace IvyBus return domainaddr + ":" + port; } } - - } + + + public static bool ValidatingDomain(string p) + { + // domain if of the form ip1[:port][,ip2[:port]] with ip of the form n1.n2.n3.n4 + return Regex.IsMatch(p, @"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+"); + } + } } \ No newline at end of file -- cgit v1.1