From: Vlad D. <vl...@us...> - 2006-09-04 19:40:27
|
Update of /cvsroot/jungerl/jungerl/lib/otp.net/Otp In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv25275/lib/otp.net/Otp Modified Files: AbstractNode.cs Log Message: fixes from Paul Shaffer Index: AbstractNode.cs =================================================================== RCS file: /cvsroot/jungerl/jungerl/lib/otp.net/Otp/AbstractNode.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- AbstractNode.cs 8 May 2004 20:35:59 -0000 1.1 +++ AbstractNode.cs 4 Sep 2006 19:40:20 -0000 1.2 @@ -15,249 +15,258 @@ * * Converted from Java to C# by Vlad Dumitrescu (vla...@ho...) */ +using System; +using System.Configuration; + namespace Otp { - using System; - - /* - * <p> Represents an OTP node. </p> - * - * <p> About nodenames: Erlang nodenames consist of two components, an - * alivename and a hostname separated by '@'. Additionally, there are - * two nodename formats: short and long. Short names are of the form - * "alive@hostname", while long names are of the form - * "al...@ho...mainname". Erlang has special - * requirements regarding the use of the short and long formats, in - * particular they cannot be mixed freely in a network of - * communicating nodes, however Jinterface makes no distinction. See - * the Erlang documentation for more information about nodenames. </p> - * - * <p> The constructors for the AbstractNode classes will create names - * exactly as you provide them as long as the name contains '@'. If - * the string you provide contains no '@', it will be treated as an - * alivename and the name of the local host will be appended, - * resulting in a shortname. Nodenames longer than 255 characters will - * be truncated without warning. </p> - * - * <p> Upon initialization, this class attempts to read the file - * .erlang.cookie in the user's home directory, and uses the trimmed - * first line of the file as the default cookie by those constructors - * lacking a cookie argument. If for any reason the file cannot be - * found or read, the default cookie will be set to the empty string - * (""). The location of a user's home directory is determined using - * the system property "user.home", which may not be automatically set - * on all platforms. </p> - * - * <p> Instances of this class cannot be created directly, use one of - * the subclasses instead. </p> - **/ - public class AbstractNode - { - private void InitBlock() - { - ntype = NTYPE_R6; - flags = dFlagExtendedReferences; - } - static AbstractNode() - { - { - try - { - localHost = System.Net.Dns.GetHostName(); - } - catch (System.Exception) - { - localHost = "localhost"; - } + + /* + * <p> Represents an OTP node. </p> + * + * <p> About nodenames: Erlang nodenames consist of two components, an + * alivename and a hostname separated by '@'. Additionally, there are + * two nodename formats: short and long. Short names are of the form + * "alive@hostname", while long names are of the form + * "al...@ho...mainname". Erlang has special + * requirements regarding the use of the short and long formats, in + * particular they cannot be mixed freely in a network of + * communicating nodes, however Jinterface makes no distinction. See + * the Erlang documentation for more information about nodenames. </p> + * + * <p> The constructors for the AbstractNode classes will create names + * exactly as you provide them as long as the name contains '@'. If + * the string you provide contains no '@', it will be treated as an + * alivename and the name of the local host will be appended, + * resulting in a shortname. Nodenames longer than 255 characters will + * be truncated without warning. </p> + * + * <p> Upon initialization, this class attempts to read the file + * .erlang.cookie in the user's home directory, and uses the trimmed + * first line of the file as the default cookie by those constructors + * lacking a cookie argument. If for any reason the file cannot be + * found or read, the default cookie will be set to the empty string + * (""). The location of a user's home directory is determined using + * the system property "user.home", which may not be automatically set + * on all platforms. </p> + * + * <p> Instances of this class cannot be created directly, use one of + * the subclasses instead. </p> + **/ + public class AbstractNode + { + private void InitBlock() + { + ntype = NTYPE_R6; + flags = dFlagExtendedReferences | dFlagExtendedPidsPorts; + } + static AbstractNode() + { + { + try + { + localHost = System.Net.Dns.GetHostName(); + } + catch (System.Exception) + { + localHost = "localhost"; + } - System.String dotCookieFilename = System.Environment.GetEnvironmentVariable("HOME") - + System.IO.Path.DirectorySeparatorChar - + ".erlang.cookie"; - System.IO.StreamReader br = null; - - try - { - System.IO.FileInfo dotCookieFile = new System.IO.FileInfo(dotCookieFilename); - - br = new System.IO.StreamReader(new System.IO.StreamReader(dotCookieFile.FullName).BaseStream); - defaultCookie = br.ReadLine().Trim(); - } - catch (System.IO.IOException) - { - defaultCookie = ""; - } - finally - { - try - { - if (br != null) - br.Close(); - } - catch (System.IO.IOException) - { - } - } - } - } - internal static System.String localHost = null; - internal System.String _node; - internal System.String _host; - internal System.String _alive; - internal System.String _cookie; - internal static System.String defaultCookie = null; - - // Node types - internal const int NTYPE_R6 = 110; // 'n' post-r5, all nodes - internal const int NTYPE_R4_ERLANG = 109; - // 'm' Only for source compatibility - internal const int NTYPE_R4_HIDDEN = 104; - // 'h' Only for source compatibility - - // Node capability flags - internal const int dFlagPublished = 1; - internal const int dFlagAtomCache = 2; - internal const int dFlagExtendedReferences = 4; - internal const int dFlagDistMonitor = 8; - internal const int dFlagFunTags = 16; + try + { + defaultCookie = ConfigurationManager.AppSettings["ErlangCookie"]; + } + catch + { + defaultCookie = string.Empty; + } - internal int ntype; - internal int _proto = 0; // tcp/ip - internal int _distHigh = 5; // Cannot talk to nodes before R6 - internal int _distLow = 5; // Cannot talk to nodes before R6 - internal int _creation = 0; + //System.String dotCookieFilename = System.Environment.GetEnvironmentVariable("HOME") + // + System.IO.Path.DirectorySeparatorChar + // + ".erlang.cookie"; + //System.IO.StreamReader br = null; + //try + //{ + // System.IO.FileInfo dotCookieFile = new System.IO.FileInfo(dotCookieFilename); + // br = new System.IO.StreamReader(new System.IO.StreamReader(dotCookieFile.FullName).BaseStream); + // defaultCookie = br.ReadLine().Trim(); + //} + //catch (System.IO.IOException) + //{ + // defaultCookie = ""; + //} + //finally + //{ + // try + // { + // if (br != null) + // br.Close(); + // } + // catch (System.IO.IOException) + // { + // } + //} + } + } + internal static System.String localHost = null; + internal System.String _node; + internal System.String _host; + internal System.String _alive; + internal System.String _cookie; + internal static System.String defaultCookie = null; + + // Node types + internal const int NTYPE_R6 = 110; // 'n' post-r5, all nodes + internal const int NTYPE_R4_ERLANG = 109; + // 'm' Only for source compatibility + internal const int NTYPE_R4_HIDDEN = 104; + // 'h' Only for source compatibility + + // Node capability flags + internal const int dFlagPublished = 1; + internal const int dFlagAtomCache = 2; + internal const int dFlagExtendedReferences = 4; + internal const int dFlagDistMonitor = 8; + internal const int dFlagFunTags = 16; + internal const int dFlagExtendedPidsPorts = 256; // pshaffer - internal int flags; - - /*initialize hostname and default cookie */ - protected internal AbstractNode() - { - InitBlock(); - } - - /* - * Create a node with the given name and the default cookie. - **/ - protected internal AbstractNode(System.String node):this(node, defaultCookie) - { - } - - /* - * Create a node with the given name and cookie. - **/ - protected internal AbstractNode(System.String name, System.String cookie) - { - InitBlock(); - this._cookie = cookie; - - int i = name.IndexOf((System.Char) '@', 0); - if (i < 0) - { - _alive = name; - _host = localHost; - } - else - { - _alive = name.Substring(0, (i) - (0)); - _host = name.Substring(i + 1, (name.Length) - (i + 1)); - } - - if (_alive.Length > 0xff) - { - _alive = _alive.Substring(0, (0xff) - (0)); - } - - _node = _alive + "@" + _host; - } - - /* - * Get the name of this node. - * - * @return the name of the node represented by this object. - **/ - public virtual System.String node() - { - return _node; - } - - /* - * Get the hostname part of the nodename. Nodenames are composed of - * two parts, an alivename and a hostname, separated by '@'. This - * method returns the part of the nodename following the '@'. - * - * @return the hostname component of the nodename. - **/ - public virtual System.String host() - { - return _host; - } - - /* - * Get the alivename part of the hostname. Nodenames are composed of - * two parts, an alivename and a hostname, separated by '@'. This - * method returns the part of the nodename preceding the '@'. - * - * @return the alivename component of the nodename. - **/ - public virtual System.String getAlive() - { - return _alive; - } - - /* - * Get the authorization cookie used by this node. - * - * @return the authorization cookie used by this node. - **/ - public virtual System.String cookie() - { - return _cookie; - } - - // package scope - internal virtual int type() - { - return ntype; - } - - // package scope - internal virtual int distHigh() - { - return _distHigh; - } - - // package scope - internal virtual int distLow() - { - return _distLow; - } - - // package scope: useless information? - internal virtual int proto() - { - return _proto; - } - - // package scope - internal virtual int creation() - { - return _creation; - } - - /* - * Set the authorization cookie used by this node. - * - * @return the previous authorization cookie used by this node. - **/ - public virtual System.String setCookie(System.String cookie) - { - System.String prev = this._cookie; - this._cookie = cookie; - return prev; - } - - public override System.String ToString() - { - return node(); - } - } + internal int ntype = NTYPE_R6; // pshaffer + internal int _proto = 0; // tcp/ip + internal int _distHigh = 5; // Cannot talk to nodes before R6 + internal int _distLow = 5; // Cannot talk to nodes before R6 + internal int _creation = 0; + internal int flags = dFlagExtendedReferences | dFlagExtendedPidsPorts; // pshaffer + + /*initialize hostname and default cookie */ + protected internal AbstractNode() + { + InitBlock(); + } + + /* + * Create a node with the given name and the default cookie. + **/ + protected internal AbstractNode(System.String node):this(node, defaultCookie) + { + } + + /* + * Create a node with the given name and cookie. + **/ + protected internal AbstractNode(System.String name, System.String cookie) + { + InitBlock(); + this._cookie = cookie; + + int i = name.IndexOf((System.Char) '@', 0); + if (i < 0) + { + _alive = name; + _host = localHost; + } + else + { + _alive = name.Substring(0, (i) - (0)); + _host = name.Substring(i + 1, (name.Length) - (i + 1)); + } + + if (_alive.Length > 0xff) + { + _alive = _alive.Substring(0, (0xff) - (0)); + } + + _node = _alive + "@" + _host; + } + + /* + * Get the name of this node. + * + * @return the name of the node represented by this object. + **/ + public virtual System.String node() + { + return _node; + } + + /* + * Get the hostname part of the nodename. Nodenames are composed of + * two parts, an alivename and a hostname, separated by '@'. This + * method returns the part of the nodename following the '@'. + * + * @return the hostname component of the nodename. + **/ + public virtual System.String host() + { + return _host; + } + + /* + * Get the alivename part of the hostname. Nodenames are composed of + * two parts, an alivename and a hostname, separated by '@'. This + * method returns the part of the nodename preceding the '@'. + * + * @return the alivename component of the nodename. + **/ + public virtual System.String getAlive() + { + return _alive; + } + + /* + * Get the authorization cookie used by this node. + * + * @return the authorization cookie used by this node. + **/ + public virtual System.String cookie() + { + return _cookie; + } + + // package scope + internal virtual int type() + { + return ntype; + } + + // package scope + internal virtual int distHigh() + { + return _distHigh; + } + + // package scope + internal virtual int distLow() + { + return _distLow; + } + + // package scope: useless information? + internal virtual int proto() + { + return _proto; + } + + // package scope + internal virtual int creation() + { + return _creation; + } + + /* + * Set the authorization cookie used by this node. + * + * @return the previous authorization cookie used by this node. + **/ + public virtual System.String setCookie(System.String cookie) + { + System.String prev = this._cookie; + this._cookie = cookie; + return prev; + } + + public override System.String ToString() + { + return node(); + } + } } \ No newline at end of file |