コード例 #1
0
 /// <summary>
 /// Constructor
 /// </summary>
 public ParseState(GetConfigMsg query)
 {
     this.Query        = query;
     this.FileStack    = new Stack <string>();
     this.SwitchStack  = new Stack <SwitchState>();
     this.IncludeLines = true;
 }
コード例 #2
0
        private Config Query(MsgRouter router, string machineName, string exeFile, Version exeVersion, string usage)
        {
            GetConfigMsg query;
            GetConfigAck ack;

            query = new GetConfigMsg(machineName, exeFile, exeVersion, usage);
            ack   = (GetConfigAck)router.Query(ConfigServiceProvider.GetConfigEP, query);
            return(new Config(null, new StringReader(ack.ConfigText)));
        }
コード例 #3
0
        public void Msg_Clone_GetConfigMsg()
        {
            GetConfigMsg msgIn, msgOut;

            msgOut = new GetConfigMsg("server", "foo.exe", new Version("5.1.2.3"), "usage");
            msgIn  = (GetConfigMsg)msgOut.Clone();

            Assert.AreEqual(msgOut.MachineName, msgIn.MachineName);
            Assert.AreEqual(msgOut.ExeFile, msgIn.ExeFile);
            Assert.AreEqual(msgOut.ExeVersion, msgIn.ExeVersion);
            Assert.AreEqual(msgOut.Usage, msgIn.Usage);

            TestBaseCloning(msgOut);
        }
コード例 #4
0
        public void Msg_Serialize_GetConfigMsg()
        {
            GetConfigMsg   msgIn, msgOut;
            EnhancedStream es = new EnhancedMemoryStream();

            msgOut = new GetConfigMsg("server", "foo.exe", new Version("5.1.2.3"), "usage");

            Msg.Save(es, msgOut);
            es.Seek(0, SeekOrigin.Begin);
            msgIn = (GetConfigMsg)Msg.Load(es);

            Assert.AreEqual("server", msgIn.MachineName);
            Assert.AreEqual("foo.exe", msgIn.ExeFile);
            Assert.AreEqual(new Version("5.1.2.3"), msgIn.ExeVersion);
            Assert.AreEqual("usage", msgIn.Usage);
        }
コード例 #5
0
        public void OnMsg(GetConfigMsg query)
        {
            using (TimedLock.Lock(router.SyncRoot))
            {
                if (router == null)
                {
                    return;     // The handler has been shut down or stopped
                }
                try
                {
                    var    sb   = new StringBuilder();
                    bool   load = false;
                    string fname;

                    // Append the exeFile based config (if any)

                    if (query.ExeFile != null && query.ExeFile.Trim() != string.Empty)
                    {
                        fname = "app-" + query.ExeFile + ".ini";
                        if (fname.IndexOfAny(badChars) != -1)
                        {
                            throw new ArgumentException("[ExeFile] has invalid characters.");
                        }

                        if (File.Exists(settingsFolder + fname))
                        {
                            load = true;
                            AppendFile(sb, new ParseState(query), fname);
                        }
                    }

                    // Append the machineName based config (if any)

                    if (query.MachineName != null && query.MachineName.Trim() != string.Empty)
                    {
                        fname = "svr-" + query.MachineName + ".ini";
                        if (fname.IndexOfAny(badChars) != -1)
                        {
                            throw new ArgumentException("[MachineName] has invalid characters.");
                        }

                        if (File.Exists(settingsFolder + fname))
                        {
                            load = true;
                            AppendFile(sb, new ParseState(query), fname);
                        }
                    }

                    if (load)
                    {
                        router.ReplyTo(query, new GetConfigAck(sb.ToString()));
                    }
                    else
                    {
                        router.ReplyTo(query, new GetConfigAck(new Exception("No configuration settings.")));
                    }
                }
                catch (Exception e)
                {
                    router.ReplyTo(query, new GetConfigAck(e));
                }
            }
        }