From 98ab5d0164040427f7c554febae125686284e2a7 Mon Sep 17 00:00:00 2001 From: fcolin Date: Thu, 1 Feb 2007 12:03:55 +0000 Subject: modification structure svn --- IvyToDel/IvyDaemon/App.ico | Bin 0 -> 1078 bytes IvyToDel/IvyDaemon/IvyDaemon.cs | 169 +++++++++++++++++++++ IvyToDel/IvyDaemon/IvyDaemon.csproj | 154 +++++++++++++++++++ IvyToDel/IvyDaemon/IvyDaemon.csproj.vspscc | 10 ++ IvyToDel/IvyDaemon/IvyDaemon_TemporaryKey.pfx | Bin 0 -> 1676 bytes IvyToDel/IvyDaemon/Properties/AssemblyInfo.cs | 58 +++++++ IvyToDel/IvyDaemon/Properties/Settings.Designer.cs | 35 +++++ IvyToDel/IvyDaemon/Properties/Settings.settings | 9 ++ IvyToDel/IvyDaemon/Settings.cs | 28 ++++ IvyToDel/IvyDaemon/app.config | 15 ++ 10 files changed, 478 insertions(+) create mode 100644 IvyToDel/IvyDaemon/App.ico create mode 100644 IvyToDel/IvyDaemon/IvyDaemon.cs create mode 100644 IvyToDel/IvyDaemon/IvyDaemon.csproj create mode 100644 IvyToDel/IvyDaemon/IvyDaemon.csproj.vspscc create mode 100644 IvyToDel/IvyDaemon/IvyDaemon_TemporaryKey.pfx create mode 100644 IvyToDel/IvyDaemon/Properties/AssemblyInfo.cs create mode 100644 IvyToDel/IvyDaemon/Properties/Settings.Designer.cs create mode 100644 IvyToDel/IvyDaemon/Properties/Settings.settings create mode 100644 IvyToDel/IvyDaemon/Settings.cs create mode 100644 IvyToDel/IvyDaemon/app.config (limited to 'IvyToDel/IvyDaemon') diff --git a/IvyToDel/IvyDaemon/App.ico b/IvyToDel/IvyDaemon/App.ico new file mode 100644 index 0000000..3a5525f Binary files /dev/null and b/IvyToDel/IvyDaemon/App.ico differ diff --git a/IvyToDel/IvyDaemon/IvyDaemon.cs b/IvyToDel/IvyDaemon/IvyDaemon.cs new file mode 100644 index 0000000..8c0b069 --- /dev/null +++ b/IvyToDel/IvyDaemon/IvyDaemon.cs @@ -0,0 +1,169 @@ +/// François-Régis Colin +/// http://www.tls.cena.fr/products/ivy/ +/// * +/// (C) CENA +/// * +namespace IvyDaemon +{ + using System; + using System.IO; + using System.Threading; + using System.Net; + using System.Net.Sockets; + using System.Configuration; + using System.Diagnostics; + using IvyBus; + /// IvyDaemon: simple TCP to Ivy relay. + /// + /// + /// This is a sample implementation of an Ivy Daemon, like ivyd + /// sends anonymous messages to an Ivy bus through a simple tcp socket, + /// line by line. The default port is 3456. + /// + public class IvyDaemon + { + + + private TcpListener serviceSocket; + private static bool debug = Properties.Settings.Default.IvyDebug; + private volatile Thread clientThread; // volatile to ensure the quick communication + private Ivy bus; + + public static int DEFAULT_SERVICE_PORT = 3456; + public const System.String DEFAULTNAME = "IvyDaemon"; + public static System.String helpmsg = "usage: IvyDaemon [options]\n\t-b BUS\tspecifies the Ivy bus domain\n\t-p\tport number, default " + DEFAULT_SERVICE_PORT + "\n\t-n ivyname (default " + DEFAULTNAME + ")\n\t-q\tquiet, no tty output\n\t-d\tdebug\n\t-h\thelp\nListens on the TCP port, and sends each line read on the Ivy bus. It is useful to launch one Ivy Daemon and let scripts send their message on the bus.\n"; + [STAThread] + public static void Main(System.String[] args) + { + Ivy bus; + int servicePort = DEFAULT_SERVICE_PORT; + System.String name = DEFAULTNAME; + bool quiet = false; + System.String domain = Ivy.GetDomain(null); +/* Getopt opt = new Getopt("IvyDaemon", args, "n:b:dqp:h"); + int c; + while ((c = opt.getopt()) != - 1) + { + switch (c) + { + case 'n': + name = opt.Optarg; + break; + + case 'b': + domain = opt.Optarg; + break; + + case 'q': + quiet = true; + break; + + case 'd': + //UPGRADE_ISSUE: Method 'java.lang.System.getProperties' was not converted. 'ms-help://MS.VSCC/commoner/redir/redirect.htm?keyword="jlca1000_javalangSystemgetProperties"' + //System.Configuration.AppSettingsReader sysProp = System.getProperties(); + //SupportClass.PutElement(sysProp, "IVY_DEBUG", "yes"); + break; + + case 'p': + System.String s = ""; + try + { + servicePort = System.Int32.Parse(s = opt.Optarg); + } + catch (System.FormatException nfe) + { + System.Console.Out.WriteLine("Invalid port number: " + s); + System.Environment.Exit(0); + } + break; + + case 'h': default: + System.Console.Out.WriteLine(helpmsg); + System.Environment.Exit(0); + break; + + } + } +*/ + bus = new Ivy(name, name + " ready"); + if (!quiet) + System.Console.Out.WriteLine("broadcasting on " + Ivy.Domains(domain)); + bus.Start(domain); + if (!quiet) + System.Console.Out.WriteLine("listening on " + servicePort); + IvyDaemon d = new IvyDaemon(bus, servicePort); + } + + public IvyDaemon(Ivy bus, int servicePort) + { + this.bus = bus; + IPAddress localAddr = IPAddress.Any; + serviceSocket = new TcpListener(localAddr, servicePort); + clientThread = new Thread(new ThreadStart(this.Run)); + clientThread.Start(); + } + + /* + * the service socket reader. + * it could be a thread, but as long as we've got one .... + */ + public void Run() + { + Thread thisThread = Thread.CurrentThread; + traceDebug("Thread started"); + while (clientThread == thisThread) + { + try + { + SubReader generatedAux2 = new SubReader(serviceSocket.AcceptTcpClient(),bus); + } + catch (IOException e) + { + traceDebug("TCP socket reader caught an exception " + e.Message); + } + } + traceDebug("Thread stopped"); + } + + internal class SubReader + { + internal StreamReader in_Renamed; + internal Thread looperThread; + internal Ivy bus; + internal SubReader(TcpClient socket, Ivy bus) + { + this.bus = bus; + in_Renamed = new StreamReader(socket.GetStream()); + looperThread = new Thread(new ThreadStart(this.Run)); + looperThread.Start(); + } + public void Run() + { + traceDebug("Subreader Thread started"); + String msg = null; + try + { + while (true) + { + msg = in_Renamed.ReadLine(); + if (msg == null) + break; + bus.SendMsg(msg); + } + } + catch (IOException ioe) + { + traceDebug("Subreader exception:" + ioe.Message); + System.Environment.Exit(0); + } + traceDebug("Subreader Thread stopped"); + } + + } + [Conditional("DEBUG")] + private static void traceDebug(string s) + { + Trace.WriteLineIf(debug, "-->IvyDaemon<-- " + s); + } + } +} \ No newline at end of file diff --git a/IvyToDel/IvyDaemon/IvyDaemon.csproj b/IvyToDel/IvyDaemon/IvyDaemon.csproj new file mode 100644 index 0000000..1dc6409 --- /dev/null +++ b/IvyToDel/IvyDaemon/IvyDaemon.csproj @@ -0,0 +1,154 @@ + + + Local + 8.0.50727 + 2.0 + {B10AB29F-D678-4472-9BA3-D627262E14E1} + SAK + SAK + SAK + SAK + Debug + AnyCPU + App.ico + + + IvyDaemon + + + JScript + Grid + IE50 + false + Exe + IvyDaemon + OnBuildSuccess + + + + + + + A4751EEE69A15B9F42D2EF22930B195D367E5103 + IvyDaemon_TemporaryKey.pfx + true + true + true + \\samba\fcolin\public_html\ClickOnce\IvyDaemon\ + true + Web + false + Foreground + 7 + Days + false + false + true + http://www.tls.cena.fr/~fcolin/ClickOnce/IvyDaemon/ + true + publish.htm + 1.0.0.%2a + true + + + bin\Debug\ + false + 285212672 + false + + + DEBUG;TRACE + + + true + 4096 + false + + + false + false + false + false + 4 + full + prompt + + + bin\Release\ + false + 285212672 + false + + + TRACE + + + false + 4096 + false + + + true + false + false + false + 4 + none + prompt + + + + System + + + + System.Data + + + System.XML + + + + + + Code + + + Code + + + True + True + Settings.settings + + + + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + + False + .NET Framework 2.0 + false + + + + + {F2F03CF7-0087-4EDB-AD15-80C9E8DA2617} + Ivy + + + + + + + + + + \ No newline at end of file diff --git a/IvyToDel/IvyDaemon/IvyDaemon.csproj.vspscc b/IvyToDel/IvyDaemon/IvyDaemon.csproj.vspscc new file mode 100644 index 0000000..a2a1a1c --- /dev/null +++ b/IvyToDel/IvyDaemon/IvyDaemon.csproj.vspscc @@ -0,0 +1,10 @@ +"" +{ +"FILE_VERSION" = "9237" +"ENLISTMENT_CHOICE" = "NEVER" +"PROJECT_FILE_RELATIVE_PATH" = "relative:IvyDaemon" +"NUMBER_OF_EXCLUDED_FILES" = "0" +"ORIGINAL_PROJECT_FILE_PATH" = "" +"NUMBER_OF_NESTED_PROJECTS" = "0" +"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER" +} diff --git a/IvyToDel/IvyDaemon/IvyDaemon_TemporaryKey.pfx b/IvyToDel/IvyDaemon/IvyDaemon_TemporaryKey.pfx new file mode 100644 index 0000000..b280243 Binary files /dev/null and b/IvyToDel/IvyDaemon/IvyDaemon_TemporaryKey.pfx differ diff --git a/IvyToDel/IvyDaemon/Properties/AssemblyInfo.cs b/IvyToDel/IvyDaemon/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..65a2ee8 --- /dev/null +++ b/IvyToDel/IvyDaemon/Properties/AssemblyInfo.cs @@ -0,0 +1,58 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// +// Les informations générales relatives à un assembly dépendent de +// l'ensemble d'attributs suivant. Pour modifier les informations +// associées à un assembly, changez les valeurs de ces attributs. +// +[assembly: AssemblyTitle("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("")] +[assembly: AssemblyCopyright("")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// +// Les informations de version pour un assembly se composent des quatre valeurs suivantes : +// +// Version principale +// Version secondaire +// Numéro de build +// Révision +// +// Vous pouvez spécifier toutes les valeurs ou indiquer des numéros de révision et de build par défaut +// en utilisant '*', comme ci-dessous : + +[assembly: AssemblyVersion("2.0.*")] + +// +// Pour signer votre assembly, vous devez spécifier la clé à utiliser. Consultez +// la documentation Microsoft .NET Framework pour plus d'informations sur la signature d'un assembly. +// +// Utilisez les attributs ci-dessous pour contrôler la clé utilisée lors de la signature. +// +// Remarques : +// (*) Si aucune clé n'est spécifiée, l'assembly n'est pas signé. +// (*) KeyName fait référence à une clé installée dans le fournisseur de +// services cryptographiques (CSP) de votre ordinateur. KeyFile fait référence à un fichier qui contient +// une clé. +// (*) Si les valeurs de KeyFile et de KeyName sont spécifiées, le +// traitement suivant se produit : +// (1) Si KeyName se trouve dans le CSP, la clé est utilisée. +// (2) Si KeyName n'existe pas mais que KeyFile existe, la clé +// de KeyFile est installée dans le CSP et utilisée. +// (*) Pour créer KeyFile, vous pouvez utiliser l'utilitaire sn.exe (Strong Name, Nom fort). +// Lors de la spécification de KeyFile, son emplacement doit être +// relatif au répertoire de sortie du projet qui est +// %Project Directory%\obj\. Par exemple, si votre KeyFile se trouve +// dans le répertoire du projet, vous devez spécifier l'attribut +// AssemblyKeyFile sous la forme [assembly: AssemblyKeyFile("..\\..\\mykey.snk")] +// (*) DelaySign (signature différée) est une option avancée. Pour plus d'informations, consultez la +// documentation Microsoft .NET Framework. +// +[assembly: AssemblyDelaySign(false)] +[assembly: AssemblyKeyFile("")] +[assembly: AssemblyKeyName("")] diff --git a/IvyToDel/IvyDaemon/Properties/Settings.Designer.cs b/IvyToDel/IvyDaemon/Properties/Settings.Designer.cs new file mode 100644 index 0000000..7555e19 --- /dev/null +++ b/IvyToDel/IvyDaemon/Properties/Settings.Designer.cs @@ -0,0 +1,35 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.42 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace IvyDaemon.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool IvyDebug { + get { + return ((bool)(this["IvyDebug"])); + } + } + } +} diff --git a/IvyToDel/IvyDaemon/Properties/Settings.settings b/IvyToDel/IvyDaemon/Properties/Settings.settings new file mode 100644 index 0000000..046036c --- /dev/null +++ b/IvyToDel/IvyDaemon/Properties/Settings.settings @@ -0,0 +1,9 @@ + + + + + + False + + + \ No newline at end of file diff --git a/IvyToDel/IvyDaemon/Settings.cs b/IvyToDel/IvyDaemon/Settings.cs new file mode 100644 index 0000000..6ac518c --- /dev/null +++ b/IvyToDel/IvyDaemon/Settings.cs @@ -0,0 +1,28 @@ +namespace IvyDaemon.Properties { + + + // This class allows you to handle specific events on the settings class: + // The SettingChanging event is raised before a setting's value is changed. + // The PropertyChanged event is raised after a setting's value is changed. + // The SettingsLoaded event is raised after the setting values are loaded. + // The SettingsSaving event is raised before the setting values are saved. + internal sealed partial class Settings { + + public Settings() { + // // To add event handlers for saving and changing settings, uncomment the lines below: + // + // this.SettingChanging += this.SettingChangingEventHandler; + // + // this.SettingsSaving += this.SettingsSavingEventHandler; + // + } + + private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { + // Add code to handle the SettingChangingEvent event here. + } + + private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { + // Add code to handle the SettingsSaving event here. + } + } +} diff --git a/IvyToDel/IvyDaemon/app.config b/IvyToDel/IvyDaemon/app.config new file mode 100644 index 0000000..df27cc0 --- /dev/null +++ b/IvyToDel/IvyDaemon/app.config @@ -0,0 +1,15 @@ + + + + +
+ + + + + + False + + + + \ No newline at end of file -- cgit v1.1