You can subscribe to this list here.
2007 |
Jan
|
Feb
(27) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(31) |
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(1) |
Feb
|
Mar
(12) |
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
|
Oct
|
Nov
(6) |
Dec
|
From: <kn...@us...> - 2007-02-10 00:57:27
|
Revision: 245 http://alchemi.svn.sourceforge.net/alchemi/?rev=245&view=rev Author: kna125 Date: 2007-02-09 16:57:09 -0800 (Fri, 09 Feb 2007) Log Message: ----------- Initial import. Added Paths: ----------- alchemi-devel/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mat...@us...> - 2007-02-09 06:21:54
|
Revision: 244 http://alchemi.svn.sourceforge.net/alchemi/?rev=244&view=rev Author: mattman206 Date: 2007-02-08 22:21:51 -0800 (Thu, 08 Feb 2007) Log Message: ----------- Cleaned up redundant code in HashUtil. Moved a couple classes to their own files. Modified Paths: -------------- trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj trunk/alchemi-devel/src/Alchemi.Core/GAppClassDiagram.cd trunk/alchemi-devel/src/Alchemi.Core/GConnectionDialogForm.cs trunk/alchemi-devel/src/Alchemi.Core/Logger.cs trunk/alchemi-devel/src/Alchemi.Core/SecurityCredentials.cs trunk/alchemi-devel/src/Alchemi.Core/Utility/HashUtil.cs trunk/alchemi-devel/src/Alchemi.ExecutorExec/ExecutorExec.csproj trunk/alchemi-devel/src/Alchemi.ExecutorServiceController/ExecutorServiceController.csproj trunk/alchemi-devel/src/Alchemi.ManagerExec/ManagerExec.csproj trunk/alchemi-devel/src/Alchemi.ManagerServiceController/ManagerServiceController.csproj Added Paths: ----------- trunk/alchemi-devel/src/Alchemi.Core/GConnectionDialogFormConfig.cs trunk/alchemi-devel/src/Alchemi.Core/LogEventArgs.cs trunk/alchemi-devel/src/Alchemi.Core/LogLevel.cs Modified: trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj 2007-02-08 22:18:08 UTC (rev 243) +++ trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj 2007-02-09 06:21:51 UTC (rev 244) @@ -148,9 +148,12 @@ <Compile Include="GConnectionDialogForm.cs"> <SubType>Form</SubType> </Compile> + <Compile Include="GConnectionDialogFormConfig.cs" /> <Compile Include="GNode.cs"> <SubType>Component</SubType> </Compile> + <Compile Include="LogEventArgs.cs" /> + <Compile Include="LogLevel.cs" /> <Compile Include="Owner\GThreadBuffer.cs" /> <Compile Include="Logger.cs"> <SubType>Code</SubType> Modified: trunk/alchemi-devel/src/Alchemi.Core/GAppClassDiagram.cd =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.Core/GConnectionDialogForm.cs =================================================================== (Binary files differ) Added: trunk/alchemi-devel/src/Alchemi.Core/GConnectionDialogFormConfig.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/GConnectionDialogFormConfig.cs (rev 0) +++ trunk/alchemi-devel/src/Alchemi.Core/GConnectionDialogFormConfig.cs 2007-02-09 06:21:51 UTC (rev 244) @@ -0,0 +1,161 @@ +#region Alchemi copyright and license notice + +/* +* Alchemi [.NET Grid Computing Framework] +* http://www.alchemi.net +* +* Title : GConnectionDialogFormConfig.cs +* Project : Alchemi Core +* Created on : August 2005 +* Copyright : Copyright \xA9 2006 The University of Melbourne +* This technology has been developed with the support of +* the Australian Research Council and the University of Melbourne +* research grants as part of the Gridbus Project +* within GRIDS Laboratory at the University of Melbourne, Australia. +* Author : Krishna Nadiminti (kn...@cs...) and Rajkumar Buyya (ra...@cs...) +* License : GPL +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public +* License as published by the Free Software Foundation; +* See the GNU General Public License +* (http://www.gnu.org/copyleft/gpl.html) for more details. +* +*/ +#endregion + +using System; +using System.Collections.Generic; +using System.Text; +using System.IO; +using System.Runtime.Serialization.Formatters.Binary; + +using Alchemi.Core.Utility; + +namespace Alchemi.Core +{ + /// <summary> + /// Represents the login configuration information, to connect to a manager. + /// Used for GConnection Dialog + /// </summary> + [Serializable] + class GConnectionDialogFormConfig + { + // Create a logger for use in this class + private static readonly Logger logger = new Logger(); + + public const string Default_Config_File = "GConnectionDialogForm.dat"; + + private string _Host = "localhost"; + private int _Port = 9000; + private string _Username = "user"; + private string _Password = "user"; + + private string _Filename; + + /// <summary> + /// Creates a new instance of the GConnectionDialogFormConfig class. + /// </summary> + /// <param name="filename">The file to read/write.</param> + public GConnectionDialogFormConfig(string filename) + { + _Filename = filename; + } + + /// <summary> + /// Gets or sets the host. + /// </summary> + /// <value>The host.</value> + public string Host + { + get { return _Host; } + set { _Host = value; } + } + + /// <summary> + /// Gets or sets the port. + /// </summary> + /// <value>The port.</value> + public int Port + { + get { return _Port; } + set { _Port = value; } + } + + /// <summary> + /// Gets or sets the username. + /// </summary> + /// <value>The username.</value> + public string Username + { + get { return _Username; } + set { _Username = value; } + } + + /// <summary> + /// Gets or sets the password. + /// </summary> + /// <value>The password.</value> + public string Password + { + get { return _Password; } + set { _Password = value; } + } + + /// <summary> + /// Reads the config from a file + /// </summary> + /// <param name="filename">file to read from</param> + /// <returns>Config object read</returns> + public static GConnectionDialogFormConfig Read(string filename) + { + string file = Utils.GetFilePath(filename, AlchemiRole.Owner, false); + GConnectionDialogFormConfig c; + //handle missing file exception / serialization exception etc... and create a default config. + try + { + //open for read-only + using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)) + { + if (fs.Length > 0) + { + BinaryFormatter bf = new BinaryFormatter(); + c = (GConnectionDialogFormConfig)bf.Deserialize(fs); + } + else + { + c = new GConnectionDialogFormConfig(file); + } + } + } + catch (Exception ex) + { + logger.Debug("Error reading config from " + file + ", getting default config.", ex); + c = new GConnectionDialogFormConfig(file); + } + return c; + } + + + /// <summary> + /// Write the config to file + /// </summary> + public void Write() + { + string file = Utils.GetFilePath(Default_Config_File, AlchemiRole.Owner, true); + try + { + using (Stream s = new FileStream(_Filename, FileMode.Create)) + { + BinaryFormatter bf = new BinaryFormatter(); + bf.Serialize(s, this); + s.Close(); + } + } + catch + { + //ignore. if we have a call to "write" here again, we might end up in a + //infinite loop! + } + } + } +} Added: trunk/alchemi-devel/src/Alchemi.Core/LogEventArgs.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/LogEventArgs.cs (rev 0) +++ trunk/alchemi-devel/src/Alchemi.Core/LogEventArgs.cs 2007-02-09 06:21:51 UTC (rev 244) @@ -0,0 +1,107 @@ +#region Alchemi copyright and license notice + +/* +* Alchemi [.NET Grid Computing Framework] +* http://www.alchemi.net +* +* Title : LogEventArgs.cs +* Project : Alchemi Core +* Created on : August 2005 +* Copyright : Copyright \xA9 2006 The University of Melbourne +* This technology has been developed with the support of +* the Australian Research Council and the University of Melbourne +* research grants as part of the Gridbus Project +* within GRIDS Laboratory at the University of Melbourne, Australia. +* Author : Krishna Nadiminti (kn...@cs...) and Rajkumar Buyya (ra...@cs...) +* License : GPL +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public +* License as published by the Free Software Foundation; +* See the GNU General Public License +* (http://www.gnu.org/copyleft/gpl.html) for more details. +* +*/ +#endregion + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Alchemi.Core +{ + /// <summary> + /// The arguments passed when raising a log event. + /// </summary> + public class LogEventArgs : EventArgs + { + private LogLevel _Level = LogLevel.Info; + private string _Message; + private string _Source; + private string _Member; + private Exception _Exception = null; + + /// <summary> + /// Default constructor: creates an instance of the LogEventArgs class + /// </summary> + public LogEventArgs() + { + } + + /// <summary> + /// Creates an instance of the LogEventArgs class with the given message, level and exception. + /// </summary> + /// <param name="source">The source.</param> + /// <param name="sourceMember">The source member.</param> + /// <param name="message">The message.</param> + /// <param name="level">The log level.</param> + /// <param name="ex">The exception.</param> + public LogEventArgs(string source, string sourceMember, string message, LogLevel level, Exception ex) + { + this._Member = sourceMember; + this._Level = level; + this._Message = message; + this._Exception = ex; + this._Source = source; + } + + /// <summary> + /// Gets the level of the log message + /// </summary> + public LogLevel Level + { + get { return _Level; } + } + + /// <summary> + /// Getsthe log message + /// </summary> + public string Message + { + get { return _Message; } + } + + /// <summary> + /// Gets the exception for the log event + /// </summary> + public Exception Exception + { + get { return _Exception; } + } + + /// <summary> + /// Gets the source + /// </summary> + public string Source + { + get { return _Source; } + } + + /// <summary> + /// Gets the member of the source class that raised the log event + /// </summary> + public string Member + { + get { return _Member; } + } + } +} Added: trunk/alchemi-devel/src/Alchemi.Core/LogLevel.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/LogLevel.cs (rev 0) +++ trunk/alchemi-devel/src/Alchemi.Core/LogLevel.cs 2007-02-09 06:21:51 UTC (rev 244) @@ -0,0 +1,46 @@ +#region Alchemi copyright and license notice + +/* +* Alchemi [.NET Grid Computing Framework] +* http://www.alchemi.net +* +* Title : LogLevel.cs +* Project : Alchemi Core +* Created on : August 2005 +* Copyright : Copyright \xA9 2006 The University of Melbourne +* This technology has been developed with the support of +* the Australian Research Council and the University of Melbourne +* research grants as part of the Gridbus Project +* within GRIDS Laboratory at the University of Melbourne, Australia. +* Author : Krishna Nadiminti (kn...@cs...) and Rajkumar Buyya (ra...@cs...) +* License : GPL +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public +* License as published by the Free Software Foundation; +* See the GNU General Public License +* (http://www.gnu.org/copyleft/gpl.html) for more details. +* +*/ +#endregion + +using System; +using System.Collections.Generic; +using System.Text; + +namespace Alchemi.Core +{ + /// <summary> + /// The log-level of the message. The levels can be one of + /// Debug, + /// Warn, + /// Error, + /// Info + /// </summary> + public enum LogLevel + { + Debug, + Warn, + Error, + Info + } +} Modified: trunk/alchemi-devel/src/Alchemi.Core/Logger.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Logger.cs 2007-02-08 22:18:08 UTC (rev 243) +++ trunk/alchemi-devel/src/Alchemi.Core/Logger.cs 2007-02-09 06:21:51 UTC (rev 244) @@ -4,7 +4,7 @@ * Alchemi [.NET Grid Computing Framework] * http://www.alchemi.net * -* Title : Loger.cs +* Title : Logger.cs * Project : Alchemi Core * Created on : August 2005 * Copyright : Copyright \xA9 2006 The University of Melbourne @@ -20,7 +20,7 @@ * See the GNU General Public License * (http://www.gnu.org/copyleft/gpl.html) for more details. * -*/ +*/ #endregion using System; @@ -29,83 +29,83 @@ namespace Alchemi.Core { - /// <summary> - /// The Alchemi logger class raises log events which can be handled by other classes. - /// This allows to log messages using any logging system the log-event-handler may choose. - /// </summary> - public class Logger : MarshalByRefObject - { - /// <summary> - /// Logger Event Handler - /// </summary> - public static LogEventHandler LogHandler; + //kna: modified this class to inherit from MarshalByRef so we can use the logger across app-domains - /// <summary> - /// Creates an instance of the logger. - /// </summary> - public Logger() - { + /// <summary> + /// The Alchemi logger class raises log events which can be handled by other classes. + /// This allows to log messages using any logging system the log-event-handler may choose. + /// </summary> + public class Logger : MarshalByRefObject + { + /// <summary> + /// Logger Event Handler + /// </summary> + public static LogEventHandler LogHandler; + + /// <summary> + /// Creates an instance of the logger. + /// </summary> + public Logger() + { } - //kna: modified this class to inherit from MarshalByRef so we can use the logger across app-domains + /// <summary> + /// Raises a log event with the given message and Info level + /// </summary> + /// <param name="msg"></param> + public void Info(string msg) + { + RaiseLogEvent(msg, LogLevel.Info, null); + } /// <summary> - /// Raises a log event with the given message and Info level - /// </summary> - /// <param name="msg"></param> - public void Info(string msg) - { - RaiseLogEvent(msg,LogLevel.Info,null); - } + /// Raises a log event with the given message and Debug level + /// </summary> + /// <param name="debugMsg"></param> + public void Debug(string debugMsg) + { + RaiseLogEvent(debugMsg, LogLevel.Debug, null); + } - /// <summary> - /// Raises a log event with the given message and Debug level - /// </summary> - /// <param name="debugMsg"></param> - public void Debug(string debugMsg) - { - RaiseLogEvent(debugMsg,LogLevel.Debug,null); - } + /// <summary> + /// Raises a log event with the given message and Debug level and exception + /// </summary> + /// <param name="debugMsg"></param> + /// <param name="ex"></param> + public void Debug(string debugMsg, Exception ex) + { + RaiseLogEvent(debugMsg, LogLevel.Debug, ex); + } - /// <summary> - /// Raises a log event with the given message and Debug level and exception - /// </summary> - /// <param name="debugMsg"></param> - /// <param name="ex"></param> - public void Debug(string debugMsg, Exception ex) - { - RaiseLogEvent(debugMsg,LogLevel.Debug,ex); - } + /// <summary> + /// Raises a log event with the given message and Error level and exception + /// </summary> + /// <param name="msg"></param> + /// <param name="ex"></param> + public void Error(string msg, Exception ex) + { + RaiseLogEvent(msg, LogLevel.Error, ex); + } - /// <summary> - /// Raises a log event with the given message and Error level and exception - /// </summary> - /// <param name="msg"></param> - /// <param name="ex"></param> - public void Error(string msg, Exception ex) - { - RaiseLogEvent(msg,LogLevel.Error,ex); - } + /// <summary> + /// Raises a log event with the given message and Warn level + /// </summary> + /// <param name="msg"></param> + public void Warn(string msg) + { + RaiseLogEvent(msg, LogLevel.Warn, null); + } - /// <summary> - /// Raises a log event with the given message and Warn level - /// </summary> - /// <param name="msg"></param> - public void Warn(string msg) - { - RaiseLogEvent(msg,LogLevel.Warn,null); - } + /// <summary> + /// Raises a log event with the given message and Warn level and exception + /// </summary> + /// <param name="msg"></param> + /// <param name="ex"></param> + public void Warn(string msg, Exception ex) + { + RaiseLogEvent(msg, LogLevel.Warn, ex); + } - /// <summary> - /// Raises a log event with the given message and Warn level and exception - /// </summary> - /// <param name="msg"></param> - /// <param name="ex"></param> - public void Warn(string msg, Exception ex) - { - RaiseLogEvent(msg,LogLevel.Warn,ex); - } - private void RaiseLogEvent(string msg, LogLevel level, Exception ex) { string source = "?source?"; @@ -135,16 +135,17 @@ RaiseLogEvent(msg, level, ex, source, member); } - private void RaiseLogEvent(string msg, LogLevel level, Exception ex, String source, String member) - { - try - { - //Raise the log event - if (LogHandler != null) - LogHandler(source,new LogEventArgs(source,member,msg,level,ex)); - }catch (Exception){} //always handle errors when raising events. (since event-handlers are not in our control). + private void RaiseLogEvent(string msg, LogLevel level, Exception ex, String source, String member) + { + try + { + //Raise the log event + if (LogHandler != null) + LogHandler(source, new LogEventArgs(source, member, msg, level, ex)); + } + catch (Exception) { } //always handle errors when raising events. (since event-handlers are not in our control). - } + } /// <summary> /// @@ -154,96 +155,9 @@ { return null; } - } + } - /// <summary> - /// The log-level of the message. The levels can be one of - /// Debug, - /// Warn, - /// Error, - /// Info - /// </summary> - public enum LogLevel - { - Debug, - Warn, - Error, - Info - } - /// <summary> - /// The arguments passed when raising a log event. - /// </summary> - public class LogEventArgs : EventArgs - { - private LogLevel level = LogLevel.Info; - private string message = ""; - private string source = ""; - private string member = ""; - private Exception exception = null; - /// <summary> - /// Default constructor: creates an instance of the LogEventArgs class - /// </summary> - public LogEventArgs() - { - } - /// <summary> - /// Creates an instance of the LogEventArgs class with the given message, level and exception. - /// </summary> - /// <param name="source"></param> - /// <param name="sourceMember"></param> - /// <param name="message"></param> - /// <param name="level"></param> - /// <param name="ex"></param> - public LogEventArgs(string source, string sourceMember, string message, LogLevel level, Exception ex) - { - this.member = sourceMember; - this.level = level; - this.message = message; - this.exception = ex; - this.source = source; - } - - /// <summary> - /// Gets the level of the log message - /// </summary> - public LogLevel Level - { - get { return level; } - } - - /// <summary> - /// Getsthe log message - /// </summary> - public string Message - { - get { return message; } - } - - /// <summary> - /// Gets the exception for the log event - /// </summary> - public Exception Exception - { - get { return exception; } - } - - /// <summary> - /// Gets the source - /// </summary> - public string Source - { - get { return source; } - } - - /// <summary> - /// Gets the member of the source class that raised the log event - /// </summary> - public string Member - { - get { return member; } - } - } } Modified: trunk/alchemi-devel/src/Alchemi.Core/SecurityCredentials.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/SecurityCredentials.cs 2007-02-08 22:18:08 UTC (rev 243) +++ trunk/alchemi-devel/src/Alchemi.Core/SecurityCredentials.cs 2007-02-09 06:21:51 UTC (rev 244) @@ -33,24 +33,35 @@ [Serializable] public class SecurityCredentials { + private string _Username; + private string _Password; + /// <summary> /// Username - /// </summary> - public readonly string Username; + /// </summary> + public string Username + { + get { return _Username; } + } + /// <summary> /// Password - /// </summary> - public string Password; - - /// <summary> - /// Creates an instance of the SecurityCredentials class - /// </summary> - /// <param name="username"></param> - /// <param name="password"></param> + /// </summary> + public string Password + { + get { return _Password; } + set { _Password = value; } + } + + /// <summary> + /// Creates an instance of the SecurityCredentials class + /// </summary> + /// <param name="username">The username.</param> + /// <param name="password">The password.</param> public SecurityCredentials(string username, string password) { - Username = username; - Password = password; + _Username = username; + _Password = password; } } } Modified: trunk/alchemi-devel/src/Alchemi.Core/Utility/HashUtil.cs =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.ExecutorExec/ExecutorExec.csproj =================================================================== --- trunk/alchemi-devel/src/Alchemi.ExecutorExec/ExecutorExec.csproj 2007-02-08 22:18:08 UTC (rev 243) +++ trunk/alchemi-devel/src/Alchemi.ExecutorExec/ExecutorExec.csproj 2007-02-09 06:21:51 UTC (rev 244) @@ -133,6 +133,7 @@ </EmbeddedResource> <EmbeddedResource Include="SplashScreen.resx"> <DependentUpon>SplashScreen.cs</DependentUpon> + <SubType>Designer</SubType> </EmbeddedResource> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> Modified: trunk/alchemi-devel/src/Alchemi.ExecutorServiceController/ExecutorServiceController.csproj =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.ManagerExec/ManagerExec.csproj =================================================================== --- trunk/alchemi-devel/src/Alchemi.ManagerExec/ManagerExec.csproj 2007-02-08 22:18:08 UTC (rev 243) +++ trunk/alchemi-devel/src/Alchemi.ManagerExec/ManagerExec.csproj 2007-02-09 06:21:51 UTC (rev 244) @@ -133,6 +133,7 @@ </EmbeddedResource> <EmbeddedResource Include="SplashScreen.resx"> <DependentUpon>SplashScreen.cs</DependentUpon> + <SubType>Designer</SubType> </EmbeddedResource> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> Modified: trunk/alchemi-devel/src/Alchemi.ManagerServiceController/ManagerServiceController.csproj =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mat...@us...> - 2007-02-08 22:18:08
|
Revision: 243 http://alchemi.svn.sourceforge.net/alchemi/?rev=243&view=rev Author: mattman206 Date: 2007-02-08 14:18:08 -0800 (Thu, 08 Feb 2007) Log Message: ----------- More documentation changes. Started implementing a common event pattern. Events should not be public unless they have add/remove accessors to prevent other classes from being able to fire those events. Modified Paths: -------------- trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs trunk/alchemi-devel/src/Alchemi.Core/Owner/GJob.cs trunk/alchemi-devel/src/Alchemi.Core/Owner/GThread.cs trunk/alchemi-devel/src/Alchemi.Core/Owner/GThreadBuffer.cs trunk/alchemi-devel/src/Alchemi.Core/Owner/IOwner.cs trunk/alchemi-devel/src/Alchemi.Core/Owner/ModuleDependency.cs trunk/alchemi-devel/src/Alchemi.Core/Owner/ThreadCollection.cs trunk/alchemi-devel/src/Alchemi.Core/Owner/ThreadIdentifier.cs trunk/alchemi-devel/src/Alchemi.Core/Utility/HashUtil.cs Added Paths: ----------- trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj.user Removed Paths: ------------- trunk/alchemi-devel/src/Alchemi.Core/Core.csproj trunk/alchemi-devel/src/Alchemi.Core/Core.csproj.user Property Changed: ---------------- trunk/alchemi-devel/ trunk/alchemi-devel/src/ trunk/alchemi-devel/src/Alchemi.Core/ trunk/alchemi-devel/src/Alchemi.Executor/ trunk/alchemi-devel/src/Alchemi.ExecutorExec/ trunk/alchemi-devel/src/Alchemi.ExecutorService/ trunk/alchemi-devel/src/Alchemi.ExecutorServiceController/ trunk/alchemi-devel/src/Alchemi.Manager/ trunk/alchemi-devel/src/Alchemi.ManagerExec/ trunk/alchemi-devel/src/Alchemi.ManagerService/ trunk/alchemi-devel/src/Alchemi.ManagerServiceController/ trunk/alchemi-devel/src/Alchemi.SDK/Console/ trunk/alchemi-devel/src/Alchemi.SDK/JobSubmitter/ trunk/alchemi-devel/src/Alchemi.Tester/ trunk/alchemi-devel/src/UMLs/ Property changes on: trunk/alchemi-devel ___________________________________________________________________ Name: svn:ignore + bin Property changes on: trunk/alchemi-devel/src ___________________________________________________________________ Name: svn:ignore + *.suo Property changes on: trunk/alchemi-devel/src/Alchemi.Core ___________________________________________________________________ Name: svn:ignore + obj Added: trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj (rev 0) +++ trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj 2007-02-08 22:18:08 UTC (rev 243) @@ -0,0 +1,298 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <ProjectType>Local</ProjectType> + <ProductVersion>8.0.50727</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{234F2AB1-B1F6-4FAD-9DAD-E18AF5847880}</ProjectGuid> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ApplicationIcon> + </ApplicationIcon> + <AssemblyKeyContainerName> + </AssemblyKeyContainerName> + <AssemblyName>Alchemi.Core</AssemblyName> + <AssemblyOriginatorKeyFile> + </AssemblyOriginatorKeyFile> + <DefaultClientScript>JScript</DefaultClientScript> + <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> + <DefaultTargetSchema>IE50</DefaultTargetSchema> + <DelaySign>false</DelaySign> + <OutputType>Library</OutputType> + <RootNamespace>Alchemi.Core</RootNamespace> + <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> + <StartupObject> + </StartupObject> + <FileUpgradeFlags> + </FileUpgradeFlags> + <UpgradeBackupLocation> + </UpgradeBackupLocation> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <OutputPath>..\..\bin\Core\</OutputPath> + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> + <BaseAddress>285212672</BaseAddress> + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> + <ConfigurationOverrideFile> + </ConfigurationOverrideFile> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <DocumentationFile> + </DocumentationFile> + <DebugSymbols>true</DebugSymbols> + <FileAlignment>4096</FileAlignment> + <NoStdLib>false</NoStdLib> + <NoWarn> + </NoWarn> + <Optimize>false</Optimize> + <RegisterForComInterop>false</RegisterForComInterop> + <RemoveIntegerChecks>false</RemoveIntegerChecks> + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + <WarningLevel>4</WarningLevel> + <DebugType>full</DebugType> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <OutputPath>..\..\build\Core\</OutputPath> + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> + <BaseAddress>285212672</BaseAddress> + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> + <ConfigurationOverrideFile> + </ConfigurationOverrideFile> + <DefineConstants>TRACE</DefineConstants> + <DocumentationFile>Alchemi.Core.xml</DocumentationFile> + <DebugSymbols>false</DebugSymbols> + <FileAlignment>4096</FileAlignment> + <NoStdLib>false</NoStdLib> + <NoWarn> + </NoWarn> + <Optimize>true</Optimize> + <RegisterForComInterop>false</RegisterForComInterop> + <RemoveIntegerChecks>false</RemoveIntegerChecks> + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + <WarningLevel>4</WarningLevel> + <DebugType>none</DebugType> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ServiceRelease|AnyCPU' "> + <OutputPath>..\..\bin\Core\</OutputPath> + <AllowUnsafeBlocks>false</AllowUnsafeBlocks> + <BaseAddress>285212672</BaseAddress> + <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> + <ConfigurationOverrideFile> + </ConfigurationOverrideFile> + <DefineConstants>TRACE</DefineConstants> + <DocumentationFile>Alchemi.Core.xml</DocumentationFile> + <DebugSymbols>false</DebugSymbols> + <FileAlignment>4096</FileAlignment> + <NoStdLib>false</NoStdLib> + <NoWarn> + </NoWarn> + <Optimize>true</Optimize> + <RegisterForComInterop>false</RegisterForComInterop> + <RemoveIntegerChecks>false</RemoveIntegerChecks> + <TreatWarningsAsErrors>false</TreatWarningsAsErrors> + <WarningLevel>4</WarningLevel> + <DebugType>none</DebugType> + <ErrorReport>prompt</ErrorReport> + </PropertyGroup> + <ItemGroup> + <Reference Include="System"> + <Name>System</Name> + </Reference> + <Reference Include="System.Configuration.Install"> + <Name>System.Configuration.Install</Name> + </Reference> + <Reference Include="System.Data"> + <Name>System.Data</Name> + </Reference> + <Reference Include="System.Drawing"> + <Name>System.Drawing</Name> + </Reference> + <Reference Include="System.Runtime.Remoting"> + <Name>System.Runtime.Remoting</Name> + </Reference> + <Reference Include="System.ServiceProcess"> + <Name>System.ServiceProcess</Name> + </Reference> + <Reference Include="System.Windows.Forms"> + <Name>System.Windows.Forms</Name> + </Reference> + <Reference Include="System.Xml"> + <Name>System.XML</Name> + </Reference> + </ItemGroup> + <ItemGroup> + <Compile Include="CommonAssemblyInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Delegates.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Exceptions.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Executor\ExecutorInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Executor\HearbeatInfo.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Executor\IExecutor.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="GConnection.cs"> + <SubType>Component</SubType> + </Compile> + <Compile Include="GConnectionDialog.cs"> + <SubType>Component</SubType> + </Compile> + <Compile Include="GConnectionDialogForm.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="GNode.cs"> + <SubType>Component</SubType> + </Compile> + <Compile Include="Owner\GThreadBuffer.cs" /> + <Compile Include="Logger.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\ICrossPlatformManager.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\IManager.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\Permission.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\Storage\ApplicationStorageView.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\Storage\ExecutorStorageView.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\Storage\GroupStorageView.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\Storage\IManagerStorage.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\Storage\IManagerStorageSetup.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\Storage\PermissionStorageView.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\Storage\StorageMaintenanceParameters.cs" /> + <Compile Include="Manager\Storage\SystemSummary.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\Storage\ThreadStorageView.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Manager\Storage\UserStorageView.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="EndPoint.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\ApplicationState.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\CrossPlatformHelper.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\Delegates.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\EmbeddedFileDependency.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\FileDependency.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\FileDependencyCollection.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\GApplication.cs"> + <SubType>Component</SubType> + </Compile> + <Compile Include="Owner\GApplicationBuffered.cs"> + <SubType>Component</SubType> + </Compile> + <Compile Include="Owner\GJob.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\GThread.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\IOwner.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\ModuleDependency.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\ThreadCollection.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\ThreadIdentifier.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Owner\ThreadState.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="RemotingMechanism.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="SecurityCredentials.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Utility\HashUtil.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Utility\ServiceHelper.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Utility\TriStateBoolean.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Utility\Utils.cs"> + <SubType>Code</SubType> + </Compile> + <Compile Include="Utility\XmlStringWriter.cs"> + <SubType>Code</SubType> + </Compile> + <EmbeddedResource Include="GConnection.resx"> + <DependentUpon>GConnection.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="GConnectionDialog.resx"> + <DependentUpon>GConnectionDialog.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="GConnectionDialogForm.resx"> + <DependentUpon>GConnectionDialogForm.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="GNode.resx"> + <DependentUpon>GNode.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="Owner\GApplication.resx"> + <DependentUpon>GApplication.cs</DependentUpon> + </EmbeddedResource> + </ItemGroup> + <ItemGroup> + <None Include="CoreClassDiagram.cd"> + <SubType> + </SubType> + </None> + <None Include="GAppClassDiagram.cd" /> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <PropertyGroup> + <PreBuildEvent> + </PreBuildEvent> + <PostBuildEvent> + </PostBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file Added: trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj.user =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj.user (rev 0) +++ trunk/alchemi-devel/src/Alchemi.Core/Alchemi.Core.csproj.user 2007-02-08 22:18:08 UTC (rev 243) @@ -0,0 +1,5 @@ +<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <ProjectView>ProjectFiles</ProjectView> + </PropertyGroup> +</Project> \ No newline at end of file Deleted: trunk/alchemi-devel/src/Alchemi.Core/Core.csproj =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Core.csproj 2007-02-08 21:21:44 UTC (rev 242) +++ trunk/alchemi-devel/src/Alchemi.Core/Core.csproj 2007-02-08 22:18:08 UTC (rev 243) @@ -1,298 +0,0 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <ProjectType>Local</ProjectType> - <ProductVersion>8.0.50727</ProductVersion> - <SchemaVersion>2.0</SchemaVersion> - <ProjectGuid>{234F2AB1-B1F6-4FAD-9DAD-E18AF5847880}</ProjectGuid> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ApplicationIcon> - </ApplicationIcon> - <AssemblyKeyContainerName> - </AssemblyKeyContainerName> - <AssemblyName>Alchemi.Core</AssemblyName> - <AssemblyOriginatorKeyFile> - </AssemblyOriginatorKeyFile> - <DefaultClientScript>JScript</DefaultClientScript> - <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout> - <DefaultTargetSchema>IE50</DefaultTargetSchema> - <DelaySign>false</DelaySign> - <OutputType>Library</OutputType> - <RootNamespace>Alchemi.Core</RootNamespace> - <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> - <StartupObject> - </StartupObject> - <FileUpgradeFlags> - </FileUpgradeFlags> - <UpgradeBackupLocation> - </UpgradeBackupLocation> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <OutputPath>..\..\bin\Core\</OutputPath> - <AllowUnsafeBlocks>false</AllowUnsafeBlocks> - <BaseAddress>285212672</BaseAddress> - <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> - <ConfigurationOverrideFile> - </ConfigurationOverrideFile> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <DocumentationFile> - </DocumentationFile> - <DebugSymbols>true</DebugSymbols> - <FileAlignment>4096</FileAlignment> - <NoStdLib>false</NoStdLib> - <NoWarn> - </NoWarn> - <Optimize>false</Optimize> - <RegisterForComInterop>false</RegisterForComInterop> - <RemoveIntegerChecks>false</RemoveIntegerChecks> - <TreatWarningsAsErrors>false</TreatWarningsAsErrors> - <WarningLevel>4</WarningLevel> - <DebugType>full</DebugType> - <ErrorReport>prompt</ErrorReport> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <OutputPath>..\..\build\Core\</OutputPath> - <AllowUnsafeBlocks>false</AllowUnsafeBlocks> - <BaseAddress>285212672</BaseAddress> - <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> - <ConfigurationOverrideFile> - </ConfigurationOverrideFile> - <DefineConstants>TRACE</DefineConstants> - <DocumentationFile>Alchemi.Core.xml</DocumentationFile> - <DebugSymbols>false</DebugSymbols> - <FileAlignment>4096</FileAlignment> - <NoStdLib>false</NoStdLib> - <NoWarn> - </NoWarn> - <Optimize>true</Optimize> - <RegisterForComInterop>false</RegisterForComInterop> - <RemoveIntegerChecks>false</RemoveIntegerChecks> - <TreatWarningsAsErrors>false</TreatWarningsAsErrors> - <WarningLevel>4</WarningLevel> - <DebugType>none</DebugType> - <ErrorReport>prompt</ErrorReport> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ServiceRelease|AnyCPU' "> - <OutputPath>..\..\bin\Core\</OutputPath> - <AllowUnsafeBlocks>false</AllowUnsafeBlocks> - <BaseAddress>285212672</BaseAddress> - <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow> - <ConfigurationOverrideFile> - </ConfigurationOverrideFile> - <DefineConstants>TRACE</DefineConstants> - <DocumentationFile>Alchemi.Core.xml</DocumentationFile> - <DebugSymbols>false</DebugSymbols> - <FileAlignment>4096</FileAlignment> - <NoStdLib>false</NoStdLib> - <NoWarn> - </NoWarn> - <Optimize>true</Optimize> - <RegisterForComInterop>false</RegisterForComInterop> - <RemoveIntegerChecks>false</RemoveIntegerChecks> - <TreatWarningsAsErrors>false</TreatWarningsAsErrors> - <WarningLevel>4</WarningLevel> - <DebugType>none</DebugType> - <ErrorReport>prompt</ErrorReport> - </PropertyGroup> - <ItemGroup> - <Reference Include="System"> - <Name>System</Name> - </Reference> - <Reference Include="System.Configuration.Install"> - <Name>System.Configuration.Install</Name> - </Reference> - <Reference Include="System.Data"> - <Name>System.Data</Name> - </Reference> - <Reference Include="System.Drawing"> - <Name>System.Drawing</Name> - </Reference> - <Reference Include="System.Runtime.Remoting"> - <Name>System.Runtime.Remoting</Name> - </Reference> - <Reference Include="System.ServiceProcess"> - <Name>System.ServiceProcess</Name> - </Reference> - <Reference Include="System.Windows.Forms"> - <Name>System.Windows.Forms</Name> - </Reference> - <Reference Include="System.Xml"> - <Name>System.XML</Name> - </Reference> - </ItemGroup> - <ItemGroup> - <Compile Include="CommonAssemblyInfo.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Delegates.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Exceptions.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Executor\ExecutorInfo.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Executor\HearbeatInfo.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Executor\IExecutor.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="GConnection.cs"> - <SubType>Component</SubType> - </Compile> - <Compile Include="GConnectionDialog.cs"> - <SubType>Component</SubType> - </Compile> - <Compile Include="GConnectionDialogForm.cs"> - <SubType>Form</SubType> - </Compile> - <Compile Include="GNode.cs"> - <SubType>Component</SubType> - </Compile> - <Compile Include="Owner\GThreadBuffer.cs" /> - <Compile Include="Logger.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\ICrossPlatformManager.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\IManager.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\Permission.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\Storage\ApplicationStorageView.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\Storage\ExecutorStorageView.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\Storage\GroupStorageView.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\Storage\IManagerStorage.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\Storage\IManagerStorageSetup.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\Storage\PermissionStorageView.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\Storage\StorageMaintenanceParameters.cs" /> - <Compile Include="Manager\Storage\SystemSummary.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\Storage\ThreadStorageView.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Manager\Storage\UserStorageView.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="EndPoint.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\ApplicationState.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\CrossPlatformHelper.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\Delegates.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\EmbeddedFileDependency.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\FileDependency.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\FileDependencyCollection.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\GApplication.cs"> - <SubType>Component</SubType> - </Compile> - <Compile Include="Owner\GApplicationBuffered.cs"> - <SubType>Component</SubType> - </Compile> - <Compile Include="Owner\GJob.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\GThread.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\IOwner.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\ModuleDependency.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\ThreadCollection.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\ThreadIdentifier.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Owner\ThreadState.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="RemotingMechanism.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="SecurityCredentials.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Utility\HashUtil.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Utility\ServiceHelper.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Utility\TriStateBoolean.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Utility\Utils.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Utility\XmlStringWriter.cs"> - <SubType>Code</SubType> - </Compile> - <EmbeddedResource Include="GConnection.resx"> - <DependentUpon>GConnection.cs</DependentUpon> - <SubType>Designer</SubType> - </EmbeddedResource> - <EmbeddedResource Include="GConnectionDialog.resx"> - <DependentUpon>GConnectionDialog.cs</DependentUpon> - <SubType>Designer</SubType> - </EmbeddedResource> - <EmbeddedResource Include="GConnectionDialogForm.resx"> - <DependentUpon>GConnectionDialogForm.cs</DependentUpon> - <SubType>Designer</SubType> - </EmbeddedResource> - <EmbeddedResource Include="GNode.resx"> - <DependentUpon>GNode.cs</DependentUpon> - <SubType>Designer</SubType> - </EmbeddedResource> - <EmbeddedResource Include="Owner\GApplication.resx"> - <DependentUpon>GApplication.cs</DependentUpon> - </EmbeddedResource> - </ItemGroup> - <ItemGroup> - <None Include="CoreClassDiagram.cd"> - <SubType> - </SubType> - </None> - <None Include="GAppClassDiagram.cd" /> - </ItemGroup> - <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> - <PropertyGroup> - <PreBuildEvent> - </PreBuildEvent> - <PostBuildEvent> - </PostBuildEvent> - </PropertyGroup> -</Project> \ No newline at end of file Deleted: trunk/alchemi-devel/src/Alchemi.Core/Core.csproj.user =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs 2007-02-08 21:21:44 UTC (rev 242) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs 2007-02-08 22:18:08 UTC (rev 243) @@ -31,9 +31,12 @@ using System.Collections.Generic; // 2.8.07 MDV -//TODO: Add blocking Start() method. -//That is, a call to Start() doesn't return until the entire GApplication is finished. +// TODO: Add blocking Start() method. +// That is, a call to Start() doesn't return until the entire GApplication is finished. +// TODO: Maybee we need not have a seperate "state" for the application. +// If all threads are dead, app should have state=stopped as well isnt it? +// How do we handle multi-use apps then? namespace Alchemi.Core.Owner { Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/GJob.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/GJob.cs 2007-02-08 21:21:44 UTC (rev 242) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/GJob.cs 2007-02-08 22:18:08 UTC (rev 243) @@ -34,6 +34,7 @@ { public static string WorkingDirectory = "${WorkingDirectory}"; } + /// <summary> /// Represents a coarse unit of work on the grid. This class extends the GThread to enable legacy applications to /// run on the grid. A GJob is associated with file dependencies which are the inputs and outputs of the job @@ -137,7 +138,6 @@ { try { - output = new StringBuilder(); error = new StringBuilder(); log = new StringBuilder(); Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/GThread.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/GThread.cs 2007-02-08 21:21:44 UTC (rev 242) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/GThread.cs 2007-02-08 22:18:08 UTC (rev 243) @@ -40,9 +40,12 @@ int _Id = -1; bool _Failed = false; - [NonSerialized] GApplication _Application = null; // local - [NonSerialized] int _Priority = 5; // local - [NonSerialized] string _WorkingDirectory = ""; // remote + [NonSerialized] + GApplication _Application = null; // local + [NonSerialized] + int _Priority = 5; // local + [NonSerialized] + string _WorkingDirectory = ""; // remote //----------------------------------------------------------------------------------------------- // properties Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/GThreadBuffer.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/GThreadBuffer.cs 2007-02-08 21:21:44 UTC (rev 242) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/GThreadBuffer.cs 2007-02-08 22:18:08 UTC (rev 243) @@ -26,11 +26,18 @@ using System; using System.Collections; +using System.Runtime.Serialization; +// 2.8.06 MDV +// TODO: Can m_cThreads be moved from an ArrayList to a List<>? +// TODO: Get rid of the Hungarian notation + namespace Alchemi.Core.Owner { /// <summary> - /// GThreadBuffer class represents a thread buffer that holds many threads that can be executed by an executor as one thread. It is used primarily by GApplicationBuffered to improve performance when executing many threads with short execution times. + /// GThreadBuffer class represents a thread buffer that holds many threads that can be + /// executed by an executor as one thread. It is used primarily by GApplicationBuffered + /// to improve performance when executing many threads with short execution times. /// </summary> [Serializable] public class GThreadBuffer : GThread, ICollection @@ -41,8 +48,17 @@ private IList m_cThreads = new ArrayList(); private Hashtable m_cThreadIdException = new Hashtable(); - public event FullEventHandler Full; + #region Event - Full + private event FullEventHandler _Full; + public event FullEventHandler Full + { + add { _Full += value; } + remove { _Full -= value; } + } + #endregion + + /// <summary> /// Default constructor. /// </summary> @@ -60,7 +76,6 @@ { throw new ArgumentOutOfRangeException("nCapacity", nCapacity, "0 < nCapacity <= Int32.MaxValue"); } - m_nCapacity = nCapacity; } @@ -69,10 +84,7 @@ /// </summary> public int Capacity { - get - { - return m_nCapacity; - } + get { return m_nCapacity; } } /// <summary> @@ -86,13 +98,14 @@ } } - /// <summary> - /// Determines whether the thread buffer is full. - /// </summary> - /// <returns>whether it is full</returns> - public bool IsFull() + /// <summary> + /// Determines whether the thread buffer is full. + /// </summary> + /// <value><c>true</c> if the GThreadBuffer is full; otherwise, <c>false</c>.</value> + /// <returns>whether it is full</returns> + public bool IsFull { - return (m_cThreads.Count == m_nCapacity); + get { return (m_cThreads.Count == m_nCapacity); } } /// <summary> @@ -101,14 +114,14 @@ /// <param name="thread">thread</param> public void Add(GThread oThread) { - if (IsFull()) + if (this.IsFull) { throw new ThreadBufferFullException("Attempting to add a thread to a full thread buffer."); } m_cThreads.Add(oThread); - if (IsFull()) + if (this.IsFull) { OnFull(); } @@ -117,11 +130,11 @@ /// <summary> /// Fires the full event. /// </summary> - private void OnFull() + protected virtual void OnFull() { - if (Full != null) + if (_Full != null) { - Full(this, new EventArgs()); + _Full(this, new EventArgs()); } } @@ -208,10 +221,21 @@ /// </summary> public delegate void FullEventHandler(object oSender, EventArgs oEventArgs); + + + // 2.8.06 MDV + // Changed this so that it derives directly from Exception, not ApplicationException + // ApplicationException is deprecated, see "Best Practices for Handling Exceptions" + // http://msdn2.microsoft.com/en-us/library/seyhszts.aspx + // Also made it serializable and added the protected constructor. + + /// <summary> - /// ThreadBufferFullException class represents an exception thrown when attempting to add a thread to a full thread buffer. + /// ThreadBufferFullException class represents an exception thrown when attempting to + /// add a thread to a full thread buffer. /// </summary> - public class ThreadBufferFullException : ApplicationException + [Serializable] + public class ThreadBufferFullException : Exception { /// <summary> /// Default constructor. @@ -236,5 +260,17 @@ public ThreadBufferFullException(string strMessage, Exception oException) : base(strMessage, oException) { } + + /// <summary> + /// Initializes a new instance of the <see cref="ThreadBufferFullException"/> class. + /// </summary> + /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"></see> that holds the serialized object data about the exception being thrown.</param> + /// <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"></see> that contains contextual information about the source or destination.</param> + /// <exception cref="T:System.Runtime.Serialization.SerializationException">The class name is null or <see cref="P:System.Exception.HResult"></see> is zero (0). </exception> + /// <exception cref="T:System.ArgumentNullException">The info parameter is null. </exception> + protected ThreadBufferFullException(SerializationInfo info, StreamingContext context) + : base(info, context) + { + } } } \ No newline at end of file Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/IOwner.cs =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/ModuleDependency.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/ModuleDependency.cs 2007-02-08 21:21:44 UTC (rev 242) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/ModuleDependency.cs 2007-02-08 22:18:08 UTC (rev 243) @@ -31,15 +31,15 @@ namespace Alchemi.Core.Owner { /// <summary> - /// Represents a dependency which is a .Net module + /// Represents a dependency which is a .NET module /// </summary> [Serializable] public class ModuleDependency : EmbeddedFileDependency { - /// <summary> - /// Creates an instance of the ModuleDependency class - /// </summary> - /// <param name="module"></param> + /// <summary> + /// Creates an instance of the ModuleDependency class + /// </summary> + /// <param name="module">The module.</param> public ModuleDependency(Module module) : base(module.Name, module.FullyQualifiedName) {} } } Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/ThreadCollection.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/ThreadCollection.cs 2007-02-08 21:21:44 UTC (rev 242) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/ThreadCollection.cs 2007-02-08 22:18:08 UTC (rev 243) @@ -24,15 +24,20 @@ #endregion using System; +using System.Collections; + using Alchemi.Core.Owner; +// 2.8.06 MDV +// TODO: Rewrite this using List<GThread> + namespace Alchemi.Core.Owner { /// <summary> /// Represents a collection of GThreads. /// </summary> [Serializable] - public class ThreadCollection : System.Collections.CollectionBase + public class ThreadCollection : CollectionBase { /// <summary> /// Gets or sets the GThread at the given index Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/ThreadIdentifier.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/ThreadIdentifier.cs 2007-02-08 21:21:44 UTC (rev 242) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/ThreadIdentifier.cs 2007-02-08 22:18:08 UTC (rev 243) @@ -37,7 +37,7 @@ private int _ThreadId; private int _Priority; - public const Int32 DefaultPriority = -1; + public const int DefaultPriority = -1; //----------------------------------------------------------------------------------------------- @@ -92,6 +92,10 @@ _Priority = priority; } + /// <summary> + /// Gets the unique id. + /// </summary> + /// <value>The unique id.</value> public string UniqueId { get Modified: trunk/alchemi-devel/src/Alchemi.Core/Utility/HashUtil.cs =================================================================== (Binary files differ) Property changes on: trunk/alchemi-devel/src/Alchemi.Executor ___________________________________________________________________ Name: svn:ignore + obj Property changes on: trunk/alchemi-devel/src/Alchemi.ExecutorExec ___________________________________________________________________ Name: svn:ignore + obj Property changes on: trunk/alchemi-devel/src/Alchemi.ExecutorService ___________________________________________________________________ Name: svn:ignore + obj Property changes on: trunk/alchemi-devel/src/Alchemi.ExecutorServiceController ___________________________________________________________________ Name: svn:ignore + obj Property changes on: trunk/alchemi-devel/src/Alchemi.Manager ___________________________________________________________________ Name: svn:ignore + obj Property changes on: trunk/alchemi-devel/src/Alchemi.ManagerExec ___________________________________________________________________ Name: svn:ignore + obj Property changes on: trunk/alchemi-devel/src/Alchemi.ManagerService ___________________________________________________________________ Name: svn:ignore + obj Property changes on: trunk/alchemi-devel/src/Alchemi.ManagerServiceController ___________________________________________________________________ Name: svn:ignore + obj Property changes on: trunk/alchemi-devel/src/Alchemi.SDK/Console ___________________________________________________________________ Name: svn:ignore + obj Property changes on: trunk/alchemi-devel/src/Alchemi.SDK/JobSubmitter ___________________________________________________________________ Name: svn:ignore + obj Property changes on: trunk/alchemi-devel/src/Alchemi.Tester ___________________________________________________________________ Name: svn:ignore + bin obj Property changes on: trunk/alchemi-devel/src/UMLs ___________________________________________________________________ Name: svn:ignore + Thumbs.db This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mat...@us...> - 2007-02-08 21:21:47
|
Revision: 242 http://alchemi.svn.sourceforge.net/alchemi/?rev=242&view=rev Author: mattman206 Date: 2007-02-08 13:21:44 -0800 (Thu, 08 Feb 2007) Log Message: ----------- Cleaning up the code, adding comments, organizing regions, etc. Just getting familiar with everything and being useful while I'm at it. Modified Paths: -------------- trunk/alchemi-devel/src/Alchemi.Core/Executor/ExecutorInfo.cs trunk/alchemi-devel/src/Alchemi.Core/Executor/HearbeatInfo.cs trunk/alchemi-devel/src/Alchemi.Core/Executor/IExecutor.cs trunk/alchemi-devel/src/Alchemi.Core/Manager/IManager.cs trunk/alchemi-devel/src/Alchemi.Core/Manager/Permission.cs trunk/alchemi-devel/src/Alchemi.Core/Owner/Delegates.cs trunk/alchemi-devel/src/Alchemi.Core/Owner/EmbeddedFileDependency.cs trunk/alchemi-devel/src/Alchemi.Core/Owner/FileDependencyCollection.cs trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs trunk/alchemi-devel/src/Alchemi.Executor/Executor.csproj trunk/alchemi-devel/src/Alchemi.ExecutorExec/ExecutorExec.csproj trunk/alchemi-devel/src/Alchemi.ExecutorService/ExecutorService.csproj trunk/alchemi-devel/src/Alchemi.ExecutorServiceController/ExecutorServiceController.csproj trunk/alchemi-devel/src/Alchemi.Manager/Manager.csproj trunk/alchemi-devel/src/Alchemi.ManagerExec/ManagerExec.csproj trunk/alchemi-devel/src/Alchemi.ManagerService/ManagerService.csproj trunk/alchemi-devel/src/Alchemi.ManagerServiceController/ManagerServiceController.csproj trunk/alchemi-devel/src/Alchemi.SDK/Console/Console.csproj trunk/alchemi-devel/src/Alchemi.SDK/JobSubmitter/JobSubmitter.csproj trunk/alchemi-devel/src/Alchemi.Tester/Alchemi.Tester.csproj trunk/alchemi-devel/src/Alchemi.sln Modified: trunk/alchemi-devel/src/Alchemi.Core/Executor/ExecutorInfo.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Executor/ExecutorInfo.cs 2007-02-08 19:21:37 UTC (rev 241) +++ trunk/alchemi-devel/src/Alchemi.Core/Executor/ExecutorInfo.cs 2007-02-08 21:21:44 UTC (rev 242) @@ -20,7 +20,7 @@ * See the GNU General Public License * (http://www.gnu.org/copyleft/gpl.html) for more details. * -*/ +*/ #endregion @@ -28,130 +28,142 @@ namespace Alchemi.Core.Executor { - /// <summary> - /// Represents the static attributes of an executor. - /// - /// </summary> + /// <summary> + /// Represents the static attributes of an executor. + /// </summary> [Serializable] public struct ExecutorInfo { private string _Hostname; - private int _MaxCpuPower; - private float _MaxMemory; //in MB - private float _MaxDiskSpace; // in MB - private int _Number_of_CPUs; + private int _MaxCpuPower; + private float _MaxMemory; //in MB + private float _MaxDiskSpace; // in MB + private int _Number_of_CPUs; private string _OS; private string _Architecture; - private int _CPULimit; //in Ghz * hr - private float _MemLimit; //in MB - private float _DiskLimit; //in MB - private float _CostPerCPUSec; - private float _CostPerThread; - private float _CostPerDiskMB; + private int _CPULimit; //in Ghz * hr + private float _MemLimit; //in MB + private float _DiskLimit; //in MB + private float _CostPerCPUSec; + private float _CostPerThread; + private float _CostPerDiskMB; /// <summary> - /// Gets or sets the Hostname of the Executor. - /// </summary> + /// Gets or sets the Hostname of the Executor. + /// </summary> public string Hostname { get { return _Hostname; } set { _Hostname = value; } } - /// <summary> - /// Gets or sets the maximum CPU power in the Executor hardware. (in Mhz)?Ghz - /// </summary> + + /// <summary> + /// Gets or sets the maximum CPU power in the Executor hardware. (in Mhz) + /// </summary> public int MaxCpuPower { get { return _MaxCpuPower; } set { _MaxCpuPower = value; } } - /// <summary> - /// Gets or sets the maximum memory (RAM) in the Executor hardware. (in MB) - /// </summary> + + /// <summary> + /// Gets or sets the maximum memory (RAM) in the Executor hardware. (in MB) + /// </summary> public float MaxMemory { get { return _MaxMemory; } set { _MaxMemory = value; } } - /// <summary> - /// Gets or sets the maximum disk space in the Executor hardware. (in MB) - /// </summary> + + /// <summary> + /// Gets or sets the maximum disk space in the Executor hardware. (in MB) + /// </summary> public float MaxDiskSpace { get { return _MaxDiskSpace; } set { _MaxDiskSpace = value; } } - /// <summary> - /// Gets or sets the total number of CPUs in the Executor hardware. - /// </summary> + + /// <summary> + /// Gets or sets the total number of CPUs in the Executor hardware. + /// </summary> public int Number_of_CPUs { get { return _Number_of_CPUs; } set { _Number_of_CPUs = value; } } - /// <summary> - /// Gets or sets the name of Operating system running on the Executor - /// </summary> + + /// <summary> + /// Gets or sets the name of Operating system running on the Executor + /// </summary> public string OS { get { return _OS; } set { _OS = value; } } - /// <summary> - /// Gets or sets the architecture of the processor/machine of the Executor (eg: x86, RISC etc) - /// </summary> + + /// <summary> + /// Gets or sets the architecture of the processor/machine of the Executor (eg: x86, RISC etc) + /// </summary> public string Architecture { get { return _Architecture; } set { _Architecture = value; } } - - //these attributes are the limits set by the owner/administrator of the Executor node - /// <summary> - /// - /// </summary> + + /// <summary> + /// The maximum amount of CPU that the Executor can provide. + /// This attribute is set by the owner/administrator of the Executor. + /// </summary> public int CPULimit { get { return _CPULimit; } set { _CPULimit = value; } } - /// <summary> - /// - /// </summary> + /// <summary> + /// The maximum amount of memory (RAM) that the Executor can provide (in MB). + /// This attribute is set by the owner/administrator of the Executor. + /// </summary> public float MemLimit { get { return _MemLimit; } set { _MemLimit = value; } } - /// <summary> - /// - /// </summary> + + /// <summary> + /// The maximum amount of disk space that the Executor can provide (in MB). + /// This attribute is set by the owner/administrator of the Executor. + /// </summary> public float DiskLimit { get { return _DiskLimit; } set { _DiskLimit = value; } } - //Qos stuff - /// <summary> - /// - /// </summary> + //Qos stuff + /// <summary> + /// The cost per CPU-seconds. + /// TODO: + /// </summary> public float CostPerCPUSec { get { return _CostPerCPUSec; } set { _CostPerCPUSec = value; } } - /// <summary> - /// - /// </summary> + /// <summary> + /// The cost per thread. + /// TODO: + /// </summary> public float CostPerThread { get { return _CostPerThread; } set { _CostPerThread = value; } } - /// <summary> - /// - /// </summary> + + /// <summary> + /// The cost per MB of disk storage space. + /// TODO: + /// </summary> public float CostPerDiskMB { get { return _CostPerDiskMB; } Modified: trunk/alchemi-devel/src/Alchemi.Core/Executor/HearbeatInfo.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Executor/HearbeatInfo.cs 2007-02-08 19:21:37 UTC (rev 241) +++ trunk/alchemi-devel/src/Alchemi.Core/Executor/HearbeatInfo.cs 2007-02-08 21:21:44 UTC (rev 242) @@ -39,23 +39,25 @@ private int _PercentAvailCpuPower; /// <summary> - /// Heartbeat interval + /// Heartbeat interval (in seconds) /// </summary> public int Interval { get { return _Interval; } set { _Interval = value; } } + /// <summary> - /// PercentUsedCpuPower + /// Percent of CPU power currently being used. /// </summary> public int PercentUsedCpuPower { get { return _PercentUsedCpuPower; } set { _PercentUsedCpuPower = value; } } + /// <summary> - /// PercentAvailCpuPower + /// Percent of CPU power that is currently available. /// </summary> public int PercentAvailCpuPower { @@ -63,12 +65,12 @@ set { _PercentAvailCpuPower = value; } } - /// <summary> - /// Creates an instance of the HeartBeat object with the given interval, used, and available CPU power. - /// </summary> - /// <param name="interval"></param> - /// <param name="used"></param> - /// <param name="avail"></param> + /// <summary> + /// Creates an instance of the HeartBeat object with the given interval, used, and available CPU power. + /// </summary> + /// <param name="interval">The heartbeat interval (seconds).</param> + /// <param name="used">The CPU power currently being used.</param> + /// <param name="avail">The CPU power currently available.</param> public HeartbeatInfo(int interval, int used, int avail) { _Interval = interval; Modified: trunk/alchemi-devel/src/Alchemi.Core/Executor/IExecutor.cs =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.Core/Manager/IManager.cs =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.Core/Manager/Permission.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Manager/Permission.cs 2007-02-08 19:21:37 UTC (rev 241) +++ trunk/alchemi-devel/src/Alchemi.Core/Manager/Permission.cs 2007-02-08 21:21:44 UTC (rev 242) @@ -60,6 +60,5 @@ /// Allowed to manage users. /// </summary> ManageUsers = 4 - } } \ No newline at end of file Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/Delegates.cs =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/EmbeddedFileDependency.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/EmbeddedFileDependency.cs 2007-02-08 19:21:37 UTC (rev 241) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/EmbeddedFileDependency.cs 2007-02-08 21:21:44 UTC (rev 242) @@ -41,7 +41,7 @@ public class EmbeddedFileDependency : FileDependency { /// <summary> - /// contents of the file representing using base64 encoding. + /// Contents of the file representing using base64 encoding. /// </summary> protected string _Base64EncodedContents = ""; @@ -117,8 +117,12 @@ return (EmbeddedFileDependency[])list.ToArray(typeof(EmbeddedFileDependency)); } - #region "GetEmbeddedFileDependencyFromFolder helpers" - + /// <summary> + /// Adds the files in folderName to list. + /// </summary> + /// <param name="list">The list.</param> + /// <param name="folderName">Name of the folder.</param> + /// <param name="subFolderToAddToFileName">Name of the sub folder to add to file.</param> private static void AddFilesToList(ArrayList list, string folderName, string subFolderToAddToFileName) { foreach (string filePath in Directory.GetFiles(folderName)) @@ -138,8 +142,7 @@ folderPath, Path.Combine(subFolderToAddToFileName, Path.GetFileName(folderPath))); } + } - } - #endregion } } Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/FileDependencyCollection.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/FileDependencyCollection.cs 2007-02-08 19:21:37 UTC (rev 241) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/FileDependencyCollection.cs 2007-02-08 21:21:44 UTC (rev 242) @@ -28,6 +28,10 @@ using Alchemi.Core.Owner; +// TODO: 2.8.07 MDV +// Derive from the generic ReadOnlyCollection<FileDependency> to fully embrace .NET 2.0 generics +// Can also take advantage of List.Contains() + namespace Alchemi.Core.Owner { /// <summary> @@ -42,7 +46,7 @@ public FileDependency this[int index] { get - { + { return (FileDependency) InnerList[index]; } } Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs 2007-02-08 19:21:37 UTC (rev 241) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs 2007-02-08 21:21:44 UTC (rev 242) @@ -30,6 +30,11 @@ using Alchemi.Core.Utility; using System.Collections.Generic; +// 2.8.07 MDV +//TODO: Add blocking Start() method. +//That is, a call to Start() doesn't return until the entire GApplication is finished. + + namespace Alchemi.Core.Owner { /// <summary> @@ -72,25 +77,52 @@ private bool _Initted = false; private bool _MultiUse = false; - //to prevent starting of already started app. also to prevent re-suing single-use apps. + //to prevent starting of already started app. also to prevent re-using single-use apps. private bool firstuse = true; private bool _StopGetFinished = false; - /// <summary> - /// ThreadFinish event: is raised when the thread has completed execution successfully. - /// </summary> - public event GThreadFinish ThreadFinish; - /// <summary> - /// ThreadFailed event: is raised when the thread has completed execution and failed. - /// </summary> - public event GThreadFailed ThreadFailed; - /// <summary> - /// ApplicationFinish event: is raised when all the threads in the application have completed execution, i.e finished/failed. - /// This event is NOT raised when the GApplication is declared as "multi-use". - /// </summary> - public event GApplicationFinish ApplicationFinish; + #region Event - ThreadFinish + private event GThreadFinish _ThreadFinish; + /// <summary> + /// ThreadFinish event: is raised when the thread has completed execution successfully. + /// </summary> + public event GThreadFinish ThreadFinish + { + add { _ThreadFinish += value; } + remove { _ThreadFinish -= value; } + } + #endregion + + + #region Event - ThreadFailed + private event GThreadFailed _ThreadFailed; + /// <summary> + /// ThreadFailed event: is raised when the thread has completed execution and failed. + /// </summary> + public event GThreadFailed ThreadFailed + { + add { _ThreadFailed += value; } + remove { _ThreadFailed -= value; } + } + #endregion + + + #region Event - ApplicationFinish + private event GApplicationFinish _ApplicationFinish; + /// <summary> + /// ApplicationFinish event: is raised when all the threads in the application have completed execution, i.e finished/failed. + /// This event is NOT raised when the GApplication is declared as "multi-use". + /// </summary> + public event GApplicationFinish ApplicationFinish + { + add { _ApplicationFinish += value; } + remove { _ApplicationFinish -= value; } + } + #endregion + + //----------------------------------------------------------------------------------------------- // properties //----------------------------------------------------------------------------------------------- @@ -125,14 +157,8 @@ /// <param name="name"></param> public string ApplicationName { - get - { - return _ApplicationName; - } - set - { - _ApplicationName = value; - } + get { return _ApplicationName; } + set { _ApplicationName = value; } } /// <summary> @@ -242,7 +268,7 @@ private void AddModuleDependencies() { - List<System.Type> types = new List<Type>(); + List<Type> types = new List<Type>(); // add the moduledependencies for the threads to the manifest foreach( GThread gThread in this.Threads ) @@ -283,8 +309,10 @@ } } - //TODO blocking start + //TODO: Add blocking Start() method here + + /// <summary> /// Starts the grid application /// </summary> @@ -559,7 +587,7 @@ Manager.Owner_CleanupApplication(Credentials,_Id); appCleanedup = true; } - if (ApplicationFinish != null) + if (_ApplicationFinish != null) { /// January 25, 2006 tb...@tb...: Fix for bug 1410797 /// Mark the application as stopped in the database @@ -571,7 +599,7 @@ _Running = false; try { - ApplicationFinish.BeginInvoke(null, null); + _ApplicationFinish.BeginInvoke(null, null); } catch (Exception ex) { @@ -618,38 +646,40 @@ /// Fires the thread finish event. /// </summary> /// <param name="th">thread</param> - protected virtual void OnThreadFinish(GThread th) + protected virtual void OnThreadFinish(GThread thread) { - if (ThreadFinish != null) + if (_ThreadFinish != null) { - logger.Debug("Raising thread finish event..."); + logger.Debug("Raising ThreadFinish event..."); try { - ThreadFinish(th); //TODO: Need to see the effect of calling it async. + _ThreadFinish(thread); //TODO: Need to see the effect of calling it async. } catch (Exception eventhandlerEx) { - logger.Debug("Error in ThreadFinish Event handler: " + eventhandlerEx); + // TODO: Figure out a way to not eat this exception! + logger.Debug("Error in ThreadFinish event handler: " + eventhandlerEx); } } } /// <summary> - /// Fires the thread failed event. + /// Fires the ThreadFailed event. /// </summary> /// <param name="th">thread</param> /// <param name="ex">ex</param> - protected virtual void OnThreadFailed(GThread th, Exception ex) + protected virtual void OnThreadFailed(GThread thread, Exception ex) { - if (ThreadFailed != null) + if (_ThreadFailed != null) { - logger.Debug("Raising thread failed event..."); + logger.Debug("Raising ThreadFailed event..."); try { - ThreadFailed(th, ex); //TODO: Need to see the effect of calling it async. + _ThreadFailed(thread, ex); //TODO: Need to see the effect of calling it async. } catch (Exception eventhandlerEx) { + // TODO: Figure out a way to not eat this exception! logger.Debug("Error in ThreadFailed Event handler: " + eventhandlerEx); } } Modified: trunk/alchemi-devel/src/Alchemi.Executor/Executor.csproj =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.ExecutorExec/ExecutorExec.csproj =================================================================== --- trunk/alchemi-devel/src/Alchemi.ExecutorExec/ExecutorExec.csproj 2007-02-08 19:21:37 UTC (rev 241) +++ trunk/alchemi-devel/src/Alchemi.ExecutorExec/ExecutorExec.csproj 2007-02-08 21:21:44 UTC (rev 242) @@ -95,8 +95,8 @@ <Reference Include="System.Xml"> <Name>System.XML</Name> </Reference> - <ProjectReference Include="..\Alchemi.Core\Core.csproj"> - <Name>Core</Name> + <ProjectReference Include="..\Alchemi.Core\Alchemi.Core.csproj"> + <Name>Alchemi.Core</Name> <Project>{234F2AB1-B1F6-4FAD-9DAD-E18AF5847880}</Project> <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> </ProjectReference> Modified: trunk/alchemi-devel/src/Alchemi.ExecutorService/ExecutorService.csproj =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.ExecutorServiceController/ExecutorServiceController.csproj =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.Manager/Manager.csproj =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.ManagerExec/ManagerExec.csproj =================================================================== --- trunk/alchemi-devel/src/Alchemi.ManagerExec/ManagerExec.csproj 2007-02-08 19:21:37 UTC (rev 241) +++ trunk/alchemi-devel/src/Alchemi.ManagerExec/ManagerExec.csproj 2007-02-08 21:21:44 UTC (rev 242) @@ -95,8 +95,8 @@ <Reference Include="System.Xml"> <Name>System.XML</Name> </Reference> - <ProjectReference Include="..\Alchemi.Core\Core.csproj"> - <Name>Core</Name> + <ProjectReference Include="..\Alchemi.Core\Alchemi.Core.csproj"> + <Name>Alchemi.Core</Name> <Project>{234F2AB1-B1F6-4FAD-9DAD-E18AF5847880}</Project> <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> </ProjectReference> Modified: trunk/alchemi-devel/src/Alchemi.ManagerService/ManagerService.csproj =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.ManagerServiceController/ManagerServiceController.csproj =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.SDK/Console/Console.csproj =================================================================== --- trunk/alchemi-devel/src/Alchemi.SDK/Console/Console.csproj 2007-02-08 19:21:37 UTC (rev 241) +++ trunk/alchemi-devel/src/Alchemi.SDK/Console/Console.csproj 2007-02-08 21:21:44 UTC (rev 242) @@ -99,8 +99,8 @@ <Reference Include="System.Xml"> <Name>System.XML</Name> </Reference> - <ProjectReference Include="..\..\Alchemi.Core\Core.csproj"> - <Name>Core</Name> + <ProjectReference Include="..\..\Alchemi.Core\Alchemi.Core.csproj"> + <Name>Alchemi.Core</Name> <Project>{234F2AB1-B1F6-4FAD-9DAD-E18AF5847880}</Project> <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> </ProjectReference> Modified: trunk/alchemi-devel/src/Alchemi.SDK/JobSubmitter/JobSubmitter.csproj =================================================================== --- trunk/alchemi-devel/src/Alchemi.SDK/JobSubmitter/JobSubmitter.csproj 2007-02-08 19:21:37 UTC (rev 241) +++ trunk/alchemi-devel/src/Alchemi.SDK/JobSubmitter/JobSubmitter.csproj 2007-02-08 21:21:44 UTC (rev 242) @@ -85,8 +85,8 @@ <Reference Include="System.Xml"> <Name>System.XML</Name> </Reference> - <ProjectReference Include="..\..\Alchemi.Core\Core.csproj"> - <Name>Core</Name> + <ProjectReference Include="..\..\Alchemi.Core\Alchemi.Core.csproj"> + <Name>Alchemi.Core</Name> <Project>{234F2AB1-B1F6-4FAD-9DAD-E18AF5847880}</Project> <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package> </ProjectReference> Modified: trunk/alchemi-devel/src/Alchemi.Tester/Alchemi.Tester.csproj =================================================================== (Binary files differ) Modified: trunk/alchemi-devel/src/Alchemi.sln =================================================================== --- trunk/alchemi-devel/src/Alchemi.sln 2007-02-08 19:21:37 UTC (rev 241) +++ trunk/alchemi-devel/src/Alchemi.sln 2007-02-08 21:21:44 UTC (rev 242) @@ -1,39 +1,91 @@ Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "Alchemi.Core\Core.csproj", "{234F2AB1-B1F6-4FAD-9DAD-E18AF5847880}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Alchemi.Core", "Alchemi.Core\Alchemi.Core.csproj", "{234F2AB1-B1F6-4FAD-9DAD-E18AF5847880}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExecutorExec", "Alchemi.ExecutorExec\ExecutorExec.csproj", "{8B9083D8-0313-4F68-B8F9-E8BD8DBE5F37}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection ProjectSection(ProjectDependencies) = postProject {234F2AB1-B1F6-4FAD-9DAD-E18AF5847880} = {234F2AB1-B1F6-4FAD-9DAD-E18AF5847880} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Console", "Alchemi.SDK\Console\Console.csproj", "{EACCFD1F-6FCC-43D0-97A8-D9AA39CFCAB8}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection ProjectSection(ProjectDependencies) = postProject {234F2AB1-B1F6-4FAD-9DAD-E18AF5847880} = {234F2AB1-B1F6-4FAD-9DAD-E18AF5847880} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JobSubmitter", "Alchemi.SDK\JobSubmitter\JobSubmitter.csproj", "{B31B92E1-0CA5-4226-BDEF-C4DD5BC43E3D}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExecutorService", "Alchemi.ExecutorService\ExecutorService.csproj", "{F196CA7C-D8B0-4031-9989-D43406AEB3B8}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection ProjectSection(ProjectDependencies) = postProject {234F2AB1-B1F6-4FAD-9DAD-E18AF5847880} = {234F2AB1-B1F6-4FAD-9DAD-E18AF5847880} EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ManagerService", "Alchemi.ManagerService\ManagerService.csproj", "{6B15DEC9-B15B-4614-9F70-FCB2E53C7289}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ManagerExec", "Alchemi.ManagerExec\ManagerExec.csproj", "{11F1CF0B-5526-4534-9784-0543E29D4292}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Alchemi.Tester", "Alchemi.Tester\Alchemi.Tester.csproj", "{C11636CD-14B6-4526-80DA-AFF5DFA84298}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Executor", "Alchemi.Executor\Executor.csproj", "{A71A830F-F3FA-47BD-956E-67CFB22F75E8}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Manager", "Alchemi.Manager\Manager.csproj", "{3122055C-044A-4C0C-80BB-82232FB333C5}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExecutorServiceController", "Alchemi.ExecutorServiceController\ExecutorServiceController.csproj", "{23CC92DA-8780-4A17-BF9A-E567CB0548C5}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ManagerServiceController", "Alchemi.ManagerServiceController\ManagerServiceController.csproj", "{85660E73-08EB-4927-9C77-4009B8533F01}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1F520AA3-7252-4D9D-BDA6-EED249B0EEE2}" + ProjectSection(WebsiteProperties) = preProject + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.Debug = "False" + EndProjectSection ProjectSection(SolutionItems) = preProject ..\doc\AlchemiManualv.1.0.doc = ..\doc\AlchemiManualv.1.0.doc EndProjectSection This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jon...@us...> - 2007-02-08 19:21:37
|
Revision: 241 http://alchemi.svn.sourceforge.net/alchemi/?rev=241&view=rev Author: jonathanmitchem Date: 2007-02-08 11:21:37 -0800 (Thu, 08 Feb 2007) Log Message: ----------- JMM minor changes to comments to make explanation more accurate Modified Paths: -------------- trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs Modified: trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs =================================================================== --- trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs 2007-02-08 19:16:57 UTC (rev 240) +++ trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs 2007-02-08 19:21:37 UTC (rev 241) @@ -11,8 +11,8 @@ /// /// The program reads an input file block by block and passes the string data /// to grid threads. The grid application is then run, and the output from each - /// thread is added to an array. When the application has finished, the output of - /// that array is recombined and written to disk. + /// thread is added to an array. When the application has finished, the output in + /// the array is combined and written to disk. /// /// With minor modifications, this example can be adapted for any task that allows for /// parallel processing of an input file separated into blocks that can be later This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jon...@us...> - 2007-02-08 19:17:01
|
Revision: 240 http://alchemi.svn.sourceforge.net/alchemi/?rev=240&view=rev Author: jonathanmitchem Date: 2007-02-08 11:16:57 -0800 (Thu, 08 Feb 2007) Log Message: ----------- JMM minor spelling and grammar changes to a few comments Modified Paths: -------------- trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs Modified: trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs =================================================================== --- trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs 2007-02-08 19:06:34 UTC (rev 239) +++ trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs 2007-02-08 19:16:57 UTC (rev 240) @@ -70,7 +70,7 @@ // ReadBlock returns a char[] buffer so convert it to a string to pass to our custom GThread. stringBuffer = new string( charBuffer ); - // Instantiate our custom GThread and pass the data we need to process throgh the constructor. + // Instantiate our custom GThread and pass the data we need to process through the constructor. // Note: other methods of passing data to GThreads are possible. CustomGThread customGThread = new CustomGThread( currentBlock, stringBuffer ); @@ -83,7 +83,7 @@ // Close the input file. streamReader.Close(); - // Resize the array that will hold our output so there is one entry per GThread. + // Resize the output array to hold one entry per GThread. this._outputArray = new string[ currentBlock ]; // Bind the ThreadFinished and ApplicationFinished events to local event handlers. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jon...@us...> - 2007-02-08 19:06:41
|
Revision: 239 http://alchemi.svn.sourceforge.net/alchemi/?rev=239&view=rev Author: jonathanmitchem Date: 2007-02-08 11:06:34 -0800 (Thu, 08 Feb 2007) Log Message: ----------- JMM added example to demonstrate splitting a file into blocks, processing each block in parallel, and recombining the output Added Paths: ----------- trunk/alchemi-devel/examples/CustomGThreadExample/ trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/ trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/CustomGThread.cs trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/CustomGThreadExample.csproj trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Properties/ trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Properties/AssemblyInfo.cs trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample.sln Added: trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/CustomGThread.cs =================================================================== --- trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/CustomGThread.cs (rev 0) +++ trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/CustomGThread.cs 2007-02-08 19:06:34 UTC (rev 239) @@ -0,0 +1,49 @@ +using System; +using Alchemi.Core.Owner; + +namespace CustomGThreadExample +{ + /// <summary> + /// This CustomGThread takes a string and converts it to Uppercase. + /// It serves as an example of how data can be passed to and from a + /// GThread, and how and where the actual "processing" code of the + /// thread exists. + /// + /// Note the [Serializable] attribute, the inherited GThread, and the + /// overridden Start() method. + /// </summary> + [Serializable] + public class CustomGThread : Alchemi.Core.Owner.GThread + { + private int _index; + private string _output; + private string _stringToProcess; + + public CustomGThread( int index, string stringToProcess ) + { + this._index = index; + this._stringToProcess = stringToProcess; + } + + public int Index + { + get + { + return this._index; + } + } + + public string Output + { + get + { + return this._output; + } + } + + public override void Start() + { + this._output = this._stringToProcess.ToUpper(); + } + } +} Added: trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/CustomGThreadExample.csproj =================================================================== --- trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/CustomGThreadExample.csproj (rev 0) +++ trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/CustomGThreadExample.csproj 2007-02-08 19:06:34 UTC (rev 239) @@ -0,0 +1,52 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.50727</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{5BD525A9-755E-49BB-A257-C938F36BD712}</ProjectGuid> + <OutputType>Exe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>CustomGThreadExample</RootNamespace> + <AssemblyName>CustomGThreadExample</AssemblyName> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="Alchemi.Core, Version=1.0.6.746, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\..\..\src\Alchemi.Core\obj\Release\Alchemi.Core.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="CustomGThread.cs" /> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file Added: trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs =================================================================== --- trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs (rev 0) +++ trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Program.cs 2007-02-08 19:06:34 UTC (rev 239) @@ -0,0 +1,139 @@ +using System; +using System.IO; +using System.Collections.Generic; +using System.Text; +using Alchemi.Core.Owner; + +namespace CustomGThreadExample +{ + /// <summary> + /// This program is a simple demonstration of an Alchemi enabled grid application. + /// + /// The program reads an input file block by block and passes the string data + /// to grid threads. The grid application is then run, and the output from each + /// thread is added to an array. When the application has finished, the output of + /// that array is recombined and written to disk. + /// + /// With minor modifications, this example can be adapted for any task that allows for + /// parallel processing of an input file separated into blocks that can be later + /// recombined to an output file. + /// + /// E.g., increasing or decreasing the volume of a WAV file, or encoding WAV to MP3. + /// </summary> + class Program + { + string[] _outputArray; + string _inputFileName; + string _outputFileName; + + static void Main( string[] args ) + { + Program program = new Program(); + + program.Run(); + + Console.ReadLine(); + } + + void Run() + { + // All grid applications must have a GApplication instance. The GConnection information + // specifies the Manager's host name, the port to connect on, and the username and password + // to use. A GApplication is created with this connection information. + GConnection gridConnection = new GConnection( "localhost", 9000, "user", "user" ); + GApplication gridApplication = new GApplication( gridConnection ); + + Console.WriteLine( "Enter the input file name: " ); + this._inputFileName = Console.ReadLine(); + + Console.WriteLine( "Enter the output file name: " ); + this._outputFileName = Console.ReadLine(); + + try + { + // Open the input file for reading. + StreamReader streamReader = new StreamReader( this._inputFileName ); + + int blockSize = 100; + char[] charBuffer = new char[ blockSize ]; + string stringBuffer; + int currentBlock = 0; + + // In order to ensure that all required DLLs to run the thread exist at each Executor + // we must add a dependency to the Manifest for each DLL and/or file needed by the GThreads. + gridApplication.Manifest.Add( new ModuleDependency( typeof( CustomGThread ).Module ) ); + + // Loop through the file reading blocks of size blockSize into the char[] array charBuffer + // until we hit the end of the file. + while( streamReader.ReadBlock( charBuffer, 0, blockSize ) != 0 ) + { + // ReadBlock returns a char[] buffer so convert it to a string to pass to our custom GThread. + stringBuffer = new string( charBuffer ); + + // Instantiate our custom GThread and pass the data we need to process throgh the constructor. + // Note: other methods of passing data to GThreads are possible. + CustomGThread customGThread = new CustomGThread( currentBlock, stringBuffer ); + + // Add the thread to the GApplication's Threads collection. + gridApplication.Threads.Add( customGThread ); + + currentBlock++; + } + + // Close the input file. + streamReader.Close(); + + // Resize the array that will hold our output so there is one entry per GThread. + this._outputArray = new string[ currentBlock ]; + + // Bind the ThreadFinished and ApplicationFinished events to local event handlers. + gridApplication.ThreadFinish += new GThreadFinish( gridApp_ThreadFinish ); + gridApplication.ApplicationFinish += new GApplicationFinish( gridApp_ApplicationFinish ); + + // Start the GApplication. + gridApplication.Start(); + + Console.WriteLine( "Application Started" ); + } + catch( Exception ex ) + { + Console.WriteLine( "An exception occurred: " + ex.Message + "\r\n" + ex.StackTrace ); + } + } + + /// <summary> + /// The GApplication.ThreadFinished event fires each time a thread has finished processing. + /// </summary> + /// <param name="thread">The thread that finished.</param> + private void gridApp_ThreadFinish( GThread thread ) + { + // Cast the GThread to our custom type so that we can access our custom properties. + CustomGThread customGThread = (CustomGThread) thread; + + Console.WriteLine( "Thread " + customGThread.Index + " finished" ); + + // Add the output from the thread to our output array. + this._outputArray[ customGThread.Index ] = customGThread.Output; + } + + /// <summary> + /// The GApplication.ApplicationFinished event fires when all GThreads have finished processing. + /// </summary> + private void gridApp_ApplicationFinish() + { + // Open the output file for writing. + StreamWriter streamWriter = new StreamWriter( this._outputFileName ); + + // Loop through our output array and write the outupt from each thread to the file. + foreach( string outputString in this._outputArray ) + { + streamWriter.Write( outputString ); + } + + // Close the output file to ensure the data is written to disk. + streamWriter.Close(); + + Console.WriteLine( "Application Finished" ); + } + } +} Added: trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Properties/AssemblyInfo.cs =================================================================== --- trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Properties/AssemblyInfo.cs (rev 0) +++ trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample/Properties/AssemblyInfo.cs 2007-02-08 19:06:34 UTC (rev 239) @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle( "CustomGThreadExample" )] +[assembly: AssemblyDescription( "" )] +[assembly: AssemblyConfiguration( "" )] +[assembly: AssemblyCompany( "" )] +[assembly: AssemblyProduct( "CustomGThreadExample" )] +[assembly: AssemblyCopyright( "Copyright © 2007" )] +[assembly: AssemblyTrademark( "" )] +[assembly: AssemblyCulture( "" )] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible( false )] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid( "4c04149e-9d2b-4a5b-99db-fa7cc3504487" )] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion( "1.0.0.0" )] +[assembly: AssemblyFileVersion( "1.0.0.0" )] Added: trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample.sln =================================================================== --- trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample.sln (rev 0) +++ trunk/alchemi-devel/examples/CustomGThreadExample/CustomGThreadExample.sln 2007-02-08 19:06:34 UTC (rev 239) @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C# Express 2005 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomGThreadExample", "CustomGThreadExample\CustomGThreadExample.csproj", "{5BD525A9-755E-49BB-A257-C938F36BD712}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5BD525A9-755E-49BB-A257-C938F36BD712}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5BD525A9-755E-49BB-A257-C938F36BD712}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5BD525A9-755E-49BB-A257-C938F36BD712}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5BD525A9-755E-49BB-A257-C938F36BD712}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jon...@us...> - 2007-02-08 10:04:55
|
Revision: 238 http://alchemi.svn.sourceforge.net/alchemi/?rev=238&view=rev Author: jonathanmitchem Date: 2007-02-08 02:04:52 -0800 (Thu, 08 Feb 2007) Log Message: ----------- JMM removed AssemblyDependency and made dependency checking use the ModuleDependency (AssemblyDependency was causing the PiCalculator example to behave incorrectly) Modified Paths: -------------- trunk/alchemi-devel/src/Alchemi.Core/Core.csproj trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs Removed Paths: ------------- trunk/alchemi-devel/src/Alchemi.Core/Owner/AssemblyDependency.cs Modified: trunk/alchemi-devel/src/Alchemi.Core/Core.csproj =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Core.csproj 2007-02-08 06:36:00 UTC (rev 237) +++ trunk/alchemi-devel/src/Alchemi.Core/Core.csproj 2007-02-08 10:04:52 UTC (rev 238) @@ -151,7 +151,6 @@ <Compile Include="GNode.cs"> <SubType>Component</SubType> </Compile> - <Compile Include="Owner\AssemblyDependency.cs" /> <Compile Include="Owner\GThreadBuffer.cs" /> <Compile Include="Logger.cs"> <SubType>Code</SubType> Deleted: trunk/alchemi-devel/src/Alchemi.Core/Owner/AssemblyDependency.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/AssemblyDependency.cs 2007-02-08 06:36:00 UTC (rev 237) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/AssemblyDependency.cs 2007-02-08 10:04:52 UTC (rev 238) @@ -1,45 +0,0 @@ -#region Alchemi copyright and license notice - -/* -* Alchemi [.NET Grid Computing Framework] -* http://www.alchemi.net -* -* Title : ModuleDependency.cs -* Project : Alchemi Core -* Created on : 2003 -* Copyright : Copyright \xA9 2006 The University of Melbourne -* This technology has been developed with the support of -* the Australian Research Council and the University of Melbourne -* research grants as part of the Gridbus Project -* within GRIDS Laboratory at the University of Melbourne, Australia. -* Author : Akshay Luther (ak...@cs...) and Rajkumar Buyya (ra...@cs...) -* License : GPL -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public -* License as published by the Free Software Foundation; -* See the GNU General Public License -* (http://www.gnu.org/copyleft/gpl.html) for more details. -* -*/ -#endregion - -using System; -using System.Reflection; -using System.IO; -using Alchemi.Core.Owner; - -namespace Alchemi.Core.Owner -{ - /// <summary> - /// Represents a dependency which is a .Net module - /// </summary> - [Serializable] - public class AssemblyDependency : EmbeddedFileDependency - { - /// <summary> - /// Creates an instance of the ModuleDependency class - /// </summary> - /// <param name="module"></param> - public AssemblyDependency( Assembly assembly ) : base( assembly.GetName().Name, assembly.Location ) { } - } -} Modified: trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs =================================================================== --- trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs 2007-02-08 06:36:00 UTC (rev 237) +++ trunk/alchemi-devel/src/Alchemi.Core/Owner/GApplication.cs 2007-02-08 10:04:52 UTC (rev 238) @@ -242,29 +242,44 @@ private void AddModuleDependencies() { - // add the moduledependencies for the threads added to the application to the manifest + List<System.Type> types = new List<Type>(); + + // add the moduledependencies for the threads to the manifest foreach( GThread gThread in this.Threads ) { - this.RecursivelyAddDependencies( gThread.GetType().Assembly ); + // if we've already processed this gThread type, then don't process it again + if( !types.Contains( gThread.GetType() ) ) + { + this.RecursivelyAddModuleDependencies( gThread.GetType().Module, new List<System.Reflection.Module>() ); + types.Add( gThread.GetType() ); + } } } - private void RecursivelyAddDependencies( System.Reflection.Assembly assembly ) + private void RecursivelyAddModuleDependencies( System.Reflection.Module module, List<System.Reflection.Module> addedModules ) { - // if it's in the GAC, don't do anything with it - if( assembly.GlobalAssemblyCache ) return; + // if it's in the GAC, don't add it + if( module.Assembly.GlobalAssemblyCache ) return; - // if we've already added it, don't do anything with it - if( !this.Manifest.Contains( new AssemblyDependency( assembly ) ) ) return; + // if it's already been added, don't add it + if( addedModules.Contains( module ) ) return; - // otherwise add it to the manifest and add all referenced assemblies - this.Manifest.Add( new AssemblyDependency( assembly ) ); + // if it was manually added, don't add it + if( this.Manifest.Contains( new ModuleDependency( module ) ) ) return; - foreach( System.Reflection.AssemblyName assemblyName in assembly.GetReferencedAssemblies() ) + // otherwise, add it to the manifest and to the collection + this.Manifest.Add( new ModuleDependency( module ) ); + addedModules.Add( module ); + + // and add all referenced modules + foreach( System.Reflection.AssemblyName assemblyName in module.Assembly.GetReferencedAssemblies() ) { System.Reflection.Assembly referencedAssembly = System.Reflection.Assembly.Load( assemblyName ); - this.RecursivelyAddDependencies( referencedAssembly ); + foreach( System.Reflection.Module referencedModule in referencedAssembly.GetModules() ) + { + this.RecursivelyAddModuleDependencies( referencedModule, addedModules ); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |